internal package
Foswiki::Form is a
Foswiki::Meta 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 Foswiki::Form object, which has a list of field definitions. Each field definition is an object of a type derived from Foswiki::Form::FieldDefinition. These objects are responsible for the actual syntax and semantics of the field type. Form definitions are parsed from Foswiki tables, and the types are mapped by name to a class declared in Foswiki::Form::* - for example, thetext
type is mapped
to Foswiki::Form::Text
and the checkbox
type to Foswiki::Form::Checkbox
.
The Foswiki::Form::FieldDefinition
class declares default behaviours for
types that accept a single value in their definitions. The
Foswiki::Form::ListFieldDefinition
extends this for types that have lists
of possible values.
ClassMethod
new ( $session, $web, $topic, \@def ) $web
- default web to recover form from, if $form
doesn't specify a web
$topic
- name of the topic that contains the form definition
\@def
- optional. A reference to a list of field definitions. If present, these definitions will be used, rather than any read from the form definition topic.
ObjectMethod
finish() StaticMethod
getAvailableForms( $metaObject ) → @forms Get a list of the names of forms that are available for use in the given topic. $metaObject can be a topic or a web.
StaticMethod
fieldTitle2FieldName($title) → $name ObjectMethod
renderForEdit( $topicObject ) → $html $topicObject
the topic being rendered
Render the form fields for entry during an edit session, using data values from $meta
ObjectMethod
renderHidden( $topicObject ) → $html Render form fields found in the meta as hidden inputs, so they pass through edits untouched.
ObjectMethod
getFieldValuesFromQuery($query, $topicObject) → ( $seen, \@missing ) Extract new values for form fields from a query.
$query
- the query
$topicObject
- 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.
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.
ObjectMethod
getField( $name ) → $fieldDefinition $name
- name of a form field (value of the name
attribute)
Foswiki::Form::FieldDefinition
, or undef if the form does not
define the field.
ObjectMethod
getFields() → \@fields