Difference: TWikiFormDotPm (4 vs. 5)

Revision 52008-01-22 - TWikiContributor

 

Package =TWiki::Form

Object representing a single form definition.

Added:
>
>
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.
 
Added:
>
>
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)

Added:
>
>
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, these definitions will be used, rather than those in $form.

May throw TWiki::OopsException

Changed:
<
<

ObjectMethod renderForEdit ($web,$topic,$meta) -> $html

>
>

ObjectMethod finish ()

Added:
>
>
Break circular references.
 
Deleted:
<
<
  • $web the web of the topic being rendered
  • $topic the topic being rendered
  • $meta the meta data for the form
 
Deleted:
<
<
Render the form fields for entry during an edit session, using data values from $meta
 
Added:
>
>

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
 
Deleted:
<
<

ObjectMethod *renderFieldForEdit ($fieldDef,$web,$topic,$value) -> $html

 
Changed:
<
<
  • $fieldDef the field being rendered
>
>

ObjectMethod renderForEdit ($web,$topic,$meta) -> $html

Added:
>
>
 
  • $web the web of the topic being rendered
  • $topic the topic being rendered
Changed:
<
<
  • $value the current value of the field
>
>
  • $meta the meta data for the form
 
Changed:
<
<
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
>
>
Render the form fields for entry during an edit session, using data values from $meta
Deleted:
<
<
types
 
Deleted:
<
<
SMELL: this should be a method on a field class
 
Deleted:
<
<
 

ObjectMethod renderHidden ($meta) -> $html

Render form fields found in the meta as hidden inputs, so they pass through edits untouched.

Deleted:
<
<

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.

  • $query - the query
  • $metaObject - the meta object that is storing the form values

For each field, if there is a value in the query, use it. Otherwise if there is already entry for the field in the meta, keep it.

Changed:
<
<
Returns the number of fields which had values provided by the query, and a references to an array of the names of mandatory fields that were
>
>
Returns the number of fields which had values provided by the query, and a references to an array of the names of mandatory fields that were
 missing from the query.

ObjectMethod *isTextMergeable ($name) -> $boolean

  • $name - name of a form field (value of the name attribute)

Returns true if the type of the named field allows it to be text-merged.

If the form does not define the field, it is assumed to be mergeable.

Changed:
<
<

ObjectMethod getField ($name) -> \%row

>
>

ObjectMethod getField ($name) -> $fieldDefinition

 
  • $name - name of a form field (value of the name attribute)
Changed:
<
<
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
Added:
>
>
define the field.
 

ObjectMethod getFields () -> \@fields

Return a list containing references to field name/value pairs. Each entry in the list has a {name} field and a {value} field. It may have other fields as well, which caller should ignore. The returned list should be treated as read only (must not be written to).

Deleted:
<
<

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?

 
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 1999-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Note: Please contribute updates to this topic on TWiki.org at TWiki:TWiki.TWikiFormDotPm.