[TASK] EXT:form - Move TypoScript to separate files, reduce complexity 40/43740/9
authorRalf Zimmermann <ralf.zimmermann@tritum.de>
Fri, 2 Oct 2015 14:23:07 +0000 (16:23 +0200)
committerBenni Mack <benni@typo3.org>
Tue, 6 Oct 2015 06:32:05 +0000 (08:32 +0200)
Move TypoScript settings to separate files. Remove TypoScript libraries.
Reduce complexity through direct usage of settings. Remove
unnecessary settings.

The inline documentation will be reduced (with another patchset) as soon
as the rst documentation is up to date.

Resolves: #70219
Releases: master
Change-Id: Ic05d78523f1253c71e033703f5243cdbc35d6b29
Reviewed-on: http://review.typo3.org/43740
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Bjoern Jacob <bjoern.jacob@tritum.de>
Tested-by: Bjoern Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Daniel Goerz <ervaude@gmail.com>
Tested-by: Daniel Goerz <ervaude@gmail.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
29 files changed:
typo3/sysext/form/Classes/Domain/Repository/TypoScriptRepository.php
typo3/sysext/form/Configuration/TypoScript/Elements/Button.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Buttontag.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Checkbox.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Checkboxgroup.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Contentelement.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Fieldset.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Fileupload.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Form.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Header.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Hidden.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Imagebutton.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Input.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Inputtypebutton.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Label.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Optgroup.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Option.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Password.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Radio.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Radiogroup.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Reset.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Select.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Submit.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Textarea.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Textblock.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Elements/Textline.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Filters/Filters.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/Validators/Validators.ts [new file with mode: 0644]
typo3/sysext/form/Configuration/TypoScript/setup.txt

