!!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