Actions

Difference between revisions of "Repeatable form field type"

From Joomla! Documentation

(Save progress on repeatable form fields)
 
 
(3 intermediate revisions by one user not shown)
Line 5: Line 5:
 
* '''label''' (mandatory) (translatable) is the descriptive title of the field.
 
* '''label''' (mandatory) (translatable) is the descriptive title of the field.
 
* '''description''' description text for the form field. Displays at the top of the modal with the name as well as in the usual position in the form
 
* '''description''' description text for the form field. Displays at the top of the modal with the name as well as in the usual position in the form
* '''default''' The default value for the form field if the field is left empty.
+
* '''default''' The default value for the form field if the field is left empty. Note this has to be a json string compatible with the contents of the form field.
 
* '''id''' id of the hidden from field. (the modal will have this id with an added suffix of "_modal" and the table within the modal will have this id with a suffix of _modal_table")
 
* '''id''' id of the hidden from field. (the modal will have this id with an added suffix of "_modal" and the table within the modal will have this id with a suffix of _modal_table")
 
* '''class''' class of the table.
 
* '''class''' class of the table.
Line 11: Line 11:
 
* '''icon''' the icon to show on the select button (is prefixed with "icon-").
 
* '''icon''' the icon to show on the select button (is prefixed with "icon-").
 
* '''maximum''' the maximum number of rows of fields allowed (by default 999 to be effectively infinite)
 
* '''maximum''' the maximum number of rows of fields allowed (by default 999 to be effectively infinite)
 +
 +
To create a form field you must first of all create a repeatable form field as usual. Within this you place <source lang="php">
 +
<fields></source> open and close tag (if not already in one - if there is an existing fields tag for params etc. this is not needed.) and within this a <source lang="php">
 +
<fieldset></source> tag. The fieldset tag MUST have a name the same as your repeatable field name with "_modal" appended to the end of it - it should also have the <source lang="php">
 +
repeat="true"</source> in the fieldset tag. Within this fieldset you then include the form fields that you wish to have repeating (as with any form field).
  
 
Example XML Definition
 
Example XML Definition
 
<source type="xml">
 
<source type="xml">
<field name="list_templates"
+
<field name="list_templates"
type="Repeatable"
+
type="Repeatable"
icon="list"
+
icon="list"
description="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_DESC"
+
description="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_DESC"
label="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_LABEL"
+
label="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_LABEL"
default="{'template':['Layout','Simple snippet'],'location':['layout1.html','snippet1.html'],'description':['HTMLLayout','Simple HTML snippet']}">
+
default="{'template':['Layout','Simple snippet'],'location':['layout1.html','snippet1.html'],'description':['HTMLLayout','Simple HTML snippet']}">
<fields name="params">
+
<fields name="params">
<fieldset hidden="true" name="list_templates_modal" repeat="true">
+
<fieldset hidden="true" name="list_templates_modal" repeat="true">
<field name="template"
+
<field name="template"
label="PLG_TINY_FIELD_TEMPLATE_FIELD_NAME_LABEL"
+
label="PLG_TINY_FIELD_TEMPLATE_FIELD_NAME_LABEL"
size="30"
+
size="30"
type="text"/>
+
type="text" />
<field name="location"
+
<field name="location"
label="PLG_TINY_FIELD_TEMPLATE_FIELD_LOCATION_LABEL"
+
label="PLG_TINY_FIELD_TEMPLATE_FIELD_LOCATION_LABEL"
description="PLG_TINY_FIELD_TEMPLATE_LOCATION_DESC"
+
description="PLG_TINY_FIELD_TEMPLATE_LOCATION_DESC"
size="30"
+
size="30"
type="filelist"
+
type="filelist"
directory="media/editors/tinymce/templates"
+
directory="media/editors/tinymce/templates"
exclude="index.html"
+
exclude="index.html"
hide_default="true"
+
hide_default="true"
hide_none="true"/>
+
hide_none="true" />
<field name="description"
+
<field name="description"
label="PLG_TINY_FIELD_TEMPLATE_FIELD_DESCRIPTION_LABEL"
+
label="PLG_TINY_FIELD_TEMPLATE_FIELD_DESCRIPTION_LABEL"
size="30"
+
size="30"
type="textarea"
+
type="textarea" />
/>
+
</fieldset>
</fieldset>
+
</fields>
</fields>
+
 
</field>
 
</field>
 
</source>
 
</source>
  
 
[[Category:Standard form field types]]
 
[[Category:Standard form field types]]

Latest revision as of 19:13, 23 February 2014

Provides a modal with rows of formfields that you specify. As many options can be added as desired. Note this form field has a jQuery based javascript file as a dependency.

  • name (mandatory) is the unique name of the parameter.
  • type (mandatory) must be repeatable.
  • label (mandatory) (translatable) is the descriptive title of the field.
  • description description text for the form field. Displays at the top of the modal with the name as well as in the usual position in the form
  • default The default value for the form field if the field is left empty. Note this has to be a json string compatible with the contents of the form field.
  • id id of the hidden from field. (the modal will have this id with an added suffix of "_modal" and the table within the modal will have this id with a suffix of _modal_table")
  • class class of the table.
  • select (translatable) The text to show on the modal button.
  • icon the icon to show on the select button (is prefixed with "icon-").
  • maximum the maximum number of rows of fields allowed (by default 999 to be effectively infinite)

To create a form field you must first of all create a repeatable form field as usual. Within this you place

<fields>

open and close tag (if not already in one - if there is an existing fields tag for params etc. this is not needed.) and within this a

<fieldset>

tag. The fieldset tag MUST have a name the same as your repeatable field name with "_modal" appended to the end of it - it should also have the

repeat="true"

in the fieldset tag. Within this fieldset you then include the form fields that you wish to have repeating (as with any form field).

Example XML Definition

<field name="list_templates"
        type="Repeatable"
        icon="list"
        description="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_DESC"
        label="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_LABEL"
        default="{'template':['Layout','Simple snippet'],'location':['layout1.html','snippet1.html'],'description':['HTMLLayout','Simple HTML snippet']}">
        <fields name="params">
        <fieldset hidden="true" name="list_templates_modal" repeat="true">
                <field name="template"
                        label="PLG_TINY_FIELD_TEMPLATE_FIELD_NAME_LABEL"
                        size="30"
                        type="text" />
                <field name="location"
                        label="PLG_TINY_FIELD_TEMPLATE_FIELD_LOCATION_LABEL"
                        description="PLG_TINY_FIELD_TEMPLATE_LOCATION_DESC"
                        size="30"
                        type="filelist"
                        directory="media/editors/tinymce/templates"
                        exclude="index.html"
                        hide_default="true"
                        hide_none="true" />
                <field name="description"
                        label="PLG_TINY_FIELD_TEMPLATE_FIELD_DESCRIPTION_LABEL"
                        size="30"
                        type="textarea" />
        </fieldset>
        </fields>
</field>