%TOC% %STARTINCLUDE%
# Form Templates
Include form-based input in topics, with unlimited, user-selectable forms per web; values stored as Meta Data
## Overview
By adding form-based input to free-form content, you can structure topics with unlimited, easily searchable categories. When forms are enabled for a web and selected in a topic, the form appears in edit mode, and the contents are rendered as a table when viewing the actual page. When editing, can switch forms, if more than one is defined, or remove forms entirely. Form input values are stored as [[TWikiDocumentation]]; all data is saved.
Form Templates replace TWikiCategory Tables from the previous version of TWiki.
## Form Template Elements
* **form template** - a set of fields defining a form (replaces _category table definition_)
* A web can use one or more form templates.
* **form** - A topic containing additional meta-data (besides the free form TEXTAREA) which categorizes the content. (replaces _category table_)
* A topic has zero or one of the defined forms. So there are topics with a form or without.
* **form field** - a named item in a form (replaces _category item name_)
* **field type** - selects the INPUT type:
* **select** - drop-down menu or scrollable box
* **checkbox** - one or more checkboxes
* **checkbox+buttons** - one or more checkboxes, plus **Set** and **Clear** buttons
* **radio** - one or more radio buttons
* **text** - a one-line text field
* **textarea** - a text box; size is 40x10 (columns x rows)
* **field value** - one or more values from a fixed set (select, checkbox, radio type) or free-form (text). (replaces _category item value_)
### Defining a Form Template
A Form Template is simply a page containing your form, defined in a table where each row is one form field.
1. Create a new topic with your Form name: MyForm, ExpenseReport, InfoCategory, RecordReview, whatever you need.
2. Create a TWiki table, with each column representing one element of an entry field: Name, Type, Size, Values, and Tooltip msessage (see sample below).
3. For each field, fill in a new line; for the type of field, select from the list.
4. Save the topic.
>
>
> | *Name:* | *Type:* | *Size:* | *Values:* | *Tooltip message:* |
> | TopClass | select | 1 | Select one..., Private, Public | must fill |
> | Target | checkbox+buttons | 3 | 1, No.2, No.3 | Select OS |
> | Version | text | 16 | | OS version |
### Defining a Form in One Topic
Example: WebFormTemplate of the TWiki.Know web:
Name: |
Type: |
Size: |
Values: |
Tooltip message: |
Topic Classification? |
select |
1 |
No Disclosure?, Public Supported?, Public FAQ? |
blah blah... |
Operating System? |
checkbox |
3 |
Os HPUX?, Os Linux?, Os Solaris?, Os Win? |
blah blah... |
Os Version? |
text |
16 |
|
blah blah... |
### Defining a Form in Multiple Topics
The form template can also be defined in an alternative way by using more then one topic:
* A **form template topic** defines the form
* Values of fields that have more then one value, e.g. of type radio, select and checkbox can be defined by **field value template topics**
>
>
> * WebFormTemplate of the TWiki.Know web:
>
> Name: |
> Type: |
> Size: |
> Values: |
> Tooltip message: |
>
>
> Topic Classification? |
> select |
> 1 |
> |
> blah blah... |
>
>
> Operating System? |
> checkbox |
> 3 |
> |
> blah blah... |
>
>
> Os Version? |
> text |
> 16 |
> |
> blah blah... |
>
>
>
> * TopicClassification topic:
>
> Name: |
> Type: |
> Tooltip message: |
>
>
> No Disclosure? |
> option |
> blah blah... |
>
>
> Public Supported? |
> option |
> blah blah... |
>
>
> Public FAQ? |
> option |
> blah blah... |
>
>
#### Implementation Notes
* * This format allows you to define field items with / without [[TWiki/WikiNames]], depending on your needs.
* * The topic can be protected in the usual manner so that not everybody can change the form template - see [[TWikiAccessControl]]
* * `...` can be used for force a link, at present `...` format is not supported.
* * The "Tooltip message:" column is used as a tool tip for the field name (only if field name is a [[TWiki/WikiName]]) - you only see the tooltip on edit.
* * The first item in the list is the default item. Alternative initial values can be given in a topic template such as `WebTopicEditTemplate` or using field=value or for checkboxes field=1.
* * The topic definition is not read when a topic is viewed.
## Enabling Forms by Web
Forms are enabled on a per web basis. The **WEBFORMS**
variable in [[WebPreferences]] is optional and defines a list of possible Form Templates. Example:
* Set WEBFORMS = BugForm, FeatureForm, BookLoanForm
* With `WEBFORMS` enabled, an extra button is added to the edit view. If the topic doesn't have a Form, an **Add Form** button appears at the end of the topic. If a Form is present, a **Change** button appears in the top row of the Form. The buttons open a screen that enables selection of a form specified in `WEBFORMS`, or the **No form** option.
* A default Form Template (new topics get this default form) can be provided by creating the `WebTopicEditTemplate` topic in a web and adding a form to it. Initial Form values can be set there.
* Addtionaly a new topic can be given a form using the `formtemplate` parameter in the URL. Initial values can then be provided in the URLs or as form values. Names being:
* Not checkboxes - name e.g. ?BugPriority=1
* Checkbox - namevalue=1 e.g. ?ColourRed=1. Note that all boxes with a tick must be specified.
## Creating New Topics with Forms
When you create a new topic in a web that has the WEBFORMS Preferences variable set, an **Add Form** button appears at the bottom of the page. If the [[WebTopicEditTemplate]] topic has a form added, the form will appear with values set; press **Change** to remove the template or to switch to a different one.
A form embedded in a topic also appears in a new topic. This is done by specifying the `formtemplate` parameter in the URL.
## Setting Up Multiple Form Options
* The optional **WEBFORMS**
variable defines alternative Form Templates that can be selected by pressing **Change** in edit mode.
* A Template topic can use any Form Template.
* New topics with a Form are created by simple HTML forms asking for a topic name. For example, you can have a SubmitExpenseReport
topic where you can create new expense reports - a SubmitVacationRequest
topic and so on. These can specify the required template topic with its associated Form.
## Form Template Data Storage
The Form Template topic name, fields and values are stored as [[TWikiDocumentation]]. The order of field/value pairs in the Meta Data is the same as in the Template.
-- [[JohnTalintyre]] - 16 Aug 2001