|
Object representing a single form definition. |
|
> > | Form definitions are mainly used to control rendering of a form for
editing, though there is some application login there that handles
transferring values between edits and saves.
A form definition consists of a TWiki::Form object, which has a list
of field definitions. Each field definition is an object of a type
derived from TWiki::Form::FieldDefinition. These objects are responsible
for the actual syntax and semantics of the field type. Form definitions
are parsed from TWiki tables, and the types are mapped by name to a
class declared in TWiki::Form::* - for example, the text type is mapped
to TWiki::Form::Text and the checkbox type to TWiki::Form::Checkbox .
The TWiki::Form::FieldDefinition class declares default behaviours for
types that accept a single value in their definitions. The
TWiki::Form::ListFieldDefinition extends this for types that have lists
of possible values. |
|
ClassMethod new ($session,$web,$form,$def) |
|
> > | Looks up a form in the session object or, if it hasn't been read yet,
reads it frm the form definition topic on disc. |
|
- $web - default web to recover form from, if $form doesn't specify a web
-
$form - topic name to read form definition from
-
$def - optional. a reference to a list of field definitions. if present,
|
| |
|
< < | ObjectMethod renderForEdit ($web,$topic,$meta) -> $html |
> > |
Break circular references. |
| |
|
< < |
-
$web the web of the topic being rendered
-
$topic the topic being rendered
-
$meta the meta data for the form
|
| |
|
< < | Render the form fields for entry during an edit session, using data values
from $meta |
> > |
StaticMethod *fieldTitle2FieldName ($title) -> $name
Chop out all except A-Za-z0-9_. from a field name to create a
valid "name" for storing in meta-data |
| |
|
< < | ObjectMethod *renderFieldForEdit ($fieldDef,$web,$topic,$value) -> $html |
> > | ObjectMethod renderForEdit ($web,$topic,$meta) -> $html |
| |
|
< < |
-
$fieldDef the field being rendered
|
|
-
$web the web of the topic being rendered
-
$topic the topic being rendered
|
|
< < |
-
$value the current value of the field
Render a single form field for entry during an edit session, using data values
from $meta. Plugins can provide a handler that extends the set of supported
types |
> > |
-
$meta the meta data for the form
|
| |
|
< < | SMELL: this should be a method on a field class |
> > | Render the form fields for entry during an edit session, using data values
from $meta |
| |
| |
|
< < | ObjectMethod cgiName ($field) -> $string
Generate the 'name' of the CGI parameter used to represent a field.
|
| ObjectMethod *getFieldValuesFromQuery ($query,$metaObject) -> ($seen,\@missing)
Extract new values for form fields from a query. |
| |
|
< < | ObjectMethod getField ($name) -> \%row |
> > | ObjectMethod getField ($name) -> $fieldDefinition |
|
-
$name - name of a form field (value of the name attribute)
|
|
< < | Returns the field, or undef if the form does not define the field. |
> > | Returns a TWiki::Form::FieldDefinition , or undef if the form does not
define the field. |
| |
| returned list should be treated as read only (must not be written to). |
|
< < |
StaticMethod *renderForDisplay ($templates,$meta)
-
$templates ref to templates singleton
-
$meta - meta object containing the form to be rendered
Static because we want to be able to do this without a form definition.
SMELL: Why? Is reading the form topic such a big burden? |