blob: 15af8e15b46136aa8b794ee4ed390a45d2c4da6a [file] [log] [blame]
!!WikiForms Form Plugin Example
This page uses the [WikiForms] plugins to provide parameters to the CurrentTimePlugin,
and displays the result.
[{TableOfContents}]
!Giving Defaults
The first item, hidden in normal WikiPage viewing, looks like this:
{{{
[{FormSet form='testform' format='EEE, d MMM yyyy HH:mm:ss Z' rd1='r2'}]
}}}
[{FormSet form='testform' format='EEE, d MMM yyyy HH:mm:ss Z' rd1='r2'}]
The FormSet plugin sets the default date format for a form field ''format'' in form ''testform''. (It also sets a radio button default value - just for demonstration, no real functionality.)
!Form Output and Error Messages
The second item, also hidden, looks like this:
{{{
[{FormOutput form='testform' handler='CurrentTimePlugin' populate='handler'}]
}}}
It specifies that the ''CurrentTimePlugin'', which comes in the stock JSPWiki distribution, should be used to generate
some output to display here. While the output is usually built in response to a POST from a form called ''testform'', the ''populate'' attribute here hints the plugin that we want default information even if no post has been made. This is
what the output looks like:
%%(margin:auto;text-align:center;padding:4px;background:#eee;border:1px inset)
[{FormOutput form='testform' handler='CurrentTimePlugin' populate='handler'}]
%%
!Opening the Form
The third element starts the actual HTML form called ''testform'':
{{{
[{FormOpen form='testform'}]
}}}
[{FormOpen form='testform'}]
!Form Fields
We'll use a text field to provide the format of CurrentTimePlugin's output. Notice that the name of this field is ''format'' - the name of CurrentTimePlugin's relevant parameter. This value is passed straight to CurrentTimePlugin on submit:
{{{
Enter the time format string: [{FormInput type='text' name='format'}]
}}}
%%(margin:auto;text-align:center;padding:4px;background:#eee;border:1px inset)
Enter the time format string: [{FormInput type='text' name='format'}]
%%
The rest of the form merely demonstrates some other HTML form elements. The don't work with CurrentTimePlugin, but you'll probably want them in your special form handler plugins.
Select list:
{{{
[{FormSelect name='sel1' value='fee;*fie;foe;foo'}]\\
}}}
(Notice, here, the asterisk; this denotes the default value to select. The separator character and the default character can be overridden - check [FormSelect] for more information.)
%%(margin:auto;text-align:center;padding:4px;background:#eee;border:1px inset)
[{FormSelect name='sel1' value='fee;*fie;foe;foo'}]\\
%%
Textarea:
{{{
[{FormTextarea name='area1' value='Write your own text here' rows=8 cols=40}]
}}}
%%(margin:auto;text-align:center;padding:4px;background:#eee;border:1px inset)
[{FormTextarea name='area1' value='Write your own text here' rows=8 cols=40}]
%%
!Submitting
Before finishing up, we need to add a submit button:
{{{
[{FormInput type='submit' name='x' value='Update'}]
}}}
%%(margin:auto;text-align:center;padding:4px;background:#eee;border:1px inset)
[{FormInput type='submit' name='x' value='Update'}]
%%
!Closing the Form
And, finally, an invisible closing element to denote that this form has ended:
{{{
[{FormClose}]
}}}
[{FormClose}]
----
Go ahead, click on ''Update'', and notice how your format changes and selections are retained.
----
!!Synopsis:
* (Optional) Start with the ''FormSet'', give defaults
* (Optional) If the form is supposed to give out information, add an ''output''
* (Mandatory) ''open'' the form
* (Optional) add any text/select elements
* (Mandatory) add a ''submit''
* (Mandatory) ''close'' the form