Input type | Type field | Size field | Value field |
---|---|---|---|
One or more checkboxes | checkbox |
number of checkboxes per line | comma list of checkbox labels |
One or more checkboxes, plus Set and Clear buttons | checkbox+buttons |
(same) | (same) |
Read-only label text | label |
1 |
(unused) |
One or more radio buttons | radio |
number of radio buttons per line | comma list of checkbox labels |
Drop-down menu or scrollable box | select |
1 for drop down, 2 and up for scrollable box |
comma list of options |
A one-line text field | text |
text box width in number of characters | (unused) |
A text box; size is 40x10 (columns x rows) | textarea |
columns x rows, e.g. 40x6 |
(unused) |
**YourForm**
, **ExpenseReport**
, **InfoCategory**
, **RecordReview**
, whatever you need.
2. Create a TWiki table, with each column head representing one element of an entry field: **Name**
, **Type**
, **Size**
, **Values**
, and **Tooltip message**
_(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 _(you can later choose to [[enable/disable|Main/WebHome#EnablingForms]] individual forms)_.
> **Example:**
>
> **WebForm**
>
> %BR%
>
> `| *Name* | *Type* | *Size* | *Values* | *Tooltip message* |`
>
> %BR%
>
> `| TopicClassification | select | 1 | NoDisclosure, PublicSupported, PublicFAQ | blah blah... |`
>
> %BR%
>
> `| OperatingSystem | checkbox | 3 | OsHPUX, OsLinux, OsSolaris, OsWin | blah blah... |`
>
> %BR%
>
> `| OsVersion | text | 16 | | blah blah... |`
>
> Name | >Type | >Size | >Values | >Tooltip message | >
---|---|---|---|---|
TopicClassification | >select | >1 | >NoDisclosure, PublicSupported, PublicFAQ | >blah blah... | >
OperatingSystem | >checkbox | >3 | >OsHPUX, OsLinux, OsSolaris, OsWin | >blah blah... | >
OsVersion | >text | >16 | >> | blah blah... | >
**FormTemplate**
topic defines the Form, ex: **YourFormTemplate**
.
- For each field that has a value list - select, radio, checkbox - can use separate topic to define the available values.
> **Example: WebFormTemplate**
>
> - WebFormTemplate main definition: Name | >Type | >Size | >Values | >Tooltip message | >
---|---|---|---|---|
TopicClassification | >select | >1 | >> | blah blah... | >
OperatingSystem | >checkbox | >3 | >> | blah blah... | >
OsVersion | >text | >16 | >> | blah blah... | >
**Values**
field **blank**.
>
> - TopicClassification field value definition: Name | >Type | >Tooltip message | >
---|---|---|
NoDisclosure | >option | >blah blah... | >
PublicSupported | >option | >blah blah... | >
PublicFAQ | >option | >blah blah... | >
**\[[...]]**
links can be used to force a link (at present, the **\[[...]\[...]]**
format is not supported).
- The **Tooltip message**
column is used as a tooltip for the field name (only if field name is a [[WikiName]]) - you only see the tooltip In edit.
- The first item in the list is the default item. Alternative initial values can be set in a topic template, like **WebTopicEditTemplate**
, with **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.
## Including Forms in New Topics
- 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.
- Additionally 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:
- other than checkboxes: **name**
, ex: **?BugPriority=1**
- checkbox: **namevalue=1**
, ex: **?ColorRed=1**
. **WEBFORMS**
variable defines alternative forms that can be selected by pressing **Change** in edit mode.
- A topic template can use any form.
- 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 Data Storage
The form topic name, fields and values are stored as [[TWikiMetaData]] - the order of the field/value pairs is the same as in the template.
## Using Form Data
[[TWikiForms]] accept user-input data, stored as [[TWikiMetaData]]. Meta data also contains program-generated info about changes, attachments, etc. To find, format and display form and other meta data, see [[TWikiMetaData]], **SEARCH**
and **METASEARCH**
variables in [[TWikiVariables]], and [[TWiki Formatted Search|Main/FormattedSearch]] for various options.
## Main Changes from Category Tables
The Form Template system is a more powerful, flexible replacement for the original TWikiCategoryTable. Data from existing category tables can be imported directly.
Form Templates | Category Tables |
---|---|
defined in topics | defined in templates |
many forms per web | one table per web |
saved as Meta Data | saved as HTML |
Change & Add Form buttons | UseCategory radio button |
**twikicatitems.tmpl**
. The replacement Form Template must be set as the first item in the [[WebPreferences]] variable `WEBFORMS`. If missing, pages will display, but attempting to edit results in an error message.
The new Form Template system should work with old Category Table data with no special conversion. Data is assigned to Meta variables the first time an imported topic is edited and saved in the new system.
%T% **NOTE:** If things aren't working correctly, there may be useful entries in `data/warning.txt`.
## Using Forms For Settings
Example process to change your [[WebPreferences]] to use forms instead of `{3 spaces}* Set` statements:
1. create WebPrefencesForm topic
2. fill it with a table like this: %BR% `| *Name*|*Type*|*Size*|*Value*|*Tooltip message*|*Attributes*|` %BR% `| WEBTOPICLIST |textarea| | | List of topics of the %WEB% web |S|` %BR% `| SITEMAPLIST |select |3| on, | list this web in the Site Map |S|` %BR% `| SITEMAPWHAT |textarea| | | short web summary |S|` %BR% `| WEBBGCOLOR |text |8| | Web specific background color |S|` %BR% etc...
3. Edit [[WebPreferences]] and:
- Add or Change the form to WebPrefencesForm
- add WebPrefencesForm to the `Set WEBFORMS` line
- Save
4. Edit [[WebPreferences]], jump straight down to the form ignoring all the `textarea` stuff, and set as you like
5. if everything works as you like it, you can delete the Set statements (the form overrides set if they are both used).
**_Notes:_**
If it isn't working, double check that the **S**
attribute has been specified (S for Setting). If you change the form, the changes will not take affect until you edit and save the preferences' topics again.
Using the TWiki:Plugins.EditTablePlugin on WebPreferencesForm makes adding new prefedrences a breeze.
A possibly unwanted side effect for using forms for the SKINS setting in their personal user topic: because the User Preferences are final you can't have different skins for different webs as the user's setting always wins. A workaround is to simply omit SKIN in the form.
Another example, this one using EditTablePlugin, source:
`%EDITTABLE{ header="|*Name*|*Type*|*Size*|*Values*|*Tooltip message*|*Attributes*|" format="|text,20|text,20|text,20|text,20|text,20|text,1|" }%`
Result (after some editing):