index 9376bba..f6766cb 100644 (file)
@@ -74,9 +74,7 @@ class TypoScriptRepository implements SingletonInterface {
                        }
                        $registeredElements = $this->modelDefinitionTypoScript['settings.']['registeredElements.'];
                        foreach ($registeredElements as $registeredElementKey => $value) {
-                               if (strpos(strrev($registeredElementKey), '.') === 0) {
-                                       continue;
-                               }
+                               $registeredElementKey = rtrim($registeredElementKey, '.');
                                $this->registeredElementTypes[] = $registeredElementKey;
                        }
                }
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Button.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Button.ts
new file mode 100644 (file)
index 0000000..7cec6af
--- /dev/null
@@ -0,0 +1,38 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       BUTTON {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Button
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # BUTTON
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.button
+                               #
+                               # A historical element which generates a <input type="button" /> tag.
+                               # To be compatible it is a copy of the new element INPUTTYPEBUTTON
+                               # If you want to use a <button> tag you have to use
+                               # BUTTON =< .BUTTONTAG or use the BUTTONTAG directly
+                       BUTTON =< .INPUTTYPEBUTTON
+                       BUTTON {
+                               partialPath =< plugin.tx_form.view.elementPartials.INPUTTYPEBUTTON.10.partialPath
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Buttontag.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Buttontag.ts
new file mode 100644 (file)
index 0000000..fd70bf2
--- /dev/null
@@ -0,0 +1,135 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       BUTTONTAG {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/ButtonTag
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # BUTTONTAG
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.button
+                               #
+                               # Generates an element <button type="..." />
+                       BUTTONTAG {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       160 = autofocus
+                                       170 = disabled
+                                       180 = name
+                                       190 = type
+                                       200 = value
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       100 = name
+                                       110 = value
+                                               # ButtonViewHelper
+                                       120 = autofocus
+                                       130 = type
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.BUTTONTAG.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Checkbox.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Checkbox.ts
new file mode 100644 (file)
index 0000000..2df5469
--- /dev/null
@@ -0,0 +1,164 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       CHECKBOX {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Checkbox
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # CHECKBOX
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.checkbox
+                               #
+                               # @ToDo: add more details
+                       CHECKBOX {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = checkbox
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # CheckboxViewHelper
+                                       200 = checked
+                                       210 = multiple
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.CHECKBOX.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Checkboxgroup.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Checkboxgroup.ts
new file mode 100644 (file)
index 0000000..fc079b2
--- /dev/null
@@ -0,0 +1,67 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       CHECKBOXGROUP {
+                               10 {
+                                       displayName = Default
+                                       partialPath = ContainerElements/Checkboxgroup
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # CHECKBOXGROUP
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: none
+                               #
+                               # This defines a container element.
+                               # @ToDo: add more details
+                       CHECKBOXGROUP =< .FIELDSET
+                       CHECKBOXGROUP {
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.CHECKBOXGROUP.10.partialPath
+
+                                       # childrenInheritName
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # If set to 1 all child elements inherit the name of the parent element.
+                                       # @ToDo: add more details
+                               childrenInheritName = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Contentelement.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Contentelement.ts
new file mode 100644 (file)
index 0000000..8719848
--- /dev/null
@@ -0,0 +1,69 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                               # useless for the wizard but needed for the frontend
+                       CONTENTELEMENT {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/ContentElement
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # CONTENTELEMENT
+                               # Used by: frontend
+                               # Used ViewHelper: none
+                               #
+                               # This defines an internal element which holds some basic configuration
+                               # like visibility settings and the used partial path.
+                               #
+                               # @ToDo: add more details
+                       CONTENTELEMENT {
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.CONTENTELEMENT.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Fieldset.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Fieldset.ts
new file mode 100644 (file)
index 0000000..2f27328
--- /dev/null
@@ -0,0 +1,96 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       FIELDSET {
+                               10 {
+                                       displayName = Default
+                                       partialPath = ContainerElements/Fieldset
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # FIELDSET
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: none
+                               #
+                               # This defines a container element.
+                               # @ToDo: add more details
+                       FIELDSET {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = disabled
+                                       210 = name
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.FIELDSET.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Fileupload.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Fileupload.ts
new file mode 100644 (file)
index 0000000..7d3e51e
--- /dev/null
@@ -0,0 +1,163 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       FILEUPLOAD {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Upload
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # FILEUPLOAD
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.upload
+                               #
+                               # @ToDo: add more details
+                       FILEUPLOAD {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = file
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # UploadViewHelper
+                                       200 = multiple
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.FILEUPLOAD.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Form.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Form.ts
new file mode 100644 (file)
index 0000000..57e23dc
--- /dev/null
@@ -0,0 +1,183 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       FORM {
+                               10 {
+                                       displayName = Default
+                                       partialPath = ContainerElements/Form
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # FORM
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Overwritable by user: TRUE
+                               # Used ViewHelper: f:form
+                               #
+                               # @ToDo: add more details
+                       FORM {
+                                       # compatibilityMode
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       # Only evaluated for FORM element
+                                       #
+                                       # If set to 1 tx_form acts almost like in TYPO3 6.2.
+                                       # This setting can be overwritten in the FORM object.
+                                       # @ToDo: add more details
+                                       #
+                                       # only for FORM
+                               compatibilityMode = 1
+
+                                       # themeName
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # Sets the theme name used for templating.
+                                       # Right now there are 2 themes:
+                                       #       * Default: This theme provides a solid and clean foundation and should be used.
+                                       #       * Compatibility: This theme imitates the form layout/ behavior of TYPO3 6.2.
+                                       # If compatibilityMode = 1 and layout is used in the user definded TypoScript
+                                       # the theme name switches automatically to "Compatibility".
+                                       #
+                                       # This setting can be overwritten in the FORM object.
+                                       # @ToDo: add more details
+                               themeName = Default
+
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = action
+                                       210 = accept-charset
+                                       220 = autocomplete
+                                       230 = enctype
+                                       240 = method
+                                       250 = name
+                                       260 = novalidate
+                                       270 = target
+                               }
+
+                                       # defaultHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set if there is no entry in the user configured element.
+                               defaultHtmlAttributeValues {
+                                       enctype = multipart/form-data
+                                       method = post
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues =
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                               # FormViewHelper
+                                       200 = enctype
+                                       210 = method
+                                       220 = name
+                                       230 = onreset
+                                       240 = onsubmit
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.FORM.10.partialPath
+
+                                       # viewHelperDefaultArguments
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # This helper array is used to cast some values needed by the ViewHelpers.
+                                       # E.g the f:form ViewHelper needs an array for the
+                                       # argument "additionalParams". If additionalParams is not set
+                                       # in the userdefined TypoScript this results in a NULL value in the
+                                       # templating variable "{model.additionalArguments.additionalParams}"
+                                       # and this throws an error. Most of the ViewHelper arguments
+                                       # are strings and/ or can handle such NULL values but there are some
+                                       # ViewHelpers which need some type casting.
+                               viewHelperDefaultArguments {
+                                       arguments {
+                                       }
+
+                                       additionalParams {
+                                       }
+
+                                       argumentsToBeExcludedFromQueryString {
+                                       }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Header.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Header.ts
new file mode 100644 (file)
index 0000000..fc7ea71
--- /dev/null
@@ -0,0 +1,65 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       HEADER {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Header
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # HEADER
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:format.raw
+                               #
+                               # @ToDo: add more details
+                       HEADER {
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.HEADER.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Hidden.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Hidden.ts
new file mode 100644 (file)
index 0000000..87a0eb7
--- /dev/null
@@ -0,0 +1,161 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       HIDDEN {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Hidden
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # HIDDEN
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.hidden
+                               #
+                               # @ToDo: add more details
+                       HIDDEN {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = hidden
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.HIDDEN.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Imagebutton.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Imagebutton.ts
new file mode 100644 (file)
index 0000000..8f884c6
--- /dev/null
@@ -0,0 +1,170 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       IMAGEBUTTON {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Imagebutton
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # IMAGEBUTTON
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.textfield
+                               # Deprecated
+                               #
+                               # @ToDo: add more details
+                       IMAGEBUTTON {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = image
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # TextfieldViewHelper
+                                       200 = autofocus
+                                       210 = maxlength
+                                       220 = size
+                                       230 = placeholder
+                                       240 = pattern
+                                       250 = required
+                                       260 = type
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.IMAGEBUTTON.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Input.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Input.ts
new file mode 100644 (file)
index 0000000..1b337f8
--- /dev/null
@@ -0,0 +1,160 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       INPUT {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Input
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # INPUT
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.textfield
+                               #
+                               # @ToDo: add more details
+                       INPUT {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # TextfieldViewHelper
+                                       200 = autofocus
+                                       210 = maxlength
+                                       220 = size
+                                       230 = placeholder
+                                       240 = pattern
+                                       250 = required
+                                       260 = type
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.INPUT.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Inputtypebutton.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Inputtypebutton.ts
new file mode 100644 (file)
index 0000000..8dab9f6
--- /dev/null
@@ -0,0 +1,169 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       INPUTTYPEBUTTON {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/InputTypeButton
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # INPUTTYPEBUTTON
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.textfield
+                               #
+                               # Generates an element <input type="button" />
+                       INPUTTYPEBUTTON {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = button
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # TextfieldViewHelper
+                                       200 = autofocus
+                                       210 = maxlength
+                                       220 = size
+                                       230 = placeholder
+                                       240 = pattern
+                                       250 = required
+                                       260 = type
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.INPUTTYPEBUTTON.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Label.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Label.ts
new file mode 100644 (file)
index 0000000..5a3afe0
--- /dev/null
@@ -0,0 +1,22 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                               # special definitions for internal usage
+                       LABEL {
+                               10 {
+                                       displayName = Default
+                                       partialPath = AdditionalElements/Label
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Optgroup.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Optgroup.ts
new file mode 100644 (file)
index 0000000..a30bf70
--- /dev/null
@@ -0,0 +1,17 @@
+plugin.tx_form {
+       settings {
+               registeredElements {
+                               # OPTGROUP
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: form:select (extends f:form.select)
+                               #
+                               # Element is needed to define select options via TypoScript but
+                               # the rendering is based on the select ViewHelper.
+                               # Therefore no special settings are needed.
+                               #
+                               # @ToDo: add more details
+                       OPTGROUP {
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Option.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Option.ts
new file mode 100644 (file)
index 0000000..cc84a4b
--- /dev/null
@@ -0,0 +1,17 @@
+plugin.tx_form {
+       settings {
+               registeredElements {
+                               # OPTION
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: form:select (extends f:form.select)
+                               #
+                               # Element is needed to define select options via TypoScript but
+                               # the rendering is based on the select ViewHelper.
+                               # Therefore no special settings are needed.
+                               #
+                               # @ToDo: add more details
+                       OPTION {
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Password.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Password.ts
new file mode 100644 (file)
index 0000000..f469cd4
--- /dev/null
@@ -0,0 +1,164 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       PASSWORD {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Password
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # PASSWORD
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.password
+                               #
+                               # @ToDo: add more details
+                       PASSWORD {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = password
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # PasswordViewHelper
+                                       200 = maxlength
+                                       210 = size
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.PASSWORD.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Radio.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Radio.ts
new file mode 100644 (file)
index 0000000..cdc810c
--- /dev/null
@@ -0,0 +1,163 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       RADIO {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Radio
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # RADIO
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.radio
+                               #
+                               # @ToDo: add more details
+                       RADIO {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = radio
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # RadioViewHelper
+                                       200 = checked
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.RADIO.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Radiogroup.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Radiogroup.ts
new file mode 100644 (file)
index 0000000..9edbc46
--- /dev/null
@@ -0,0 +1,67 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       RADIOGROUP {
+                               10 {
+                                       displayName = Default
+                                       partialPath = ContainerElements/Radiogroup
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # RADIOGROUP
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: none
+                               #
+                               # This defines a container element.
+                               # @ToDo: add more details
+                       RADIOGROUP =< .FIELDSET
+                       RADIOGROUP {
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.RADIOGROUP.10.partialPath
+
+                                       # childrenInheritName
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # If set to 1 all child elements inherit the name of the parent element.
+                                       # @ToDo: add more details
+                               childrenInheritName = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Reset.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Reset.ts
new file mode 100644 (file)
index 0000000..dfecde4
--- /dev/null
@@ -0,0 +1,169 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       RESET {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Reset
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # RESET
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.textfield
+                               #
+                               # @ToDo: add more details
+                       RESET {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = reset
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # TextfieldViewHelper
+                                       210 = autofocus
+                                       220 = maxlength
+                                       230 = size
+                                       240 = placeholder
+                                       250 = pattern
+                                       260 = required
+                                       270 = type
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.RESET.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Select.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Select.ts
new file mode 100644 (file)
index 0000000..9ab7d4b
--- /dev/null
@@ -0,0 +1,136 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       SELECT {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Select
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # SELECT
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: form:select (extends f:form.select)
+                               #
+                               # @ToDo: add more details
+                       SELECT {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = autofocus
+                                       210 = disabled
+                                       220 = multiple
+                                       230 = name
+                                       240 = required
+                                       250 = size
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # SelectViewHelper
+                                       120 = multiple
+                                       130 = size
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.SELECT.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Submit.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Submit.ts
new file mode 100644 (file)
index 0000000..160f0c9
--- /dev/null
@@ -0,0 +1,161 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       SUBMIT {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Submit
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # SUBMIT
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.submit
+                               #
+                               # @ToDo: add more details
+                       SUBMIT {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = submit
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.SUBMIT.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Textarea.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Textarea.ts
new file mode 100644 (file)
index 0000000..8a82dae
--- /dev/null
@@ -0,0 +1,147 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       TEXTAREA {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Textarea
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # TEXTAREA
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.textarea
+                               #
+                               # @ToDo: add more details
+                       TEXTAREA {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = autocomplete
+                                       210 = autofocus
+                                       220 = cols
+                                       230 = disabled
+                                       240 = maxlength
+                                       250 = minlength
+                                       260 = name
+                                       270 = placeholder
+                                       280 = readonly
+                                       290 = required
+                                       300 = rows
+                                       310 = selectionDirection
+                                       320 = selectionEnd
+                                       330 = selectionStart
+                                       340 = wrap
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # TextareaViewHelper
+                                       200 = autofocus
+                                       210 = rows
+                                       220 = cols
+                                       230 = placeholder
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.TEXTAREA.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Textblock.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Textblock.ts
new file mode 100644 (file)
index 0000000..805f396
--- /dev/null
@@ -0,0 +1,65 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       TEXTBLOCK {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Textblock
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # TEXTBLOCK
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:format.raw
+                               #
+                               # @ToDo: add more details
+                       TEXTBLOCK {
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.TEXTBLOCK.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 0
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 0
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Elements/Textline.ts b/typo3/sysext/form/Configuration/TypoScript/Elements/Textline.ts
new file mode 100644 (file)
index 0000000..b6946a4
--- /dev/null
@@ -0,0 +1,169 @@
+plugin.tx_form {
+               # elementPartials
+               # Used by: frontend, wizard (not implemented right now)
+               # Overwritable by user: FALSE
+               #
+               # Defines the template selection array for the form wizard.
+               # Each defined item is shown as option within the wizard.
+               #
+               # If there is no partialPath property in the userdefined TypoScript
+               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
+       view {
+               elementPartials {
+                       TEXTLINE {
+                               10 {
+                                       displayName = Default
+                                       partialPath = FlatElements/Textfield
+                               }
+                       }
+               }
+       }
+
+       settings {
+               registeredElements {
+                               # TEXTLINE
+                               # Used by: frontend, wizard (not implemented right now)
+                               # Used ViewHelper: f:form.textfield
+                               #
+                               # @ToDo: add more details
+                       TEXTLINE {
+                                       # htmlAttributes
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Defines allowed HTML attributes for a specific element.
+                                       # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
+                                       # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
+                                       # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
+                               htmlAttributes {
+                                               # generic attributes
+                                       10 = id
+                                       20 = class
+                                       30 = accesskey
+                                       40 = contenteditable
+                                       50 = contextmenu
+                                       60 = dir
+                                       70 = draggable
+                                       80 = dropzone
+                                       90 = hidden
+                                       100 = lang
+                                       110 = spellcheck
+                                       120 = style
+                                       130 = tabindex
+                                       140 = title
+                                       150 = data-*
+                                               # element specific attributes
+                                       200 = type
+                                       210 = accept
+                                       220 = autocomplete
+                                       230 = alt
+                                       240 = autofocus
+                                       250 = checked
+                                       260 = disabled
+                                       270 = height
+                                       280 = inputmode
+                                       290 = list
+                                       300 = max
+                                       310 = maxlength
+                                       320 = min
+                                       330 = minlength
+                                       340 = multiple
+                                       350 = name
+                                       360 = pattern
+                                       370 = placeholder
+                                       380 = readonly
+                                       390 = required
+                                       400 = size
+                                       410 = src
+                                       420 = step
+                                       430 = value
+                                       440 = width
+                               }
+
+                                       # fixedHtmlAttributeValues
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # The following values are automatically set as attributes.
+                               fixedHtmlAttributeValues {
+                                       type = text
+                               }
+
+                                       # htmlAttributesUsedByTheViewHelperDirectly
+                                       # Used by: frontend
+                                       # Overwritable by user: FALSE
+                                       #
+                                       # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
+                                       # This array will be added to the resulting HTML tag.
+                                       # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
+                                       #
+                                       # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
+                                       # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
+                                       # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
+                                       #
+                                       # There are two attributes which special behavior:
+                                       #       * disabled
+                                       #       * readonly
+                                       # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
+                                       # the browser will disable this element no matter of the value.
+                                       # See: https://forge.typo3.org/issues/42474
+                                       # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
+                               htmlAttributesUsedByTheViewHelperDirectly {
+                                               # generic attributes
+                                       10 = class
+                                       20 = dir
+                                       30 = id
+                                       40 = lang
+                                       50 = style
+                                       60 = title
+                                       70 = accesskey
+                                       80 = tabindex
+                                       90 = onclick
+                                       150 = name
+                                       160 = value
+                                               # TextfieldViewHelper
+                                       200 = autofocus
+                                       210 = maxlength
+                                       220 = size
+                                       230 = placeholder
+                                       240 = pattern
+                                       250 = required
+                                       260 = type
+                               }
+
+                                       # partialPath
+                                       # Used by: frontend, wizard (not implemented right now)
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # The defined partial is used to render the element.
+                                       # The partial paths to the element are build based on the following rule:
+                                       # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
+                               partialPath =< plugin.tx_form.view.elementPartials.TEXTLINE.10.partialPath
+
+                                       # visibleInShowAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the form.
+                                       # @ToDo: add more details
+                               visibleInShowAction = 1
+
+                                       # visibleInConfirmationAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the confirmation page.
+                                       # @ToDo: add more details
+                               visibleInConfirmationAction = 1
+
+                                       # visibleInProcessAction
+                                       # Used by: frontend
+                                       # Overwritable by user: TRUE
+                                       #
+                                       # If set to 1 this element is displayed in the mail.
+                                       # @ToDo: add more details
+                               visibleInMail = 1
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Filters/Filters.ts b/typo3/sysext/form/Configuration/TypoScript/Filters/Filters.ts
new file mode 100644 (file)
index 0000000..df8fe68
--- /dev/null
@@ -0,0 +1,71 @@
+plugin.tx_form {
+       settings {
+                       # registeredFilters
+                       # Used by: frontend, wizard (not implemented right now)
+                       # Overwritable by user: FALSE
+                       #
+                       # The array holds all available filters.
+                       # "displayName" is planned for the wizard (not implemented right now).
+               registeredFilters {
+                       alphabetic {
+                               displayName = Alphabetic
+                               className = TYPO3\CMS\Form\Domain\Filter\AlphabeticFilter
+                       }
+
+                       alphanumeric {
+                               displayName = Alphanumeric
+                               className = TYPO3\CMS\Form\Domain\Filter\AlphanumericFilter
+                       }
+
+                       currency {
+                               displayName = Currency
+                               className = TYPO3\CMS\Form\Domain\Filter\CurrencyFilter
+                       }
+
+                       digit {
+                               displayName = Digit
+                               className = TYPO3\CMS\Form\Domain\Filter\DigitFilter
+                       }
+
+                       integer {
+                               displayName = Integer
+                               className = TYPO3\CMS\Form\Domain\Filter\IntegerFilter
+                       }
+
+                       lowercase {
+                               displayName = Lowercase
+                               className = TYPO3\CMS\Form\Domain\Filter\LowerCaseFilter
+                       }
+
+                       regexp {
+                               displayName = Regular Expression
+                               className = TYPO3\CMS\Form\Domain\Filter\RegExpFilter
+                       }
+
+                       removexss {
+                               displayName = Remove XSS
+                               className = TYPO3\CMS\Form\Domain\Filter\RemoveXssFilter
+                       }
+
+                       stripnewlines {
+                               displayName = Strip New Lines
+                               className = TYPO3\CMS\Form\Domain\Filter\StripNewLinesFilter
+                       }
+
+                       titlecase {
+                               displayName = Titlecase
+                               className = TYPO3\CMS\Form\Domain\Filter\TitleCaseFilter
+                       }
+
+                       trim {
+                               displayName = Trim
+                               className = TYPO3\CMS\Form\Domain\Filter\TrimFilter
+                       }
+
+                       uppercase {
+                               displayName = Uppercase
+                               className = TYPO3\CMS\Form\Domain\Filter\UpperCaseFilter
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/form/Configuration/TypoScript/Validators/Validators.ts b/typo3/sysext/form/Configuration/TypoScript/Validators/Validators.ts
new file mode 100644 (file)
index 0000000..d8534f1
--- /dev/null
@@ -0,0 +1,111 @@
+plugin.tx_form {
+       settings {
+                       # registeredValidators
+                       # Used by: frontend, wizard (not implemented right now)
+                       # Overwritable by user: FALSE
+                       #
+                       # The array holds all available validators.
+                       # "displayName" is planned for the form wizard (not implemented right now).
+               registeredValidators {
+                       alphabetic {
+                               displayName = Alphabetic
+                               className = TYPO3\CMS\Form\Domain\Validator\AlphabeticValidator
+                       }
+
+                       alphanumeric {
+                               displayName = Alphanumeric
+                               className = TYPO3\CMS\Form\Domain\Validator\AlphanumericValidator
+                       }
+
+                       between {
+                               displayName = Between
+                               className = TYPO3\CMS\Form\Domain\Validator\BetweenValidator
+                       }
+
+                       date {
+                               displayName = Date
+                               className = TYPO3\CMS\Form\Domain\Validator\DateValidator
+                       }
+
+                       digit {
+                               displayName = Digit
+                               className = TYPO3\CMS\Form\Domain\Validator\DigitValidator
+                       }
+
+                       email {
+                               displayName = Email address
+                               className = TYPO3\CMS\Form\Domain\Validator\EmailValidator
+                       }
+
+                       equals {
+                               displayName = Equals
+                               className = TYPO3\CMS\Form\Domain\Validator\EqualsValidator
+                       }
+
+                       fileallowedtypes {
+                               displayName = Allowed mimetypes for file
+                               className = TYPO3\CMS\Form\Domain\Validator\FileAllowedTypesValidator
+                       }
+
+                       filemaximumsize {
+                               displayName = Maximum size for file (bytes)
+                               className = TYPO3\CMS\Form\Domain\Validator\FileMaximumSizeValidator
+                       }
+
+                       fileminimumsize {
+                               displayName = Minimum size for file (bytes)
+                               className = TYPO3\CMS\Form\Domain\Validator\FileMinimumSizeValidator
+                       }
+
+                       float {
+                               displayName = Float
+                               className = TYPO3\CMS\Form\Domain\Validator\FloatValidator
+                       }
+
+                       greaterthan {
+                               displayName = Greater than
+                               className = TYPO3\CMS\Form\Domain\Validator\GreaterThanValidator
+                       }
+
+                       inarray {
+                               displayName = In array
+                               className = TYPO3\CMS\Form\Domain\Validator\InArrayValidator
+                       }
+
+                       integer {
+                               displayName = Integer
+                               className = TYPO3\CMS\Form\Domain\Validator\IntegerValidator
+                       }
+
+                       ip {
+                               displayName = Ip address
+                               className = TYPO3\CMS\Form\Domain\Validator\IpValidator
+                       }
+
+                       length {
+                               displayName = Length
+                               className = TYPO3\CMS\Form\Domain\Validator\LengthValidator
+                       }
+
+                       lessthan {
+                               displayName = Less than
+                               className = TYPO3\CMS\Form\Domain\Validator\LessThanValidator
+                       }
+
+                       regexp {
+                               displayName = Regular Expression
+                               className = TYPO3\CMS\Form\Domain\Validator\RegExpValidator
+                       }
+
+                       required {
+                               displayName = Required
+                               className = TYPO3\CMS\Form\Domain\Validator\RequiredValidator
+                       }
+
+                       uri {
+                               displayName = Uniform Resource Identifier
+                               className = TYPO3\CMS\Form\Domain\Validator\UriValidator
+                       }
+               }
+       }
+}
\ No newline at end of file
index 15a53b2..ff3a833 100644 (file)
@@ -1,5 +1,4 @@
-# Replace rendering of old mailform
-
+       # Replace rendering of old mailform
 tt_content.mailform >
 tt_content.mailform = COA
 tt_content.mailform.10 = < lib.stdheader
@@ -13,194 +12,12 @@ tt_content.mailform.20 {
        }
 }
 
-lib.tx_form.html.universalAttributes {
-       10 = id
-       20 = class
-       30 = accesskey
-       40 = contenteditable
-       50 = contextmenu
-       60 = dir
-       70 = draggable
-       80 = dropzone
-       90 = hidden
-       100 = lang
-       110 = spellcheck
-       120 = style
-       130 = tabindex
-       140 = title
-       150 = data-*
-}
-
-lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractTagBasedViewHelper {
-       10 = class
-       20 = dir
-       30 = id
-       40 = lang
-       50 = style
-       60 = title
-       70 = accesskey
-       80 = tabindex
-       90 = onclick
-}
-
-lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractFormFieldViewHelper =< lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractTagBasedViewHelper
-lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractFormFieldViewHelper {
-       150 = name
-       160 = value
-}
-
-lib.tx_form.registeredElements.defaultModelDescription {
-               # compatibilityMode
-               # Used by: frontend
-               # Overwritable by user: TRUE
-               #
-               # If set to 1 tx_form acts almost like in TYPO3 6.2.
-               # This setting can be overwritten in the FORM object.
-               # @ToDo: add more details
-       compatibilityMode = 1
-
-               # themeName
-               # Used by: frontend, wizard (not implemented right now)
-               # Overwritable by user: TRUE
-               #
-               # Sets the theme name used for templating.
-               # Right now there are 2 themes:
-               #       * Default: This theme provides a solid and clean foundation and should be used.
-               #       * Compatibility: This theme imitates the form layout/ behavior of TYPO3 6.2.
-               # If compatibilityMode = 1 and layout is used in the user definded TypoScript
-               # the theme name switches automatically to "Compatibility".
-               #
-               # This setting can be overwritten in the FORM object.
-               # @ToDo: add more details
-       themeName = Default
-
-               # htmlAttributes
-               # Used by: frontend, wizard (not implemented right now)
-               # Overwritable by user: FALSE
-               #
-               # Defines allowed HTML attributes for a specific element.
-               # Based on selfhtml documentation version 8.1.2 (see http://wiki.selfhtml.org/wiki/Referenz:HTML/).
-               # This is needed to detect and map these strings within the user configured element definition as HTML attributes.
-               # As soon as prefix-* is defined every attribute is registered automatically as HTML attribute.
-       htmlAttributes =< lib.tx_form.html.universalAttributes
-
-               # defaultHtmlAttributeValues
-               # Used by: frontend, wizard (not implemented right now)
-               # Overwritable by user: FALSE
-               #
-               # The following values are set if there is no entry in the user configured element.
-       defaultHtmlAttributeValues =
-
-               # fixedHtmlAttributeValues
-               # Used by: frontend, wizard (not implemented right now)
-               # Overwritable by user: FALSE
-               #
-               # The following values are automatically set as attributes.
-       fixedHtmlAttributeValues =
-
-               # htmlAttributesUsedByTheViewHelperDirectly
-               # Used by: frontend
-               # Overwritable by user: FALSE
-               #
-               # Each HTML attribute defined at ".htmlAttributes" is available as array within the model.
-               # This array will be added to the resulting HTML tag.
-               # For this purpose the Fluid argument "additionalAttributes" of the ViewHelper is used.
-               #
-               # Some HTML attributes have to be assigned directly as an argument to the ViewHelper.
-               # The htmlAttributesUsedByTheViewHelperDirectly map is used to remove the specified
-               # HTML attribute from the "htmlAttributes" array and sets it for the model's "additionalArguments" array.
-               #
-               # There are two attributes which special behavior:
-               #       * disabled
-               #       * readonly
-               # These attributes can be assigned to the most ViewHelpers but whenever a "disabled" attribute appears
-               # the browser will disable this element no matter of the value.
-               # See: https://forge.typo3.org/issues/42474
-               # Therefore it is held in the htmlAttributes array and the code removes this attribute if its value is set to 0.
-       htmlAttributesUsedByTheViewHelperDirectly =
-
-               # name
-               # Used by: frontend, wizard (not implemented right now)
-               # Overwritable by user: TRUE
-               #
-               # Sets the name of the element.
-               # If the name is not defined it is automatically generated
-               # using the following syntax: id-{element_counter}.
-               # The name attribute will be transformed if it contains some
-               # non allowed characters:
-               #       * spaces are changed into hyphens
-               #       * remove all characters except a-z A-Z 0-9 _ -
-       name =
-
-               # id
-               # Used by: frontend, wizard (not implemented right now)
-               # Overwritable by user: TRUE
-               #
-               # Sets the id of the element.
-               # If the id is not defined it is automatically generated
-               # using the following syntax: field-{element_counter}.
-               # The id attribute will be transformed if it contains some
-               # non allowed characters:
-               #       * spaces are changed into hyphens
-               #       * if the id starts with an integer then transform it to field-{integer}
-               #       * remove all characters expect a-z A-Z 0-9 _ - : .
-       id =
-
-               # partialPath
-               # Used by: frontend, wizard (not implemented right now)
-               # Overwritable by user: TRUE
-               #
-               # The defined partial is used to render the element.
-               # The partial paths to the element are build based on the following rule:
-               # {$plugin.tx_form.view.partialRootPath}/{$themeName}/@actionName/{$partialPath}.
-       partialPath =
-
-               # viewHelperDefaultArguments
-               # Used by: frontend
-               # Overwritable by user: FALSE
-               #
-               # This helper array is used to cast some values needed by the ViewHelpers.
-               # E.g the f:form ViewHelper needs an array for the
-               # argument "additionalParams". If additionalParams is not set
-               # in the userdefined TypoScript this results in a NULL value in the
-               # templating variable "{model.additionalArguments.additionalParams}"
-               # and this throws an error. Most of the ViewHelper arguments
-               # are strings and/ or can handle such NULL values but there are some
-               # ViewHelpers which need some type casting.
-       viewHelperDefaultArguments =
-
-               # childrenInheritName
-               # Used by: frontend
-               # Overwritable by user: FALSE
-               #
-               # If set to 1 all child elements inherit the name of the parent element.
-               # @ToDo: add more details
-       childrenInheritName = 0
-
-               # visibleInShowAction
-               # Used by: frontend
-               # Overwritable by user: TRUE
-               #
-               # If set to 1 this element is displayed in the form.
-               # @ToDo: add more details
-       visibleInShowAction = 1
-
-               # visibleInConfirmationAction
-               # Used by: frontend
-               # Overwritable by user: TRUE
-               #
-               # If set to 1 this element is displayed in the confirmation page.
-               # @ToDo: add more details
-       visibleInConfirmationAction = 1
-
-               # visibleInProcessAction
-               # Used by: frontend
-               # Overwritable by user: TRUE
-               #
-               # If set to 1 this element is displayed in the mail.
-               # @ToDo: add more details
-       visibleInMail = 1
-}
+       # Include model definition for all available form elements
+<INCLUDE_TYPOSCRIPT: source="DIR: EXT:form/Configuration/TypoScript/Elements" extensions="ts">
+       # Include definition of filters
+<INCLUDE_TYPOSCRIPT: source="DIR: EXT:form/Configuration/TypoScript/Filters" extensions="ts">
+       # Include definition of filters
+<INCLUDE_TYPOSCRIPT: source="DIR: EXT:form/Configuration/TypoScript/Validators" extensions="ts">
 
 plugin.tx_form {
        view {
@@ -215,1233 +32,5 @@ plugin.tx_form {
                layoutRootPaths {
                        10 = {$plugin.tx_form.view.layoutRootPath}
                }
-
-               # elementPartials
-               # Used by: frontend, wizard (not implemented right now)
-               # Overwritable by user: FALSE
-               #
-               # Defines the template selection array for the form wizard.
-               # Each defined item is shown as option within the wizard.
-               #
-               # If there is no partialPath property in the userdefined TypoScript
-               # then elementPartials.ELEMENTNAME.10.partialPath is the default.
-               elementPartials {
-                       BUTTON {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Button
-                               }
-                       }
-
-                       BUTTONTAG {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/ButtonTag
-                               }
-                       }
-
-                       CHECKBOX {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Checkbox
-                               }
-                       }
-
-                       FILEUPLOAD {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Upload
-                               }
-                       }
-
-                       FORM {
-                               10 {
-                                       displayName = Default
-                                       partialPath = ContainerElements/Form
-                               }
-                       }
-
-                       HIDDEN {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Hidden
-                               }
-                       }
-
-                       INPUT {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Input
-                               }
-                       }
-
-                       INPUTTYPEBUTTON {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/InputTypeButton
-                               }
-                       }
-
-                       IMAGEBUTTON {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Imagebutton
-                               }
-                       }
-
-                       PASSWORD {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Password
-                               }
-                       }
-
-                       RADIO {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Radio
-                               }
-                       }
-
-                       RESET {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Reset
-                               }
-                       }
-
-                       SELECT {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Select
-                               }
-                       }
-
-                       SUBMIT {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Submit
-                               }
-                       }
-
-                       TEXTLINE {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Textfield
-                               }
-                       }
-
-                       FIELDSET {
-                               10 {
-                                       displayName = Default
-                                       partialPath = ContainerElements/Fieldset
-                               }
-                       }
-
-                       RADIOGROUP {
-                               10 {
-                                       displayName = Default
-                                       partialPath = ContainerElements/Radiogroup
-                               }
-                       }
-
-                       CHECKBOXGROUP {
-                               10 {
-                                       displayName = Default
-                                       partialPath = ContainerElements/Checkboxgroup
-                               }
-                       }
-
-                       HEADER {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Header
-                               }
-                       }
-
-                       TEXTAREA {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Textarea
-                               }
-                       }
-
-                       TEXTBLOCK {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/Textblock
-                               }
-                       }
-
-                               # special definitions for internal usage
-                       LABEL {
-                               10 {
-                                       displayName = Default
-                                       partialPath = AdditionalElements/Label
-                               }
-                       }
-                               # useless for the wizard but needed for the frontend
-                       CONTENTELEMENT {
-                               10 {
-                                       displayName = Default
-                                       partialPath = FlatElements/ContentElement
-                               }
-                       }
-               }
        }
-
-       settings {
-                       # registeredValidators
-                       # Used by: frontend, wizard (not implemented right now)
-                       # Overwritable by user: FALSE
-                       #
-                       # The array holds all available validators.
-                       # "displayName" is planned for the form wizard (not implemented right now).
-               registeredValidators {
-                       alphabetic {
-                               displayName = Alphabetic
-                               className = TYPO3\CMS\Form\Domain\Validator\AlphabeticValidator
-                       }
-
-                       alphanumeric {
-                               displayName = Alphanumeric
-                               className = TYPO3\CMS\Form\Domain\Validator\AlphanumericValidator
-                       }
-
-                       between {
-                               displayName = Between
-                               className = TYPO3\CMS\Form\Domain\Validator\BetweenValidator
-                       }
-
-                       date {
-                               displayName = Date
-                               className = TYPO3\CMS\Form\Domain\Validator\DateValidator
-                       }
-
-                       digit {
-                               displayName = Digit
-                               className = TYPO3\CMS\Form\Domain\Validator\DigitValidator
-                       }
-
-                       email {
-                               displayName = Email address
-                               className = TYPO3\CMS\Form\Domain\Validator\EmailValidator
-                       }
-
-                       equals {
-                               displayName = Equals
-                               className = TYPO3\CMS\Form\Domain\Validator\EqualsValidator
-                       }
-
-                       fileallowedtypes {
-                               displayName = Allowed mimetypes for file
-                               className = TYPO3\CMS\Form\Domain\Validator\FileAllowedTypesValidator
-                       }
-
-                       filemaximumsize {
-                               displayName = Maximum size for file (bytes)
-                               className = TYPO3\CMS\Form\Domain\Validator\FileMaximumSizeValidator
-                       }
-
-                       fileminimumsize {
-                               displayName = Minimum size for file (bytes)
-                               className = TYPO3\CMS\Form\Domain\Validator\FileMinimumSizeValidator
-                       }
-
-                       float {
-                               displayName = Float
-                               className = TYPO3\CMS\Form\Domain\Validator\FloatValidator
-                       }
-
-                       greaterthan {
-                               displayName = Greater than
-                               className = TYPO3\CMS\Form\Domain\Validator\GreaterThanValidator
-                       }
-
-                       inarray {
-                               displayName = In array
-                               className = TYPO3\CMS\Form\Domain\Validator\InArrayValidator
-                       }
-
-                       integer {
-                               displayName = Integer
-                               className = TYPO3\CMS\Form\Domain\Validator\IntegerValidator
-                       }
-
-                       ip {
-                               displayName = Ip address
-                               className = TYPO3\CMS\Form\Domain\Validator\IpValidator
-                       }
-
-                       length {
-                               displayName = Length
-                               className = TYPO3\CMS\Form\Domain\Validator\LengthValidator
-                       }
-
-                       lessthan {
-                               displayName = Less than
-                               className = TYPO3\CMS\Form\Domain\Validator\LessThanValidator
-                       }
-
-                       regexp {
-                               displayName = Regular Expression
-                               className = TYPO3\CMS\Form\Domain\Validator\RegExpValidator
-                       }
-
-                       required {
-                               displayName = Required
-                               className = TYPO3\CMS\Form\Domain\Validator\RequiredValidator
-                       }
-
-                       uri {
-                               displayName = Uniform Resource Identifier
-                               className = TYPO3\CMS\Form\Domain\Validator\UriValidator
-                       }
-               }
-
-                       # registeredFilters
-                       # Used by: frontend, wizard (not implemented right now)
-                       # Overwritable by user: FALSE
-                       #
-                       # The array holds all available filters.
-                       # "displayName" is planned for the wizard (not implemented right now).
-               registeredFilters {
-                       alphabetic {
-                               displayName = Alphabetic
-                               className = TYPO3\CMS\Form\Domain\Filter\AlphabeticFilter
-                       }
-
-                       alphanumeric {
-                               displayName = Alphanumeric
-                               className = TYPO3\CMS\Form\Domain\Filter\AlphanumericFilter
-                       }
-
-                       currency {
-                               displayName = Currency
-                               className = TYPO3\CMS\Form\Domain\Filter\CurrencyFilter
-                       }
-
-                       digit {
-                               displayName = Digit
-                               className = TYPO3\CMS\Form\Domain\Filter\DigitFilter
-                       }
-
-                       integer {
-                               displayName = Integer
-                               className = TYPO3\CMS\Form\Domain\Filter\IntegerFilter
-                       }
-
-                       lowercase {
-                               displayName = Lowercase
-                               className = TYPO3\CMS\Form\Domain\Filter\LowerCaseFilter
-                       }
-
-                       regexp {
-                               displayName = Regular Expression
-                               className = TYPO3\CMS\Form\Domain\Filter\RegExpFilter
-                       }
-
-                       removexss {
-                               displayName = Remove XSS
-                               className = TYPO3\CMS\Form\Domain\Filter\RemoveXssFilter
-                       }
-
-                       stripnewlines {
-                               displayName = Strip New Lines
-                               className = TYPO3\CMS\Form\Domain\Filter\StripNewLinesFilter
-                       }
-
-                       titlecase {
-                               displayName = Titlecase
-                               className = TYPO3\CMS\Form\Domain\Filter\TitleCaseFilter
-                       }
-
-                       trim {
-                               displayName = Trim
-                               className = TYPO3\CMS\Form\Domain\Filter\TrimFilter
-                       }
-
-                       uppercase {
-                               displayName = Uppercase
-                               className = TYPO3\CMS\Form\Domain\Filter\UpperCaseFilter
-                       }
-               }
-
-               # model definition
-               registeredElements {
-                               # FORM
-                               # Used by: frontend, wizard (not implemented right now)
-                               # Overwritable by user: TRUE
-                               # Used ViewHelper: f:form
-                               #
-                               # @ToDo: add more details
-                       FORM =< lib.tx_form.registeredElements.defaultModelDescription
-                       FORM {
-                               htmlAttributes {
-                                       200 = action
-                                       210 = accept-charset
-                                       220 = autocomplete
-                                       230 = enctype
-                                       240 = method
-                                       250 = name
-                                       260 = novalidate
-                                       270 = target
-                               }
-
-                               defaultHtmlAttributeValues {
-                                       enctype = multipart/form-data
-                                       method = post
-                               }
-
-                               htmlAttributesUsedByTheViewHelperDirectly =< lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractTagBasedViewHelper
-                               htmlAttributesUsedByTheViewHelperDirectly {
-                                               # FormViewHelper
-                                       200 = enctype
-                                       210 = method
-                                       220 = name
-                                       230 = onreset
-                                       240 = onsubmit
-                               }
-
-                               viewHelperDefaultArguments {
-                                       arguments {
-                                       }
-
-                                       additionalParams {
-                                       }
-
-                                       argumentsToBeExcludedFromQueryString {
-                                       }
-                               }
-
-                               themeName = Default
-
-                               partialPath =< plugin.tx_form.view.elementPartials.FORM.10.partialPath
-
-                               compatibilityMode = 1
-                       }
-
-                               # INPUT
-                               # Used by: frontend, wizard (not implemented right now)
-                               # Used ViewHelper: f:form.textfield
-                               #
-                               # @ToDo: add more details
-                       INPUT =< lib.tx_form.registeredElements.defaultModelDescription
-                       INPUT {
-                               htmlAttributes {
-                                       200 = type
-                                       210 = accept
-                                       220 = autocomplete
-                                       230 = alt
-                                       240 = autofocus
-                                       250 = checked
-                                       260 = disabled
-                                       270 = height
-                                       280 = inputmode
-                                       290 = list
-                                       300 = max
-                                       310 = maxlength
-                                       320 = min
-                                       330 = minlength
-                                       340 = multiple
-                                       350 = name
-                                       360 = pattern
-                                       370 = placeholder
-                                       380 = readonly
-                                       390 = required
-                                       400 = size
-                                       410 = src
-                                       420 = step
-                                       430 = value
-                                       440 = width
-                               }
-
-                               htmlAttributesUsedByTheViewHelperDirectly =< lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractFormFieldViewHelper
-                               htmlAttributesUsedByTheViewHelperDirectly {
-                                               # TextfieldViewHelper
-                                       200 = autofocus
-                                       210 = maxlength
-                                       220 = size
-                                       230 = placeholder
-                                       240 = pattern
-                                       250 = required
-                                       260 = type
-                               }
-
-                               partialPath =< plugin.tx_form.view.elementPartials.INPUT.10.partialPath
-                       }
-
-                               # CHECKBOX
-                               # Used by: frontend, wizard (not implemented right now)
-                               # Used ViewHelper: f:form.checkbox
-                               #
-                               # @ToDo: add more details
-                       CHECKBOX =< lib.tx_form.registeredElements.defaultModelDescription
-                       CHECKBOX {
-                               htmlAttributes {
-                                       200 = type
-                                       210 = accept
-                                       220 = autocomplete
-                                       230 = alt
-                                       240 = autofocus
-                                       250 = checked
-                                       260 = disabled
-                                       270 = height
-                                       280 = inputmode
-                                       290 = list
-                                       300 = max
-                                       310 = maxlength
-                                       320 = min
-                                       330 = minlength
-                                       340 = multiple
-                                       350 = name
-                                       360 = pattern
-                                       370 = placeholder
-                                       380 = readonly
-                                       390 = required
-                                       400 = size
-                                       410 = src
-                                       420 = step
-                                       430 = value
-                                       440 = width
-                               }
-
-                               fixedHtmlAttributeValues {
-                                       type = checkbox
-                               }
-
-                               htmlAttributesUsedByTheViewHelperDirectly =< lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractFormFieldViewHelper
-                               htmlAttributesUsedByTheViewHelperDirectly {
-                                               # CheckboxViewHelper
-                                       200 = checked
-                                       210 = multiple
-                               }
-
-                               partialPath =< plugin.tx_form.view.elementPartials.CHECKBOX.10.partialPath
-                       }
-
-                               # FILEUPLOAD
-                               # Used by: frontend, wizard (not implemented right now)
-                               # Used ViewHelper: f:form.upload
-                               #
-                               # @ToDo: add more details
-                       FILEUPLOAD =< lib.tx_form.registeredElements.defaultModelDescription
-                       FILEUPLOAD {
-                               htmlAttributes {
-                                       200 = type
-                                       210 = accept
-                                       220 = autocomplete
-                                       230 = alt
-                                       240 = autofocus
-                                       250 = checked
-                                       260 = disabled
-                                       270 = height
-                                       280 = inputmode
-                                       290 = list
-                                       300 = max
-                                       310 = maxlength
-                                       320 = min
-                                       330 = minlength
-                                       340 = multiple
-                                       350 = name
-                                       360 = pattern
-                                       370 = placeholder
-                                       380 = readonly
-                                       390 = required
-                                       400 = size
-                                       410 = src
-                                       420 = step
-                                       430 = value
-                                       440 = width
-                               }
-
-                               fixedHtmlAttributeValues {
-                                       type = file
-                               }
-
-                               htmlAttributesUsedByTheViewHelperDirectly =< lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractFormFieldViewHelper
-                               htmlAttributesUsedByTheViewHelperDirectly {
-                                               # UploadViewHelper
-                                       200 = multiple
-                               }
-
-                               partialPath =< plugin.tx_form.view.elementPartials.FILEUPLOAD.10.partialPath
-                       }
-
-                               # HIDDEN
-                               # Used by: frontend, wizard (not implemented right now)
-                               # Used ViewHelper: f:form.hidden
-                               #
-                               # @ToDo: add more details
-                       HIDDEN =< lib.tx_form.registeredElements.defaultModelDescription
-                       HIDDEN {
-                               htmlAttributes {
-                                       200 = type
-                                       210 = accept
-                                       220 = autocomplete
-                                       230 = alt
-                                       240 = autofocus
-                                       250 = checked
-                                       260 = disabled
-                                       270 = height
-                                       280 = inputmode
-                                       290 = list
-                                       300 = max
-                                       310 = maxlength
-                                       320 = min
-                                       330 = minlength
-                                       340 = multiple
-                                       350 = name
-                                       360 = pattern
-                                       370 = placeholder
-                                       380 = readonly
-                                       390 = required
-                                       400 = size
-                                       410 = src
-                                       420 = step
-                                       430 = value
-                                       440 = width
-                               }
-
-                               fixedHtmlAttributeValues {
-                                       type = hidden
-                               }
-
-                               htmlAttributesUsedByTheViewHelperDirectly =< lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractFormFieldViewHelper
-
-                               partialPath =< plugin.tx_form.view.elementPartials.HIDDEN.10.partialPath
-
-                               visibleInConfirmationAction = 0
-
-                               visibleInMail = 0
-                       }
-
-                               # IMAGEBUTTON
-                               # Used by: frontend, wizard (not implemented right now)
-                               # Used ViewHelper: f:form.textfield
-                               # Deprecated
-                               #
-                               # @ToDo: add more details
-                       IMAGEBUTTON =< lib.tx_form.registeredElements.defaultModelDescription
-                       IMAGEBUTTON {
-                               htmlAttributes {
-                                       200 = type
-                                       210 = accept
-                                       220 = autocomplete
-                                       230 = alt
-                                       240 = autofocus
-                                       250 = checked
-                                       260 = disabled
-                                       270 = height
-                                       280 = inputmode
-                                       290 = list
-                                       300 = max
-                                       310 = maxlength
-                                       320 = min
-                                       330 = minlength
-                                       340 = multiple
-                                       350 = name
-                                       360 = pattern
-                                       370 = placeholder
-                                       380 = readonly
-                                       390 = required
-                                       400 = size
-                                       410 = src
-                                       420 = step
-                                       430 = value
-                                       440 = width
-                               }
-
-                               fixedHtmlAttributeValues {
-                                       type = image
-                               }
-
-                               htmlAttributesUsedByTheViewHelperDirectly =< lib.tx_form.htmlAttributesUsedByTheViewHelperDirectly.abstractFormFieldViewHelper
-                               htmlAttributesUsedByTheViewHelperDirectly {
-                                               # TextfieldViewHelper
-                                       200 = autofocus
-                                       210 = maxlength
-                                       220 = size
-                                       230 = placeholder
-                                       240 = pattern
-                                       250 = required
-                                       260 = type
-                               }
-
-                               partialPath =< plugin.tx_form.view.elementPartials.IMAGEBUTTON.10.partialPath
-
-                               visibleInConfirmationAction = 0
-
-                               visibleInMail = 0
-                       }
-
-                               # PASSWORD
-                               # Used by: frontend, wizard (not implemented right now)
-                               # Used ViewHelper: f:form.password
-                               #
-                               # @ToDo: add more details
-                       PASSWORD =< lib.tx_form.registeredElements.defaultModelDescription
-                       PASSWORD {
-                             &