| |
|
|
r2 - 30 Oct 2013 - 12:44 - AdminUser |
|
r1 - 23 Dec 2012 - 16:06 - UnknownUser |
|
| |
|
|
|
|
|
|
|
|
Flexible way to render DataForms |
|
Flexible way to render DataForms |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This plugin leverages the internal capabilities to render an interface for DataForms. This API is part of the Form class of Foswiki and is called renderForEdit(). It takes a form definition and creates an appropriate edit interface for the given DataFrom. This feature is actually very handy to write custom EDIT_TEMPLATEs and VIEW_TEMPLATEs in wiki applications. |
|
This plugin leverages the internal capabilities to render an interface for DataForms. This API is part of the Form class of Foswiki and is called renderForEdit(). It takes a form definition and creates an appropriate edit interface for the given DataFrom. This feature is actually very handy to write custom EDIT_TEMPLATEs and VIEW_TEMPLATEs in wiki applications. |
|
|
|
The %RENDEFFOREDIT and %RENDERFORDISPLAY macros allows wiki application authors to customize interfaces to DataForms while not losing the flexibility of defining a DataForm in one place. |
|
The %RENDEFFOREDIT and %RENDERFORDISPLAY macros allows wiki application authors to customize interfaces to DataForms while not losing the flexibility of defining a DataForm in one place. |
|
|
|
Imagine you created an EDIT_TEMPLATE without %RENDERFOREDIT by creating an HTML input form manually. When you decide to extend or modify a form definition later you will always have to maintain these HTML forms in an EDIT_TEMPLATE as well. This redundancy can be avoided by using a %RENDERFOREDIT macro that loops over all formfields in your DataForm to render the input form in a more dynamic way while still customizing the overall output. |
|
Imagine you created an EDIT_TEMPLATE without %RENDERFOREDIT by creating an HTML input form manually. When you decide to extend or modify a form definition later you will always have to maintain these HTML forms in an EDIT_TEMPLATE as well. This redundancy can be avoided by using a %RENDERFOREDIT macro that loops over all formfields in your DataForm to render the input form in a more dynamic way while still customizing the overall output. |
|
|
|
In addition, FlexFormPlugin facilitates the extraction of field default values (such as valid schema options) from DataForm. See http://foswiki.org/Development/MacroForRetrievingFieldDefaultValues for background. |
|
In addition, FlexFormPlugin facilitates the extraction of field default values (such as valid schema options) from DataForm. See http://foswiki.org/Development/MacroForRetrievingFieldDefaultValues for background. |
|
|
|
Usage |
|
Usage |
|
|
|
RENDERFOREDIT |
|
RENDERFOREDIT |
|
|
|
| Parameter | Description | Default |
|---|
| "..." (or topic="..." | name of a topic to render the edit form for | the base topic of the current url | | revision="..." | topic revision which to use the data from while populating the edit form | | excludeattr="..." | regular expression field attributes must match to be excluded from the output | undefined | | exclude="..." | regular expression fieldnames must match to be excluded from the output | undefined | | fields=", , ..." | list of formfields to render the interface for | all known formfields | | prefix="..." | adds a prefix string to the name while rendering the editor for a formfield | | footer="..." | footer string to apped to the output | | | format="..." | format string to render each formfield with, more info below | $edit$mandatory | | form="..." | topic name containing the DataForm definition | form found at the base topic | | header="..." | header string to be put in front of the output | | | hidden="..." | those fields that match this regular expression will be rendered hidden | undefined | | includeattr="..." | regular expression field attributes must match to be included in the output | undefined | | include="..." | regular expression fieldnames must match to be included in the output | undefined | | mandatory="..." | string to be inserted when a field is mandatory | ** | | map="=, =, ..." | allows to map a fieldname to a different title string in the edit interface | original fieldnames are used as title string | | separator="..." | string to be put between each formatted output per formfield | | | sort="on/off" | sort values of multi-valued formfields | on | | valueseparator="..." | string to be put between each allowed value as defined in the form schema | , | | value="..." | value to be inserted into the edit interface; makes sense for single-field calls only | stored value in the base topic | _attributes="..." _default="..." _description="..." _format="..." _name="..." _size="..." _title="..." _type="..." _values="..."
| these parameters allow to override the formfield properties as specified in the DataForm definition; for example a Teaser_type="text" , Teaser_size="30" will override a definition of a Teaser formfield that otherwise is a textarea of size 80x25; _values redefines the list of allowed values for that field | values as defined in the DataForm definition and the current topic | | _value="..." | value to be inserted into the edit interface of the named field | looks for urlparam , defaults to stored value | | _sort="..." | on/off/asc/desc/rev - sort allowed values before displaying them | as defined in the DataForm |
|
|
| Parameter | Description | Default |
|---|
| "..." (or topic="..." | name of a topic to render the edit form for | the base topic of the current url | | revision="..." | topic revision which to use the data from while populating the edit form | | excludeattr="..." | regular expression field attributes must match to be excluded from the output | undefined | | exclude="..." | regular expression fieldnames must match to be excluded from the output | undefined | | fields=", , ..." | list of formfields to render the interface for | all known formfields | | prefix="..." | adds a prefix string to the name while rendering the editor for a formfield | | footer="..." | footer string to apped to the output | | | format="..." | format string to render each formfield with, more info below | $edit$mandatory | | form="..." | topic name containing the DataForm definition | form found at the base topic | | header="..." | header string to be put in front of the output | | | hidden="..." | those fields that match this regular expression will be rendered hidden | undefined | | includeattr="..." | regular expression field attributes must match to be included in the output | undefined | | include="..." | regular expression fieldnames must match to be included in the output | undefined | | mandatory="..." | string to be inserted when a field is mandatory | ** | | map="=, =, ..." | allows to map a fieldname to a different title string in the edit interface | original fieldnames are used as title string | | separator="..." | string to be put between each formatted output per formfield | | | sort="on/off" | sort values of multi-valued formfields | on | | valueseparator="..." | string to be put between each allowed value as defined in the form schema | , | | value="..." | value to be inserted into the edit interface; makes sense for single-field calls only | stored value in the base topic | _attributes="..." _default="..." _description="..." _format="..." _name="..." _size="..." _title="..." _type="..." _values="..."
| these parameters allow to override the formfield properties as specified in the DataForm definition; for example a Teaser_type="text" , Teaser_size="30" will override a definition of a Teaser formfield that otherwise is a textarea of size 80x25; _values redefines the list of allowed values for that field | values as defined in the DataForm definition and the current topic | | _value="..." | value to be inserted into the edit interface of the named field | looks for urlparam , defaults to stored value | | _sort="..." | on/off/asc/desc/rev - sort allowed values before displaying them | as defined in the DataForm |
|
|
|
|
RENDERFORDISPLAY |
|
RENDERFORDISPLAY |
|
|
|
| Parameter | Description | Default |
|---|
| "..." or topic="..." | name of a topic to display the form for | the base topic of the current url | | revision="..." | topic revision to display | | autolink="on/off" | enable/disable WikiWord autolinking when rendering a formfield; setting autolink sets the default for all fields specific settings of =_autolink=which can, that is you can disable autolinking globally and switch it back on per field | on | | excludeattr="..." | regular expression field attributes must match to be excluded from the output | undefined | | exclude="..." | regular expression fieldnames must match to be excluded from the output | undefined | | fields=", , ..." | list of formfields to be displayed | all known formfields | | footer="..." | footer string to apped to the output | | | format="..." | format string to render each formfield with, more info below | $edit$mandatory | | form="..." | topic name containing the DataForm definition | form found at the base topic | | header="..." | header string to be put in front of the output | | | hideempty="on/off" | hide empty formfields | off | | includeattr="..." | regular expression field attributes must match to be included in the output | undefined | | include="..." | regular expression fieldnames must match to be included in the output | undefined | | labelformat="..." | format string used for labels exclusively; labels aren't real input fields; they are part of the form definition but carry read-only values only if at all | same as format | | map="=, =, ..." | allows to map a fieldname to a different title string (deprecated: please use _title to redefine the title) | original fieldnames are used as title string | | separator="..." | string to be put between each formatted output per formfield | | | sort="on/off" | sort values of multi-valued formfields | on | | valueseparator="..." | string to be put between each allowed value as defined in the form schema | , | _attributes="..." _autolink="..." _default="..." _description="..." _format="..." _size="..." _sort="..." _title="..." _type="..." _value="..." _values="..."
| see above | defaults as defined in the DataForm definition and the current topic |
|
|
| Parameter | Description | Default |
|---|
| "..." or topic="..." | name of a topic to display the form for | the base topic of the current url | | revision="..." | topic revision to display | | autolink="on/off" | enable/disable WikiWord autolinking when rendering a formfield; setting autolink sets the default for all fields specific settings of =_autolink=which can, that is you can disable autolinking globally and switch it back on per field | on | | excludeattr="..." | regular expression field attributes must match to be excluded from the output | undefined | | exclude="..." | regular expression fieldnames must match to be excluded from the output | undefined | | fields=", , ..." | list of formfields to be displayed | all known formfields | | footer="..." | footer string to apped to the output | | | format="..." | format string to render each formfield with, more info below | $edit$mandatory | | form="..." | topic name containing the DataForm definition | form found at the base topic | | header="..." | header string to be put in front of the output | | | hideempty="on/off" | hide empty formfields | off | | includeattr="..." | regular expression field attributes must match to be included in the output | undefined | | include="..." | regular expression fieldnames must match to be included in the output | undefined | | labelformat="..." | format string used for labels exclusively; labels aren't real input fields; they are part of the form definition but carry read-only values only if at all | same as format | | map="=, =, ..." | allows to map a fieldname to a different title string (deprecated: please use _title to redefine the title) | original fieldnames are used as title string | | separator="..." | string to be put between each formatted output per formfield | | | sort="on/off" | sort values of multi-valued formfields | on | | valueseparator="..." | string to be put between each allowed value as defined in the form schema | , | _attributes="..." _autolink="..." _default="..." _description="..." _format="..." _size="..." _sort="..." _title="..." _type="..." _value="..." _values="..."
| see above | defaults as defined in the DataForm definition and the current topic |
|
|
|
|
If all three format, header and footer are undefined a foswikiFormSteps block will be rendered as illustrated in the example below. |
|
If all three format, header and footer are undefined a foswikiFormSteps block will be rendered as illustrated in the example below. |
|
|
|
The format parameter may contain the following pseudo-variables: |
|
The format parameter may contain the following pseudo-variables: |
|
|
|
$attrs: attribute string as given in the DataForm definition $description: formfield description in DataForm $edit: the HTML form element as specified by the DataForm definition, that is a input field, a textarea, a select box, whatever $extra: the "extra" return value of the Foswiki::Form::renderForEdit() call $mandatory: placeholder to display the mandatory flag when a formfield is mandatory; the format of the mandatroy flag can be defined in the mandatory parameter to RENDERFOREDIT $name: the original fieldname $size: size parameter of the formfield as given in the DataForm definition $title: the fieldtitle derived from the fieldname and remapped as specified in the map parameter $tooltip: formfield description in DataForm (deprecated: use $description instead) $type: type of formfield as given in the DataForm definition $value: current value of the formfield; for +value formfields this is the mapped value use $origvalue to get the original one $origvalue: current value of the formfield; for +value formfields this is the original unmapped value of the formfield $values: list of all allowed values for the formfield as defined in the DataForm definition $origvalues: list of all allowed values; for +value formfields this is the original unmapped value of the formfield $default: this is the default value if no value is specified in the topic itself
|
|
$attrs: attribute string as given in the DataForm definition $description: formfield description in DataForm $edit: the HTML form element as specified by the DataForm definition, that is a input field, a textarea, a select box, whatever $extra: the "extra" return value of the Foswiki::Form::renderForEdit() call $mandatory: placeholder to display the mandatory flag when a formfield is mandatory; the format of the mandatroy flag can be defined in the mandatory parameter to RENDERFOREDIT $name: the original fieldname $size: size parameter of the formfield as given in the DataForm definition $title: the fieldtitle derived from the fieldname and remapped as specified in the map parameter $tooltip: formfield description in DataForm (deprecated: use $description instead) $type: type of formfield as given in the DataForm definition $value: current value of the formfield; for +value formfields this is the mapped value use $origvalue to get the original one $origvalue: current value of the formfield; for +value formfields this is the original unmapped value of the formfield $values: list of all allowed values for the formfield as defined in the DataForm definition $origvalues: list of all allowed values; for +value formfields this is the original unmapped value of the formfield $default: this is the default value if no value is specified in the topic itself
|
|
|
|
Examples |
|
Examples |
|
|
|
%RENDERFOREDIT{
form="%USERSWEB%.UserForm"
topic="Sandbox.TestTopic1"
exclude="Email|Comment|State"
FirstName_value="Horst"
LastName_value="Buchholz"
map="VoIP=Skype"
}%
|
|
%RENDERFOREDIT{
form="%USERSWEB%.UserForm"
topic="Sandbox.TestTopic1"
exclude="Email|Comment|State"
FirstName_value="Horst"
LastName_value="Buchholz"
map="VoIP=Skype"
}%
|
|
|
|
|
|
|
|
|
|
Display the allowed values of one field and its default |
|
Display the allowed values of one field and its default |
|
|
|
%RENDERFORDISPLAY{
form="ValueTransactionForm"
field="FromRole"
format="allowed values for $title are $values, default is '$default'"
}%
|
|
%RENDERFORDISPLAY{
form="ValueTransactionForm"
field="FromRole"
format="allowed values for $title are $values, default is '$default'"
}%
|
|
|
|
Installation Instructions |
|
Installation Instructions |
|
|
|
You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server. |
|
You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server. |
|
|
|
Open configure, and open the "Extensions" section. Use "Find More Extensions" to get a list of available extensions. Select "Install". |
|
Open configure, and open the "Extensions" section. Use "Find More Extensions" to get a list of available extensions. Select "Install". |
|
|
|
If you have any problems, or if the extension isn't available in configure, then you can still install manually from the command-line. See http://foswiki.org/Support/ManuallyInstallingExtensions for more help. |
|
If you have any problems, or if the extension isn't available in configure, then you can still install manually from the command-line. See http://foswiki.org/Support/ManuallyInstallingExtensions for more help. |
|
|
|
Info |
|
Info |
|
|
|
| Author(s): | Foswiki:MichaelDaum | | Copyright: | © 2009-2013 Michael Daum http://michaeldaumconsulting.com | | License: | GPL (Gnu General Public License) | | Release: | 13 Jul 2013 | | Version: | v2.8.0 | | Change History: | | | 13 Jul 2013: | added revision parameter to access non-top revisions; improved compatibility with foswiki-1.2.x | | 20 Mar 2013: | added _name to temporarily override the input field name | | 17 Oct 2012: | rationalized include and exclude; adding $mandatory to the default format | | 24 Feb 2012: | added $origvalues to display unmapped values of +values formfields; added prefix parameter; protecting the editor of a formfield by surrounding it with tags | | 25 Aug 2011: | fixed rendering +value formields yet again; added $origvalue | | 18 Mar 2011: | added autolink param; fixed getting default values; added global sort param; added fieldname_format param; protecting %MACROs in value attr of an input field | | 13 Aug 2010: | added fieldname_sort param to sort allowed field values before displaying them | | 10 Aug 2010: | added hideempty to RENDERFORDISPLAY | | 23 Jul 2010: | fixed rendering hidden fields when creating a new topic (Foswiki:Main/PasiHaekkinen) | | 22 Jul 2010: | fixed not try to load a non-existing form definition; providing fallback method for retrieving default values from form definition for those formfield types that can't do that by themselves; fixed expanding field title before the formfield does; fixed expanding standard escapes at the very end of the rendering process; added better default format for RENDERFOREDIT | | 07 Jun 2010: | added includeattr, excludeattr to filter formfields by their attributes | | 24 Mar 2010: | fixed error where topic values were not inserted into the edit form properly | | 12 Mar 2010: | cleaned up $value and $values variable in both RENDERFOREDIT and RENDERFORIDPLSAY; added $default | | 11 Mar 2010: | Foswiki:Main.MartinCleaver - added ability to extract allowed values of a field Foswiki:Tasks.Item8671 | | 10 Mar 2010: | added fine-grained control over each formfield, i.e. remapping of the formfield type | | 08 Mar 2010: | initial release | | Dependencies: | None | | Home page: | Foswiki:Extensions/FlexFormPlugin | | Support: | Foswiki:Support/FlexFormPlugin |
|
|
| Author(s): | Foswiki:MichaelDaum | | Copyright: | © 2009-2013 Michael Daum http://michaeldaumconsulting.com | | License: | GPL (Gnu General Public License) | | Release: | 13 Jul 2013 | | Version: | v2.8.0 | | Change History: | | | 13 Jul 2013: | added revision parameter to access non-top revisions; improved compatibility with foswiki-1.2.x | | 20 Mar 2013: | added _name to temporarily override the input field name | | 17 Oct 2012: | rationalized include and exclude; adding $mandatory to the default format | | 24 Feb 2012: | added $origvalues to display unmapped values of +values formfields; added prefix parameter; protecting the editor of a formfield by surrounding it with tags | | 25 Aug 2011: | fixed rendering +value formields yet again; added $origvalue | | 18 Mar 2011: | added autolink param; fixed getting default values; added global sort param; added fieldname_format param; protecting %MACROs in value attr of an input field | | 13 Aug 2010: | added fieldname_sort param to sort allowed field values before displaying them | | 10 Aug 2010: | added hideempty to RENDERFORDISPLAY | | 23 Jul 2010: | fixed rendering hidden fields when creating a new topic (Foswiki:Main/PasiHaekkinen) | | 22 Jul 2010: | fixed not try to load a non-existing form definition; providing fallback method for retrieving default values from form definition for those formfield types that can't do that by themselves; fixed expanding field title before the formfield does; fixed expanding standard escapes at the very end of the rendering process; added better default format for RENDERFOREDIT | | 07 Jun 2010: | added includeattr, excludeattr to filter formfields by their attributes | | 24 Mar 2010: | fixed error where topic values were not inserted into the edit form properly | | 12 Mar 2010: | cleaned up $value and $values variable in both RENDERFOREDIT and RENDERFORIDPLSAY; added $default | | 11 Mar 2010: | Foswiki:Main.MartinCleaver - added ability to extract allowed values of a field Foswiki:Tasks.Item8671 | | 10 Mar 2010: | added fine-grained control over each formfield, i.e. remapping of the formfield type | | 08 Mar 2010: | initial release | | Dependencies: | None | | Home page: | Foswiki:Extensions/FlexFormPlugin | | Support: | Foswiki:Support/FlexFormPlugin |
|
|
| |
|
|
r2 - 30 Oct 2013 - 12:44 - AdminUser |
|
r1 - 23 Dec 2012 - 16:06 - UnknownUser |
|
| |