From 3a009454afe88f974fbada7631b98fbbb718065d Mon Sep 17 00:00:00 2001 From: Ralf Zimmermann <ralf.zimmermann@tritum.de> Date: Tue, 18 Apr 2017 18:29:18 +0200 Subject: [PATCH] [TASK] EXT:form - Add documentation Resolves: #80198 Releases: master Change-Id: Iaad2a96c2b1d7413220521dc188b09700110e391 Reviewed-on: https://review.typo3.org/52485 Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Bjoern Jacob <bjoern.jacob@tritum.de> Tested-by: Bjoern Jacob <bjoern.jacob@tritum.de> Reviewed-by: Ralf Zimmermann <ralf.zimmermann@tritum.de> Tested-by: Ralf Zimmermann <ralf.zimmermann@tritum.de> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../AbstractRenderable/getRootForm.rst | 10 + .../AbstractRenderable/setIdentifier.rst | 10 + .../AbstractRenderable/setLabel.rst | 10 + .../AbstractRenderable/setOptions.rst | 11 + .../AbstractSection/addElement.rst | 11 + .../AbstractSection/getElements.rst | 10 + .../getElementsRecursively.rst | 10 + .../AbstractSection/moveElementAfter.rst | 11 + .../AbstractSection/moveElementBefore.rst | 11 + .../AbstractSection/removeElement.rst | 10 + .../FormElementInterface/addValidator.rst | 10 + .../FormElementInterface/createValidator.rst | 10 + .../FormElementInterface/getDefaultValue.rst | 10 + .../FormElementInterface/getProperties.rst | 10 + .../getUniqueIdentifier.rst | 39 + .../initializeFormElement.rst | 10 + .../FormElementInterface/isRequired.rst | 11 + .../FormElementInterface/setDataType.rst | 20 + .../FormElementInterface/setDefaultValue.rst | 10 + .../FormElementInterface/setProperty.rst | 10 + .../setRenderingOption.rst | 10 + .../form/Documentation/ApiReference/Index.rst | 5649 +++++++++++++++++ .../getParentRenderable.rst | 10 + .../RenderableInterface/getTemplateName.rst | 10 + .../setParentRenderable.rst | 11 + .../RootRenderableInterface/getIdentifier.rst | 10 + .../RootRenderableInterface/getLabel.rst | 10 + .../getRendererClassName.rst | 10 + .../getRenderingOptions.rst | 10 + .../RootRenderableInterface/getType.rst | 11 + .../Concepts/Configuration/Index.rst | 478 ++ .../Concepts/Finishers/Index.rst | 80 + .../FormConfigurationFormDefinition/Index.rst | 110 + .../Concepts/FormEditor/Index.rst | 541 ++ .../Concepts/FormFileStorages/Index.rst | 135 + .../Concepts/FormManager/Index.rst | 145 + .../Concepts/FormPlugin/Index.rst | 87 + .../Concepts/FrontendRendering/Index.rst | 1104 ++++ .../form/Documentation/Concepts/Index.rst | 24 + .../TargetGroupsAndMainPrinciples/Index.rst | 48 + .../ConfigurationReference/Index.rst | 18 + .../configuration/Index.rst | 2785 ++++++++ .../formManager/Index.rst | 436 ++ .../persistenceManager/Index.rst | 146 + .../prototypes/Index.rst | 95 + .../prototypes/finishersDefinition/Index.rst | 395 ++ .../finishersDefinition/finishers/Closure.rst | 186 + .../finishers/Confirmation.rst | 217 + .../finishers/DeleteUploads.rst | 114 + .../finishers/EmailToReceiver.rst | 788 +++ .../finishers/EmailToSender.rst | 788 +++ .../finishers/FlashMessage.rst | 341 + .../finishers/Redirect.rst | 386 ++ .../finishers/SaveToDatabase.rst | 489 ++ .../properties/formEngine/elements.rst | 4 + .../properties/formEngine/label.rst | 3 + .../properties/iconIdentifier.rst | 2 + .../properties/implementationClassName.rst | 1 + .../finishersDefinition/properties/label.rst | 1 + .../properties/predefinedDefaults.rst | 1 + .../prototypes/formEditor/Index.rst | 705 ++ .../formElementsDefinition/Index.rst | 765 +++ .../formEditor/Index.rst | 110 + .../inspectorEditors/CheckboxEditor.rst | 60 + .../CollectionElementHeaderEditor.rst | 57 + .../inspectorEditors/FinishersEditor.rst | 105 + .../FormElementHeaderEditor.rst | 53 + .../GridColumnViewPortConfigurationEditor.rst | 175 + .../inspectorEditors/MultiSelectEditor.rst | 108 + .../inspectorEditors/PropertyGridEditor.rst | 232 + .../inspectorEditors/RemoveElementEditor.rst | 52 + .../RequiredValidatorEditor.rst | 127 + .../inspectorEditors/SingleSelectEditor.rst | 110 + .../inspectorEditors/TextEditor.rst | 205 + .../inspectorEditors/TextareaEditor.rst | 59 + .../Typo3WinBrowserEditor.rst | 199 + .../inspectorEditors/ValidatorsEditor.rst | 104 + .../properties/Identifier.rst | 24 + .../inspectorEditors/properties/Label.rst | 24 + .../properties/PropertyPath.rst | 25 + .../properties/TemplateName.rst | 2 + .../formElementTypes/AdvancedPassword.rst | 184 + .../AdvancedPassword/formEditor.rst | 244 + .../formEditor/editors/100.rst | 29 + .../formEditor/editors/200.rst | 31 + .../formEditor/editors/300.rst | 31 + .../formEditor/editors/400.rst | 33 + .../formEditor/editors/700.rst | 48 + .../formEditor/editors/800.rst | 34 + .../formEditor/editors/900.rst | 58 + .../formEditor/editors/9999.rst | 29 + .../AdvancedPassword/formEditor/group.rst | 30 + .../formEditor/groupSorting.rst | 29 + .../formEditor/iconIdentifier.rst | 35 + .../AdvancedPassword/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 31 + .../propertyCollections/validators/10.rst | 35 + .../validators/10/editors/100.rst | 32 + .../validators/10/editors/9999.rst | 31 + .../validators/10/identifier.rst | 33 + .../propertyCollections/validators/20.rst | 35 + .../validators/20/editors/100.rst | 32 + .../validators/20/editors/9999.rst | 31 + .../validators/20/identifier.rst | 33 + .../propertyCollections/validators/30.rst | 57 + .../validators/30/editors/100.rst | 32 + .../validators/30/editors/200.rst | 39 + .../validators/30/editors/300.rst | 39 + .../validators/30/editors/9999.rst | 31 + .../validators/30/identifier.rst | 33 + .../propertyCollections/validators/40.rst | 35 + .../validators/40/editors/100.rst | 32 + .../validators/40/editors/9999.rst | 31 + .../validators/40/identifier.rst | 33 + .../propertyCollections/validators/50.rst | 35 + .../validators/50/editors/100.rst | 32 + .../validators/50/editors/9999.rst | 31 + .../validators/50/identifier.rst | 33 + .../propertyCollections/validators/60.rst | 35 + .../validators/60/editors/100.rst | 32 + .../validators/60/editors/9999.rst | 31 + .../validators/60/identifier.rst | 33 + .../propertyCollections/validators/70.rst | 53 + .../validators/70/editors/100.rst | 32 + .../validators/70/editors/200.rst | 37 + .../validators/70/editors/300.rst | 36 + .../validators/70/editors/9999.rst | 31 + .../validators/70/identifier.rst | 33 + .../propertyCollections/validators/80.rst | 43 + .../validators/80/editors/100.rst | 32 + .../validators/80/editors/200.rst | 36 + .../validators/80/editors/9999.rst | 31 + .../validators/80/identifier.rst | 33 + .../implementationClassName.rst | 34 + .../properties/confirmationClassAttribute.rst | 39 + .../properties/confirmationLabel.rst | 39 + .../properties/containerClassAttribute.rst | 39 + .../properties/elementClassAttribute.rst | 39 + .../properties/elementErrorClassAttribute.rst | 39 + .../formElementTypes/Checkbox.rst | 62 + .../formElementTypes/Checkbox/formEditor.rst | 68 + .../Checkbox/formEditor/editors/100.rst | 29 + .../Checkbox/formEditor/editors/200.rst | 31 + .../Checkbox/formEditor/editors/700.rst | 49 + .../Checkbox/formEditor/editors/800.rst | 35 + .../Checkbox/formEditor/editors/9999.rst | 30 + .../Checkbox/formEditor/group.rst | 30 + .../Checkbox/formEditor/groupSorting.rst | 29 + .../Checkbox/formEditor/iconIdentifier.rst | 35 + .../Checkbox/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 29 + .../Checkbox/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 38 + .../properties/elementClassAttribute.rst | 38 + .../properties/elementErrorClassAttribute.rst | 38 + .../Checkbox/properties/value.rst | 38 + .../formElementTypes/ContentElement.rst | 46 + .../ContentElement/formEditor.rst | 47 + .../ContentElement/formEditor/editors/100.rst | 29 + .../ContentElement/formEditor/editors/300.rst | 37 + .../formEditor/editors/9999.rst | 30 + .../ContentElement/formEditor/group.rst | 30 + .../formEditor/groupSorting.rst | 29 + .../formEditor/iconIdentifier.rst | 35 + .../ContentElement/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 31 + .../implementationClassName.rst | 34 + .../properties/contentElementUid.rst | 35 + .../formElementTypes/DatePicker.rst | 100 + .../DatePicker/formEditor.rst | 110 + .../DatePicker/formEditor/editors/100.rst | 29 + .../DatePicker/formEditor/editors/200.rst | 31 + .../DatePicker/formEditor/editors/300.rst | 31 + .../DatePicker/formEditor/editors/400.rst | 32 + .../DatePicker/formEditor/editors/500.rst | 32 + .../DatePicker/formEditor/editors/700.rst | 49 + .../DatePicker/formEditor/editors/800.rst | 35 + .../DatePicker/formEditor/editors/900.rst | 38 + .../DatePicker/formEditor/editors/9999.rst | 30 + .../DatePicker/formEditor/group.rst | 30 + .../DatePicker/formEditor/groupSorting.rst | 29 + .../DatePicker/formEditor/iconIdentifier.rst | 35 + .../DatePicker/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 33 + .../propertyCollections/validators/10.rst | 35 + .../validators/10/editors/100.rst | 32 + .../validators/10/editors/9999.rst | 31 + .../validators/10/identifier.rst | 33 + .../DatePicker/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 43 + .../DatePicker/properties/dateFormat.rst | 43 + .../properties/displayTimeSelector.rst | 43 + .../properties/elementClassAttribute.rst | 43 + .../properties/elementErrorClassAttribute.rst | 43 + .../properties/enableDatePicker.rst | 43 + .../properties/timeSelectorClassAttribute.rst | 43 + .../properties/timeSelectorHourLabel.rst | 43 + .../properties/timeSelectorMinuteLabel.rst | 43 + .../formElementTypes/Fieldset.rst | 61 + .../formElementTypes/Fieldset/formEditor.rst | 62 + .../formEditor/_isCompositeFormElement.rst | 29 + .../Fieldset/formEditor/editors/100.rst | 29 + .../Fieldset/formEditor/editors/200.rst | 31 + .../Fieldset/formEditor/editors/700.rst | 49 + .../Fieldset/formEditor/editors/9999.rst | 30 + .../Fieldset/formEditor/group.rst | 30 + .../Fieldset/formEditor/groupSorting.rst | 29 + .../Fieldset/formEditor/iconIdentifier.rst | 35 + .../Fieldset/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 29 + .../Fieldset/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../_isCompositeFormElement.rst | 35 + .../formElementTypes/FileUpload.rst | 70 + .../FileUpload/formEditor.rst | 108 + .../FileUpload/formEditor/editors/100.rst | 29 + .../FileUpload/formEditor/editors/200.rst | 31 + .../FileUpload/formEditor/editors/300.rst | 53 + .../FileUpload/formEditor/editors/400.rst | 36 + .../FileUpload/formEditor/editors/700.rst | 49 + .../FileUpload/formEditor/editors/800.rst | 35 + .../FileUpload/formEditor/editors/9999.rst | 30 + .../FileUpload/formEditor/group.rst | 30 + .../FileUpload/formEditor/groupSorting.rst | 29 + .../FileUpload/formEditor/iconIdentifier.rst | 35 + .../FileUpload/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 33 + .../FileUpload/implementationClassName.rst | 34 + .../properties/allowedMimeTypes.rst | 43 + .../properties/containerClassAttribute.rst | 43 + .../properties/elementClassAttribute.rst | 43 + .../properties/elementErrorClassAttribute.rst | 43 + .../FileUpload/properties/saveToFileMount.rst | 47 + .../formElementTypes/Form.rst | 307 + .../formElementTypes/Form/formEditor.rst | 371 ++ .../formEditor/_isCompositeFormElement.rst | 29 + .../formEditor/_isTopLevelFormElement.rst | 29 + .../Form/formEditor/editors/100.rst | 29 + .../Form/formEditor/editors/200.rst | 31 + .../Form/formEditor/editors/300.rst | 31 + .../Form/formEditor/editors/900.rst | 47 + .../Form/formEditor/iconIdentifier.rst | 35 + ...torEditorFormElementSelectorNoElements.rst | 29 + .../formEditor/modalCloseCancleButton.rst | 29 + .../formEditor/modalCloseConfirmButton.rst | 29 + .../formEditor/modalCloseDialogMessage.rst | 29 + .../Form/formEditor/modalCloseDialogTitle.rst | 29 + .../modalInsertElementsDialogTitle.rst | 29 + .../modalInsertPagesDialogTitle.rst | 29 + .../modalRemoveElementCancleButton.rst | 29 + .../modalRemoveElementConfirmButton.rst | 29 + .../modalRemoveElementDialogMessage.rst | 29 + .../modalRemoveElementDialogTitle.rst | 29 + ...ntLastAvailablePageFlashMessageMessage.rst | 29 + ...mentLastAvailablePageFlashMessageTitle.rst | 29 + .../modalValidationErrorsConfirmButton.rst | 29 + .../modalValidationErrorsDialogTitle.rst | 29 + .../Form/formEditor/paginationTitle.rst | 29 + .../Form/formEditor/predefinedDefaults.rst | 31 + .../propertyCollections/finishers/10.rst | 127 + .../finishers/10/editors/100.rst | 32 + .../finishers/10/editors/1000.rst | 40 + .../finishers/10/editors/1100.rst | 33 + .../finishers/10/editors/200.rst | 37 + .../finishers/10/editors/300.rst | 38 + .../finishers/10/editors/400.rst | 36 + .../finishers/10/editors/500.rst | 38 + .../finishers/10/editors/600.rst | 36 + .../finishers/10/editors/700.rst | 38 + .../finishers/10/editors/800.rst | 38 + .../finishers/10/editors/900.rst | 38 + .../finishers/10/editors/9999.rst | 31 + .../finishers/10/identifier.rst | 33 + .../propertyCollections/finishers/20.rst | 136 + .../finishers/20/editors/100.rst | 32 + .../finishers/20/editors/1000.rst | 40 + .../finishers/20/editors/1100.rst | 33 + .../finishers/20/editors/1200.rst | 37 + .../finishers/20/editors/200.rst | 36 + .../finishers/20/editors/300.rst | 38 + .../finishers/20/editors/400.rst | 36 + .../finishers/20/editors/500.rst | 38 + .../finishers/20/editors/600.rst | 36 + .../finishers/20/editors/700.rst | 38 + .../finishers/20/editors/800.rst | 38 + .../finishers/20/editors/900.rst | 38 + .../finishers/20/editors/9999.rst | 31 + .../finishers/20/identifier.rst | 33 + .../propertyCollections/finishers/30.rst | 51 + .../finishers/30/editors/100.rst | 32 + .../finishers/30/editors/200.rst | 39 + .../finishers/30/editors/300.rst | 33 + .../finishers/30/editors/9999.rst | 31 + .../finishers/30/identifier.rst | 33 + .../propertyCollections/finishers/40.rst | 35 + .../finishers/40/editors/100.rst | 32 + .../finishers/40/editors/9999.rst | 31 + .../finishers/40/identifier.rst | 33 + .../propertyCollections/finishers/50.rst | 35 + .../finishers/50/editors/100.rst | 32 + .../finishers/50/editors/9999.rst | 31 + .../finishers/50/identifier.rst | 33 + .../propertyCollections/finishers/60.rst | 35 + .../finishers/60/editors/100.rst | 32 + .../finishers/60/editors/9999.rst | 31 + .../finishers/60/identifier.rst | 33 + .../propertyCollections/finishers/70.rst | 35 + .../finishers/70/editors/100.rst | 32 + .../finishers/70/editors/9999.rst | 31 + .../finishers/70/identifier.rst | 33 + .../propertyCollections/finishers/80.rst | 35 + .../finishers/80/editors/100.rst | 32 + .../finishers/80/editors/9999.rst | 31 + .../finishers/80/identifier.rst | 33 + .../saveSuccessFlashMessageMessage.rst | 29 + .../saveSuccessFlashMessageTitle.rst | 29 + .../_isCompositeFormElement.rst | 55 + .../_isTopLevelFormElement.rst | 55 + .../Form/renderingOptions/addQueryString.rst | 55 + .../renderingOptions/additionalParams.rst | 55 + .../argumentsToBeExcludedFromQueryString.rst | 55 + .../renderingOptions/controllerAction.rst | 55 + .../Form/renderingOptions/honeypot/enable.rst | 55 + .../honeypot/formElementToUse.rst | 55 + .../Form/renderingOptions/httpEnctype.rst | 55 + .../Form/renderingOptions/httpMethod.rst | 55 + .../Form/renderingOptions/layoutRootPaths.rst | 55 + .../renderingOptions/partialRootPaths.rst | 55 + .../renderingOptions/skipUnknownElements.rst | 55 + .../renderingOptions/submitButtonLabel.rst | 55 + .../renderingOptions/templateRootPaths.rst | 55 + .../translation/translationFile.rst | 56 + .../formElementTypes/GridContainer.rst | 73 + .../GridContainer/formEditor.rst | 41 + .../formEditor/_isCompositeFormElement.rst | 29 + .../_isGridContainerFormElement.rst | 29 + .../GridContainer/formEditor/editors/100.rst | 29 + .../GridContainer/formEditor/editors/200.rst | 31 + .../GridContainer/formEditor/editors/9999.rst | 30 + .../GridContainer/formEditor/group.rst | 30 + .../GridContainer/formEditor/groupSorting.rst | 29 + .../formEditor/iconIdentifier.rst | 35 + .../GridContainer/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 29 + .../GridContainer/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 48 + .../properties/elementClassAttribute.rst | 48 + .../properties/elementErrorClassAttribute.rst | 48 + .../gridSize.rst | 48 + .../viewPorts.rst | 48 + .../viewPorts/classPattern.rst | 52 + .../_isCompositeFormElement.rst | 36 + .../_isGridContainerFormElement.rst | 36 + .../formElementTypes/GridRow.rst | 76 + .../formElementTypes/GridRow/formEditor.rst | 63 + .../formEditor/_isCompositeFormElement.rst | 29 + .../formEditor/_isGridRowFormElement.rst | 29 + .../GridRow/formEditor/editors/100.rst | 29 + .../GridRow/formEditor/editors/200.rst | 31 + .../GridRow/formEditor/editors/700.rst | 49 + .../GridRow/formEditor/editors/9999.rst | 30 + .../GridRow/formEditor/group.rst | 30 + .../GridRow/formEditor/groupSorting.rst | 29 + .../GridRow/formEditor/iconIdentifier.rst | 35 + .../GridRow/formEditor/label.rst | 29 + .../GridRow/formEditor/predefinedDefaults.rst | 29 + .../GridRow/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 48 + .../properties/elementClassAttribute.rst | 48 + .../properties/elementErrorClassAttribute.rst | 48 + .../gridSize.rst | 48 + .../viewPorts.rst | 48 + .../viewPorts/classPattern.rst | 52 + .../_isCompositeFormElement.rst | 36 + .../_isGridRowFormElement.rst | 36 + .../formElementTypes/Hidden.rst | 59 + .../formElementTypes/Hidden/formEditor.rst | 67 + .../Hidden/formEditor/editors/100.rst | 29 + .../Hidden/formEditor/editors/200.rst | 31 + .../Hidden/formEditor/editors/300.rst | 31 + .../Hidden/formEditor/editors/700.rst | 49 + .../Hidden/formEditor/editors/9999.rst | 30 + .../Hidden/formEditor/group.rst | 30 + .../Hidden/formEditor/groupSorting.rst | 29 + .../Hidden/formEditor/iconIdentifier.rst | 35 + .../Hidden/formEditor/label.rst | 29 + .../Hidden/formEditor/predefinedDefaults.rst | 30 + .../Hidden/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../formElementTypes/Honeypot.rst | 31 + .../Honeypot/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 39 + .../properties/elementClassAttribute.rst | 39 + .../properties/elementErrorClassAttribute.rst | 39 + .../properties/renderAsHiddenField.rst | 39 + .../Honeypot/properties/styleAttribute.rst | 39 + .../formElementTypes/ImageUpload.rst | 79 + .../ImageUpload/formEditor.rst | 96 + .../ImageUpload/formEditor/editors/100.rst | 29 + .../ImageUpload/formEditor/editors/200.rst | 31 + .../ImageUpload/formEditor/editors/300.rst | 41 + .../ImageUpload/formEditor/editors/400.rst | 36 + .../ImageUpload/formEditor/editors/700.rst | 49 + .../ImageUpload/formEditor/editors/800.rst | 35 + .../ImageUpload/formEditor/editors/9999.rst | 30 + .../ImageUpload/formEditor/group.rst | 30 + .../ImageUpload/formEditor/groupSorting.rst | 29 + .../ImageUpload/formEditor/iconIdentifier.rst | 35 + .../ImageUpload/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 33 + .../ImageUpload/implementationClassName.rst | 34 + .../properties/allowedMimeTypes.rst | 45 + .../properties/containerClassAttribute.rst | 45 + .../properties/elementClassAttribute.rst | 45 + .../properties/elementErrorClassAttribute.rst | 45 + .../properties/imageLinkMaxWidth.rst | 45 + .../ImageUpload/properties/imageMaxHeight.rst | 45 + .../ImageUpload/properties/imageMaxWidth.rst | 45 + .../properties/saveToFileMount.rst | 49 + .../formElementTypes/MultiCheckbox.rst | 82 + .../MultiCheckbox/formEditor.rst | 121 + .../MultiCheckbox/formEditor/editors/100.rst | 29 + .../MultiCheckbox/formEditor/editors/200.rst | 31 + .../MultiCheckbox/formEditor/editors/300.rst | 38 + .../MultiCheckbox/formEditor/editors/700.rst | 49 + .../MultiCheckbox/formEditor/editors/800.rst | 35 + .../MultiCheckbox/formEditor/editors/900.rst | 38 + .../MultiCheckbox/formEditor/editors/9999.rst | 30 + .../MultiCheckbox/formEditor/group.rst | 30 + .../MultiCheckbox/formEditor/groupSorting.rst | 29 + .../formEditor/iconIdentifier.rst | 35 + .../MultiCheckbox/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 31 + .../propertyCollections/validators/10.rst | 53 + .../validators/10/editors/100.rst | 32 + .../validators/10/editors/200.rst | 37 + .../validators/10/editors/300.rst | 37 + .../validators/10/editors/9999.rst | 31 + .../validators/10/identifier.rst | 33 + .../MultiCheckbox/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../formElementTypes/MultiSelect.rst | 85 + .../MultiSelect/formEditor.rst | 130 + .../MultiSelect/formEditor/editors/100.rst | 29 + .../MultiSelect/formEditor/editors/200.rst | 31 + .../MultiSelect/formEditor/editors/250.rst | 33 + .../MultiSelect/formEditor/editors/300.rst | 38 + .../MultiSelect/formEditor/editors/700.rst | 49 + .../MultiSelect/formEditor/editors/800.rst | 35 + .../MultiSelect/formEditor/editors/900.rst | 38 + .../MultiSelect/formEditor/editors/9999.rst | 30 + .../MultiSelect/formEditor/group.rst | 30 + .../MultiSelect/formEditor/groupSorting.rst | 29 + .../MultiSelect/formEditor/iconIdentifier.rst | 35 + .../MultiSelect/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 31 + .../propertyCollections/validators/10.rst | 53 + .../validators/10/editors/100.rst | 32 + .../validators/10/editors/200.rst | 37 + .../validators/10/editors/300.rst | 37 + .../validators/10/editors/9999.rst | 31 + .../validators/10/identifier.rst | 33 + .../MultiSelect/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../formElementTypes/Page.rst | 67 + .../formElementTypes/Page/formEditor.rst | 54 + .../formEditor/_isCompositeFormElement.rst | 29 + .../formEditor/_isTopLevelFormElement.rst | 29 + .../Page/formEditor/editors/100.rst | 29 + .../Page/formEditor/editors/200.rst | 31 + .../Page/formEditor/editors/300.rst | 31 + .../Page/formEditor/editors/400.rst | 31 + .../Page/formEditor/editors/9999.rst | 30 + .../Page/formEditor/group.rst | 30 + .../Page/formEditor/groupSorting.rst | 29 + .../Page/formEditor/iconIdentifier.rst | 35 + .../Page/formEditor/label.rst | 29 + .../Page/formEditor/predefinedDefaults.rst | 32 + .../Page/implementationClassName.rst | 34 + .../_isCompositeFormElement.rst | 38 + .../_isTopLevelFormElement.rst | 38 + .../Page/renderingOptions/nextButtonLabel.rst | 38 + .../renderingOptions/previousButtonLabel.rst | 38 + .../formElementTypes/Password.rst | 178 + .../formElementTypes/Password/formEditor.rst | 243 + .../Password/formEditor/editors/100.rst | 29 + .../Password/formEditor/editors/200.rst | 32 + .../Password/formEditor/editors/400.rst | 35 + .../Password/formEditor/editors/500.rst | 32 + .../Password/formEditor/editors/700.rst | 49 + .../Password/formEditor/editors/800.rst | 35 + .../Password/formEditor/editors/900.rst | 59 + .../Password/formEditor/editors/9999.rst | 30 + .../Password/formEditor/group.rst | 30 + .../Password/formEditor/groupSorting.rst | 29 + .../Password/formEditor/iconIdentifier.rst | 35 + .../Password/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 30 + .../propertyCollections/validators/10.rst | 35 + .../validators/10/editors/100.rst | 32 + .../validators/10/editors/9999.rst | 31 + .../validators/10/identifier.rst | 33 + .../propertyCollections/validators/20.rst | 35 + .../validators/20/editors/100.rst | 32 + .../validators/20/editors/9999.rst | 31 + .../validators/20/identifier.rst | 33 + .../propertyCollections/validators/30.rst | 57 + .../validators/30/editors/100.rst | 32 + .../validators/30/editors/200.rst | 39 + .../validators/30/editors/300.rst | 39 + .../validators/30/editors/9999.rst | 31 + .../validators/30/identifier.rst | 33 + .../propertyCollections/validators/40.rst | 35 + .../validators/40/editors/100.rst | 32 + .../validators/40/editors/9999.rst | 31 + .../validators/40/identifier.rst | 33 + .../propertyCollections/validators/50.rst | 35 + .../validators/50/editors/100.rst | 32 + .../validators/50/editors/9999.rst | 31 + .../validators/50/identifier.rst | 33 + .../propertyCollections/validators/60.rst | 35 + .../validators/60/editors/100.rst | 32 + .../validators/60/editors/9999.rst | 31 + .../validators/60/identifier.rst | 33 + .../propertyCollections/validators/70.rst | 53 + .../validators/70/editors/100.rst | 32 + .../validators/70/editors/200.rst | 37 + .../validators/70/editors/300.rst | 36 + .../validators/70/editors/9999.rst | 31 + .../validators/70/identifier.rst | 33 + .../propertyCollections/validators/80.rst | 43 + .../validators/80/editors/100.rst | 32 + .../validators/80/editors/200.rst | 36 + .../validators/80/editors/9999.rst | 31 + .../validators/80/identifier.rst | 33 + .../Password/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../formElementTypes/RadioButton.rst | 61 + .../RadioButton/formEditor.rst | 82 + .../RadioButton/formEditor/editors/100.rst | 29 + .../RadioButton/formEditor/editors/200.rst | 31 + .../RadioButton/formEditor/editors/300.rst | 38 + .../RadioButton/formEditor/editors/700.rst | 49 + .../RadioButton/formEditor/editors/800.rst | 35 + .../RadioButton/formEditor/editors/9999.rst | 30 + .../RadioButton/formEditor/group.rst | 30 + .../RadioButton/formEditor/groupSorting.rst | 29 + .../RadioButton/formEditor/iconIdentifier.rst | 35 + .../RadioButton/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 31 + .../RadioButton/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../formElementTypes/SingleSelect.rst | 64 + .../SingleSelect/formEditor.rst | 89 + .../SingleSelect/formEditor/editors/100.rst | 29 + .../SingleSelect/formEditor/editors/200.rst | 31 + .../SingleSelect/formEditor/editors/250.rst | 33 + .../SingleSelect/formEditor/editors/300.rst | 38 + .../SingleSelect/formEditor/editors/700.rst | 49 + .../SingleSelect/formEditor/editors/800.rst | 35 + .../SingleSelect/formEditor/editors/9999.rst | 30 + .../SingleSelect/formEditor/group.rst | 30 + .../SingleSelect/formEditor/groupSorting.rst | 29 + .../formEditor/iconIdentifier.rst | 35 + .../SingleSelect/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 31 + .../SingleSelect/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../formElementTypes/StaticText.rst | 49 + .../StaticText/formEditor.rst | 46 + .../StaticText/formEditor/editors/100.rst | 29 + .../StaticText/formEditor/editors/200.rst | 31 + .../StaticText/formEditor/editors/300.rst | 31 + .../StaticText/formEditor/editors/9999.rst | 30 + .../StaticText/formEditor/group.rst | 30 + .../StaticText/formEditor/groupSorting.rst | 29 + .../StaticText/formEditor/iconIdentifier.rst | 35 + .../StaticText/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 31 + .../StaticText/implementationClassName.rst | 34 + .../StaticText/properties/text.rst | 35 + .../formElementTypes/SummaryPage.rst | 67 + .../SummaryPage/formEditor.rst | 54 + .../formEditor/_isCompositeFormElement.rst | 29 + .../formEditor/_isTopLevelFormElement.rst | 29 + .../SummaryPage/formEditor/editors/100.rst | 29 + .../SummaryPage/formEditor/editors/200.rst | 31 + .../SummaryPage/formEditor/editors/300.rst | 31 + .../SummaryPage/formEditor/editors/400.rst | 31 + .../SummaryPage/formEditor/editors/9999.rst | 30 + .../SummaryPage/formEditor/group.rst | 30 + .../SummaryPage/formEditor/groupSorting.rst | 29 + .../SummaryPage/formEditor/iconIdentifier.rst | 35 + .../SummaryPage/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 32 + .../SummaryPage/implementationClassName.rst | 34 + .../_isCompositeFormElement.rst | 38 + .../_isTopLevelFormElement.rst | 38 + .../renderingOptions/nextButtonLabel.rst | 38 + .../renderingOptions/previousButtonLabel.rst | 38 + .../formElementTypes/Text.rst | 178 + .../formElementTypes/Text/formEditor.rst | 243 + .../Text/formEditor/editors/100.rst | 30 + .../Text/formEditor/editors/200.rst | 32 + .../Text/formEditor/editors/400.rst | 35 + .../Text/formEditor/editors/500.rst | 32 + .../Text/formEditor/editors/700.rst | 50 + .../Text/formEditor/editors/800.rst | 36 + .../Text/formEditor/editors/900.rst | 59 + .../Text/formEditor/editors/9999.rst | 30 + .../Text/formEditor/group.rst | 30 + .../Text/formEditor/groupSorting.rst | 29 + .../Text/formEditor/iconIdentifier.rst | 35 + .../Text/formEditor/label.rst | 29 + .../Text/formEditor/predefinedDefaults.rst | 30 + .../propertyCollections/validators/10.rst | 35 + .../validators/10/editors/100.rst | 32 + .../validators/10/editors/9999.rst | 31 + .../validators/10/identifier.rst | 33 + .../propertyCollections/validators/20.rst | 35 + .../validators/20/editors/100.rst | 32 + .../validators/20/editors/9999.rst | 31 + .../validators/20/identifier.rst | 33 + .../propertyCollections/validators/30.rst | 57 + .../validators/30/editors/100.rst | 32 + .../validators/30/editors/200.rst | 39 + .../validators/30/editors/300.rst | 39 + .../validators/30/editors/9999.rst | 31 + .../validators/30/identifier.rst | 33 + .../propertyCollections/validators/40.rst | 35 + .../validators/40/editors/100.rst | 32 + .../validators/40/editors/9999.rst | 31 + .../validators/40/identifier.rst | 33 + .../propertyCollections/validators/50.rst | 35 + .../validators/50/editors/100.rst | 32 + .../validators/50/editors/9999.rst | 31 + .../validators/50/identifier.rst | 33 + .../propertyCollections/validators/60.rst | 35 + .../validators/60/editors/100.rst | 32 + .../validators/60/editors/9999.rst | 31 + .../validators/60/identifier.rst | 33 + .../propertyCollections/validators/70.rst | 53 + .../validators/70/editors/100.rst | 32 + .../validators/70/editors/200.rst | 37 + .../validators/70/editors/300.rst | 36 + .../validators/70/editors/9999.rst | 31 + .../validators/70/identifier.rst | 33 + .../propertyCollections/validators/80.rst | 43 + .../validators/80/editors/100.rst | 32 + .../validators/80/editors/200.rst | 36 + .../validators/80/editors/9999.rst | 31 + .../validators/80/identifier.rst | 33 + .../Text/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../Text/properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../formElementTypes/Textarea.rst | 178 + .../formElementTypes/Textarea/formEditor.rst | 240 + .../Textarea/formEditor/editors/100.rst | 29 + .../Textarea/formEditor/editors/200.rst | 31 + .../Textarea/formEditor/editors/400.rst | 33 + .../Textarea/formEditor/editors/500.rst | 31 + .../Textarea/formEditor/editors/700.rst | 48 + .../Textarea/formEditor/editors/800.rst | 33 + .../Textarea/formEditor/editors/900.rst | 58 + .../Textarea/formEditor/editors/9999.rst | 29 + .../Textarea/formEditor/group.rst | 30 + .../Textarea/formEditor/groupSorting.rst | 29 + .../Textarea/formEditor/iconIdentifier.rst | 35 + .../Textarea/formEditor/label.rst | 29 + .../formEditor/predefinedDefaults.rst | 30 + .../propertyCollections/validators/10.rst | 35 + .../validators/10/editors/100.rst | 32 + .../validators/10/editors/9999.rst | 31 + .../validators/10/identifier.rst | 33 + .../propertyCollections/validators/20.rst | 35 + .../validators/20/editors/100.rst | 32 + .../validators/20/editors/9999.rst | 31 + .../validators/20/identifier.rst | 33 + .../propertyCollections/validators/30.rst | 57 + .../validators/30/editors/100.rst | 32 + .../validators/30/editors/200.rst | 39 + .../validators/30/editors/300.rst | 39 + .../validators/30/editors/9999.rst | 31 + .../validators/30/identifier.rst | 33 + .../propertyCollections/validators/40.rst | 35 + .../validators/40/editors/100.rst | 32 + .../validators/40/editors/9999.rst | 31 + .../validators/40/identifier.rst | 33 + .../propertyCollections/validators/50.rst | 35 + .../validators/50/editors/100.rst | 32 + .../validators/50/editors/9999.rst | 31 + .../validators/50/identifier.rst | 33 + .../propertyCollections/validators/60.rst | 35 + .../validators/60/editors/100.rst | 32 + .../validators/60/editors/9999.rst | 31 + .../validators/60/identifier.rst | 33 + .../propertyCollections/validators/70.rst | 53 + .../validators/70/editors/100.rst | 32 + .../validators/70/editors/200.rst | 37 + .../validators/70/editors/300.rst | 36 + .../validators/70/editors/9999.rst | 31 + .../validators/70/identifier.rst | 33 + .../propertyCollections/validators/80.rst | 43 + .../validators/80/editors/100.rst | 32 + .../validators/80/editors/200.rst | 36 + .../validators/80/editors/9999.rst | 31 + .../validators/80/identifier.rst | 33 + .../Textarea/implementationClassName.rst | 34 + .../properties/containerClassAttribute.rst | 37 + .../properties/elementClassAttribute.rst | 37 + .../properties/elementErrorClassAttribute.rst | 37 + .../prototypes/formEngine/Index.rst | 45 + .../prototypes/validatorsDefinition/Index.rst | 292 + .../properties/iconIdentifier.rst | 2 + .../properties/implementationClassName.rst | 1 + .../validatorsDefinition/properties/label.rst | 1 + .../properties/predefinedDefaults.rst | 1 + .../validators/Alphanumeric.rst | 122 + .../validatorsDefinition/validators/Count.rst | 207 + .../validators/DateTime.rst | 122 + .../validators/EmailAddress.rst | 125 + .../validatorsDefinition/validators/Float.rst | 122 + .../validators/Integer.rst | 122 + .../validators/NotEmpty.rst | 125 + .../validators/NumberRange.rst | 207 + .../validators/RegularExpression.rst | 181 + .../validators/StringLength.rst | 210 + .../validatorsDefinition/validators/Text.rst | 122 + typo3/sysext/form/Documentation/FAQ/Index.rst | 153 + .../Images/basic_code_components.png | Bin 0 -> 124554 bytes .../Documentation/Images/form_manager.png | Bin 0 -> 37998 bytes .../Images/introduction_form_editor.png | Bin 0 -> 65639 bytes .../Images/javascript_module_interaction.png | Bin 0 -> 54086 bytes typo3/sysext/form/Documentation/Includes.txt | 13 + typo3/sysext/form/Documentation/Index.rst | 55 + .../form/Documentation/Introduction/Index.rst | 86 + typo3/sysext/form/Documentation/Settings.cfg | 18 + 752 files changed, 47718 insertions(+) create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/getRootForm.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setLabel.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setOptions.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractSection/addElement.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractSection/getElements.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractSection/getElementsRecursively.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractSection/moveElementAfter.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractSection/moveElementBefore.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/AbstractSection/removeElement.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/addValidator.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/createValidator.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getDefaultValue.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getProperties.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getUniqueIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/initializeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/isRequired.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setDataType.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setDefaultValue.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setProperty.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setRenderingOption.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/Index.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/RenderableInterface/getParentRenderable.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/RenderableInterface/getTemplateName.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/RenderableInterface/setParentRenderable.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getLabel.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getRendererClassName.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getRenderingOptions.rst create mode 100644 typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getType.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/Configuration/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/Finishers/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/FormConfigurationFormDefinition/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/FormEditor/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/FormFileStorages/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/FormManager/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/FormPlugin/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/FrontendRendering/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/Index.rst create mode 100644 typo3/sysext/form/Documentation/Concepts/TargetGroupsAndMainPrinciples/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/configuration/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/formManager/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/persistenceManager/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Closure.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Confirmation.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/DeleteUploads.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/EmailToReceiver.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/EmailToSender.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/FlashMessage.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Redirect.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/SaveToDatabase.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/formEngine/elements.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/formEngine/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formEditor/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/CheckboxEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/CollectionElementHeaderEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/FinishersEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/FormElementHeaderEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/GridColumnViewPortConfigurationEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/MultiSelectEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/PropertyGridEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/RemoveElementEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/RequiredValidatorEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/SingleSelectEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/TextEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/TextareaEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/Typo3WinBrowserEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/ValidatorsEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/Identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/Label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/PropertyPath.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/TemplateName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/confirmationClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/confirmationLabel.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/value.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/properties/contentElementUid.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/500.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/dateFormat.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/displayTimeSelector.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/enableDatePicker.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorHourLabel.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorMinuteLabel.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/renderingOptions/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/allowedMimeTypes.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/saveToFileMount.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/_isTopLevelFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/inspectorEditorFormElementSelectorNoElements.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseCancleButton.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseConfirmButton.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseDialogMessage.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseDialogTitle.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalInsertElementsDialogTitle.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalInsertPagesDialogTitle.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementCancleButton.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementConfirmButton.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementDialogMessage.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementDialogTitle.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageMessage.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageTitle.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalValidationErrorsConfirmButton.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalValidationErrorsDialogTitle.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/paginationTitle.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/1000.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/1100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/500.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/600.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1000.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/500.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/600.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/saveSuccessFlashMessageMessage.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/saveSuccessFlashMessageTitle.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/_isTopLevelFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/addQueryString.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/additionalParams.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/argumentsToBeExcludedFromQueryString.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/controllerAction.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/honeypot/enable.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/honeypot/formElementToUse.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/httpEnctype.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/httpMethod.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/layoutRootPaths.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/partialRootPaths.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/skipUnknownElements.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/submitButtonLabel.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/templateRootPaths.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/translation/translationFile.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/_isGridContainerFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/gridSize.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/renderingOptions/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/renderingOptions/_isGridContainerFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/_isGridRowFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/gridSize.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/viewPorts.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/renderingOptions/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/renderingOptions/_isGridRowFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/renderAsHiddenField.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/styleAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/allowedMimeTypes.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageLinkMaxWidth.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageMaxHeight.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageMaxWidth.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/saveToFileMount.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/250.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/_isTopLevelFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/_isTopLevelFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/nextButtonLabel.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/previousButtonLabel.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/500.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/250.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/properties/text.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/_isTopLevelFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/_isCompositeFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/_isTopLevelFormElement.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/nextButtonLabel.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/previousButtonLabel.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/500.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/400.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/500.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/700.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/800.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/900.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/group.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/groupSorting.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/300.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/100.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/200.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/9999.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/identifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/containerClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/elementClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/elementErrorClassAttribute.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formEngine/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/Index.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/iconIdentifier.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/implementationClassName.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/label.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/predefinedDefaults.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Alphanumeric.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Count.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/DateTime.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/EmailAddress.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Float.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Integer.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/NotEmpty.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/NumberRange.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/RegularExpression.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/StringLength.rst create mode 100644 typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Text.rst create mode 100644 typo3/sysext/form/Documentation/FAQ/Index.rst create mode 100644 typo3/sysext/form/Documentation/Images/basic_code_components.png create mode 100644 typo3/sysext/form/Documentation/Images/form_manager.png create mode 100644 typo3/sysext/form/Documentation/Images/introduction_form_editor.png create mode 100644 typo3/sysext/form/Documentation/Images/javascript_module_interaction.png create mode 100644 typo3/sysext/form/Documentation/Includes.txt create mode 100644 typo3/sysext/form/Documentation/Index.rst create mode 100644 typo3/sysext/form/Documentation/Introduction/Index.rst create mode 100644 typo3/sysext/form/Documentation/Settings.cfg diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/getRootForm.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/getRootForm.rst new file mode 100644 index 000000000000..be1a28017164 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/getRootForm.rst @@ -0,0 +1,10 @@ +getRootForm() +''''''''''''' + +Get the root form the element belongs to. + +Signature: + +.. code-block:: php + + public function getRootForm(): FormDefinition diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setIdentifier.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setIdentifier.rst new file mode 100644 index 000000000000..5e17071b61ac --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setIdentifier.rst @@ -0,0 +1,10 @@ +setIdentifier() +''''''''''''''' + +Set the identifier of the form element. + +Signature: + +.. code-block:: php + + public function setIdentifier(string $identifier); diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setLabel.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setLabel.rst new file mode 100644 index 000000000000..63fd6d10deab --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setLabel.rst @@ -0,0 +1,10 @@ +setLabel() +'''''''''' + +Set the label for the form element. + +Signature: + +.. code-block:: php + + public function setLabel(string $label); diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setOptions.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setOptions.rst new file mode 100644 index 000000000000..c2c2c9a98144 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractRenderable/setOptions.rst @@ -0,0 +1,11 @@ +setOptions() +'''''''''''' + +Set multiple properties of this object at once. +Every property which has a corresponding set* method can be set using the passed $options array. + +Signature: + +.. code-block:: php + + public function setOptions(array $options); diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractSection/addElement.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/addElement.rst new file mode 100644 index 000000000000..178397dd6b76 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/addElement.rst @@ -0,0 +1,11 @@ +addElement() +'''''''''''' + +Add a new form element at the end. +Instead of this method, you should use ``createElement`` instead. + +Signature: + +.. code-block:: php + + public function addElement(FormElementInterface $formElement); diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractSection/getElements.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/getElements.rst new file mode 100644 index 000000000000..c8ac60719507 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/getElements.rst @@ -0,0 +1,10 @@ +getElements() +''''''''''''' + +Get the child form elements. + +Signature: + +.. code-block:: php + + public function getElements(): array; diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractSection/getElementsRecursively.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/getElementsRecursively.rst new file mode 100644 index 000000000000..c3af97e435dd --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/getElementsRecursively.rst @@ -0,0 +1,10 @@ +getElementsRecursively() +'''''''''''''''''''''''' + +Returns all RenderableInterface instances of this composite renderable recursively. + +Signature: + +.. code-block:: php + + public function getElementsRecursively(): array; diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractSection/moveElementAfter.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/moveElementAfter.rst new file mode 100644 index 000000000000..2c8cb924eba4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/moveElementAfter.rst @@ -0,0 +1,11 @@ +moveElementAfter() +'''''''''''''''''' + +Move FormElement $elementToMove after $referenceElement. +Both $elementToMove and $referenceElement must be direct descendants of this Section/Page. + +Signature: + +.. code-block:: php + + public function moveElementAfter(FormElementInterface $elementToMove, FormElementInterface $referenceElement); diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractSection/moveElementBefore.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/moveElementBefore.rst new file mode 100644 index 000000000000..ee7ad5dacd6b --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/moveElementBefore.rst @@ -0,0 +1,11 @@ +moveElementBefore() +''''''''''''''''''' + +Move FormElement $elementToMove before $referenceElement. +Both $elementToMove and $referenceElement must be direct descendants of this Section/Page. + +Signature: + +.. code-block:: php + + public function moveElementBefore(FormElementInterface $elementToMove, FormElementInterface $referenceElement); diff --git a/typo3/sysext/form/Documentation/ApiReference/AbstractSection/removeElement.rst b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/removeElement.rst new file mode 100644 index 000000000000..841eed7dd45c --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/AbstractSection/removeElement.rst @@ -0,0 +1,10 @@ +removeElement() +''''''''''''''' + +Remove $elementToRemove from this Section/Page. + +Signature: + +.. code-block:: php + + public function removeElement(FormElementInterface $elementToRemove); diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/addValidator.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/addValidator.rst new file mode 100644 index 000000000000..86e58147c791 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/addValidator.rst @@ -0,0 +1,10 @@ +addValidator() +'''''''''''''' + +Registers a validator for the form element. + +Signature: + +.. code-block:: php + + public function addValidator(ValidatorInterface $validator); diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/createValidator.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/createValidator.rst new file mode 100644 index 000000000000..fa8f027801b1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/createValidator.rst @@ -0,0 +1,10 @@ +createValidator() +''''''''''''''''' + +Create a validator for the element. + +Signature: + +.. code-block:: php + + public function createValidator(string $validatorIdentifier, array $options = []); \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getDefaultValue.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getDefaultValue.rst new file mode 100644 index 000000000000..013224a3585d --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getDefaultValue.rst @@ -0,0 +1,10 @@ +getDefaultValue() +''''''''''''''''' + +Get the default value with which the form element should be initialized during display. + +Signature: + +.. code-block:: php + + public function getDefaultValue(); diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getProperties.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getProperties.rst new file mode 100644 index 000000000000..24803492d4ee --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getProperties.rst @@ -0,0 +1,10 @@ +getProperties() +''''''''''''''' + +Get all element-specific configuration properties. + +Signature: + +.. code-block:: php + + public function getProperties(): array; diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getUniqueIdentifier.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getUniqueIdentifier.rst new file mode 100644 index 000000000000..90353bb7ae6c --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/getUniqueIdentifier.rst @@ -0,0 +1,39 @@ +getUniqueIdentifier() +''''''''''''''''''''' + +Returns a unique identifier of the element. While element identifiers are only unique within one form, +this identifier includes also the identifier of the form itself, and therefore making it "globally" unique. + +Signature: + +.. code-block:: php + + public function getUniqueIdentifier(): string; + +Example: + +.. code-block:: yaml + + identifier: exampleForm + label: 'Simple Contact Form' + prototype: standard + type: Form + + renderables: + - + identifier: page-1 + label: 'Contact Form' + type: Page + + renderables: + - + identifier: name + label: 'Name' + type: Text + defaultValue: '' + +.. code-block:: php + + // $formElement->getIdentifier() == 'name' + $uniqueIdentifier = $formElement->getUniqueIdentifier(); + // $uniqueIdentifier == 'exampleForm-name' diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/initializeFormElement.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/initializeFormElement.rst new file mode 100644 index 000000000000..03eb87713abe --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/initializeFormElement.rst @@ -0,0 +1,10 @@ +initializeFormElement() +''''''''''''''''''''''' + +Will be called as soon as the element is (tried to be) added to a form. + +Signature: + +.. code-block:: php + + public function initializeFormElement(); diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/isRequired.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/isRequired.rst new file mode 100644 index 000000000000..233fee38a949 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/isRequired.rst @@ -0,0 +1,11 @@ +isRequired() +'''''''''''' + +Whether or not the element is required. +An element is required if the ``TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator`` is attached to the element. + +Signature: + +.. code-block:: php + + public function isRequired(): bool; diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setDataType.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setDataType.rst new file mode 100644 index 000000000000..2495c1689dc8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setDataType.rst @@ -0,0 +1,20 @@ +setDataType() +''''''''''''' + +The target data type the data should be converted through the property mapper. + +Signature: + +.. code-block:: php + + public function setDataType(string $dataType); + +Example: + +.. code-block:: php + + public function initializeFormElement() + { + $this->setDataType('TYPO3\CMS\Extbase\Domain\Model\FileReference'); + parent::initializeFormElement(); + } \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setDefaultValue.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setDefaultValue.rst new file mode 100644 index 000000000000..4695d01b0a42 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setDefaultValue.rst @@ -0,0 +1,10 @@ +setDefaultValue() +''''''''''''''''' + +Set the default value with which the form element should be initialized during display. + +Signature: + +.. code-block:: php + + public function setDefaultValue($defaultValue); diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setProperty.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setProperty.rst new file mode 100644 index 000000000000..b66dbd2972f0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setProperty.rst @@ -0,0 +1,10 @@ +setProperty() +''''''''''''' + +Set an element-specific configuration property. + +Signature: + +.. code-block:: php + + public function setProperty(string $key, $value); diff --git a/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setRenderingOption.rst b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setRenderingOption.rst new file mode 100644 index 000000000000..21798094e00a --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/FormElementInterface/setRenderingOption.rst @@ -0,0 +1,10 @@ +setRenderingOption() +'''''''''''''''''''' + +Set a rendering option. + +Signature: + +.. code-block:: php + + public function setRenderingOption(string $key, $value); diff --git a/typo3/sysext/form/Documentation/ApiReference/Index.rst b/typo3/sysext/form/Documentation/ApiReference/Index.rst new file mode 100644 index 000000000000..8d49b8ffce33 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/Index.rst @@ -0,0 +1,5649 @@ +.. include:: ../Includes.txt + + +.. _apireference: + +============= +API Reference +============= + +This chapter is a complete reference of the API of the form framework. It +mainly addresses your concerns as a developer. + + +.. _apireference-frontendrendering: + +Frontend rendering +================== + + +.. _apireference-frontendrendering-fluidformrenderer: + +TYPO3\\CMS\\Form\\Domain\\Renderer\\FluidFormRenderer +----------------------------------------------------- + + +.. _apireference-frontendrendering-fluidformrenderer-options: + +Options +^^^^^^^ + +The ``FluidFormRenderer`` uses some rendering options which are of particular importance, +as they determine how the form field is resolved to a path in the file system. + +All rendering options are retrieved from the ``FormDefinition``, using the ``TYPO3\CMS\Form\Domain\Model\FormDefinition::getRenderingOptions()`` method. + + +.. _apireference-frontendrendering-fluidformrenderer-options-templaterootpaths: + +templateRootPaths ++++++++++++++++++ + +Used to define several paths for templates, which will be tried in reversed order (the paths are searched from bottom to top). +The first folder where the desired template is found, is used. If the array keys are numeric, they are first sorted and then tried in reversed order. +Within this paths, fluid will search for a file which is named like the ``<formElementTypeIdentifier>``. + +For example: + +templateRootPaths.10 = EXT:form/Resources/Private/Frontend/Templates/ +$renderable->getType() == 'Form' +Expected template file: EXT:form/Resources/Private/Frontend/Templates/Form.html + +Only the root element (``FormDefinition``) has to be a template file. All child form elements are partials. By default, the root element is called ``Form``. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Form: + renderingOptions: + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + + +.. _apireference-frontendrendering-fluidformrenderer-options-layoutrootpaths: + +layoutRootPaths ++++++++++++++++ + +Used to define several paths for layouts, which will be tried in reversed order (the paths are searched from bottom to top). +The first folder where the desired layout is found, is used. If the array keys are numeric, they are first sorted and then tried in reversed order. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Form: + renderingOptions: + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + + +.. _apireference-frontendrendering-fluidformrenderer-options-partialrootpaths: + +partialRootPaths +++++++++++++++++ + +Used to define several paths for partials, which will be tried in reversed order. The first folder where the desired partial is found, is used. +The keys of the array define the order. + +Within this paths, fluid will search for a file which is named like the ``<formElementTypeIdentifier>``. + +For example: + +templateRootPaths.10 = EXT:form/Resources/Private/Frontend/Partials/ +$renderable->getType() == 'Text' +Expected template file: EXT:form/Resources/Private/Frontend/Partials/Text.html + +There is a setting available to set a custom partial name. Please read the section :ref:`templateName<apireference-frontendrendering-fluidformrenderer-options-templatename>`. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Form: + renderingOptions: + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + + +.. _apireference-frontendrendering-fluidformrenderer-options-templatename: + +templateName +++++++++++++ + +By default, the renderable type will be taken as the name for the partial. + +For example: + +partialRootPaths.10 = EXT:form/Resources/Private/Frontend/Partials/ +$renderable->getType() == 'Text' +Expected partial file: EXT:form/Resources/Private/Frontend/Partials/Text.html + +Set ``templateName`` to define a custom name which should be used instead. + +For example: + +$renderable->getTemplateName() == 'Text' +$renderable->getType() = Foo +Expected partial file: EXT:form/Resources/Private/Frontend/Partials/Text.html + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Foo: + renderingOptions: + templateName: 'Text' + + +.. _apireference-frontendrendering-renderviewHelper: + +"render" viewHelper +------------------- + +.. _apireference-frontendrendering-renderviewHelper-arguments: + +Argumentes +^^^^^^^^^^ + +.. _apireference-frontendrendering-renderviewHelper-factoryclass: + +factoryClass +++++++++++++ + +A class name of a ``FormFactory``. +This factory is used to create the ``TYPO3\CMS\Form\Domain\Model\FormDefinition`` which is the ``form definition`` Domain Model. +If no ``factoryClass`` argument is passed, the factory supplied by EXT:form ``TYPO3\CMS\Form\ Domain\Factory\ArrayFormFactory`` is used. +Another factory class is required if the form is to be generated programmatically. +To do this you must implement your own ``FormFactory`` in which your own form is generated programmatically and passes this class name to the ViewHelper. +This then renders the form. + +.. code-block:: html + + <formvh:render factoryClass="VENDOR\MySitePackage\Domain\Factory\CustomFormFactory" /> + + +.. _apireference-frontendrendering-renderviewHelper-persistenceidentifier: + +persistenceIdentifier ++++++++++++++++++++++ + +The ``form definition`` to be found under ``persistenceIdentifier``. +The PersistenceManager now loads the ``form definition`` which is found under ``persistenceIdentifier`` and passes this configuration to the ``factoryClass``. +In this case, the ``factoryClass`` will be given an empty configuration array (if ``overrideConfiguration`` is not specified). + +.. code-block:: html + + <formvh:render persistenceIdentifier="EXT:my_site_package/Resources/Private/Forms/SimpleContactForm.yaml" /> + + +.. _apireference-frontendrendering-renderviewHelper-overrideconfiguration: + +overrideConfiguration ++++++++++++++++++++++ + +A configuration to be superimposed can be entered here. +If a ``persistenceIdentifier`` is specified, the ``form definition`` which is found under ``persistenceIdentifier`` is loaded. +This configuration is then superimposed with ``overrideConfiguration``. This configuration is then passed to the ``factoryClass``. +If no ``persistenceIdentifier`` is specified, ``overrideConfiguration`` is passed directly to the ``factoryClass``. +This way a configuration can be given to a ``factoryClass`` implementation. + + +.. _apireference-frontendrendering-renderviewHelper-prototypename: + +prototypeName ++++++++++++++ + +The name of the prototype, on which basis the ``factoryClass`` should create the form. +If nothing is specified, the configuration (``form definition`` or ``overrideConfiguration``) is searched for the prototy name. +If no specification exists, the standard prototype ``standard`` is used. + + + +.. _apireference-frontendrendering-programmatically: + +Build forms programmatically +---------------------------- + +Implement a ``FormFactory`` and build the form. + +.. code-block:: php + + <?php + declare(strict_types=1); + namespace VENDOR\MySitePackage\Domain\Factory; + + use TYPO3\CMS\Core\Utility\GeneralUtility; + use TYPO3\CMS\Extbase\Object\ObjectManager; + use TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator; + use TYPO3\CMS\Extbase\Validation\Validator\StringLengthValidator; + use TYPO3\CMS\Form\Domain\Configuration\ConfigurationService; + use TYPO3\CMS\Form\Domain\Factory\AbstractFormFactory; + use TYPO3\CMS\Form\Domain\Model\FormDefinition; + + class CustomFormFactory extends AbstractFormFactory + { + + /** + * Build a FormDefinition. + * This example build a FormDefinition manually, + * so $configuration and $prototypeName are unused. + * + * @param array $configuration + * @param string $prototypeName + * @return FormDefinition + */ + public function build(array $configuration, string $prototypeName = null): FormDefinition + { + $prototypeName = 'standard'; + $configurationService = GeneralUtility::makeInstance(ObjectManager::class)->get(ConfigurationService::class); + $prototypeConfiguration = $configurationService->getPrototypeConfiguration($prototypeName); + + $form = GeneralUtility::makeInstance(ObjectManager::class)->get(FormDefinition::class, 'MyCustomForm', $prototypeConfiguration); + $form->setRenderingOption('controllerAction', 'index'); + + $page1 = $form->createPage('page1'); + $name = $page1->createElement('name', 'Text'); + $name->setLabel('Name'); + $name->addValidator(GeneralUtility::makeInstance(ObjectManager::class)->get(NotEmptyValidator::class)); + + $page2 = $form->createPage('page2'); + $message = $page2->createElement('message', 'Textarea'); + $message->setLabel('Message'); + $message->addValidator(GeneralUtility::makeInstance(ObjectManager::class)->get(StringLengthValidator::class, ['minimum' => 5, 'maximum' => 20])); + + $form->createFinisher('EmailToSender', [ + 'subject' => 'Hello', + 'recipientAddress' => 'foo@example.com', + 'senderAddress' => 'bar@example.com', + ]); + + $this->triggerFormBuildingFinished($form); + return $form; + } + } + + +Use this form within your fluid template. + +.. code-block:: html + + <formvh:render factoryClass="VENDOR\MySitePackage\Domain\Factory\CustomFormFactory" /> + + +.. _apireference-frontendrendering-programmatically-commonapimethods: + +Common API Methods +^^^^^^^^^^^^^^^^^^ + + +.. _apireference-frontendrendering-programmatically-commonapimethods-createpage: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormDefinition::createPage() ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Create a page with the given $identifier and attach this page to the form. + +- Create Page object based on the given $typeName +- set defaults inside the Page object +- attach Page object to this form +- return the newly created Page object + +Signature: + +.. code-block:: php + + public function createPage(string $identifier, string $typeName = 'Page'): Page; + + +.. _apireference-frontendrendering-programmatically-commonapimethods-createfinisher: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormDefinition::createFinisher() ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Create a finisher with the given $identifier and given $options and attach this finisher to the form. + +Signature: + +.. code-block:: php + + public function createFinisher(string $finisherIdentifier, array $options = []): FinisherInterface; + + +.. _apireference-frontendrendering-programmatically-commonapimethods-page-createelement: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\Page::createElement() +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Create a form element with the given $identifier and attach it to the page. + +- Create Form Element object based on the given $typeName +- set defaults inside the Form Element (based on the parent form's field defaults) +- attach Form Element to the Page +- return the newly created Form Element object + +Signature: + +.. code-block:: php + + public function createElement(string $identifier, string $typeName): FormElementInterface; + + +.. _apireference-frontendrendering-programmatically-commonapimethods-section-createelement: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\Section::createElement() ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Create a form element with the given $identifier and attach it to the section. + +- Create Form Element object based on the given $typeName +- set defaults inside the Form Element (based on the parent form's field defaults) +- attach Form Element to the Section +- return the newly created Form Element object + +Signature: + +.. code-block:: php + + public function createElement(string $identifier, string $typeName): FormElementInterface; + + +.. _apireference-frontendrendering-programmatically-commonapimethods-abstractrenderable-createvalidator: + +TYPO3\\CMS\\Form\\Domain\\Model\\Renderable\\AbstractFormElement::createValidator() ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Create a validator for the element. +Mainly possible for + +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\AdvancedPassword +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\GenericFormElement +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\DatePicker +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\FileUpload + +Signature: + +.. code-block:: php + + public function createValidator(string $validatorIdentifier, array $options = []); + + +.. _apireference-frontendrendering-programmatically-commonapimethods-initializeformelement: + +initializeFormElement() ++++++++++++++++++++++++ + +Will be called as soon as the element is added to a form. +Possible for + +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\Section +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\AdvancedPassword +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\GenericFormElement +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\DatePicker +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\FileUpload + +Signature: + +.. code-block:: php + + public function initializeFormElement(); + + +You can use this method to prefill form element data for example from database tables. +All the classes you can see above extends from the ``TYPO3\CMS\Form\Domain\Model\FormElement\AbstractFormElement``. +``AbstractFormElement`` implements this method like this + +.. code-block:: php + + public function initializeFormElement() + { + if ( + isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['initializeFormElement']) + && is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['initializeFormElement']) + ) { + foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['initializeFormElement'] as $className) { + $hookObj = GeneralUtility::makeInstance($className); + if (method_exists($hookObj, 'initializeFormElement')) { + $hookObj->initializeFormElement( + $this + ); + } + } + } + } + +If you extend you custom implementation from ``AbstractFormElement`` (and you should do this), +it enables you to override the 'initializeFormElement' method within your custom implementation class. +If you do not call the parents 'initializeFormElement' then no hook will be thrown. + +If your use case for a custom form element implementation means that you only want to initialize you form element +programmatically (e.g to get databasedata) and no other special things are to do, you might prefer the hook. +You only need a class which connects to this hook. Then detect the form element you wish to initialize. + + +.. _apireference-frontendrendering-programmatically-apimethods: + +API Methods +^^^^^^^^^^^ + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormRuntime +++++++++++++++++++++++++++++++++++++++++++++ + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-overridecurrentpage: + +overrideCurrentPage() +''''''''''''''''''''' + +Override the current page taken from the request, rendering the page with index $pageIndex instead. +This is typically not needed in production code. +You might prefer the hook :ref:`afterInitializeCurrentPage <apireference-frontendrendering-runtimemanipulation-hooks-afterinitializecurrentpage>` + +Signature: + +.. code-block:: php + + public function overrideCurrentPage(int $pageIndex); + +Example: + +.. code-block:: php + + $form = $formDefinition->bind($this->request, $this->response); + $form->overrideCurrentPage($pageIndex); + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-render: + +render() +'''''''' + +Render the form. + +Signature: + +.. code-block:: php + + public function render(); + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getidentifier: +.. include:: RootRenderableInterface/getIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getrequest: + +getRequest() +'''''''''''' + +Get the request this object is bound to. +This is mostly relevant inside Finishers, where you f.e. want to redirect the user to another page. + +Signature: + +.. code-block:: php + + public function getRequest(): Request; + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getresponse: + +getResponse() +''''''''''''' + +Get the response this object is bound to. +This is mostly relevant inside Finishers, where you f.e. want to set response headers or output content. + +Signature: + +.. code-block:: php + + public function getResponse(): Response; + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getcurrentpage: + +getCurrentPage() +'''''''''''''''' + +Returns the currently selected page. + +Signature: + +.. code-block:: php + + public function getCurrentPage(): Page; + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getpreviouspage: + +getPreviousPage() +''''''''''''''''' + +Returns the previous page of the currently selected one or NULL if there is no previous page. + +Signature: + +.. code-block:: php + + public function getPreviousPage(); + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getnextpage: + +getNextPage() +''''''''''''' + +Returns the next page of the currently selected one or NULL if there is no next page. + +Signature: + +.. code-block:: php + + public function getNextPage(); + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-gettype: +.. include:: RootRenderableInterface/getType.rst + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getelementvalue: + +getElementValue() +''''''''''''''''' + +Returns the value of the specified element. + +Signature: + +.. code-block:: php + + public function getElementValue(string $identifier); + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getpages: + +getPages() +'''''''''' + +Return the form's pages in the correct order. + +Signature: + +.. code-block:: php + + public function getPages(): array; + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getrenderingoptions: +.. include:: RootRenderableInterface/getRenderingOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getrendererclassname: +.. include:: RootRenderableInterface/getRendererClassName.rst + + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getlabel: +.. include:: RootRenderableInterface/getLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-gettemplatename: +.. include:: RenderableInterface/getTemplateName.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formruntime-getformdefinition: + +getFormDefinition() +''''''''''''''''''' + +Get the underlying form definition from the runtime. + +Signature: + +.. code-block:: php + + public function getFormDefinition(): FormDefinition; + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormDefinition ++++++++++++++++++++++++++++++++++++++++++++++++ + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-addpage: + +addPage() +''''''''' + +Add a new page at the end of the form. +Instead of this method, you should use ``createPage`` instead. + +Signature: + +.. code-block:: php + + public function addPage(Page $page); + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-createpage: + +createPage() +'''''''''''' + +Create a page with the given $identifier and attach this page to the form. + +- Create Page object based on the given $typeName +- set defaults inside the Page object +- attach Page object to this form +- return the newly created Page object + +Signature: + +.. code-block:: php + + public function createPage(string $identifier, string $typeName = 'Page'): Page; + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getpages: + +getPages() +'''''''''' + +Return the form's pages in the correct order. + +Signature: + +.. code-block:: php + + public function getPages(): array; + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-haspagewithindex: + +hasPageWithIndex() +'''''''''''''''''' + +Check whether a page with the given $index exists. + +Signature: + +.. code-block:: php + + public function hasPageWithIndex(int $index): bool; + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getpagebyindex: + +getPageByIndex() +'''''''''''''''' + +Get the page with the passed index. The first page has index zero. +If page at $index does not exist, an exception is thrown. + +Signature: + +.. code-block:: php + + public function getPageByIndex(int $index); + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-addfinisher: + +addFinisher() +''''''''''''' + +Adds the specified finisher to the form. +Instead of this method, you should use ``createFinisher`` instead. + +Signature: + +.. code-block:: php + + public function addFinisher(FinisherInterface $finisher); + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-createfinisher: + +createFinisher() +'''''''''''''''' + +Create a finisher with the given $identifier and given $options and attach this finisher to the form. + +Signature: + +.. code-block:: php + + public function createFinisher(string $finisherIdentifier, array $options = []): FinisherInterface; + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getfinishers: + +getFinishers() +'''''''''''''' + +Gets all finishers of the form. + +Signature: + +.. code-block:: php + + public function getFinishers(): array; + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getelementbyidentifier: + +getElementByIdentifier() +'''''''''''''''''''''''' + +Get a form element by its identifier. +If identifier does not exist, returns NULL. + +Signature: + +.. code-block:: php + + public function getElementByIdentifier(string $elementIdentifier); + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-movepageafter: + +movePageAfter() +''''''''''''''' + +Move $pageToMove after $referencePage. + +Signature: + +.. code-block:: php + + public function movePageAfter(Page $pageToMove, Page $referencePage); + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-removepage: + +removePage() +'''''''''''' + +Remove $pageToRemove from the form. + +Signature: + +.. code-block:: php + + public function removePage(Page $pageToRemove); + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-bind: + +bind() +'''''' + +Bind the current request and response to this form instance, effectively creating a new "instance" of the Form. + +Signature: + +.. code-block:: php + + public function bind(Request $request, Response $response): FormRuntime; + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getprocessingrule: + +getProcessingRule() +''''''''''''''''''' + +Get the processing rule which contains information for property mappings and validations. + +Signature: + +.. code-block:: php + + public function getProcessingRule(string $propertyPath): ProcessingRule; + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-gettype: +.. include:: RootRenderableInterface/getType.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getidentifier: +.. include:: RootRenderableInterface/getIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-setidentifier: +.. include:: AbstractRenderable/setIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-setoptions: +.. include:: AbstractRenderable/setOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-addvalidator: +.. include:: FormElementInterface/addValidator.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-setdatatype: +.. include:: FormElementInterface/setDataType.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getrendererclassname: +.. include:: RootRenderableInterface/getRendererClassName.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-setrendererclassname: + +setRendererClassName() +'''''''''''''''''''''' + +Set the renderer class name. + +Signature: + +.. code-block:: php + + public function setRendererClassName(string $rendererClassName); + + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getrenderingoptions: +.. include:: RootRenderableInterface/getRenderingOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-setrenderingoption: +.. include:: FormElementInterface/setRenderingOption.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getparentrenderable: +.. include:: RenderableInterface/getParentRenderable.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-setparentrenderable: +.. include:: RenderableInterface/setParentRenderable.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getrootform: +.. include:: AbstractRenderable/getRootForm.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-getlabel: +.. include:: RootRenderableInterface/getLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-setlabel: +.. include:: AbstractRenderable/setLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-formdefinition-gettemplatename: +.. include:: RenderableInterface/getTemplateName.rst + + +.. _apireference-frontendrendering-programmatically-apimethods-page: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\Page ++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. _apireference-frontendrendering-programmatically-apimethods-page-getelements: +.. include:: AbstractSection/getElements.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-getelementsrecursively: +.. include:: AbstractSection/getElementsRecursively.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-addelement: +.. include:: AbstractSection/addElement.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-createelement: + +createElement() +''''''''''''''' + +Create a form element with the given $identifier and attach it to the page. + +- Create Form Element object based on the given $typeName +- set defaults inside the Form Element (based on the parent form's field defaults) +- attach Form Element to the Page +- return the newly created Form Element object + +Signature: + +.. code-block:: php + + public function createElement(string $identifier, string $typeName): FormElementInterface; + + +.. _apireference-frontendrendering-programmatically-apimethods-page-moveelementbefore: +.. include:: AbstractSection/moveElementBefore.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-moveelementafter: +.. include:: AbstractSection/moveElementAfter.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-removeelement: +.. include:: AbstractSection/removeElement.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-gettype: +.. include:: RootRenderableInterface/getType.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-getidentifier: +.. include:: RootRenderableInterface/getIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-setidentifier: +.. include:: AbstractRenderable/setIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-setoptions: +.. include:: AbstractRenderable/setOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-addvalidator: +.. include:: FormElementInterface/addValidator.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-createvalidator: +.. include:: FormElementInterface/createValidator.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-setdatatype: +.. include:: FormElementInterface/setDataType.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-getrendererclassname: +.. include:: RootRenderableInterface/getRendererClassName.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-getrenderingoptions: +.. include:: RootRenderableInterface/getRenderingOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-setrenderingoption: +.. include:: FormElementInterface/setRenderingOption.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-getparentrenderable: +.. include:: RenderableInterface/getParentRenderable.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-setparentrenderable: +.. include:: RenderableInterface/setParentRenderable.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-getrootform: +.. include:: AbstractRenderable/getRootForm.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-getlabel: +.. include:: RootRenderableInterface/getLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-setlabel: +.. include:: AbstractRenderable/setLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-page-gettemplatename: +.. include:: RenderableInterface/getTemplateName.rst + + +.. _apireference-frontendrendering-programmatically-apimethods-section: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\Section +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. _apireference-frontendrendering-programmatically-apimethods-section-initializeformelement: +.. include:: FormElementInterface/initializeFormElement.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getuniqueidentifier: +.. include:: FormElementInterface/getUniqueIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-setproperty: +.. include:: FormElementInterface/setProperty.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getproperties: +.. include:: FormElementInterface/getProperties.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-isrequired: +.. include:: FormElementInterface/isRequired.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getelements: +.. include:: AbstractSection/getElements.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getelementsrecursively: +.. include:: AbstractSection/getElementsRecursively.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-addelement: +.. include:: AbstractSection/addElement.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-createelement: + +createElement() +''''''''''''''' + +Create a form element with the given $identifier and attach it to the section. + +- Create Form Element object based on the given $typeName +- set defaults inside the Form Element (based on the parent form's field defaults) +- attach Form Element to the Section +- return the newly created Form Element object + +Signature: + +.. code-block:: php + + public function createElement(string $identifier, string $typeName): FormElementInterface; + + +.. _apireference-frontendrendering-programmatically-apimethods-section-moveelementbefore: +.. include:: AbstractSection/moveElementBefore.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-moveelementafter: +.. include:: AbstractSection/moveElementAfter.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-removeelement: +.. include:: AbstractSection/removeElement.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-gettype: +.. include:: RootRenderableInterface/getType.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getidentifier: +.. include:: RootRenderableInterface/getIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-setidentifier: +.. include:: AbstractRenderable/setIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-setoptions: +.. include:: AbstractRenderable/setOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-addvalidator: +.. include:: FormElementInterface/addValidator.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-createvalidator: +.. include:: FormElementInterface/createValidator.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-setdatatype: +.. include:: FormElementInterface/setDataType.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getrendererclassname: +.. include:: RootRenderableInterface/getRendererClassName.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getrenderingoptions: +.. include:: RootRenderableInterface/getRenderingOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-setrenderingoption: +.. include:: FormElementInterface/setRenderingOption.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getparentrenderable: +.. include:: RenderableInterface/getParentRenderable.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-setparentrenderable: +.. include:: RenderableInterface/setParentRenderable.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getrootform: +.. include:: AbstractRenderable/getRootForm.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-getlabel: +.. include:: RootRenderableInterface/getLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-setlabel: +.. include:: AbstractRenderable/setLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-section-gettemplatename: +.. include:: RenderableInterface/getTemplateName.rst + + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\AbstractFormElement +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +The following classes extends from ``AbstractFormElement`` and therefore contain the following API methods. + +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\AdvancedPassword +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\GenericFormElement +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\DatePicker +- TYPO3\\CMS\\Form\\Domain\\Model\\FormElements\\FileUpload + + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-initializeformelement: +.. include:: FormElementInterface/initializeFormElement.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getuniqueidentifier: +.. include:: FormElementInterface/getUniqueIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getdefaultvalue: +.. include:: FormElementInterface/getDefaultValue.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-setdefaultvalue: +.. include:: FormElementInterface/setDefaultValue.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-setproperty: +.. include:: FormElementInterface/setProperty.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getproperties: +.. include:: FormElementInterface/getProperties.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-isrequired: +.. include:: FormElementInterface/isRequired.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-gettype: +.. include:: RootRenderableInterface/getType.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getidentifier: +.. include:: RootRenderableInterface/getIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-setidentifier: +.. include:: AbstractRenderable/setIdentifier.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-setoptions: +.. include:: AbstractRenderable/setOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-addvalidator: +.. include:: FormElementInterface/addValidator.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-createvalidator: +.. include:: FormElementInterface/createValidator.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-setdatatype: +.. include:: FormElementInterface/setDataType.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getrendererclassname: +.. include:: RootRenderableInterface/getRendererClassName.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getrenderingoptions: +.. include:: RootRenderableInterface/getRenderingOptions.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-setrenderingoption: +.. include:: FormElementInterface/setRenderingOption.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getparentrenderable: +.. include:: RenderableInterface/getParentRenderable.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-setparentrenderable: +.. include:: RenderableInterface/setParentRenderable.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getrootform: +.. include:: AbstractRenderable/getRootForm.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-getlabel: +.. include:: RootRenderableInterface/getLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-setlabel: +.. include:: AbstractRenderable/setLabel.rst + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformelement-gettemplatename: +.. include:: RenderableInterface/getTemplateName.rst + + +.. _apireference-frontendrendering-programmatically-apimethods-abstractfinisher: + +TYPO3\\CMS\\Form\\Domain\\Finishers\\AbstractFinisher ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +The following classes extends from ``AbstractFinisher`` and therefore contain the following API methods. + +- TYPO3\\CMS\\Form\\Domain\\Finishers\\ClosureFinisher +- TYPO3\\CMS\\Form\\Domain\\Finishers\\ConfirmationFinisher +- TYPO3\\CMS\\Form\\Domain\\Finishers\\DeleteUploadsFinisher +- TYPO3\\CMS\\Form\\Domain\\Finishers\\EmailFinisher +- TYPO3\\CMS\\Form\\Domain\\Finishers\\FlashMessageFinisher +- TYPO3\\CMS\\Form\\Domain\\Finishers\\RedirectFinisher +- TYPO3\\CMS\\Form\\Domain\\Finishers\\SaveToDatabaseFinisher + + +.. _apireference-frontendrendering-programmatically-apimethods-abstractfinisher-execute: + +execute() +''''''''' + +Executes the finisher. ``AbstractFinisher::execute()`` call ``$this->executeInternal()`` at the end. Own finisher +implementations which extends from ``AbstractFinisher:`` must start their own logic within ``executeInternal()``. + +Signature: + +.. code-block:: php + + public function execute(FinisherContext $finisherContext); + + +.. _apireference-frontendrendering-programmatically-apimethods-abstractfinisher-setoptions: + +setOptions() +'''''''''''' + +Set the finisher options. Instead of directly accessing them, you should rather use ``parseOption()``. + +Signature: + +.. code-block:: php + + public function setOptions(array $options); + + +.. _apireference-frontendrendering-programmatically-apimethods-abstractfinisher-setoption: + +setOption() +''''''''''' + +Sets a single finisher option. + +Signature: + +.. code-block:: php + + public function setOption(string $optionName, $optionValue); + + +.. _apireference-frontendrendering-programmatically-apimethods-abstractfinisher-parseoption: + +parseOption() +''''''''''''' + +Please read :ref:`Accessing finisher options<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions>` + +Signature: + +.. code-block:: php + + protected function parseOption(string $optionName); + + +.. _apireference-frontendrendering-programmatically-apimethods-finishercontext: + +TYPO3\\CMS\\Form\\Domain\\Finishers\\FinisherContext +++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. _apireference-frontendrendering-programmatically-apimethods-finishercontext-cancel: + +cancel() +'''''''' + +Cancels the finisher invocation after the current finisher. + +Signature: + +.. code-block:: php + + public function cancel(); + + +.. _apireference-frontendrendering-programmatically-apimethods-finishercontext-getformruntime: + +getFormRuntime() +'''''''''''''''' + +The Form Runtime that is associated with the current finisher. + +Signature: + +.. code-block:: php + + public function getFormRuntime(): FormRuntime; + + +.. _apireference-frontendrendering-programmatically-apimethods-finishercontext-getformvalues: + +getFormValues() +''''''''''''''' + +The values of the submitted form (after validation and property mapping). + +Signature: + +.. code-block:: php + + public function getFormValues(): array; + + +.. _apireference-frontendrendering-programmatically-apimethods-finishercontext-getcontrollercontext: + +getControllerContext() +'''''''''''''''''''''' + +Returns the current ControllerContext. + +Signature: + +.. code-block:: php + + public function getControllerContext(): ControllerContext; + + +.. _apireference-frontendrendering-programmatically-apimethods-finishercontext-getfinishervariableprovider: + +getFinisherVariableProvider() +''''''''''''''''''''''''''''' + +Returns the current FinisherVariableProvider. + +Signature: + +.. code-block:: php + + public function getFinisherVariableProvider(): FinisherVariableProvider; + + +.. _apireference-frontendrendering-programmatically-apimethods-finishervariableprovider: + +TYPO3\\CMS\\Form\\Domain\\Finishers\\FinisherVariableProvider ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Please read :ref:`Share data between finishers<concepts-frontendrendering-codecomponents-customfinisherimplementations-finishercontext-sharedatabetweenfinishers>` + +.. _apireference-frontendrendering-programmatically-apimethods-finishervariableprovider-add: + +add() +''''' + +Add a variable to the finisher variable provider. +In case the value is already inside, it is silently overridden. + +Signature: + +.. code-block:: php + + public function add(string $finisherIdentifier, string $key, $value); + + +.. _apireference-frontendrendering-programmatically-apimethods-finishervariableprovider-get: + +get() +''''' + +Gets a variable from the finisher variable provider. + +Signature: + +.. code-block:: php + + public function get(string $finisherIdentifier, string $key, $default = null); + + +.. _apireference-frontendrendering-programmatically-apimethods-finishervariableprovider-exists: + +exists() +'''''''' + +Determine whether there is a variable stored for the given key. + +Signature: + +.. code-block:: php + + public function exists($finisherIdentifier, $key): bool; + + +.. _apireference-frontendrendering-programmatically-apimethods-finishervariableprovider-remove: + +remove() +'''''''' + +Remove a value from the finisher variable provider. + +Signature: + +.. code-block:: php + + public function remove(string $finisherIdentifier, string $key); + + +.. _apireference-frontendrendering-programmatically-apimethods-configurationservice: + +TYPO3\\CMS\\Form\\Domain\\Configuration\\ConfigurationService ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. _apireference-frontendrendering-programmatically-apimethods-configurationservice-getprototypeconfiguration: + +getPrototypeConfiguration() +''''''''''''''''''''''''''' + +Get the configuration for a given $prototypeName + +Signature: + +.. code-block:: php + + public function getPrototypeConfiguration(string $prototypeName): array; + + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformfactory: + +TYPO3\\CMS\\Form\\Domain\\Factory\\AbstractFormFactory +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. _apireference-frontendrendering-programmatically-apimethods-abstractformfactory-triggerformbuildingfinished: + +triggerFormBuildingFinished() +''''''''''''''''''''''''''''' + +Helper to be called by every ``FormFactory`` which extends from ``AbstractFormFactory`` after +everything has been built to call the "afterBuildingFinished" hook on all form elements. + +Signature: + +.. code-block:: php + + protected function triggerFormBuildingFinished(FormDefinition $form); + + +.. _apireference-frontendrendering-programmatically-apimethods-formfactoryinterface: + +TYPO3\\CMS\\Form\\Domain\\Factory\\FormFactoryInterface ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. _apireference-frontendrendering-programmatically-apimethods-formfactoryinterface-build: + +build() +''''''' + +Build a form definition, depending on some configuration. + +Signature: + +.. code-block:: php + + public function build(array $configuration, string $prototypeName = null): FormDefinition; + + +.. _apireference-frontendrendering-programmatically-apimethods-rendererinterface: + +TYPO3\\CMS\\Form\\Domain\\Renderer\\RendererInterface ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. _apireference-frontendrendering-programmatically-apimethods-rendererinterface-setcontrollercontext: + +setControllerContext() +'''''''''''''''''''''' + +Set the controller context which should be used + +.. code-block:: php + + public function setControllerContext(ControllerContext $controllerContext); + + +.. _apireference-frontendrendering-programmatically-apimethods-rendererinterface-render: + +render() +'''''''' + +Renders the FormDefinition. This method is expected to call the ``beforeRendering`` hook on each form element. + +.. code-block:: php + + public function render(): string; + + +.. _apireference-frontendrendering-programmatically-apimethods-rendererinterface-setformruntime: + +setFormRuntime() +'''''''''''''''' + +Set the current ``FormRuntime``. + +.. code-block:: php + + public function setFormRuntime(FormRuntime $formRuntime); + + +.. _apireference-frontendrendering-programmatically-apimethods-rendererinterface-getformruntime: + +getFormRuntime() +'''''''''''''''' + +Get the current ``FormRuntime``. + +.. code-block:: php + + public function getFormRuntime(): FormRuntime; + + + +.. _apireference-frontendrendering-runtimemanipulation: + +Runtime manipulation +-------------------- + +.. _apireference-frontendrendering-runtimemanipulation-hooks: + +Hooks +^^^^^ + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-initializeformelement: + +initializeFormElement ++++++++++++++++++++++ + +You can connect to the hook and initialize a form elements without defining a custom implementaion to access the element's ``initializeFormElement`` method. +You only need a class which connects to this hook. Then detect the form element you wish to initialize. +You can use this hook to prefill form element data for example from database tables. + +This hook is invoked by the methods ``TYPO3\CMS\Form\Domain\Model\FormElements\Page::createElement()`` and ``TYPO3\CMS\Form\Domain\Model\FormElements\Section::createElement()``. +That means the hook will **not** be triggered for ``Pages``. +At this point you don't have access to submitted form element values. + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-initializeformelement-connect: + +Connect to the hook +''''''''''''''''''' + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['initializeFormElement'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-initializeformelement-use: + +Use the hook +'''''''''''' + +.. code-block:: php + + /** + * @param \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable + * @return void + */ + public function initializeFormElement(\TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable) + { + if ($renderable->getUniqueIdentifier() === 'contactForm-text-1') { + $renderable->setDefaultValue('foo'); + } + } + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-beforeremovefromparentrenderable: + +beforeRemoveFromParentRenderable +++++++++++++++++++++++++++++++++ + +This hook is invoked by the methods ``TYPO3\CMS\Form\Domain\Model\FormDefinition::removePage()``, ``TYPO3\CMS\Form\Domain\Model\FormElements\Page::removeElement()`` +and ``TYPO3\CMS\Form\Domain\Model\FormElements\Section::removeElement()`` + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-beforeremovefromparentrenderable-connect: + +Connect to the hook +''''''''''''''''''' + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeRemoveFromParentRenderable'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-beforeremovefromparentrenderable-use: + +Use the hook +'''''''''''' + +.. code-block:: php + + /** + * @param \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable + * @return void + */ + public function beforeRemoveFromParentRenderable(\TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable) + { + } + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-afterbuildingfinished: + +afterBuildingFinished ++++++++++++++++++++++ + +This hook is called for each form element after the class ``TYPO3\CMS\Form\Domain\Factory\ArrayFormFactory`` +has built the entire form. This hook is triggered just before the +``FormRuntime`` object is generated. At this point, no run-time information +(e.g. assigned form values) is yet available. It can, for example, be used to +generate new form elements within complex forms. The ``ArrayFormFactory`` is +used by EXT:form via the ``RenderViewHelper`` to render forms using a ``form +definition`` YAML file. Each form factory implementation must deal with the +calling of this hook themselves. EXT:form itself uses this hook to initialize +the property-mapper configuration for ``FileUpload`` elements. + +.. _apireference-frontendrendering-runtimemanipulation-hooks-afterbuildingfinished-connect: + +Connect to the hook +''''''''''''''''''' + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterBuildingFinished'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-afterbuildingfinished-use: + +Use the hook +'''''''''''' + +.. code-block:: php + + /** + * @param \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable + * @return void + */ + public function afterBuildingFinished(\TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable) + { + } + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-afterinitializecurrentpage: + +afterInitializeCurrentPage +++++++++++++++++++++++++++ + +EXT:form automatically detects the page that should be shown and allow users +only to jump to the directly following (or previous) pages. This hook enables +you to implement a custom behavior, for example pages that are shown only when +other form elements have specific values. + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-afterinitializecurrentpage-connect: + +Connect to the hook +''''''''''''''''''' + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterInitializeCurrentPage'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-afterinitializecurrentpage-use: + +Use the hook +'''''''''''' + +.. code-block:: php + + /** + * @param \TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime + * @param \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $currentPage + * @param null|\TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $lastPage + * @param mixed $elementValue submitted value of the element *before post processing* + * @return \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface + */ + public function afterInitializeCurrentPage(\TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime, \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $currentPage, \TYPO3\CMS\Form\Domain\Model\Renderable\CompositeRenderableInterface $lastPage = null, array $requestArguments = []): CompositeRenderableInterface + { + return $currentPage; + } + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-aftersubmit: + +afterSubmit ++++++++++++ + +You can use it for example for dynamic validations which depends on other submitted form element values. +This hook is invoked by the ``FormRuntime`` for each form element **before** values are property mapped, validated and pushed within the FormRuntime's ``FormState``. +If the first page is submitted at the first time you cannot access the form element values from the first page by just calling ``$formRuntime['<someOtherFormElementIdentifier>']`` to access +the submitted form element values from the first page. In this case you can access the submitted raw data through ``$requestArguments``. +EXT:form itself uses this hook to dynamically add validation errors for ``AdvancedPassword`` form elements. + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-aftersubmit-connect: + +Connect to the hook +''''''''''''''''''' + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterSubmit'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-aftersubmit-use: + +Use the hook +'''''''''''' + +.. code-block:: php + + /** + * @param \TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime + * @param \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable + * @param mixed $elementValue submitted value of the element *before post processing* + * @param array $requestArguments submitted raw request values + * @return void + */ + public function afterSubmit(\TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime, \TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface $renderable, $elementValue, array $requestArguments = []) + { + return $elementValue; + } + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-beforerendering: + +beforeRendering ++++++++++++++++ + +This is a hook that is invoked by the rendering system before the corresponding element is rendered. +Use this to access previously submitted values and/or modify the ``FormRuntime`` before an element is outputted to the browser. +This hook is called after all validations and property mappings are done. + +.. _apireference-frontendrendering-runtimemanipulation-hooks-beforerendering-connect: + +Connect to the hook +''''''''''''''''''' + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeRendering'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-frontendrendering-runtimemanipulation-hooks-beforerendering-use: + +Use the hook +'''''''''''' + +.. code-block:: php + + /** + * @param \TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime + * @param \TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface $renderable + * @return void + */ + public function beforeRendering(\TYPO3\CMS\Form\Domain\Runtime\FormRuntime $formRuntime, \TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface $renderable) + { + } + + +.. _apireference-finisheroptions: + +Finisher Options +================ + +.. _apireference-finisheroptions-closurefinisher: + +Closure finisher +---------------- + +This finisher can only be used in programmatically-created forms. It makes it +possible to execute one's own finisher code without having to implement/ +declare this finisher. + +Usage through code: + +.. code-block:: php + + $closureFinisher = $this->objectManager->get(ClosureFinisher::class); + $closureFinisher->setOption('closure', function($finisherContext) { + $formRuntime = $finisherContext->getFormRuntime(); + // ... + }); + $formDefinition->addFinisher($closureFinisher); + + +.. _apireference-finisheroptions-closurefinisher-options: + +Options +^^^^^^^ + +.. _apireference-finisheroptions-closurefinisher-options-closure: + +closure ++++++++ + +:aspect:`Data type` + \Closure + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + null + + +.. _apireference-finisheroptions-confirmationfinisher: + +Confirmation finisher +--------------------- + +A simple finisher that outputs a given text. + +Usage within form definition + +.. code-block:: yaml + + identifier: example-form + label: 'example' + type: Form + + finishers: + - + identifier: Confirmation + options: + message: 'Thx for using TYPO3' + ... + + +Usage through code: + +.. code-block:: php + + $formDefinition->createFinisher('Confirmation', [ + 'message' => 'foo', + ]); + +or create manually (not preferred) + +.. code-block:: php + + $confirmationFinisher = $this->objectManager->get(ConfirmationFinisher::class); + $confirmationFinisher->setOptions([ + 'message' => 'foo', + ]); + $formDefinition->addFinisher($confirmationFinisher); + + +.. _apireference-finisheroptions-confirmationfinisher-options: + +Options +^^^^^^^ + +.. _apireference-finisheroptions-confirmationfinisher-options-message: + +message ++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + The form has been submitted. + + +.. _apireference-finisheroptions-deleteuploadsfinisher: + +DeleteUploads finisher +---------------------- + +This finisher remove the currently submited files. +Use this finisher e.g after the email finisher if you don't want to keep the files online. + + +Usage within form definition + +.. code-block:: yaml + + identifier: example-form + label: 'example' + type: Form + + finishers: + - + identifier: DeleteUploads + ... + + +Usage through code: + +.. code-block:: php + + $formDefinition->createFinisher('DeleteUploads'); + +or create manually (not preferred) + +.. code-block:: php + + $deleteUploadsFinisher = $this->objectManager->get(DeleteUploadsFinisher::class); + $formDefinition->addFinisher($deleteUploadsFinisher); + + +.. _apireference-finisheroptions-emailfinisher: + +Email finisher +-------------- + +This finisher sends an email to one recipient. +EXT:form uses 2 EmailFinisher declarations with the identifiers ``EmailToReceiver`` and ``EmailToSender``. + +Usage within form definition + +.. code-block:: yaml + + identifier: example-form + label: 'example' + type: Form + + finishers: + - + identifier: EmailToReceiver + options: + subject: 'Your message' + recipientAddress: your.company@example.com + recipientName: 'Your Company name' + senderAddress: 'form@example.com' + senderName: 'form submitter' + ... + + +Usage through code: + +.. code-block:: php + + $formDefinition->createFinisher('EmailToReceiver', [ + 'subject' => 'Your message', + 'recipientAddress' => 'your.company@example.com', + 'recipientName' => 'Your Company name', + 'senderAddress' => 'form@example.com', + 'senderName' => 'form submitter', + ]); + +or create manually (not preferred) + +.. code-block:: php + + $emailFinisher = $this->objectManager->get(EmailFinisher::class); + $emailFinisher->setOptions([ + 'subject' => 'Your message', + 'recipientAddress' => 'your.company@example.com', + 'recipientName' => 'Your Company name', + 'senderAddress' => 'form@example.com', + 'senderName' => 'form submitter', + ]); + $formDefinition->addFinisher($emailFinisher); + + +.. _apireference-finisheroptions-emailfinisher-options: + +Options +^^^^^^^ + +.. _apireference-finisheroptions-emailfinisher-options-subject: + +subject ++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + Subject of the email + + +.. _apireference-finisheroptions-emailfinisher-options-recipientaddress: + +recipientAddress +++++++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + Email address of the recipient (To) + + +.. _apireference-finisheroptions-emailfinisher-options-recipientname: + +recipientName ++++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Description` + Human-readable name of the recipient + + +.. _apireference-finisheroptions-emailfinisher-options-senderaddress: + +senderAddress ++++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + Email address of the sender/ visitor (From) + + +.. _apireference-finisheroptions-emailfinisher-options-sendername: + +senderName +++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Description` + Human-readable name of the sender + + +.. _apireference-finisheroptions-emailfinisher-options-replytoaddress: + +replyToAddress +++++++++++++++ + +:aspect:`Data type` + string/ array + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + Email address of to be used as reply-to email (use multiple addresses with an array) + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple reply-to addresses (use multiple addresses with an array) + + +.. _apireference-finisheroptions-emailfinisher-options-carboncopyaddress: + +carbonCopyAddress ++++++++++++++++++ + +:aspect:`Data type` + string/ array + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + Email address of the copy recipient (use multiple addresses with an array) + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple copy recipient addresses (use multiple addresses with an array) + + +.. _apireference-finisheroptions-emailfinisher-options-blindcarboncopyaddress: + +blindCarbonCopyAddress +++++++++++++++++++++++ + +:aspect:`Data type` + string/ array + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + Email address of the blind copy recipient (use multiple addresses with an array) + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple blind copy recipient addresses (use multiple addresses with an array) + + +.. _apireference-finisheroptions-emailfinisher-options-format: + +format +++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + html + +:aspect:`possible values` + html/ plaintext + +:aspect:`Description` + The format of the email. By default mails are sent as HTML. + + +.. _apireference-finisheroptions-emailfinisher-options-attachuploads: + +attachUploads ++++++++++++++ + +:aspect:`Data type` + bool + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + true + +:aspect:`Description` + If set, all uploaded items are attached to the email. + + +.. _apireference-finisheroptions-emailfinisher-options-translation-translationfile: + +translation.translationFile ++++++++++++++++++++++++++++ + +:aspect:`Data type` + string/ array + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + If set, this translation file(s) will be used for finisher option translations. + If not set, the translation file(s) from the 'Form' element will be used. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _apireference-finisheroptions-emailfinisher-options-translation-language: + +translation.language +++++++++++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + If not set, the finisher options are translated depending on the current frontend language (if translations exists). + This option allows you to force translations for a given sys_language isocode, e.g 'dk' or 'de'. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _apireference-finisheroptions-emailfinisher-options-templatepathandfilename: + +templatePathAndFilename ++++++++++++++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + 'EXT:form/Resources/Private/Frontend/Templates/Finishers/Email/{@format}.html' + +:aspect:`Description` + Template path and filename for the mail body. + The placeholder {\@format} will be replaced with the value from option ``format`` + + +.. _apireference-finisheroptions-emailfinisher-options-layoutrootpaths: + +layoutRootPaths ++++++++++++++++ + +:aspect:`Data type` + array + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + Fluid layout paths + + +.. _apireference-finisheroptions-emailfinisher-options-partialrootpaths: + +partialRootPaths +++++++++++++++++ + +:aspect:`Data type` + array + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + Fluid partial paths + + +.. _apireference-finisheroptions-emailfinisher-options-variables: + +variables ++++++++++ + +:aspect:`Data type` + array + +:aspect:`Mandatory` + No + +:aspect:`Default value (for 'EmailToReceiver' and 'EmailToSender' declarations)` + undefined + +:aspect:`Description` + associative array of variables which are available inside the Fluid template + + +.. _apireference-finisheroptions-flashmessagefinisher: + +FlashMessage finisher +--------------------- + +A simple finisher that adds a message to the FlashMessageContainer. + + +Usage within form definition + +.. code-block:: yaml + + identifier: example-form + label: 'example' + type: Form + + finishers: + - + identifier: FlashMessage + options: + messageBody: 'Thx for using TYPO3' + messageTitle: 'Merci' + severity: 0 + ... + + +Usage through code: + +.. code-block:: php + + $formDefinition->createFinisher('FlashMessage', [ + 'messageBody' => 'Thx for using TYPO3', + 'messageTitle' => 'Merci', + 'severity' => \TYPO3\CMS\Core\Messaging\AbstractMessage::OK, + ]); + +or create manually (not preferred) + +.. code-block:: php + + $flashMessageFinisher = $this->objectManager->get(FlashMessageFinisher::class); + $flashMessageFinisher->setOptions([ + 'messageBody' => 'Thx for using TYPO3', + 'messageTitle' => 'Merci', + 'severity' => \TYPO3\CMS\Core\Messaging\AbstractMessage::OK, + ]); + $formDefinition->addFinisher($flashMessageFinisher); + + +.. _apireference-finisheroptions-flashmessagefinisher-options: + +Options +^^^^^^^ + +.. _apireference-finisheroptions-flashmessagefinisher-options-messagebody: + +messageBody ++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + null + +:aspect:`Description` + The flash message body + + +.. _apireference-finisheroptions-flashmessagefinisher-options-messagetitle: + +messageTitle +++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Description` + The flash message title + + +.. _apireference-finisheroptions-flashmessagefinisher-options-messagearguments: + +messageArguments +++++++++++++++++ + +:aspect:`Data type` + array + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty array + +:aspect:`Description` + The flash message arguments, if needed + + +.. _apireference-finisheroptions-flashmessagefinisher-options-messagecode: + +messageCode ++++++++++++ + +:aspect:`Data type` + int + +:aspect:`Mandatory` + No + +:aspect:`Default value` + null + +:aspect:`Description` + The flash message code, if needed + + +.. _apireference-finisheroptions-flashmessagefinisher-options-severity: + +severity +++++++++ + +:aspect:`Data type` + int + +:aspect:`Mandatory` + No + +:aspect:`Default value` + \TYPO3\CMS\Core\Messaging\AbstractMessage::OK (0) + +:aspect:`Description` + The flash message severity code. + See \TYPO3\CMS\Core\Messaging\AbstractMessage constants for the codes. + + +.. _apireference-finisheroptions-redirectfinisher: + +Redirect finisher +----------------- + +A simple finisher that redirects to another page. + + +Usage within form definition + +.. code-block:: yaml + + identifier: example-form + label: 'example' + type: Form + + finishers: + - + identifier: Redirect + options: + pageUid: 1 + additionalParameters: 'param1=value1¶m2=value2' + ... + + +Usage through code: + +.. code-block:: php + + $formDefinition->createFinisher('Redirect', [ + 'pageUid' => 1, + 'additionalParameters' => 'param1=value1¶m2=value2', + ]); + +or create manually (not preferred) + +.. code-block:: php + + $redirectFinisher = $this->objectManager->get(RedirectFinisher::class); + $redirectFinisher->setOptions([ + 'pageUid' => 1, + 'additionalParameters' => 'param1=value1¶m2=value2', + ]); + $formDefinition->addFinisher($redirectFinisher); + + +.. _apireference-finisheroptions-redirectfinisher-options: + +Options +^^^^^^^ + +.. _apireference-finisheroptions-redirectfinisher-options-pageuid: + +pageUid ++++++++ + +:aspect:`Data type` + int + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + 1 + +:aspect:`Description` + Redirect to this page uid + + +.. _apireference-finisheroptions-redirectfinisher-options-additionalparameters: + +additionalParameters +++++++++++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Description` + Additional parameters which should be used on the target page + + +.. _apireference-finisheroptions-redirectfinisher-options-delay: + +delay ++++++ + +:aspect:`Data type` + int + +:aspect:`Mandatory` + No + +:aspect:`Default value` + 0 + +:aspect:`Description` + The redirect delay in seconds. + + +.. _apireference-finisheroptions-redirectfinisher-options-statuscode: + +statusCode +++++++++++ + +:aspect:`Data type` + int + +:aspect:`Mandatory` + No + +:aspect:`Default value` + 303 + +:aspect:`Description` + The HTTP status code for the redirect. Default is "303 See Other". + + +.. _apireference-finisheroptions-savetodatabasefinisher: + +SaveToDatabase finisher +----------------------- + +This finisher saves the data from a submitted form into a database table. + + +Usage within form definition + +.. code-block:: yaml + + identifier: example-form + label: 'example' + type: Form + + finishers: + - + identifier: SaveToDatabase + options: + table: 'fe_users' + mode: update + whereClause: + uid: 1 + databaseColumnMappings: + pid: + value: 1 + elements: + textfield-identifier-1: + mapOnDatabaseColumn: 'first_name' + textfield-identifier-2: + mapOnDatabaseColumn: 'last_name' + textfield-identifier-3: + mapOnDatabaseColumn: 'username' + advancedpassword-1: + mapOnDatabaseColumn: 'password' + skipIfValueIsEmpty: true + ... + + +Usage through code: + +.. code-block:: php + + $formDefinition->createFinisher('SaveToDatabase', [ + 'table' => 'fe_users', + 'mode' => 'update', + 'whereClause' => [ + 'uid' => 1, + ], + 'databaseColumnMappings' => [ + 'pid' => ['value' => 1], + ], + 'elements' => [ + 'textfield-identifier-1' => ['mapOnDatabaseColumn' => 'first_name'], + 'textfield-identifier-2' => ['mapOnDatabaseColumn' => 'last_name'], + 'textfield-identifier-3' => ['mapOnDatabaseColumn' => 'username'], + 'advancedpassword-1' => [ + 'mapOnDatabaseColumn' => 'password', + 'skipIfValueIsEmpty' => true, + ], + ], + ]); + +or create manually (not preferred) + +.. code-block:: php + + $saveToDatabaseFinisher = $this->objectManager->get(SaveToDatabaseFinisher::class); + $saveToDatabaseFinisher->setOptions([ + 'table' => 'fe_users', + 'mode' => 'update', + 'whereClause' => [ + 'uid' => 1, + ], + 'databaseColumnMappings' => [ + 'pid' => ['value' => 1], + ], + 'elements' => [ + 'textfield-identifier-1' => ['mapOnDatabaseColumn' => 'first_name'], + 'textfield-identifier-2' => ['mapOnDatabaseColumn' => 'last_name'], + 'textfield-identifier-3' => ['mapOnDatabaseColumn' => 'username'], + 'advancedpassword-1' => [ + 'mapOnDatabaseColumn' => 'password', + 'skipIfValueIsEmpty' => true, + ], + ], + ]); + $formDefinition->addFinisher($saveToDatabaseFinisher); + +You can write options as an array to perform multiple database operations. + +Usage within form definition + +.. code-block:: yaml + + identifier: example-form + label: 'example' + type: Form + + finishers: + - + identifier: SaveToDatabase + options: + 1: + table: 'my_table' + mode: insert + databaseColumnMappings: + some_column: + value: 'cool' + 2: + table: 'my_other_table' + mode: update + whereClause: + pid: 1 + databaseColumnMappings: + some_other_column: + value: '{SaveToDatabase.insertedUids.1}' + ... + + +Usage through code: + +.. code-block:: php + + $formDefinition->createFinisher('SaveToDatabase', [ + 1 => [ + 'table' => 'my_table', + 'mode' => 'insert', + 'databaseColumnMappings' => [ + 'some_column' => ['value' => 'cool'], + ], + ], + 2 => [ + 'table' => 'my_other_table', + 'mode' => 'update', + 'whereClause' => [ + 'pid' => 1, + ], + 'databaseColumnMappings' => [ + 'some_other_column' => ['value' => '{SaveToDatabase.insertedUids.1}'], + ], + ], + ]); + +or create manually (not preferred) + +.. code-block:: php + + $saveToDatabaseFinisher = $this->objectManager->get(SaveToDatabaseFinisher::class); + $saveToDatabaseFinisher->setOptions([ + 1 => [ + 'table' => 'my_table', + 'mode' => 'insert', + 'databaseColumnMappings' => [ + 'some_column' => ['value' => 'cool'], + ], + ], + 2 => [ + 'table' => 'my_other_table', + 'mode' => 'update', + 'whereClause' => [ + 'pid' => 1, + ], + 'databaseColumnMappings' => [ + 'some_other_column' => ['value' => '{SaveToDatabase.insertedUids.1}'], + ], + ], + ]); + $formDefinition->addFinisher($saveToDatabaseFinisher); + + +This perform 2 database operations. +One insert and one update. +You can access the inserted uids through '{SaveToDatabase.insertedUids.<theArrayKeyNumberWithinOptions>}' +If you perform a insert operation, the value of the inserted database row will be stored within the FinisherVariableProvider. +<theArrayKeyNumberWithinOptions> references to the numeric options.* key. + + +.. _apireference-finisheroptions-savetodatabasefinisher-options: + +Options +^^^^^^^ + +.. _apireference-finisheroptions-savetodatabasefinisher-options-table: + +table ++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + null + +:aspect:`Description` + Insert or update values into this table. + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-mode: + +mode +++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + No + +:aspect:`Default value` + 'insert' + +:aspect:`Possible values` + insert/ update + +:aspect:`Description` + ``insert`` will create a new database row with the values from the submitted form and/or some predefined values. @see options.elements and options.databaseFieldMappings + + ``update`` will update a given database row with the values from the submitted form and/or some predefined values. 'options.whereClause' is then required. + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-whereclause: + +whereClause ++++++++++++ + +:aspect:`Data type` + array + +:aspect:`Mandatory` + Yes, if mode = update + +:aspect:`Default value` + empty array + +:aspect:`Description` + This where clause will be used for a database update action + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-elements: + +elements +++++++++ + +:aspect:`Data type` + array + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + empty array + +:aspect:`Description` + Use ``options.elements`` to map form element values to existing database columns. + Each key within ``options.elements`` has to match with a form element identifier. + The value for each key within ``options.elements`` is an array with additional informations. + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-elements-<formelementidentifier>-mapondatabasecolumn: + +elements.<formElementIdentifier>.mapOnDatabaseColumn +++++++++++++++++++++++++++++++++++++++++++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Description` + The value from the submitted form element with the identifier ``<formElementIdentifier>`` will be written into this database column. + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-elements-<formelementidentifier>-skipifvalueisempty: + +elements.<formElementIdentifier>.skipIfValueIsEmpty ++++++++++++++++++++++++++++++++++++++++++++++++++++ + +:aspect:`Data type` + bool + +:aspect:`Mandatory` + No + +:aspect:`Default value` + false + +:aspect:`Description` + Set this to true if the database column should not be written if the value from the submitted form element with the identifier + ``<formElementIdentifier>`` is empty (think about password fields etc.) + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-elements-<formelementidentifier>-savefileidentifierinsteadofuid: + +elements.<formElementIdentifier>.saveFileIdentifierInsteadOfUid ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +:aspect:`Data type` + bool + +:aspect:`Mandatory` + No + +:aspect:`Default value` + false + +:aspect:`Description` + Set this to true if the database column should not be written if the value from the submitted form element with the identifier + ``<formElementIdentifier>`` is empty (think about password fields etc.) + + This setting only rules for form elements which creates a FAL object like ``FileUpload`` or ``ImageUpload``. + By default, the uid of the FAL object will be written into the database column. Set this to true if you want to store the + FAL identifier (1:/user_uploads/some_uploaded_pic.jpg) instead. + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-databasecolumnmappings: + +databaseColumnMappings +++++++++++++++++++++++ + +:aspect:`Data type` + array + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty array + +:aspect:`Description` + Use this to map database columns to static values. + Each key within ``options.databaseColumnMappings`` has to match with an existing database column. + The value for each key within ``options.databaseColumnMappings`` is an array with additional informations. + + This mapping is done *before* the ``options.element`` mapping. + This means if you map a database column to a value through ``options.databaseColumnMappings`` and map a submitted + form element value to the same database column through ``options.element``, the submitted form element value + will override the value you set within ``options.databaseColumnMappings``. + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-databasecolumnmappings.<databasecolumnname>.value: + +databaseColumnMappings.<databaseColumnName>.value ++++++++++++++++++++++++++++++++++++++++++++++++++ + +:aspect:`Data type` + string + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Description` + The value which will be written to the database column. + You can also use the :ref:`FormRuntime accessor feature<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` to access every getable property from the ``FormRuntime`` + In short: use something like ``{<formElementIdentifier>}`` to get the value from the submitted form element with the identifier ``<formElementIdentifier>``. + + If you use the FormRuntime accessor feature within ``options.databaseColumnMappings``, the functionality is nearly identical + to the ``options.elements`` configuration variant. + + +.. _apireference-finisheroptions-savetodatabasefinisher-options-databasecolumnmappings.<databasecolumnname>.skipifvalueisempty: + +databaseColumnMappings.<databaseColumnName>.skipIfValueIsEmpty +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +:aspect:`Data type` + bool + +:aspect:`Mandatory` + No + +:aspect:`Default value` + false + +:aspect:`Description` + Set this to true if the database column should not be written if the value from ``options.databaseColumnMappings.<databaseColumnName>.value`` is empty. + + + +.. _apireference-formeditor: + +Form editor +=========== + + +.. _apireference-formeditor-hooks: + +Hooks +----- + +EXT:form implements various hooks so that forms can be manipulated while being +created or saved. + + +.. _apireference-formeditor-hooks-beforeformcreate: + +beforeFormCreate +^^^^^^^^^^^^^^^^ + +The form manager calls the 'beforeFormCreate' hook. + + +.. _apireference-formeditor-hooks-beforeformcreate-connect: + +Connect to the hook ++++++++++++++++++++ + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormCreate'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-formeditor-hooks-beforeformcreate-use: + +Use the hook +++++++++++++ + +.. code-block:: php + + /** + * @param string $formPersistenceIdentifier + * @param array $formDefinition + * @return array + */ + public function beforeFormCreate(string $formPersistenceIdentifier, array $formDefinition): array + { + return $formDefinition; + } + + +.. _apireference-formeditor-hooks-beforeformduplicate: + +beforeFormDuplicate +^^^^^^^^^^^^^^^^^^^ + +The form manager call the 'beforeFormDuplicate' hook. + + +.. _apireference-formeditor-hooks-beforeformduplicate-connect: + +Connect to the hook ++++++++++++++++++++ + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormDuplicate'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-formeditor-hooks-beforeformduplicate-use: + +Use the hook +++++++++++++ + +.. code-block:: php + + /** + * @param string $formPersistenceIdentifier + * @param array $formDefinition + * @return array + */ + public function beforeFormDuplicate(string $formPersistenceIdentifier, array $formDefinition): array + { + return $formDefinition; + } + + +.. _apireference-formeditor-hooks-beforeformdelete: + +beforeFormDelete +^^^^^^^^^^^^^^^^ + +The form manager call the 'beforeFormDelete' hook. + + +.. _apireference-formeditor-hooks-beforeformdelete-connect: + +Connect to the hook ++++++++++++++++++++ + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormDelete'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-formeditor-hooks-beforeformdelete-use: + +Use the hook +++++++++++++ + +.. code-block:: php + + /** + * @param string $formPersistenceIdentifier + * @return void + */ + public function beforeFormDelete(string $formPersistenceIdentifier) + { + } + + +.. _apireference-formeditor-hooks-beforeformsave: + +beforeFormSave +^^^^^^^^^^^^^^ + +The form editor call the 'beforeFormSave' hook. + + +.. _apireference-formeditor-hooks-beforeformsave-connect: + +Connect to the hook ++++++++++++++++++++ + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeFormSave'][<useATimestampAsKeyPlease>] + = \VENDOR\YourNamespace\YourClass::class; + + +.. _apireference-formeditor-hooks-beforeformsave-use: + +Use the hook +++++++++++++ + +.. code-block:: php + + /** + * @param string $formPersistenceIdentifier + * @param array $formDefinition + * @return array + */ + public function beforeFormSave(string $formPersistenceIdentifier, array $formDefinition): array + { + return $formDefinition; + } + + + +.. _apireference-formeditor-stage: + +Stage +----- + + +.. _apireference-formeditor-stage-commonabstractformelementtemplates: + +Common abstract view form element templates +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The basic idea of the ``abstract view`` is to give a quick overview of the +configuration of form elements, without having to click them in order to view +the detailed configuration in the ``Inspector``. The ``form editor`` requires +for each form element an inline HTML template and the corresponding JavaScript +code. Information matching inline HTML templates to the appropriate form +elements must be configured within :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formeditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`. +At this point, the key identifying the form element follows a convention: +``FormElement-<formElementTypeIdentifier>``. The value for the key tells the +``form editor`` which inline HTML template should be loaded for the respective +form element. This template is then cloned via JavaScript, brought to life +using the form element configuration and shown in the ``Stage`` component. + +You can read about how particular form elements are mapped to inline HTML +templates and how the corresponding JavaScript code are executed :ref:`here <apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-render-template-perform>`. + +The form element inline HTML templates and the corresponding JavaScript code +are configured for reuse. In this way, most form elements you create should be +able to access the components delivered in EXT:form, without requiring separate +implementations (at least we hope so). For your own implementations, study +EXT:form stage templates, which is found under ``Resources/Private/Backend/Partials/FormEditor/Stage/*``. +The corresponding JavaScript code is found under ``Resources/Public/JavaScript/Backend/FormEditor/StageComponent.js``. +The method ``_renderTemplateDispatcher()`` shows, which methods will be used to +render the respective form elements. + +Essentially, two different inline HTML templates exists that can be rendered +with two different JavaScript methods, which are described below. The other +inline HTML templates are almost all versions of these two basic variants and +show extra/ other form-element information. The same applies to the +corresponding JavaScript codes. + + +.. _apireference-formeditor-stage-commonabstractformelementtemplates-simpletemplate: + +Stage/SimpleTemplate +++++++++++++++++++++ + +This template displays the ``label`` property of the form element. Depending on +the JavaScript rendering method used, a validator icon will be shown on the +right as soon as a validator is added to the form element. In this case, the +used validator labels are likewise displayed, if the form element is selected +and/ or the cursor hovers over the form element. This template should generally +be enough for all possible, self-defined form elements. + +The ``Stage/SimpleTemplate`` can then :ref:`be rendered <apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-render-template-perform>` +with the method ``getFormEditorApp().getViewModel().getStage().renderSimpleTemplateWithValidators()``. + + +.. _apireference-formeditor-stage-commonabstractformelementtemplates-selecttemplate: + +Stage/SelectTemplate +++++++++++++++++++++ + +This template behaves like the ``Stage/SimpleTemplate`` except that it also +shows the chosen options labels of the form elements. This is naturally only +possible for form elements that have ``properties.options.*`` values, e.g. +``MultiCheckbox``: + +.. code-block:: yaml + + type: MultiCheckbox + identifier: multicheckbox-1 + label: 'Multi checkbox' + properties: + options: + value1: label1 + value2: label2 + + +The template will now list 'label1' and 'label2'. + +You can copy this template variant for your own form element, if that form- +element template also lists array values, which, however, are not found under +``properties.options.*``. For this purpose, the 'Stage/FileUploadTemplate' is +an example. It is basically the 'Stage/SelectTemplate' template, with one +altered property. + +In the ``FileUpload`` form element, multiple property values are available +under ``properties.allowedMimeTypes.*`` as an array. + +.. code-block:: yaml + + type: FileUpload + identifier: fileupload-1 + label: 'File upload' + properties: + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/msexcel + - application/pdf + + +Stage/SelectTemplate + +.. code-block:: html + + <div data-identifier="multiValueContainer" data-template-property="properties.options"> + + +Stage/FileUploadTemplate + +.. code-block:: html + + <div data-identifier="multiValueContainer" data-template-property="properties.allowedMimeTypes"> + + +``data-template-property`` contains the path to the property, which is to be +read out of the form element and then shown in the template. + +The ``Stage/SelectTemplate`` can then :ref:`be rendered <apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-render-template-perform>` +with the method ``getFormEditorApp().getViewModel().getStage().renderSelectTemplates()``. + + + +.. _apireference-formeditor-basicjavascriptconcepts: + +Basic JavaScript Concepts +------------------------- + + +.. _apireference-formeditor-basicjavascriptconcepts-events: + +Events +^^^^^^ + +EXT:form implements the ``publish/subscribe pattern`` to put the event handling +into effect. To learn more about this pattern, you should read +https://addyosmani.com/resources/essentialjsdesignpatterns/book/. +Note that the order of the subscriber is not manipulable and that information +flow between the subscribers does not exist. All events must be asynchronously +designed. + + +Publish an event: + +.. code-block:: javascript + + getPublisherSubscriber().publish('eventname', [argumentToPublish1, argumentToPublish2, ...]); + + +Subscribe to an event: + +.. code-block:: javascript + + var subscriberToken = getPublisherSubscriber().subscribe('eventname', function(topic, args) { + // args[0] = argumentToPublish1 + // args[1] = argumentToPublish2 + // ... + }); + + +Unsubscribe an event subscriber: + +.. code-block:: javascript + + getPublisherSubscriber().unsubscribe(subscriberToken); + + +EXT:form itself publishes and subscribes to the following events: + +.. _apireference-formeditor-basicjavascriptconcepts-events-ajax-beforesend: + +ajax/beforeSend ++++++++++++++++ + +Each Ajax request is called before this event is sent. EXT:form uses this event +to display the spinner icon on the save button. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('ajax/beforeSend', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-ajax-complete: + +ajax/complete ++++++++++++++ + +Each Ajax request is called after the end of this event. EXT:form uses this +event to remove the spinner icon on the save button. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('ajax/complete', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-core-ajax-error: + +core/ajax/error ++++++++++++++++ + +This event is called if the Ajax request, which is used to save the form or to +render the current page of the form in the ``preview view``, fails. EXT:form +uses this event to show an error message as a flash message and to show the +received error text in the ``preview view``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = jqXHR + * args[1] = textStatus + * args[2] = errorThrown + * @return void + */ + getPublisherSubscriber().subscribe('core/ajax/error', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-core-ajax-renderformdefinitionpage-success: + +core/ajax/renderFormDefinitionPage/success +++++++++++++++++++++++++++++++++++++++++++ + +This event is called if the Ajax request that is used to render the current +page of the form in the ``preview view`` was successful. EXT:form uses this +event to display the rendered form in the ``preview view``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = html + * args[1] = pageIndex + * @return void + */ + getPublisherSubscriber().subscribe('core/ajax/renderFormDefinitionPage/success', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-core-ajax-saveformdefinition-success: + +core/ajax/saveFormDefinition/success +++++++++++++++++++++++++++++++++++++ + +This event is called if the Ajax request that is used to save the form was +successful. EXT:form uses this event to display a success message as a flash +message. The ``form editor`` is also informed that no unsaved content currently +exists. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = html + * @return void + */ + getPublisherSubscriber().subscribe('core/ajax/saveFormDefinition/success', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-core-applicationstate-add: + +core/applicationState/add ++++++++++++++++++++++++++ + +The addition/ deletion and movement of form elements und property collection +elements (validators/ finishers) is saved in an internal stack so that the +undo/ redo function can be implemented. This event is called whenever the +current state is added to the stack. EXT:form uses this event to reset the +enabled/ disabled state of the undo/ redo buttons. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = applicationState + * args[1] = stackPointer + * args[2] = stackSize + * @return void + */ + getPublisherSubscriber().subscribe('core/applicationState/add', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-core-currentlyselectedformelementchanged: + +core/currentlySelectedFormElementChanged +++++++++++++++++++++++++++++++++++++++++ + +The method ``getFormEditorApp().setCurrentlySelectedFormElement()`` tells the +``form editor`` which form element should currently be dealt with. This method +calls this event at the end. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElement + * @return void + */ + getPublisherSubscriber().subscribe('core/currentlySelectedFormElementChanged', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-core-formelement-somepropertychanged: + +core/formElement/somePropertyChanged +++++++++++++++++++++++++++++++++++++ + +Each :ref:`FormElement model<apireference-formeditor-basicjavascriptconcepts-formelementmodel>` +can write properties into the ``FormElement model`` through the methods ``get`` +and ``set``. Each property path can register an event name for the publisher +through the method ``on``. This event is then always called when a property +path is written via ``set``. Read :ref:`FormElement model<concepts-formeditor-basicjavascriptconcepts-formelementmodel>` +for more information. EXT:form automatically registers for all known property +paths of a form element the event ``core/formElement/somePropertyChanged``. +This means that every property written via ``set`` calls this event. Among +other things, EXT:form uses this event for, for example, updating the label of +a form element in other components (e.g. ``Tree`` component ) when this label +is changed. Furthermore, any validation errors from form element properties +are indicated by this event in the ``Tree`` component. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = propertyPath + * args[1] = value + * args[2] = oldValue + * args[3] = formElementIdentifierPath + * @return void + */ + getPublisherSubscriber().subscribe('core/formElement/somePropertyChanged', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-collectionelement-moved: + +view/collectionElement/moved +++++++++++++++++++++++++++++ + +The method ``getFormEditorApp().getViewModel().movePropertyCollectionElement()`` +calls this event at the end. EXT:form uses this event to re-render the +``Inspector`` component as soon as a property collection element (validator/ +finisher) is moved. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = movedCollectionElementIdentifier + * args[1] = previousCollectionElementIdentifier + * args[2] = nextCollectionElementIdentifier + * args[3] = collectionName + * @return void + */ + getPublisherSubscriber().subscribe('view/collectionElement/moved', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-collectionelement-new-added: + +view/collectionElement/new/added +++++++++++++++++++++++++++++++++ + +The method ``getFormEditorApp().getViewModel().createAndAddPropertyCollectionElement()`` +calls this event at the end. EXT:form uses this event to re-render the +``Inspector`` component as soon as a property collection element (validator/ +finisher) is created and added. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = collectionElementIdentifier + * args[1] = collectionName + * args[2] = formElement + * args[3] = collectionElementConfiguration + * args[4] = referenceCollectionElementIdentifier + * @return void + */ + getPublisherSubscriber().subscribe('view/collectionElement/new/added', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-collectionelement-removed: + +view/collectionElement/removed +++++++++++++++++++++++++++++++ + +The method ``getFormEditorApp().getViewModel().removePropertyCollectionElement()`` +calls this event at the end. EXT:form uses this event to re-render the +``Inspector`` component as soon as a property collection element (validator/ +finisher) is removed. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = collectionElementIdentifier + * args[1] = collectionName + * args[2] = formElement + * @return void + */ + getPublisherSubscriber().subscribe('view/collectionElement/removed', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-formelement-inserted: + +view/formElement/inserted ++++++++++++++++++++++++++ + +The method ``getFormEditorApp().getViewModel().createAndAddFormElement()`` and +the event :ref:`view/insertElements/perform/after<apireference-formeditor-basicjavascriptconcepts-events-view-insertelements-perform-after>` +call this event at the end. EXT:form uses this event to set the current +to-be-processed form element (``getFormEditorApp().setCurrentlySelectedFormElement()``) +and to re-render the ``Tree``, ``Stage`` and ``Inspector`` components. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = newFormElement + * @return void + */ + getPublisherSubscriber().subscribe('view/formElement/inserted', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-formelement-moved: + +view/formElement/moved +++++++++++++++++++++++ + +The method ``getFormEditorApp().getViewModel().moveFormElement()`` calls this +event at the end. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = movedFormElement + * @return void + */ + getPublisherSubscriber().subscribe('view/formElement/moved', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-formelement-removed: + +view/formElement/removed +++++++++++++++++++++++++ + +The method ``getFormEditorApp().getViewModel().removeFormElement()`` calls this +event at the end. EXT:form uses this event to set the current to-be-processed +form element (``getFormEditorApp().setCurrentlySelectedFormElement()``) and to +re-render the ``Tree``, ``Stage`` and ``Inspector`` components. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = parentFormElement + * @return void + */ + getPublisherSubscriber().subscribe('view/formElement/removed', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-header-button-close-clicked: + +view/header/button/close/clicked +++++++++++++++++++++++++++++++++ + +The onClick event of the "Close" button in the ``form editor's`` header section +calls this event. EXT:form uses this event to display a warning message in case +there are unsaved changes. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/header/button/close/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-header-button-newpage-clicked: + +view/header/button/newPage/clicked +++++++++++++++++++++++++++++++++++ + +The onClick event of the "new page" button in the ``form editor's`` header +section calls this event. EXT:form uses this event to display the "new page" +dialog box. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = targetEvent + * @return void + */ + getPublisherSubscriber().subscribe('view/header/button/newPage/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-header-button-save-clicked: + +view/header/button/save/clicked ++++++++++++++++++++++++++++++++ + +The onClick event of the "save" button in the ``form editor's`` header section +calls this event. EXT:form uses this event either to display a dialog box with +the element in question (if there are validation errors) or to save the ``form +definition`` (if there are no validation errors). + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/header/button/save/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-header-formsettings-clicked: + +view/header/formSettings/clicked +++++++++++++++++++++++++++++++++ + +The onClick event of the "settings" button in the ``form editor's`` header +section calls this event. EXT:form uses this event to select the root form +element. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/header/formSettings/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-insertelements-perform-after: + +view/insertElements/perform/after ++++++++++++++++++++++++++++++++++ + +This event is called from the "new element" dialog box upon selection of a form +element: + +- if "After" in the "Create new element" split button in the form-element toolbar for composite elements (e.g. fieldset) is clicked. +- if the "Create new element" button in the form-element toolbar for non-composite elements is clicked. + +EXT:form uses this event to create a new form element (``getFormEditorApp().getViewModel().createAndAddFormElement()``) +and then move (``getFormEditorApp().getViewModel().moveFormElement()``) it +below the currently selected element (sibling). At the end of this event, the +event :ref:`view/formElement/inserted<apireference-formeditor-basicjavascriptconcepts-events-view-formelement-inserted>` +is called. The event ``view/formElement/inserted`` in ``getFormEditorApp().getViewModel().createAndAddFormElement()`` +was previously deactivated. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElementType + * @return void + */ + getPublisherSubscriber().subscribe('view/insertElements/perform/after', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-insertelements-perform-bottom: + +view/insertElements/perform/bottom +++++++++++++++++++++++++++++++++++ + +This event is called from the "new element" dialog box upon selection of a form +element: + +- if, in the ``abstract view`` mode, the "Create new element" button at the end of the ``Stage`` component is clicked. + +EXT:form uses this event to create a new form element (``getFormEditorApp().getViewModel().createAndAddFormElement()``). +This element is always created as the last element of the currently selected +page. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElementType + * @return void + */ + getPublisherSubscriber().subscribe('view/insertElements/perform/bottom', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-insertelements-perform-inside: + +view/insertElements/perform/inside +++++++++++++++++++++++++++++++++++ + +This event is called from the "new element" dialog box upon selection of a form +element: + +- if "Inside" in the "Create new element" split button in the form-element toolbar for composite elements (e.g. fieldset) is clicked. + +EXT:form uses this event to create a new form element as a child element of the +currently selected element (``getFormEditorApp().getViewModel().createAndAddFormElement()``). + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElementType + * @return void + */ + getPublisherSubscriber().subscribe('view/insertElements/perform/inside', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-insertpages-perform: + +view/insertPages/perform +++++++++++++++++++++++++ + +This event is called from the "new element" dialog box upon selection of a page +element: + +- if the "Create new page" icon in the header section is clicked. +- if the "Create new page" button in the ``Tree`` component is clicked. + +EXT:form uses this event to create a new page after the currently selected page +(``getFormEditorApp().getViewModel().createAndAddFormElement()``). + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElementType + * @return void + */ + getPublisherSubscriber().subscribe('view/insertPages/perform', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-inspector-collectionelement-existing-selected: + +view/inspector/collectionElement/existing/selected +++++++++++++++++++++++++++++++++++++++++++++++++++ + +The ``inspector editors`` :ref:`ValidatorsEditor <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.finisherseditor>` +and :ref:`FinishersEditor <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` +are used to display the available validators/ finishers for a form element as a +select box. Furthermore, these ``inspector editors`` indicate that in the +``form definition``, validators/ finishers for the currently selected element +already exist. This occurs through the event ``view/inspector/collectionElement/existing/selected``. +EXT:form uses this event to render these validators/ finishers and their +tentatively configured ``inspector editors`` (``getFormEditorApp().getViewModel().renderInspectorCollectionElementEditors()``). + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = collectionElementIdentifier + * args[1] = collectionName + * @return void + */ + getPublisherSubscriber().subscribe('view/inspector/collectionElement/existing/selected', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-inspector-collectionelement-new-selected: + +view/inspector/collectionElement/new/selected ++++++++++++++++++++++++++++++++++++++++++++++ + +The ``inspector editors`` :ref:`ValidatorsEditor <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.finisherseditor>` +and :ref:`FinishersEditor <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` +are used to display the available validators/ finishers for a form element as a +select box. The onChange event of the select box then calls this event. In +addition, the ``inspector editor`` :ref:`RequiredValidatorEditor <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` +calls this event when a checkbox is chosen. EXT:form uses this event to add and +render the validator/ finisher of the ``form definition`` via ``getFormEditorApp().getViewModel().createAndAddPropertyCollectionElement()``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = collectionElementIdentifier + * args[1] = collectionName + * @return void + */ + getPublisherSubscriber().subscribe('view/inspector/collectionElement/new/selected', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-inspector-collectionelement-dnd-update: + +view/inspector/collectionElements/dnd/update +++++++++++++++++++++++++++++++++++++++++++++ + +EXT:form uses the jQuery plugin 'jquery.mjs.nestedSortable' for the drag-and- +drop functionality. The 'update' event from 'jquery.mjs.nestedSortable' calls +the ``view/inspector/collectionElements/dnd/update`` event if a property +collection element in the ``Inspector`` component is sorted. EXT:form uses this +event to move the validator/ finisher in the ``form definition`` via the method +``getFormEditorApp().getViewModel().movePropertyCollectionElement()``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = movedCollectionElementIdentifier + * args[1] = previousCollectionElementIdentifier + * args[2] = nextCollectionElementIdentifier + * args[3] = collectionName + * @return void + */ + getPublisherSubscriber().subscribe('view/inspector/collectionElements/dnd/update', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform: + +view/inspector/editor/insert/perform +++++++++++++++++++++++++++++++++++++ + +The methods ``getFormEditorApp().getViewModel().renderInspectorEditors()`` (to +render all ``inspector editors`` for a form element) and ``getFormEditorApp().getViewModel().renderInspectorCollectionElementEditors()`` +(to render the ``inspector editors`` for a validator/ finisher) call this event +at the end. Strictly speaking, the ``Inspector`` component in the method +``_renderEditorDispatcher()`` calls this event. +Each ``inspector editor`` has the property :ref:`templateName <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.templatename>`, +which gives the ``form editor`` two pieces of information. On the one hand the +``templateName`` must match with a key within the :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formeditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`. +The ``form editor`` can consequently load a corresponding inline HTML template +for the ``inspector editor``. On the other hand, the ``Inspector`` component +must be told which JavaScript code should be executed for the +``inspector editor``. For the ``inspector editors`` delivered with EXT:form, +this occurs within the method ``_renderEditorDispatcher()``. +An existing hard-coded list of known ``inspector editors`` determines, by means +of the property ``templateName``, which corresponding JavaScript method should +be executed for the ``inspector editor``. At the end, the event +``view/inspector/editor/insert/perform`` is called. If you wish to implement +your own ``inspector editor``, you can use this event to execute in +:ref:`your own JavaScript module <concepts-formeditor-basicjavascriptconcepts-registercustomjavascriptmodules>`. +the corresponding JavaScript code, with the help of the property +``templateName``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = editorConfiguration + * args[1] = editorHtml + * args[2] = collectionElementIdentifier + * args[3] = collectionName + * @return void + */ + getPublisherSubscriber().subscribe('view/inspector/editor/insert/perform', function(topic, args) { + }); + + +A simple example that registers a custom ``inspector editor`` called 'Inspector-MyCustomInspectorEditor' and adds it to text form elements: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formEditor: + dynamicRequireJsModules: + additionalViewModelModules: + - 'TYPO3/CMS/MySitePackage/Backend/FormEditor/ViewModel' + formEditorFluidConfiguration: + partialRootPaths: + 100: 'EXT:my_site_package/Resources/Private/Backend/Partials/FormEditor/' + formEditorPartials: + Inspector-MyCustomInspectorEditor: 'Inspector/MyCustomInspectorEditor' + formElementsDefinition: + Text: + formEditor: + editors: + 600: + templateName: 'Inspector-MyCustomInspectorEditor' + ... + + +.. code-block:: javascript + :emphasize-lines: 107-116 + + /** + * Module: TYPO3/CMS/MySitePackage/Backend/FormEditor/ViewModel + */ + define(['jquery', + 'TYPO3/CMS/Form/Backend/FormEditor/Helper' + ], function($, Helper) { + 'use strict'; + + return (function($, Helper) { + + /** + * @private + * + * @var object + */ + var _formEditorApp = null; + + /** + * @private + * + * @return object + */ + function getFormEditorApp() { + return _formEditorApp; + }; + + /** + * @private + * + * @return object + */ + function getPublisherSubscriber() { + return getFormEditorApp().getPublisherSubscriber(); + }; + + /** + * @private + * + * @return object + */ + function getUtility() { + return getFormEditorApp().getUtility(); + }; + + /** + * @private + * + * @param object + * @return object + */ + function getHelper() { + return Helper; + }; + + /** + * @private + * + * @return object + */ + function getCurrentlySelectedFormElement() { + return getFormEditorApp().getCurrentlySelectedFormElement(); + }; + + /** + * @private + * + * @param mixed test + * @param string message + * @param int messageCode + * @return void + */ + function assert(test, message, messageCode) { + return getFormEditorApp().assert(test, message, messageCode); + }; + + /** + * @private + * + * @return void + * @throws 1491643380 + */ + function _helperSetup() { + assert('function' === $.type(Helper.bootstrap), + 'The view model helper does not implement the method "bootstrap"', + 1491643380 + ); + Helper.bootstrap(getFormEditorApp()); + }; + + /** + * @private + * + * @return void + */ + function _subscribeEvents() { + /** + * @private + * + * @param string + * @param array + * args[0] = editorConfiguration + * args[1] = editorHtml + * args[2] = collectionElementIdentifier + * args[3] = collectionName + * @return void + */ + getPublisherSubscriber().subscribe('view/inspector/editor/insert/perform', function(topic, args) { + if (args[0]['templateName'] === 'Inspector-MyCustomInspectorEditor') { + renderMyCustomInspectorEditor( + args[0], + args[1], + args[2], + args[3] + ); + } + }); + }; + + /** + * @private + * + * @param object editorConfiguration + * @param object editorHtml + * @param string collectionElementIdentifier + * @param string collectionName + * @return void + */ + function renderMyCustomInspectorEditor(editorConfiguration, editorHtml, collectionElementIdentifier, collectionName) { + // do cool stuff + }); + + /** + * @public + * + * @param object formEditorApp + * @return void + */ + function bootstrap(formEditorApp) { + _formEditorApp = formEditorApp; + _helperSetup(); + _subscribeEvents(); + }; + + /** + * Publish the public methods. + * Implements the "Revealing Module Pattern". + */ + return { + bootstrap: bootstrap + }; + })($, Helper); + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-inspector-removecollectionelement-perform: + +view/inspector/removeCollectionElement/perform +++++++++++++++++++++++++++++++++++++++++++++++ + +The ``inspector editor`` :ref:`RequiredValidatorEditor <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` +calls this event, if the checkbox is deselected. EXT:form uses this event to +remove the configured required validator ('NotEmpty') from the ``form +definition`` through the method ``getFormEditorApp().getViewModel().removePropertyCollectionElement()``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = collectionElementIdentifier + * args[1] = collectionName + * args[2] = formElement + * @return void + */ + getPublisherSubscriber().subscribe('view/inspector/removeCollectionElement/perform', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-modal-close-perform: + +view/modal/close/perform +++++++++++++++++++++++++ + +If you try to close the ``form editor`` with unsaved content, a dialog box +appears, asking whether you really wish to close it. If you confirm it, this +event is called in the ``check box`` component. EXT:form uses this event to +close the ``form editor`` and return to the ``form manager``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/modal/close/perform', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-modal-removecollectionelement-perform: + +view/modal/removeCollectionElement/perform +++++++++++++++++++++++++++++++++++++++++++ + +If you try to remove a validator/ finisher by clicking the remove icon, a +dialog box appears, asking you to confirm this action. If confirmed, this event +is called in the ``check box`` component. EXT:form uses this event to remove +the validator/ finisher from the ``form definition`` through the method +``getFormEditorApp().getViewModel().removePropertyCollectionElement()``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = collectionElementIdentifier + * args[1] = collectionName + * args[2] = formElement + * @return void + */ + getPublisherSubscriber().subscribe('view/modal/removeCollectionElement/perform', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-modal-removeformelement-perform: + +view/modal/removeFormElement/perform +++++++++++++++++++++++++++++++++++++ + +If you try to remove a form element by clicking the remove icon, a dialog box +appears, asking you to confirm this action. If confirmed, this event is called +in the ``check box`` component. EXT:form uses this event to remove the form +element from the ``form definition`` via the method ``getFormEditorApp().getViewModel().removeFormElement()``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElement + * @return void + */ + getPublisherSubscriber().subscribe('view/modal/removeFormElement/perform', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-modal-validationerrors-element-clicked: + +view/modal/validationErrors/element/clicked ++++++++++++++++++++++++++++++++++++++++++++ + +If a form element contains a validation error and you try to save the form, a +dialog box appears, listing all form elements with validation errors. One such +form element can be clicked in this dialog box. This event is called by +clicking a form element in the dialog box. EXT:form uses this event to select +and show this form element. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElementIdentifierPath + * @return void + */ + getPublisherSubscriber().subscribe('view/modal/validationErrors/element/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-paginationnext-clicked: + +view/paginationNext/clicked ++++++++++++++++++++++++++++ + +This event is called if the 'pagination next' button in the ``Stage`` +component's header section is clicked. EXT:form uses this event to render the +next page of the form. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/paginationNext/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-paginationprevious-clicked: + +view/paginationPrevious/clicked ++++++++++++++++++++++++++++++++ + +This event is called, if the 'pagination previous' button in the ``Stage`` +component's header section is clicked. EXT:form uses this event to render the +previous page of the form. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/paginationPrevious/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-ready: + +view/ready +++++++++++ + +EXT:form makes it possible to load :ref:`your own JavaScript module <concepts-formeditor-basicjavascriptconcepts-registercustomjavascriptmodules>`. +If all modules are loaded, the view-model method ``_loadAdditionalModules`` +calls this event. EXT:form uses this event to remove the preloader icon and +finally initialize the ``form editor``. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/ready', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-redobutton-clicked: + +view/redoButton/clicked ++++++++++++++++++++++++ + +This event is called if the redo button in the ``form editor`` header is +clicked. The addition/ deletion and movement of form elements and property +collection elements (validators/ finishers) is saved in an internal stack in +order to reset the undo/ redo functionality. EXT:form uses this event to reset +this stack to the previous state. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/redoButton/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-button-newelement-clicked: + +view/stage/abstract/button/newElement/clicked ++++++++++++++++++++++++++++++++++++++++++++++ + +This event is called if the "Create new element" button at the end of the +``Stage`` component in the ``abstract view`` mode is clicked. EXT:form uses +this event to display the "new element" dialog box. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = targetEvent + * args[1] = configuration + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/button/newElement/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-dnd-change: + +view/stage/abstract/dnd/change +++++++++++++++++++++++++++++++ + +EXT:form uses the jQuery plugin 'jquery.mjs.nestedSortable' for the drag-and- +drop functionality. The 'change' event from 'jquery.mjs.nestedSortable' calls +the ``view/stage/abstract/dnd/change`` event in the ``Stage`` component in the +``abstract view`` mode if form elements are sorted. EXT:form uses this event to +set various CSS classes during the drag-and-drop process. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = placeholderDomElement + * args[1] = parentFormElementIdentifierPath + * args[2] = enclosingCompositeFormElement + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/dnd/change', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-dnd-start: + +view/stage/abstract/dnd/start ++++++++++++++++++++++++++++++ + +EXT:form uses the jQuery plugin 'jquery.mjs.nestedSortable' for the drag-and- +drop functionality. The 'start' event from 'jquery.mjs.nestedSortable' calls +the ``view/stage/abstract/dnd/start`` event in the ``Stage`` component in the +``abstract view`` mode if form elements are sorted. EXT:form uses this event to +set various CSS classes at the start of the drag-and-drop process. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = draggedFormElementDomElement + * args[1] = draggedFormPlaceholderDomElement + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/dnd/start', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-dnd-stop: + +view/stage/abstract/dnd/stop +++++++++++++++++++++++++++++ + +EXT:form uses the jQuery plugin 'jquery.mjs.nestedSortable' for the drag-and- +drop functionality. The 'stop' event from 'jquery.mjs.nestedSortable' calls the +``view/stage/abstract/dnd/stop`` event in the ``Stage`` component in the +``abstract view`` mode if form elements are sorted. EXT:form uses this event to +to re-render the ``Tree``, ``Stage`` and ``Inspector`` components at the end of +the drag-and-drop process and to select the moved form element. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = draggedFormElementIdentifierPath + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/dnd/stop', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-dnd-update: + +view/stage/abstract/dnd/update +++++++++++++++++++++++++++++++ + +EXT:form uses the jQuery plugin 'jquery.mjs.nestedSortable' for the drag-and- +drop functionality. The 'update' event from 'jquery.mjs.nestedSortable' calls +the ``view/stage/abstract/dnd/update`` event in the ``Stage`` component in the +``abstract view`` mode if form elements are sorted. EXT:form uses this event +to move the form element in the ``form definition`` accordingly at the end of +the drag-and-drop process. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = movedDomElement + * args[1] = movedFormElementIdentifierPath + * args[2] = previousFormElementIdentifierPath + * args[3] = nextFormElementIdentifierPath + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/dnd/update', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-elementtoolbar-button-newelement-clicked: + +view/stage/abstract/elementToolbar/button/newElement/clicked +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +This event is called if the "Create new element" button in the form-element +toolbar or "Inside" or "After" in the split button is clicked. EXT:form uses +this event to display the "New element" dialog box. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = targetEvent + * args[1] = configuration + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/elementToolbar/button/newElement/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-render-postprocess: + +view/stage/abstract/render/postProcess +++++++++++++++++++++++++++++++++++++++ + +This event is called after the ``abstract view`` of the ``Stage`` component has +been rendered. EXT:form uses this event to render the undo/ redo buttons. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/render/postProcess', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-render-preprocess: + +view/stage/abstract/render/preProcess ++++++++++++++++++++++++++++++++++++++ + +This event is called before the ``abstract view`` of the ``Stage`` component is +rendered. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/render/preProcess', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-abstract-render-template-perform: + +view/stage/abstract/render/template/perform ++++++++++++++++++++++++++++++++++++++++++++ + +The methods ``getFormEditorApp().getViewModel().renderAbstractStageArea()`` +call this event. Strictly speaking, the ``Stage`` component in the method +``_renderTemplateDispatcher()`` calls this event. The ``form editor`` requires +for each form element an inline HTML template the corresponding JavaScript +code. Information matching inline HTML templates to the appropriate form +elements must be configured within :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formeditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`. +At this point, the key identifying the form element follows a convention: +``FormElement-<formElementTypeIdentifier>``. The value for the key tells the +``form editor`` which inline HTML template should be loaded for the respective +form element. The ``_renderTemplateDispatcher()`` method then identifies, by +means of the form element's ``<formElementTypeIdentifier>``, the corresponding +JavaScript code to fill the inline HTML template with life. +``_renderTemplateDispatcher()`` contains a hard-coded list with the +``<formElementTypeIdentifier>`` that is brought in with the EXT:form, and it +renders the inline HTML templates accordingly. At the end, the +``view/stage/abstract/render/template/perform`` event is called. If you wish to +implement your own form element and show it in the ``form editor``, this event +can be used to execute in :ref:`your own JavaScript module <concepts-formeditor-basicjavascriptconcepts-registercustomjavascriptmodules>` +the corresponding JavaScript code, with the help of the ``<formElementTypeIdentifier>``. +This is generally enough to allow the ``Stage/SimpleTemplate`` and/ or +``Stage/SelectTemplate`` inline HTML template to be rendered for your own form +element and, in the JavaScript code, to access the ``getFormEditorApp().getViewModel().getStage().renderSimpleTemplateWithValidators()`` +and/ or ``getFormEditorApp().getViewModel().getStage().renderSelectTemplates()`` +method delivered with EXT:form. An overview over the functionality of the +formEditorPartials for the ``<formElementTypeIdentifier>`` and its JavaScript +code is found :ref:`here <apireference-formeditor-stage-commonabstractformelementtemplates>`. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElement + * args[1] = template + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/render/template/perform', function(topic, args) { + }); + + +A simple example reusing the EXT:form inline HTML template ``Stage/SelectTemplate`` and the EXT:form JavaScript code ``renderSelectTemplates()`` +for a custom form element with ``<formElementTypeIdentifier>`` = 'GenderSelect'. +In this example, 'GenderSelect' is basically a radio button form element with some predefined options. + + +.. code-block:: yaml + :emphasize-lines: 11 + + TYPO3: + CMS: + Form: + prototypes: + standard: + formEditor: + dynamicRequireJsModules: + additionalViewModelModules: + - 'TYPO3/CMS/MySitePackage/Backend/FormEditor/ViewModel' + formEditorPartials: + FormElement-GenderSelect: 'Stage/SelectTemplate' + formElementsDefinition: + GenderSelect: + __inheritances: + 10: 'TYPO3.CMS.Form.prototypes.standard.formElementsDefinition.RadioButton' + renderingOptions: + templateFileName: 'RadioButton' + properties: + options: + f: 'Female' + m: 'Male' + u: 'Unicorn' + a: 'Alien' + formEditor: + label: 'Gender Select' + group: select + groupSorting: 9000 + predefinedDefaults: + properties: + options: + f: 'Female' + m: 'Male' + u: 'Unicorn' + a: 'Alien' + editors: + 300: null + + +.. code-block:: javascript + :emphasize-lines: 105-109 + + /** + * Module: TYPO3/CMS/MySitePackage/Backend/FormEditor/ViewModel + */ + define(['jquery', + 'TYPO3/CMS/Form/Backend/FormEditor/Helper' + ], function($, Helper) { + 'use strict'; + + return (function($, Helper) { + + /** + * @private + * + * @var object + */ + var _formEditorApp = null; + + /** + * @private + * + * @return object + */ + function getFormEditorApp() { + return _formEditorApp; + }; + + /** + * @private + * + * @return object + */ + function getPublisherSubscriber() { + return getFormEditorApp().getPublisherSubscriber(); + }; + + /** + * @private + * + * @return object + */ + function getUtility() { + return getFormEditorApp().getUtility(); + }; + + /** + * @private + * + * @param object + * @return object + */ + function getHelper() { + return Helper; + }; + + /** + * @private + * + * @return object + */ + function getCurrentlySelectedFormElement() { + return getFormEditorApp().getCurrentlySelectedFormElement(); + }; + + /** + * @private + * + * @param mixed test + * @param string message + * @param int messageCode + * @return void + */ + function assert(test, message, messageCode) { + return getFormEditorApp().assert(test, message, messageCode); + }; + + /** + * @private + * + * @return void + * @throws 1491643380 + */ + function _helperSetup() { + assert('function' === $.type(Helper.bootstrap), + 'The view model helper does not implement the method "bootstrap"', + 1491643380 + ); + Helper.bootstrap(getFormEditorApp()); + }; + + /** + * @private + * + * @return void + */ + function _subscribeEvents() { + /** + * @private + * + * @param string + * @param array + * args[0] = formElement + * args[1] = template + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/abstract/render/template/perform', function(topic, args) { + if (args[0].get('type') === 'GenderSelect') { + getFormEditorApp().getViewModel().getStage().renderSelectTemplates(args[0], args[1]); + } + }); + }; + + /** + * @public + * + * @param object formEditorApp + * @return void + */ + function bootstrap(formEditorApp) { + _formEditorApp = formEditorApp; + _helperSetup(); + _subscribeEvents(); + }; + + /** + * Publish the public methods. + * Implements the "Revealing Module Pattern". + */ + return { + bootstrap: bootstrap + }; + })($, Helper); + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-element-clicked: + +view/stage/element/clicked +++++++++++++++++++++++++++ + +This event is called from the ``Stage`` component when a form element is +clicked. EXT:form uses this event to select this element and to display the +form-element toolbar. In addition, the ``Tree`` and ``Inspector`` components +are re-rendered. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElementIdentifierPath + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/element/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-panel-clicked: + +view/stage/panel/clicked +++++++++++++++++++++++++ + +This event is called if the header section of the ``Stage`` component is +clicked. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/panel/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-stage-preview-render-postprocess: + +view/stage/preview/render/postProcess ++++++++++++++++++++++++++++++++++++++ + +This event is called after the ``preview view`` of the ``Stage`` component has +been rendered. EXT:form uses this event to render the undo/ redo buttons. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/stage/preview/render/postProcess', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-structure-button-newpage-clicked: + +view/structure/button/newPage/clicked ++++++++++++++++++++++++++++++++++++++ + +This event is called from the onClick event of the ``Tree`` component's "Create +new page" button. EXT:form uses this event to display the "new page" dialog +box. + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = targetEvent + * @return void + */ + getPublisherSubscriber().subscribe('view/structure/button/newPage/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-structure-renew-postprocess: + +view/structure/renew/postProcess +++++++++++++++++++++++++++++++++ + +This event is called from the view-model after the ``Tree`` component has been +re-rendered. EXT:form uses this event to display potential validation errors +from form elements in the ``Tree`` component. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/structure/renew/postProcess', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-structure-root-selected: + +view/structure/root/selected +++++++++++++++++++++++++++++ + +This event is called if the root form element in the ``Tree`` component is +clicked. EXT:form uses this event to re-render the ``Stage``, ``Inspector`` and +``Tree`` components. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/structure/root/selected', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-tree-dnd-change: + +view/tree/dnd/change +++++++++++++++++++++ + +EXT:form uses the jQuery plugin 'jquery.mjs.nestedSortable' for the drag-and- +drop functionality. The 'change' event from 'jquery.mjs.nestedSortable' calls +the ``view/tree/dnd/change`` event in der ``Tree`` component if form elements +are sorted. EXT:form uses this event to set various CSS classes during the drag +-and-drop process. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = placeholderDomElement + * args[1] = parentFormElementIdentifierPath + * args[2] = enclosingCompositeFormElement + * @return void + */ + getPublisherSubscriber().subscribe('view/tree/dnd/change', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-tree-dnd-stop: + +view/tree/dnd/stop +++++++++++++++++++ + +EXT:form uses the jQuery plugin 'jquery.mjs.nestedSortable' for the drag-and- +drop functionality. The 'stop' event from 'jquery.mjs.nestedSortable' calls the +``view/tree/dnd/stop`` event in the ``Tree`` component if form elements are +sorted. EXT:form uses this event to re-render ``Tree``, ``Stage`` and +``Inspector`` components at the end of the drag-and-drop process and to select +the moved form element. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = draggedFormElementIdentifierPath + * @return void + */ + getPublisherSubscriber().subscribe('view/tree/dnd/stop', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-tree-dnd-update: + +view/tree/dnd/update +++++++++++++++++++++ + +EXT:form uses the jQuery plugin 'jquery.mjs.nestedSortable' for the drag-and- +drop functionality. The 'update' event from 'jquery.mjs.nestedSortable' calls +the ``view/tree/dnd/update`` event in der ``Tree`` component if form elements +are sorted. EXT:form uses this event to move the form element in the ``form +definition`` accordingly at the end of the drag-and-drop process. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = movedDomElement + * args[1] = movedFormElementIdentifierPath + * args[2] = previousFormElementIdentifierPath + * args[3] = nextFormElementIdentifierPath + * @return void + */ + getPublisherSubscriber().subscribe('view/tree/dnd/update', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-tree-node-clicked: + +view/tree/node/clicked +++++++++++++++++++++++ + +This event is called from the ``Tree`` component if a form element is clicked. +EXT:form uses this event to re-render the ``Stage`` and ``Inspector`` +components and select the form element. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = formElementIdentifierPath + * @return void + */ + getPublisherSubscriber().subscribe('view/tree/node/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-tree-render-listitemadded: + +view/tree/render/listItemAdded +++++++++++++++++++++++++++++++ + +This event is called by the ``Tree`` component for each form element as soon as +it is added to the tree. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * args[0] = listItem + * args[1] = formElement + * @return void + */ + getPublisherSubscriber().subscribe('view/tree/render/listItemAdded', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-undobutton-clicked: + +view/undoButton/clicked ++++++++++++++++++++++++ + +This event is called when the undo button is clicked in the ``form editor`` +header. The history of adding / deleting and moving form elements and property +collection elements (validators/ finishers) is stored in an internal stack to +implement the undo / redo functionality. EXT:form uses this event to set this +stack to the next state. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/undoButton/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-viewmodebutton-abstract-clicked: + +view/viewModeButton/abstract/clicked +++++++++++++++++++++++++++++++++++++ + +This event is called when the abstract view button is clicked in the header +area of the ``Stage`` component. EXT:form uses this event to render the +``abstract view`` in the ``Stage`` component. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/viewModeButton/abstract/clicked', function(topic, args) { + }); + + +.. _apireference-formeditor-basicjavascriptconcepts-events-view-viewmodebutton-preview-clicked: + +view/viewModeButton/preview/clicked ++++++++++++++++++++++++++++++++++++ + +This event is called when the preview button is clicked in the header area of +the ``Stage`` component. EXT:form uses this event to render the ``preview +view`` in the ``Stage`` component. + + +Subscribe to the event: + +.. code-block:: javascript + + /** + * @private + * + * @param string + * @param array + * @return void + */ + getPublisherSubscriber().subscribe('view/viewModeButton/preview/clicked', function(topic, args) { + }); + + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel: + +FormElement model +^^^^^^^^^^^^^^^^^ + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-property-parentrenderable: + +Property: __parentRenderable +++++++++++++++++++++++++++++ + +__parentRenderable includes the parent element as ``FormElement model``. + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-property-identifierpath: + +Property: __identifierPath +++++++++++++++++++++++++++ + +Internally, all form elements are identified by their 'identifier' property, +which must be unique for each form. The ``__identifierPath`` property contains +the path to the element (as seen from the first element), separated by a ``/``. +Using this path, you can access the element directly through an API method. + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-get: + +Method: get() ++++++++++++++ + +Each property of the ``FormElement model`` can be accessed by the ``get()`` +method through the property path (separated by ``.``). Prerequisite for this +is that all levels up to the target property are objects. + + +Example of a ``FormElement model``: + +.. code-block:: javascript + + { + "identifier": "name", + "defaultValue": "", + "label": "Name", + "type": "Text", + "properties": { + "fluidAdditionalAttributes": { + "placeholder": "Name" + } + }, + "__parentRenderable": "example-form/page-1 (filtered)", + "__identifierPath": "example-form/page-1/name", + "validators": [ + { + "identifier": "NotEmpty" + } + ] + } + + +Access to ``properties.fluidAdditionalAttributes.placeholder``: + +.. code-block:: javascript + + // value = 'Name' + var value = getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name').get('properties.fluidAdditionalAttributes.placeholder'); + + +Two exceptions are the two arrays of "finishers" / "validators" (``property +collections``) and the ``renderables``. + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-get-propertycollectionproperties: + +Accessing property collection properties +'''''''''''''''''''''''''''''''''''''''' + +Property collection are identified as form elements through the property +``identifier``. Because property collection properties are in an array and +their positions in the array are potentially unknown, the ``getFormEditorApp().buildPropertyPath()`` +method exists. This can be used to access a property of a property collection +item via its ``identifier``. + + +Example of a ``FormElement model``: + +.. code-block:: javascript + + { + "identifier": "name", + "defaultValue": "", + "label": "Name", + "type": "Text", + "properties": { + "fluidAdditionalAttributes": { + "placeholder": "Name" + } + }, + "__parentRenderable": "example-form/page-1 (filtered)", + "__identifierPath": "example-form/page-1/name", + "validators": [ + { + "identifier": "StringLength" + "options": { + "minimum": "1", + "maximum": "2" + } + } + ] + } + +Access to ``options.minimum`` of the validator ``StringLength``: + +.. code-block:: javascript + + var formElement = getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name'); + var propertyPath = getFormEditorApp().buildPropertyPath('options.minimum', 'StringLength', 'validators', formElement); + // value = 1 + var value = formElement.get(propertyPath); + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-get-renderables: + +Accessing renderables +''''''''''''''''''''' + +Like ``property collections``, ``renderables`` (the child elements) are also in +an array and their position in the array is potentially unknown. Direct access +to child elements through the ``get()`` method is impossible. +``formElement.get('renderables')`` supplies an array with the ``FormElement +models`` of the child elements. You must then loop over this array. Access to a +specific child element should be done using ``getFormEditorApp().getFormElementByIdentifierPath()``. + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-set: + +Method: set() ++++++++++++++ + +Any property of the ``FormElement model`` can be written using the ``set()`` +method by means of the property path (separated by ``.``). + +Example of a ``FormElement model``: + +.. code-block:: javascript + + { + "identifier": "name", + "defaultValue": "", + "label": "Name", + "type": "Text", + "properties": { + "fluidAdditionalAttributes": { + "placeholder": "Name" + } + }, + "__parentRenderable": "example-form/page-1 (filtered)", + "__identifierPath": "example-form/page-1/name", + "validators": [ + { + "identifier": "NotEmpty" + } + ] + } + + +Set the property ``properties.fluidAdditionalAttributes.placeholder``: + +.. code-block:: javascript + + getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name').set('properties.fluidAdditionalAttributes.placeholder', 'New Placeholder'); + + +Example of the ``FormElement model`` after the ``set()`` operation: + +.. code-block:: javascript + + { + "identifier": "name", + "defaultValue": "", + "label": "Name", + "type": "Text", + "properties": { + "fluidAdditionalAttributes": { + "placeholder": "New Placeholder" + } + }, + "__parentRenderable": "example-form/page-1 (filtered)", + "__identifierPath": "example-form/page-1/name", + "validators": [ + { + "identifier": "NotEmpty" + } + ] + } + + +Two exceptions are the two arrays of "finishers" / "validators" (``property +collections``) and the ``renderables``. + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-set-propertycollectionproperties: + +Setting property collection properties +'''''''''''''''''''''''''''''''''''''' + +In principle, the same applies here as for :ref:`get property collection properties<apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-get-propertycollectionproperties>`. + +Set the property ``options.minimum`` of the validator ``StringLength``: + +.. code-block:: javascript + + var formElement = getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name'); + var propertyPath = getFormEditorApp().buildPropertyPath('options.minimum', 'StringLength', 'validators', formElement); + formElement.set(propertyPath, '2'); + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-set-renderables: + +Setting renderables +''''''''''''''''''' + +To add child form elements to a ``FormElement model``, the appropriate API +methods should be used: + +- getFormEditorApp().createAndAddFormElement() +- getFormEditorApp().addFormElement() +- getFormEditorApp().moveFormElement() +- getFormEditorApp().removeFormElement() + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-unset: + +Method: unset() ++++++++++++++++ + +Any property of the ``FormElement model`` can be deleted using the method +``unset()`` by means of the property path (separated by ``.``). + +Example of a ``FormElement model``: + +.. code-block:: javascript + + { + "identifier": "name", + "defaultValue": "", + "label": "Name", + "type": "Text", + "properties": { + "fluidAdditionalAttributes": { + "placeholder": "Name" + } + }, + "__parentRenderable": "example-form/page-1 (filtered)", + "__identifierPath": "example-form/page-1/name", + "validators": [ + { + "identifier": "NotEmpty" + } + ] + } + + +Delete the property ``properties.fluidAdditionalAttributes.placeholder``: + +.. code-block:: javascript + + // value = 'Name' + var value = getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name').unset('properties.fluidAdditionalAttributes.placeholder'); + + +Example of the ``FormElement model`` after the ``unset()`` operation: + +.. code-block:: javascript + + { + "identifier": "name", + "defaultValue": "", + "label": "Name", + "type": "Text", + "properties": { + "fluidAdditionalAttributes": {} + }, + "__parentRenderable": "example-form/page-1 (filtered)", + "__identifierPath": "example-form/page-1/name", + "validators": [ + { + "identifier": "NotEmpty" + } + ] + } + + +Two exceptions are the two arrays of "finishers" / "validators" (``property +collections``) and the ``renderables``. + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-unset-propertycollectionproperties: + +Remove property collection properties +''''''''''''''''''''''''''''''''''''' + +In principle, the same applies here as for :ref:`get property collection properties<apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-get-propertycollectionproperties>`. + +Delete the property ``options.minimum`` of the validator ``StringLength``: + +.. code-block:: javascript + + var formElement = getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name'); + var propertyPath = getFormEditorApp().buildPropertyPath('options.minimum', 'StringLength', 'validators', formElement); + formElement.unset(propertyPath); + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-unset-renderables: + +Remove renderables +'''''''''''''''''' + +To delete a ``FormElement model``, the corresponding API method +``getFormEditorApp().removeFormElement()`` should be used. + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-on: + +Method: on() +++++++++++++ + +Any number of :ref:`Publisher/Subscriber<concepts-formeditor-basicjavascriptconcepts-events>` +events can be assigned to any property path of a ``FormElement model``. Each +``set()`` operation on this property path will then call these events. By +default, EXT:form registers the event :ref:`core/formElement/somePropertyChanged<apireference-formeditor-basicjavascriptconcepts-events-core-formelement-somepropertychanged>` +for each property path. + +Example: + +.. code-block:: javascript + + getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name').on('properties.fluidAdditionalAttributes.placeholder', 'my/custom/event'); + getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name').set('properties.fluidAdditionalAttributes.placeholder', 'New Placeholder'); + // now, the event 'my/custom/event' will be published + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-off: + +Method: off() ++++++++++++++ + +Any event registered via :ref:`on()<apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-on>` +can be removed with off(). + +Example: + +.. code-block:: javascript + + getFormEditorApp().getFormElementByIdentifierPath('example-form/page-1/name').off('properties.fluidAdditionalAttributes.placeholder', 'my/custom/event'); + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-getobjectdata: + +Method: getObjectData() ++++++++++++++++++++++++ + +All ``FormElement model`` properties are private and cannot be manipulated +directly from the outside. They can only be accessed via ``set()`` or +``get()``. This method is used internally to obtain all data of a ``FormElement +model`` in object form so that they can be used in, for example, Ajax requests. +``getObjectData()`` returns a dereferenced object of the ``FormElement model`` +with all internal data, thus allowing read access to all data set via +``set()``. + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-tostring: + +Method: toString() +++++++++++++++++++ + +A method that was implemented for debugging purposes. Returns the object data +supplied by ``getObjectData()`` in string form. + +.. code-block:: javascript + + console.log(formElement.toString()); + + +.. _apireference-formeditor-basicjavascriptconcepts-formelementmodel-method-clone: + +Method: clone() ++++++++++++++++ + +If necessary, a form element can be cloned. Returns a dereferenced clone of the +original ``FormElement model``. + + +.. code-block:: javascript + + var dolly = formElement.clone(); \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/getParentRenderable.rst b/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/getParentRenderable.rst new file mode 100644 index 000000000000..9ac1de197857 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/getParentRenderable.rst @@ -0,0 +1,10 @@ +getParentRenderable() +''''''''''''''''''''' + +Return the parent form element. + +Signature: + +.. code-block:: php + + public function getParentRenderable(); diff --git a/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/getTemplateName.rst b/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/getTemplateName.rst new file mode 100644 index 000000000000..398a605ca880 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/getTemplateName.rst @@ -0,0 +1,10 @@ +getTemplateName() +''''''''''''''''' + +Get the template name of the form element. + +Signature: + +.. code-block:: php + + public function getTemplateName(): string; diff --git a/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/setParentRenderable.rst b/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/setParentRenderable.rst new file mode 100644 index 000000000000..95abe871490e --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/RenderableInterface/setParentRenderable.rst @@ -0,0 +1,11 @@ +setParentRenderable() +''''''''''''''''''''' + +Set the new parent renderable. You should not call this directly. +It is automatically called by addRenderable. + +Signature: + +.. code-block:: php + + public function setParentRenderable(CompositeRenderableInterface $renderable); diff --git a/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getIdentifier.rst b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getIdentifier.rst new file mode 100644 index 000000000000..58da909a0811 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getIdentifier.rst @@ -0,0 +1,10 @@ +getIdentifier() +''''''''''''''' + +Returns the identifier of the form element. + +Signature: + +.. code-block:: php + + public function getIdentifier(): string; diff --git a/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getLabel.rst b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getLabel.rst new file mode 100644 index 000000000000..7d2bf74d689d --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getLabel.rst @@ -0,0 +1,10 @@ +getLabel() +'''''''''' + +Get the label of the form element. + +Signature: + +.. code-block:: php + + public function getLabel(): string; diff --git a/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getRendererClassName.rst b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getRendererClassName.rst new file mode 100644 index 000000000000..9c0a96931035 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getRendererClassName.rst @@ -0,0 +1,10 @@ +getRendererClassName() +'''''''''''''''''''''' + +Get the renderer class name. + +Signature: + +.. code-block:: php + + public function getRendererClassName(): string; diff --git a/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getRenderingOptions.rst b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getRenderingOptions.rst new file mode 100644 index 000000000000..0f1e7481754d --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getRenderingOptions.rst @@ -0,0 +1,10 @@ +getRenderingOptions() +''''''''''''''''''''' + +Get all rendering options of the form element. + +Signature: + +.. code-block:: php + + public function getRenderingOptions(): array; diff --git a/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getType.rst b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getType.rst new file mode 100644 index 000000000000..6e540affca45 --- /dev/null +++ b/typo3/sysext/form/Documentation/ApiReference/RootRenderableInterface/getType.rst @@ -0,0 +1,11 @@ +getType() +''''''''' + +Abstract "type" of the form element. +For example, the type is used during the rendering process to determine the template file. + +Signature: + +.. code-block:: php + + public function getType(): string; diff --git a/typo3/sysext/form/Documentation/Concepts/Configuration/Index.rst b/typo3/sysext/form/Documentation/Concepts/Configuration/Index.rst new file mode 100644 index 000000000000..130375e390d2 --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/Configuration/Index.rst @@ -0,0 +1,478 @@ +.. include:: ../../Includes.txt + + +.. _concepts-configuration: + +Configuration +============= + + +.. _concepts-configuration-whysomuchconfiguration: + +A lot of configuration. Why? +---------------------------- + +The requirements for building forms in a declarative and programmatic way +are complex. What we have learned so far is that the program code must be +kept as generic as possible to handle the dynamics of forms, but a generic +program code means a lot of configurative overhead. + +Initially, the configuration may overwhelm you, but it also has some great +advantages. Many aspects of EXT:form can be manipulated in a purely +configurative manner without involving a developer. + +Furthermore, we wanted to avoid the configuration being done at places +whose context actually suggests something different. This pedantry, +however, leads to the situation in which certain settings have to be +defined multiple times at multiple places. This may seem nonsensical, but +it avoids unpredictable behaviour. Within the form framework, nothing +happens magically. It is all about configuration. + + +.. _concepts-configuration-whyyaml: + +Why YAML? +--------- + +Former versions of EXT:form used a subset of TypoScript to describe the +definition of a specific form and the behaviour of the included form +elements. This led to a lot of confusion from integrators because the +implemented definition language looked like TypoScript but did not behave +like TypoScript. + +Since the definition of forms and form elements must be declarative, the +EXT:form team decided to use YAML. Just through the visual appearance of +YAML, it should be clear to everyone that neither magic nor TypoScript +stdWrap functionality are possible. + + +.. _concepts-configuration-yamlregistration: + +YAML registration +----------------- + +At the moment, configuration via YAML is not natively integrated into the +core of TYPO3. You have to make a short detour by using TypoScript in order +to register your YAML configuration. Furthermore, there is a "speciality" +regarding the integration of your YAML configuration for the backend +module. + +.. hint:: + We recommend using a `site package <https://de.slideshare.net/benjaminkott/typo3-the-anatomy-of-sitepackages>`_. + This will make your life easier if you want to customise EXT:form + heavily in order to suit the customer's needs. + + +.. _concepts-configuration-yamlregistration-frontend: + +YAML registration for the frontend +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +EXT:form registers two YAML configuration files which are required for the +frontend. + +.. code-block:: typoscript + + plugin.tx_form { + settings { + yamlConfigurations { + 10 = EXT:form/Configuration/Yaml/BaseSetup.yaml + 20 = EXT:form/Configuration/Yaml/FormEngineSetup.yaml + } + } + } + +Since the keys 10 and 20 are already taken, we recommend registering your +own configuration beginning with the key ``100``. + +.. code-block:: typoscript + + plugin.tx_form { + settings { + yamlConfigurations { + 100 = EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml + } + } + } + +.. _concepts-configuration-yamlregistration-backend: + +YAML registration for the backend +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +EXT:form registers three YAML configuration files which are required for +the backend. + +.. code-block:: typoscript + + module.tx_form { + settings { + yamlConfigurations { + 10 = EXT:form/Configuration/Yaml/BaseSetup.yaml + 20 = EXT:form/Configuration/Yaml/FormEditorSetup.yaml + 30 = EXT:form/Configuration/Yaml/FormEngineSetup.yaml + } + } + } + +Since the keys 10, 20, and 30 are already taken, we recommend registering +your own configuration beginning with the key ``100``. + +.. code-block:: typoscript + + module.tx_form { + settings { + yamlConfigurations { + 100 = EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml + } + } + } + +.. important:: + Consider the following methods to register TypoScript for the backend. + +The backend module of EXT:form is based on Extbase. Such backend modules +can, like frontend plugins, be configured via TypoScript. The frontend +plugins are configured below ``plugin.tx_[pluginkey]``. For the +configuration of the backend ``module.tx_[pluginkey]`` is used. + +There are different ways to include the TypoScript configuration for the +backend: + +- a) use a file called `ext_typoscript_setup.txt`, +- b) use the API function ``\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup()``, +- c) add the configuration to your existing TypoScript template. + +We recommend using methods a and b. Here is why. The file +:file:`ext_typoscript_setup.txt` can be stored within the root folder of +your own site package. It will be automatically loaded in both frontend and +backend of your TYPO3 installation. The API call (method b) does pretty +much the same. + +In both cases, the ``form editor`` will work as expected regardless the +chosen page from the page tree. If using the aforementioned method c, the +configuration would only be valid on a specific page tree, unless you add +your configuration to all trees within your installation. Nevertheless, +being on the root page (uid 0) would still be a problem. + +To sum it up: choose either method a or b, and you will be fine. + + +.. _concepts-configuration-yamlregistration-backend-ext_typoscript_setup.txt: + +YAML registration for the backend via ext_typoscript_setup.txt +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +.. code-block:: typoscript + + module.tx_form { + settings { + yamlConfigurations { + 100 = EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml + } + } + } + + +.. _concepts-configuration-yamlregistration-backend-addtyposcriptsetup: + +YAML registration for the backend via addTypoScriptSetup() +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Add the following PHP code to your :file:`ext_localconf.php` of your site +package: + +.. code-block:: php + + <?php + defined('TYPO3_MODE') or die(); + + call_user_func(function () { + if (TYPO3_MODE === 'BE') { + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup( + trim(' + module.tx_form { + settings { + yamlConfigurations { + 100 = EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml + } + } + } + ') + ); + } + }); + + +.. _concepts-configuration-configurationaspects: + +Configuration aspects +--------------------- + +In EXT:form, four aspects can be configured: + +- the behaviour of the frontend rendering, +- the behaviour of the ``form editor``, +- the behaviour of the ``form manager``, and +- the behaviour of the ``form plugin``. + +Those aspects are defined in separate files which are only loaded in the +frontend/ backend when needed. This approach has two advantages: + +- increased clarity, +- increased performance, e.g. the ``form editor`` configuration is not + needed in the frontend and therefore not loaded. + +It is up to you if you want to follow this guideline or if you want to put +the whole configuration into one large file. + +There are some configurational aspects which cannot explicitly be assigned +to either the frontend or the backend. Instead, the configuration is +valid for both areas. For example, within the backend, the whole frontend +configuration is required in order to allow the form preview to work +properly. In addition, as soon as the form is rendered via the ``form +plugin``, the ``FormEngine`` configuration is needed to interpret the +overridden finisher configuration correctly. + + +.. _concepts-configuration-inheritances: + +Inheritances +------------ + +The final YAML configuration is not based on one huge file. Instead, it is +a compilation of a sequential process: + +- First of all, all registered configuration files are parsed as YAML and + are overlain according to their order. ``TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule()`` + is involved in this first step. +- After that, the ``__inheritances`` operator is applied. It is a unique + operator introduced by the form framework. +- Finally, all configuration entries with a value of ``null`` are deleted. + +Additionally, the frontend configuration can be extended/ overridden by +TypoScript: + +.. code-block:: typoscript + + plugin.tx_form { + settings { + yamlSettingsOverrides { + ... + } + } + } + +.. note:: + Your TypoScript overrides are not interpreted by the ``form editor``, + i.e. those settings are ignored. + +.. note:: + The described process is quite handy for you. As soon as you are working + with your :ref:`own configuration files <concepts-configuration-yamlregistration>`, + you only have to define the differences compared to the previously + loaded configuration files. + +For example, if you want to override the fluid templates and you therefore +register an additional configuration file via + +.. code-block:: typoscript + + plugin.tx_form { + settings { + yamlConfigurations { + # register your own additional configuration + # choose a number higher than 30 (below is reserved) + 100 = EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml + } + } + } + +... you only have to define the following YAML setup in ``EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml``: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Form: + renderingOptions: + templateRootPaths: + 20: 'EXT:my_site_package/Resources/Private/Frontend/Templates/' + partialRootPaths: + 20: 'EXT:my_site_package/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 20: 'EXT:my_site_package/Resources/Private/Frontend/Layouts/' + +The values of your own configuration file will overrule the corresponding +values of the basic configuration file (:file:`EXT:form/Configuration/Yaml/BaseSetup.yaml`). + + +.. _concepts-configuration-inheritances-operator: + +__inheritances operator +^^^^^^^^^^^^^^^^^^^^^^^ + +The ``__inheritances`` operator is an extremely useful instrument. Using it +helps to significantly reduce the configuration effort. It behaves similar +to the ``<`` operator in TypoScript. That is, the definition of the source +object is copied to the target object. The configuration can be inherited +from several parent objects and can be overridden afterwards. Two simple +examples will show you the usage and behaviour of the ``__inheritances`` +operator. + +.. code-block:: yaml + + Form: + part01: + key01: value + key02: + key03: value + part02: + __inheritances: + 10: Form.part01 + +The configuration above results in: + +.. code-block:: yaml + + Form: + part01: + key01: value + key02: + key03: value + part02: + key01: value + key02: + key03: value + +As you can see, ``part02`` inherited all of ``part01``'s properties. + +.. code-block:: yaml + + Form: + part01: + key: value + part02: + __inheritances: + 10: Form.part01 + key: 'value override' + +The configuration above results in: + +.. code-block:: yaml + + Form: + part01: + key: value + part02: + key: 'value override' + +EXT:form heavily uses the ``__inheritances`` operator, in particular, for +the definition of form elements. The following example shows you how to use +the operator to define a new form element which behaves like the parent +element but also has its own properties. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + GenderSelect: + __inheritances: + 10: 'TYPO3.CMS.Form.prototypes.standard.formElementsDefinition.RadioButton' + renderingOptions: + templateFileName: 'RadioButton' + properties: + options: + f: 'Female' + m: 'Male' + u: 'Unicorn' + a: 'Alien' + +The YAML configuration defines a new form element called ``GenderSelect``. +This element inherits its definition from the ``RadioButton`` element but +additionally ships four predefined options. Without any problems, the new +element can be used and overridden within the ``form definition``. + +.. hint:: + Currently, there is no built-in solution within the TYPO3 core to + preview the resulting/ final EXT:form YAML configuration. If you want + to check the configuration, there is a fishy way which you should never + implement on a production system. + + Open the file ``typo3/sysext/form/Classes/Mvc/Configuration/ConfigurationManager.php::getConfigurationFromYamlFile()`` + and add the following code before the ``return`` statement. + + .. code-block:: php + + \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($yamlSettings, 'form configuration', 9999); + + Now open the ``Forms`` module in the backend or navigate to a page in + the frontend which contains a form. The DebuggerUtility will print the + final configuration directly to the screen. + +It will probably take some time to fully understand the awesomeness of +this operator. If you are eager to learn more about this great instrument, +check out the unit tests defined in ``EXT:form/Tests/Unit/Mvc/Configuration/InheritancesResolverServiceTest.php``. + + +.. _concepts-configuration-prototypes: + +Prototypes +---------- + +Most of the configurational aspects of the form framework are defined +in so-called ``prototypes``. By default, EXT:form defines a prototype +named ``standard``. The definition of form elements - including their +rendering in the frontend, ``form editor`` and ``form plugin`` - reside +within those prototypes. As soon as you create a new form, the specific +form definition references such a prototype. + +This allows you to do a lot of nifty stuff. Let your imagination run free. +For example: + +- based on the referenced prototype, the same form can load + + - ...varying templates + - ...varying ``form editor`` configurations + - ...varying ``form plugin`` finisher overrides + +- within the ``form manager``, depending on the selected prototype + + - ...varying ``form editor`` configurations can be loaded + - ...varying pre-configured form templates (boilerplates) can be chosen + +- different prototypes can define different/ extended form elements and + display them in the frontend/ ``form editor`` accordingly + +Check out the following use case to fully understand the concept behind +prototypes. Imagine that there are two defined prototypes: "noob" and +"poweruser". + +.. t3-field-list-table:: + :header-rows: 1 + + - :a: + :b: Prototype "noob" + :c: Prototype "poweruser" + + - :a: **Available form elements within the ``form editor``** + :b: Text, Textarea + :c: No changes. Default behaviour. + + - :a: **Available finisher within the ``form editor``** + :b: Only the email finisher is available. It offers a field for setting + the subject of the mail. All remaining fields are hidden and filled + with default values. + :c: No changes. Default behaviour. + + - :a: **Finisher overrides within the ``form plugin``** + :b: It is not possible to override the finisher configuration. + :c: No changes. Default behaviour. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/Finishers/Index.rst b/typo3/sysext/form/Documentation/Concepts/Finishers/Index.rst new file mode 100644 index 000000000000..d9c689e02bea --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/Finishers/Index.rst @@ -0,0 +1,80 @@ +.. include:: ../../Includes.txt + + +.. _concepts-finishers: + +Finishers +========= + +The form framework ships a bunch of finishers, which will be briefly +described here. For more details, please head to the API reference and check +out the section regarding :ref:`Finisher Options<apireference-finisheroptions>`. + + +.. _concepts-finishers-closurefinisher: + +Closure finisher +---------------- + +The 'Closure finisher' can only be used within forms that are created +programmatically. It allows you to execute your own finisher code without +implementing/ declaring a finisher. + + +.. _concepts-finishers-confirmationfinisher: + +Confirmation finisher +--------------------- + +The 'Confirmation finisher' is a simple finisher that outputs a given +text after the form has been submitted. + + +.. _concepts-finishers-deleteuploadsfinisher: + +DeleteUploads finisher +---------------------- + +The 'DeleteUploads finisher' removes submitted files. Use this finisher, +for example, after the email finisher if you do not want to keep the files +within your TYPO3 installation. + + +.. _concepts-finishers-emailfinisher: + +Email finisher +-------------- + +The 'Email finisher' sends an email to one recipient. EXT:form uses two +``EmailFinisher`` declarations with the identifiers ``EmailToReceiver`` and +``EmailToSender``. + + +.. _concepts-finishers-flashmessagefinisher: + +FlashMessage finisher +--------------------- + +The 'FlashMessage finisher' is a simple finisher that adds a message to the +FlashMessageContainer. + + +.. _concepts-finishers-redirectfinisher: + +Redirect finisher +----------------- + +The 'Redirect finisher' is a simple finisher that redirects to another page. +Additional link parameters can be added to the URL. + +.. note:: + This finisher stops the execution of all subsequent finishers in order to perform a redirect. + Therefore, this finisher should always be the last finisher to be executed. + +.. _concepts-finishers-savetodatabasefinisher: + +SaveToDatabase finisher +----------------------- + +The 'SaveToDatabase finisher' saves the data of a submitted form into a +database table. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/FormConfigurationFormDefinition/Index.rst b/typo3/sysext/form/Documentation/Concepts/FormConfigurationFormDefinition/Index.rst new file mode 100644 index 000000000000..6e44f0bd88cc --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/FormConfigurationFormDefinition/Index.rst @@ -0,0 +1,110 @@ +.. include:: ../../Includes.txt + + +.. _concepts-formdefinition-vs-formconfiguration: + +Form configuration vs. form definition +====================================== + +So far, we have only described the configuration of the form framework. +Once again, based on prototypes, the form configuration allows you to +define: + +- which form elements, finishers, and validators are available, +- how those objects are pre-configured, +- how those objects will be displayed within the frontend and backend. + +In contrast, the **form definition** describes the specific form, including + +- all form elements and their corresponding validators, +- the order of the form elements within the form, and +- the finishers which are fired as soon as the form has been submitted. +- Furthermore, it defines the concrete values of each property of the + mentioned aspects. + +In other words, the **prototype configuration** defines the existence of a +form element of type ``Text`` globally. The **form definition** declares +that such a form element of type ``Text`` is located on page 1 at position +1 of a specific form. In addition, it carries the information that this form +element comes with the HTML attribute "placeholder" with value "Your name +here". The form definition is written by the ``form editor``. + + +Example form definition +----------------------- + +.. code-block:: yaml + + identifier: ext-form-simple-contact-form-example + label: 'Simple Contact Form' + prototype: standard + type: Form + + finishers: + - + identifier: EmailToReceiver + options: + subject: 'Your message' + recipientAddress: 'your.company@example.com' + recipientName: 'Your company name' + senderAddress: '{email}' + senderName: '{name}' + + renderables: + - + identifier: page-1 + label: 'Contact Form' + type: Page + + renderables: + - + identifier: name + label: 'Name' + type: Text + properties: + fluidAdditionalAttributes: + placeholder: 'Name' + defaultValue: '' + validators: + - + identifier: NotEmpty + - + identifier: subject + label: 'Subject' + type: Text + properties: + fluidAdditionalAttributes: + placeholder: 'Subject' + defaultValue: '' + validators: + - + identifier: NotEmpty + - + identifier: email + label: 'Email' + type: Text + properties: + fluidAdditionalAttributes: + placeholder: 'Email address' + defaultValue: '' + validators: + - + identifier: NotEmpty + - + identifier: EmailAddress + - + identifier: message + label: 'Message' + type: Textarea + properties: + fluidAdditionalAttributes: + placeholder: '' + defaultValue: '' + validators: + - + identifier: NotEmpty + + - + identifier: summarypage + label: 'Summary page' + type: SummaryPage \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/FormEditor/Index.rst b/typo3/sysext/form/Documentation/Concepts/FormEditor/Index.rst new file mode 100644 index 000000000000..a7c07ae19471 --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/FormEditor/Index.rst @@ -0,0 +1,541 @@ +.. include:: ../../Includes.txt + + +.. _concepts-formeditor: + +Form editor +=========== + + +.. _concepts-formeditor-general: + +What does it do? +---------------- + +The ``form editor`` is a powerful graphical user interface which allows the +backend editor to create ``form definitions`` without writing a single line +of code. Those ``form definitions`` will be used by the frontend process to +render beautiful forms. + +The ``form editor`` is a modular interface which consists of several +components: + +- Stage: central visual component of the ``form editor`` which displays the + form elements in an abstract view and a frontend preview +- Tree: displays the structure of the form as a tree +- Inspector: context specific toolbar which handles the visual display of + form element options and allows editing those +- Core: includes core functionalities of the ``form editor`` +- ViewModel: defines and steers the visual display +- Mediator: delegates events of the components +- Modals: processes modals +- FormEditor: provides API functions +- Helper: helper functions which mainly allow the manipulation of DOM + elements + +Generally speaking, the ``Modals``, ``Inspector``, and ``Stage`` components +can be adapted through configuration. Especially the ``Inspector`` component +is modular and extremely flexible. As an integrator, you can reuse so-called +``inspector editors``. Those elements are input fields of different types +which allow the backend editor to alter all of the available form element +options. + +.. figure:: ../../Images/javascript_module_interaction.png + :alt: JavaScript module interaction + + JavaScript module interaction + +There is a general ``form editor`` configuration which can be found below +the following configuration path: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formEditor: + +Furthermore, you are able to configure the ``form editor`` regarding its +different aspects. The configuration can be found below the following +configuration paths: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + <formElementTypeIdentifier>: + formEditor: + finishersDefinition: + <finisherIdentifier> + formEditor: + validatorsDefinition: + <validatorIdentifier> + formEditor: + + +.. _concepts-formeditor-stage: + +Stage +----- + +The ``Stage`` is the central visual component of the form editor which +displays the form elements in two different modes: + +- abstract view: all form elements of a ``Page`` are presented in an + abstract way, +- frontend preview: renders the form like it will (nearly) be displayed in + the frontend ('nearly' since you have to make sure that your frontend CSS + is also loaded in the backend in order to get the exact preview). + +Per default, the frontend templates of EXT:form are based on Twitter +Bootstrap. Since the backend of TYPO3 CMS also depends on this CSS framework, +the corresponding CSS files are already loaded in the backend context. +Nevertheless, certain parts of the CSS were overridden and extended in order +to meet the specific needs of the TYPO3 backend. Thus, the frontend preview +in the backend could differ compared to the "real" frontend. + +If your frontend preview requires loading additional CSS or a CSS framework +then go ahead and configure a specific ``prototype`` accordingly. + +Beside the frontend templates, there are also templates for the abstract +view, i.e. you can customize the rendering of the abstract view for each +form element. If you have created your own form elements, in most cases you +will fall back to the already existing Fluid templates. But rembember, you +are always able to create you own Fluid templated and adapt the abstract view +till it suits your needs. + +For more information, read the following chapter: ':ref:`Common abstract view form element templates<apireference-formeditor-stage-commonabstractformelementtemplates>`'. + + +.. _concepts-formeditor-inspector: + +Inspector +--------- + +The ``Inspector`` component is situated on the right side of the ``form +editor``. It is a modular, extremely flexible, and context specific toolbar +which depends on the chosen form element. The ``Inspector`` allows editing +the form element's options with the help of so-called ``inspector editors``. +For the most parts, the interface can be easily customized by writing +YAML configuration. For each form element you can define which properties +are available and in which way they can be edited. + +In addition to the editable form element properties (like ``properties.placeholder``) +there are so-called ``property collections`` which can be written by the +``form editor`` as well. Their definition is stored on the hierarchical +level of a form element. Right now, there are the following ``property +collections``: + +- validators +- finishers + +``Property collections`` also make use of ``inspector editors`` in order to +configure them properly. Due to this, we can do a lot of cool stuff. Imagine +we have got a validator "Number range" with two validator options called +"Minimum" and "Maximum". Additionally, we have got two form elements "Age +spouse" and "Age infant". For both form elements the validator is available +but for the form element "Age child" the validator option "Minimum" is not +editable and the option "Maximum" is pre-filled with a certain value. + + +.. _concepts-formeditor-basicjavascriptconcepts: + +Basic JavaScript concepts +------------------------- + +The form framework was designed to be as extendible as possible. Sooner or +later, you want to customize the components of the ``form editor`` using +JavaScript. This is especially true if you want to create your own +``inspector editors``. In order to achieve this, you can implement your own +JavaScript modules. Those modules will include the required algorithms for +the ``inspector editors`` and the ``abstract view`` as well as your own +event listing. + + +.. _concepts-formeditor-basicjavascriptconcepts-registercustomjavascriptmodules: + +Register custom JavaScript modules +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following YAML configuration registers an additional JavaScript module. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formEditor: + dynamicRequireJsModules: + additionalViewModelModules: + - 'TYPO3/CMS/MySitePackage/Backend/FormEditor/ViewModel' + +According to the example shown above, the JavaScript files have to be stored +within the folder ``my_site_package/Resources/Public/JavaScript/Backend/FormEditor/ViewModel.js``. +In the TYPO3 backend JavaScript files are loaded via RequireJS which depends +on a certain convention. The name of the module starts with **TYPO3/CMS**/MySitePackage/Backend/FormEditor/ViewModel +followed by your extension key TYPO3/CMS/**MySitePackage**/Backend/FormEditor/ViewModel. +Thus, you have to ensure that the module is stored within a subfolder of ``my_site_package/Resources/Public/JavaScript/``. +The part TYPO3/CMS/MySitePackage/**Backend/FormEditor**/ViewModel tells you +that your files have to be stored in my_site_package/Resources/Public/JavaScript/**Backend/FormEditor**/. +The last section TYPO3/CMS/MySitePackage/Backend/FormEditor/**ViewModel** +states the name of the JavaScript file without the file extension (.js). + +Check out the following base template which shows you the recommended way +for setting up your own module. + +.. code-block:: javascript + + /** + * Module: TYPO3/CMS/MySitePackage/Backend/FormEditor/ViewModel + */ + define(['jquery', + 'TYPO3/CMS/Form/Backend/FormEditor/Helper' + ], function($, Helper) { + 'use strict'; + + return (function($, Helper) { + + /** + * @private + * + * @var object + */ + var _formEditorApp = null; + + /** + * @private + * + * @return object + */ + function getFormEditorApp() { + return _formEditorApp; + }; + + /** + * @private + * + * @return object + */ + function getPublisherSubscriber() { + return getFormEditorApp().getPublisherSubscriber(); + }; + + /** + * @private + * + * @return object + */ + function getUtility() { + return getFormEditorApp().getUtility(); + }; + + /** + * @private + * + * @param object + * @return object + */ + function getHelper() { + return Helper; + }; + + /** + * @private + * + * @return object + */ + function getCurrentlySelectedFormElement() { + return getFormEditorApp().getCurrentlySelectedFormElement(); + }; + + /** + * @private + * + * @param mixed test + * @param string message + * @param int messageCode + * @return void + */ + function assert(test, message, messageCode) { + return getFormEditorApp().assert(test, message, messageCode); + }; + + /** + * @private + * + * @return void + * @throws 1491643380 + */ + function _helperSetup() { + assert('function' === $.type(Helper.bootstrap), + 'The view model helper does not implement the method "bootstrap"', + 1491643380 + ); + Helper.bootstrap(getFormEditorApp()); + }; + + /** + * @private + * + * @return void + */ + function _subscribeEvents() { + getPublisherSubscriber().subscribe('some/eventName/you/want/to/handle', function(topic, args) { + myCustomCode(); + }); + }; + + /** + * @private + * + * @return void + */ + function myCustomCode() { + }; + + /** + * @public + * + * @param object formEditorApp + * @return void + */ + function bootstrap(formEditorApp) { + _formEditorApp = formEditorApp; + _helperSetup(); + _subscribeEvents(); + }; + + /** + * Publish the public methods. + * Implements the "Revealing Module Pattern". + */ + return { + bootstrap: bootstrap + }; + })($, Helper); + }); + + +.. _concepts-formeditor-basicjavascriptconcepts-events: + +Events +^^^^^^ + +The event handling of EXT:form is based on the ``Publish/Subscribe Pattern``. +To learn more about this terrific pattern, check out this website: https://addyosmani.com/resources/essentialjsdesignpatterns/book/. +Please not that the processing sequence of the subscribers cannot be +influenced. Furthermore, there is no information flow between the +subscribers. All events have to be arranged asynchronously. + +For more information, head to the API reference and read the section about +':ref:`Events<concepts-formeditor-basicjavascriptconcepts-events>`'. + + +.. _concepts-formeditor-basicjavascriptconcepts-formelementmodel: + +FormElement model +^^^^^^^^^^^^^^^^^ + +Within the JavaScript code, each form element is represented by a +`FormElement model``. This model can be seen as a copy of the ``form +definition'' enriched by some additional data. The following example shows +you a ``form definition`` and the debug output of the corresponding +``FormElement model``. + +.. code-block:: yaml + + identifier: javascript-form-element-model + label: 'JavaScript FormElement model' + type: Form + finishers: + - + identifier: EmailToReceiver + options: + subject: 'Your message: {subject}' + recipientAddress: your.company@example.com + recipientName: 'Your Company name' + senderAddress: '{email}' + senderName: '{name}' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: 'true' + translation: + language: '' + renderables: + - + identifier: page-1 + label: 'Contact Form' + type: Page + renderables: + - + identifier: name + label: Name + type: Text + properties: + fluidAdditionalAttributes: + placeholder: Name + defaultValue: '' + validators: + - + identifier: NotEmpty + + +.. code-block:: javascript + + { + "identifier": "javascript-form-element-model", + "label": "JavaScript FormElement model", + "type": "Form", + "prototypeName": "standard", + "__parentRenderable": null, + "__identifierPath": "example-form", + "finishers": [ + { + "identifier": "EmailToReceiver", + "options": { + "subject": "Your message: {subject}", + "recipientAddress": "your.company@example.com", + "recipientName": "Your Company name", + "senderAddress": "{email}", + "senderName": "{name}", + "replyToAddress": "", + "carbonCopyAddress": "", + "blindCarbonCopyAddress": "", + "format": "html", + "attachUploads": true, + "translation": { + "language": "" + } + } + } + ], + "renderables": [ + { + "identifier": "page-1", + "label": "Contact Form", + "type": "Page", + "__parentRenderable": "example-form (filtered)", + "__identifierPath": "example-form/page-1", + "renderables": [ + { + "identifier": "name", + "defaultValue": "", + "label": "Name", + "type": "Text", + "properties": { + "fluidAdditionalAttributes": { + "placeholder": "Name" + } + }, + "__parentRenderable": "example-form/page-1 (filtered)", + "__identifierPath": "example-form/page-1/name", + "validators": [ + { + "identifier": "NotEmpty" + } + ] + } + ] + } + ] + } + +For each form element which has child elements, you will find a property +called ``renderables``. Those ``renderables`` are arrays whose elements +consists of ``FormElement models`` of the particular child elements. + +As previously mentioned, the ``FormElement model`` is a conglomerate of the +data of the ``form definition`` and some additional information: + +- __parentRenderable +- __identifierPath + +The following methods can be utilized in order to access the data of a +``FormElement model``: + +- get() +- set() +- unset() +- on() +- off() +- getObjectData() +- toString() +- clone() + +For more information, head to the API reference and read the section about +the ':ref:`FormElement model<apireference-formeditor-basicjavascriptconcepts-formelementmodel>`'. + + +.. _concepts-formeditor-translation-formeditor: + +Translation of form editor +-------------------------- + +All option values which reside below the following configuration keys can be +translated: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formEditor: + formElementsDefinition: + <formElementTypeIdentifier>: + formEditor: + finishersDefinition: + <finisherIdentifier> + formEditor: + validatorsDefinition: + <validatorIdentifier> + formEditor: + +The translation files of the ``form editor`` are loaded as follows: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formEditor: + translationFile: + # translation files for the form editor + 10: 'EXT:form/Resources/Private/Language/Database.xlf' + 20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf' + +The process searches for each option value within all of the defined +translation files. If a translation is found, the translated option value +will be used in preference. + +Imagine, the following is defined for an option value: + +.. code-block:: yaml + + ... + label: 'formEditor.elements.Form.editor.finishers.label' + ... + +First of all, the process searches for the translation key ``formEditor.elements.Form.editor.finishers.label`` +within the file ``20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf'`` +and after it inside the file ``10: 'EXT:form/Resources/Private/Language/Database.xlf'``. +If nothing is found, the option value will be displayed unmodified. + +Due to compatibility issues, the setting ``translationFile`` is not defined +as an array in the default configuration. To load your own translation files, +you should define an array containing 'EXT:form/Resources/Private/Language/Database.xlf' +as first entry (key ``10``) followed by your own file (key ``20``) as +displayed in the example above. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/FormFileStorages/Index.rst b/typo3/sysext/form/Documentation/Concepts/FormFileStorages/Index.rst new file mode 100644 index 000000000000..427d813d3cd6 --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/FormFileStorages/Index.rst @@ -0,0 +1,135 @@ +.. include:: ../../Includes.txt + + +.. _concepts-form-file-storages: + +Form/ File storages +=================== + +EXT:form stores the form definitions within the file system and thus needs +write access to this storage. By default, the filemount ``user_uploads`` is +used. It is possible to configure a different and/ or an additional +filemount, which is then utilized for storing and reading forms. + +The backend user will only see form definitions that are stored in +filemounts where the user has at least read access. The ``form editor`` and +the ``form plugin`` respect those access rights. In this way, you are able +to implement ACLs. If you have configure more than one filemount and the +backend user is able to access those, the ``form manager`` will allow the +user to choose the preferred storage in which the form will be saved. + +Even cooler, form definitions can be stored in and shipped with your custom +extensions. If configured accordingly, the backend user will be able to +embed those forms. Furthermore, you can configure that these form +definitions: + +- can be edited within the ``form editor``, +- can be deleted with the help of the ``form manager``. + +By default, the aforementioned options are turned off. We decided to do so +because having dynamic content within an extension - which is possibly +version-controlled - is usually not a good idea. Furthermore, there is no +ACL system available. + +**File uploads** will be saved within filemounts as well. They are handled +as FAL objects. The available filemounts for such uploads can be configured. +When adding/ editing a file upload element, the backend user can select the +desired upload storage. + +.. note:: + In principle, files in filemounts are publicly accessible. If the + uploaded files could contain sensitive data, you should suppress any + HTTP access to the filemount. This may, for example, be achieved by + creating a .htaccess file, assuming you are using an Apache web server. + The directive of the .htaccess file is fairly easy: + + .. code-block:: html + + Order deny,allow + Deny from all + +The following code block shows you how to configure additional filemounts +for form definitions. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + persistenceManager: + allowedFileMounts: + # default filemount, no need to redeclare it again + # just to show you the structure + # 10: 1:/user_upload/ + # additional filemounts + 100: 1:/custom/forms/ + 110: 2:/cloudstorage/forms/ + +The following code block shows you how to allow an extension path as an +additional filemount for form definitions. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + persistenceManager: + allowedExtensionPaths: + 10: EXT:my_site_package/Resources/Private/Forms/ + +Add the following config if you want to allow backend users to **edit** +forms stored within your own extension. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + persistenceManager: + allowSaveToExtensionPaths: true + + +Add the following config if you want to allow backend users to **delete** +forms stored within your own extension. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + persistenceManager: + allowDeleteFromExtensionPaths: true + +The following code blocks show you the default setup for filemounts that +are used for file (and image) uploads. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + FileUpload: + formEditor: + predefinedDefaults: + properties: + saveToFileMount: '1:/user_upload/' + editors: + 400: + selectOptions: + 10: + value: '1:/user_upload/' + label: '1:/user_upload/' + properties: + saveToFileMount: '1:/user_upload/' + ImageUpload + properties: + saveToFileMount: '1:/user_upload/' + editors: + 400: + selectOptions: + 10: + value: '1:/user_upload/' + label: '1:/user_upload/' \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/FormManager/Index.rst b/typo3/sysext/form/Documentation/Concepts/FormManager/Index.rst new file mode 100644 index 000000000000..04033a62b25a --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/FormManager/Index.rst @@ -0,0 +1,145 @@ +.. include:: ../../Includes.txt + + +.. _concepts-formmanager: + +Form manager +============ + + +.. _concepts-formmanager-general: + +What does it do? +---------------- + +The ``form manager`` can be accessed by opening the backend module 'Forms'. +It allows the editor to administer all of the existing forms stored on the +accessible filemounts. The central element of the ``form manager`` is a +table view which... + +- lists all forms +- allows users to create, edit, duplicate, and delete forms +- names the storage folder +- gives a broad overview on which pages the listed forms are used in. + +The creation and duplication of forms is supported by a so-called ``form +wizard``. The wizard guides the editor through the process and offers a +variety of settings depending on the form configuration. Those settings +include choosing filemounts, prototypes, and start templates. + +.. figure:: ../../Images/form_manager.png + :alt: The form manager + + TYPO3 Backend with opened module 'Forms' displaying the form manager. + + +.. _concepts-formmanager-starttemplate: + +Start templates +--------------- + +This is a very nifty feature. When creating a new form, the ``form manager`` +allows the backend editor to select a so-called ``Start template``. Such a +template is a predefined ``form definition`` without the property +``prototypeName`` which is normally used as a foundation of a new form. + +As an integrator, you can specify as many ``Start templates`` as you desire +for a given ``prototype``. After you have defined such a template, follow +these easy steps to use your defined ``Start templates`` as a foundation: + +- open the ``Forms`` module +- create a new form by clicking on the appropriate button +- enter the 'Form name' and click the checkbox 'Advanced settings' +- during the next steps you can select a ``Start template`` + +For each ``prototype``, you have to define a ``Start template`` in order to +enable the editor to choose one. Additionally, the same ``Start template`` +can be used for several ``prototypes``. To do so, make sure the included +form elements of the template are defined in the corresponding ``prototype``. + +For example, imagine your integrator has :ref:`configured<typo3.cms.form.formmanager.selectablePrototypesConfiguration>` +a prototype called 'routing' which contains a custom form element with the +``<formElementTypeIdentifier>`` 'locationPicker'. The element is only +defined for this prototype. The integrator has created a ``Start template`` +which carries the 'locationPicker' form element. A backend editor could now +select and use this ``Start template``, including the custom form element, +as long as the ``prototype`` is set to 'routing'. If the integrator also +adds this custom form element to another ``prototype``, the process would +crash. The custom form element is only known by the ``prototype`` 'routing'. + +The following code block shows the minimal configuration of a ``Start +template``. You need at least the root form element ('Form') and a 'Page'. + +.. code-block:: yaml + + type: 'Form' + identifier: 'blankForm' + label: '[Blank Form]' + renderables: + - + type: 'Page' + identifier: 'page-1' + label: 'Page' + +As mentioned previously, the form wizard within the ``form manager`` offers +a list of all existing, :ref:`pre-configured<typo3.cms.form.formmanager.selectableprototypesconfiguration.*.newformtemplates>` +``Start templates``. As soon as the backend editor creates a form with the +help of such a template, a new ``form definition`` is generated based on the +one of the selected ``Start template``. The ``form definition`` will be +enriched by the property ``propertyName`` defining the chosen ``prototype``. +The ``identifier`` of the root form element ('Form') is automatically set +based on the entered "Form name". Additionally, this name is used for the +property `` label`` of the 'Form' element. Finally, the ``form editor`` is +loaded and displays the newly created form. + + +.. _concepts-formmanager-translation-starttemplate: + +Translation of the form manager +------------------------------- + +All option values which reside below the following configuration keys can be +translated: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + formManager: + +The translation files of the ``form manager`` are loaded as follows: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + formManager: + translationFile: + # translation files for the form manager + 10: 'EXT:form/Resources/Private/Language/Database.xlf' + 20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf' + +The process searches for each option value within all of the defined +translation files. If a translation is found, the translated option value +will be used in preference. + +Imagine, the following is defined for an option value: + +.. code-block:: yaml + + ... + label: 'formManager.selectablePrototypesConfiguration.standard.label' + ... + +First of all, the process searches for the translation key ``formManager.selectablePrototypesConfiguration.standard.label`` +within the file ``20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf'`` +and after it inside the file ``10: 'EXT:form/Resources/Private/Language/Database.xlf'``. +If nothing is found, the option value will be displayed unmodified. + +Due to compatibility issues, the setting ``translationFile`` is not defined +as an array in the default configuration. To load your own translation files, +you should define an array containing 'EXT:form/Resources/Private/Language/Database.xlf' +as first entry (key ``10``) followed by your own file (key ``20``) as +displayed in the example above. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/FormPlugin/Index.rst b/typo3/sysext/form/Documentation/Concepts/FormPlugin/Index.rst new file mode 100644 index 000000000000..050d2f086c8a --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/FormPlugin/Index.rst @@ -0,0 +1,87 @@ +.. include:: ../../Includes.txt + + +.. _concepts-formplugin: + +Form plugin +=========== + + +.. _concepts-formelugin-general: + +What does it do? +---------------- + +The form plugin allows you to assign a form - created with the ``form +editor`` or shipped with your extension - to a specific page. This enables +you to re-use forms throughout the whole TYPO3 installation. Furthermore, it +offers the backend editor the possibility to override certain aspects of the +form definition. At the moment, only finisher options can be overridden. The +possibilities depend on the configuration of the underlying prototype. + +Imagine, your form contains a redirect finisher. The redirect target is set +globally and valid for the whole ``form definition`` . While adding the form +to a specific page, the backend editor can define a different redirect targeting. This +setting is only valid for the page containing the plugin. + +Read more about changing the :ref:`general<typo3.cms.form.prototypes.\<prototypeidentifier>.formengine>` +and :ref:`aspect-specific form plugin configuration<typo3.cms.form.prototypes.\<prototypeIdentifier>.finishersdefinition.\<finisheridentifier>.formengine>`. + + +.. _concepts-formplugin-translation-formengine: + +Translation of form plugin +-------------------------- + +All option values which reside below the following configuration keys can be +translated: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + finishersDefinition: + <finisherIdentifier> + formEngine: + +The translation files of the ``form plugin`` are loaded as follows: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formEngine: + translationFile: + # translation files for the form plugin (finisher overrides) + 10: 'EXT:form/Resources/Private/Language/Database.xlf' + 20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf' + +The process searches for each option value within all of the defined +translation files. If a translation is found, the translated option value +will be used in preference. + +Imagine, the following is defined for an option value: + +.. code-block:: yaml + + ... + label: 'tt_content.finishersDefinition.EmailToReceiver.label' + ... + +First of all, the process searches for the translation key +``tt_content.finishersDefinition.EmailToReceiver.label`` within the file +20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf' and after +it inside the file 10: 'EXT:form/Resources/Private/Language/Database.xlf'. +If nothing is found, the option value will be displayed unmodified. + +Due to compatibility issues, the setting ``translationFile`` is not defined +as an array in the default configuration. To load your own translation files, +you should define an array containing 'EXT:form/Resources/Private/Language/Database.xlf' +as first entry (key ``10``) followed by your own file (key ``20``) as +displayed in the example above. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/FrontendRendering/Index.rst b/typo3/sysext/form/Documentation/Concepts/FrontendRendering/Index.rst new file mode 100644 index 000000000000..3ed635ffc946 --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/FrontendRendering/Index.rst @@ -0,0 +1,1104 @@ +.. include:: ../../Includes.txt + + +.. _concepts-frontendrendering: + +Frontend rendering +================== + + +.. _concepts-frontendrendering-basiccodecomponents: + +Basic code components +--------------------- + + +.. figure:: ../../Images/basic_code_components.png + :alt: Basic code components + + Basic code components + + +.. _concepts-frontendrendering-basiccodecomponents-formdefinition: + +TYPO3\\CMS\\Form\\Domain\\Model\\FormDefinition +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The class ``TYPO3\\CMS\\Form\\Domain\\Model\\FormDefinition`` encapsulates +a complete ``form definition``, with all of its + +- pages, +- form elements, +- applicable validation rules, and +- finishers, which should be executed when the form is submitted. + +The FormDefinition domain model is not modified when the form is executed. + + +.. _concepts-frontendrendering-basiccodecomponents-formdefinition-anatomy: + +The anatomy of a form ++++++++++++++++++++++ + +A ``FormDefinition`` domain model consists of multiple ``Page`` objects. +When a form is displayed, only one ``Page`` is visible at any given time. +Moreover, there is a navigation to go back and forth between those pages. A +``Page`` consists of multiple ``FormElements`` which represent the input +fields, textareas, checkboxes, etc. shown on a page. The ``FormDefinition`` +domain model, ``Page`` and ``FormElement`` objects have ``identifier`` +properties which must be unique for each given ``<formElementTypeIdentifier>``, +i.e. the ``FormDefinition`` domain model and a ``FormElement`` object may +have the same ``identifier`` but having the same identifier for two +``FormElement`` objects is disallowed. + + +.. _concepts-frontendrendering-basiccodecomponents-formdefinition-anatomy-example: + +Example +''''''' + +Basically, you can manually create a ``FormDefinition`` domain model just +by calling the API methods on it, or you can use a ``FormFactory`` to build +the form from a different representation format such as YAML. + +.. code-block:: php + + $formDefinition = $this->objectManager->get(FormDefinition::class, 'myForm'); + + $page1 = $this->objectManager->get(Page::class, 'page1'); + $formDefinition->addPage($page); + + // second argument is the <formElementTypeIdentifier> of the form element + $element1 = $this->objectManager->get(GenericFormElement::class, 'title', 'Text'); + $page1->addElement($element1); + + +.. _concepts-frontendrendering-basiccodecomponents-formdefinition-createformusingabstracttypes: + +Creating a form using abstract form element types ++++++++++++++++++++++++++++++++++++++++++++++++++ + +While you can use the ``TYPO3\CMS\Form\Domain\Model\FormDefinition::addPage()`` +or ``TYPO3\CMS\Form\Domain\Model\FormElements\Page::addElement()`` methods +and create the ``Page`` and ``FormElement`` objects manually, it is often +better to use the corresponding create* methods (``TYPO3\CMS\Form\Domain\Model\FormDefinition::createPage()`` +and ``TYPO3\CMS\Form\Domain\Model\FormElements\Page::createElement()``), as +you pass them an abstract ``<formElementTypeIdentifier>`` such as ``Text`` +or ``Page``. EXT:form will automatically resolve the implementation class +name and set default values. + +The :ref:`simple example <concepts-frontendrendering-basiccodecomponents-formdefinition-anatomy-example>` +shown above should be rewritten as follows: + +.. code-block:: php + + // we will come back to this later on + $prototypeConfiguration = []; + + $formDefinition = $this->objectManager->get(FormDefinition::class, 'myForm', $prototypeConfiguration); + $page1 = $formDefinition->createPage('page1'); + $element1 = $page1->addElement('title', 'Text'); + +You might wonder how the system knows that the element ``Text`` is +implemented by using a ``GenericFormElement``. This is configured in the +``$prototypeConfiguration``. To make the example from above actually work, +we need to add some meaningful values to ``$prototypeConfiguration``: + +.. code-block:: php + + $prototypeConfiguration = [ + 'formElementsDefinition' => [ + 'Page' => [ + 'implementationClassName' => 'TYPO3\CMS\Form\Domain\Model\FormElements\Page' + ], + 'Text' => [ + 'implementationClassName' => 'TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement' + ], + ], + ]; + +For each abstract ``<formElementTypeIdentifier>`` we have to add some +configuration. In the snippet above, we only define the ``implementation +class name``. Apart form that, it is always possible to set default values +for all configuration options of such elements, as the following example +shows: + +.. code-block:: php + + $prototypeConfiguration = [ + 'formElementsDefinition' => [ + 'Page' => [ + 'implementationClassName' => 'TYPO3\CMS\Form\Domain\Model\FormElements\Page', + 'label' => 'This is the label of the page if nothing else is specified' + ], + 'Text' => [ + 'implementationClassName' => 'TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement', + 'label' = >'Default Label', + 'defaultValue' => 'Default form element value', + 'properties' => [ + 'placeholder' => 'Text that is shown if element is empty' + ], + ], + ], + ]; + + +.. _concepts-frontendrendering-basiccodecomponents-formdefinition-preconfiguredconfiguration: + +Using pre-configured $prototypeConfiguration +++++++++++++++++++++++++++++++++++++++++++++ + +Often, it does not make sense to manually create the $prototypeConfiguration +array. Bigger parts of this array are pre-configured in the extensions's +YAML settings. The ``TYPO3\CMS\Form\Domain\Configuration\ConfigurationService`` +contains helper methods which return the ready-to-use ``$prototypeConfiguration``. + + +.. _concepts-frontendrendering-basiccodecomponents-formdefinition-rednering: + +Rendering a FormDefinition +++++++++++++++++++++++++++ + +To trigger the rendering of a ``FormDefinition`` domain model, the current +``TYPO3\CMS\Extbase\Mvc\Web\Request`` needs to be bound to the +``FormDefinition``. This binding results in a ``TYPO3\CMS\Form\Domain\Runtime\FormRuntime`` +object which contains the ``Runtime State`` of the form. Among other things, +this object includes the currently inserted values. + +.. code-block:: php + + // $currentRequest and $currentResponse need to be available + // inside a controller, you would use $this->request and $this->response; + $form = $formDefinition->bind($currentRequest, $currentResponse); + // now, you can use the $form object to get information about the currently entered values, etc. + + +.. _concepts-frontendrendering-basiccodecomponents-formruntime: + +TYPO3\\CMS\\Form\\Domain\\Runtime\\FormRuntime +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This class implements the runtime logic of a form, i.e. the class + +- decides which page is currently shown, +- determines the current values of the form +- triggers validation and property mappings. + +You generally receive an instance of this class by calling ``TYPO3\CMS\Form\Domain\Model\FormDefinition::bind()``. + + +.. _concepts-frontendrendering-basiccodecomponents-formruntime-render: + +Rendering a form +++++++++++++++++ + +Rendering a form is easy. Just call ``render()`` on the ``FormRuntime``. + +.. code-block:: php + + $form = $formDefinition->bind($request, $response); + $renderedForm = $form->render(); + + +.. _concepts-frontendrendering-basiccodecomponents-formruntime-accessingformvalues: + +Accessing form values ++++++++++++++++++++++ + +In order to get the values the user has entered into the form, you can +access the ``FormRuntime`` object like an array. If a form element with the +identifier ``firstName`` exists, you can use ``$form['firstName']`` to +retrieve its current value. You can set values the same way. + + +.. _concepts-frontendrendering-basiccodecomponents-formruntime-renderinginternals: + +Rendering internals ++++++++++++++++++++ + +The ``FormRuntime`` inquires the ``FormDefinition`` domain model regarding +the configured renderer (``TYPO3\CMS\Form\Domain\Model\FormDefinition::getRendererClassName()``) +and then triggers render() on this Renderer. + +This allows you to declaratively define how a form should be rendered. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Form: + rendererClassName: 'TYPO3\CMS\Form\Domain\Renderer\FluidFormRenderer' + + +.. _concepts-frontendrendering-basiccodecomponents-fluidformrenderer: + +TYPO3\\CMS\\Form\\Domain\\Renderer\\FluidFormRenderer +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This class is a ``TYPO3\CMS\Form\Domain\Renderer\RendererInterface`` +implementation which used to render a ``FormDefinition`` domain model. It +is the default EXT:form renderer. + +Learn more about the :ref:`FluidFormRenderer Options<apireference-frontendrendering-fluidformrenderer-options>`. + + +.. _concepts-frontendrendering-codecomponents-customformelementimplementations: + +Custom form element implementations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +EXT:form ships a decent amount of hooks which are available at crucial +points of the life cycle of a ``FormElement``. Most of the time, own +implementations are therefore unnecessary. An own form element can be +defined by: + +- writing some configuration, and +- utilizing the standard implementation of ``TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement``. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + CustomFormElementIdentifier: + implementationClassName: 'TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement' + +With the provided hooks, this ``FormElement`` can now be manipulated. + +If you insist on your own implementation, the abstract class ``TYPO3\CMS\Form\Domain\Model\FormElements\AbstractFormElement`` +offers a perfect entry point. In addition, we recommend checking-out ``TYPO3\CMS\Form\Domain\Model\Renderable\AbstractRenderable``. +All of your own form element implementations must be programmed to the +interface ``TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface``. +It is a good idea to derive your implementation from ``TYPO3\CMS\Form\Domain\Model\FormElements\AbstractFormElement``. + + +.. _concepts-frontendrendering-codecomponents-customfinisherimplementations: + +Custom finisher implementations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Finishers are defined as part of a ``prototype`` within a +``finishersDefinition``. The property ``implementationClassName`` is to be +utilized to load the finisher implementation. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + finishersDefinition: + CustomFinisher: + implementationClassName: 'VENDOR\MySitePackage\Domain\Finishers\CustomFinisher' + +If the finisher requires options, you can define those within the +``options`` property. The options will be used as default values and can +be overridden using the ``form definition``. + +Define the default value: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + finishersDefinition: + CustomFinisher: + implementationClassName: 'VENDOR\MySitePackage\Domain\Finishers\CustomFinisher' + options: + yourCustomOption: 'Ralf' + +Override the option using the ``form definition``: + +.. code-block:: yaml + + identifier: sample-form + label: 'Simple Contact Form' + prototype: standard + type: Form + + finishers: + - + identifier: Custom + options: + yourCustomOption: 'Björn' + + renderables: + ... + +Each finisher has to be programmed to the interface ``TYPO3\CMS\Form\Domain\Finishers\FinisherInterface`` +and should extend the class ``TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher``. +In doing so, the logic of the finisher should start with the method +``executeInternal()``. + + +.. _concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions: + +Accessing finisher options +++++++++++++++++++++++++++ + +If your finisher extends ``TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher``, +you can access your finisher options with the help of the ``parseOption()`` +method. + +.. code-block:: php + + $yourCustomOption = $this->parseOption('yourCustomOption'); + +``parseOption()`` is looking for 'yourCustomOption' in your +``form definition``. If it cannot be found, the method checks + +- 1. the ``prototype`` configuration for a default value, +- 2. the finisher class itself by searching for a default value within the + ``$defaultOptions`` property. + +.. code-block:: php + + <?php + declare(strict_types=1); + namespace VENDOR\MySitePackage\Domain\Finishers; + + class CustomFinisher extends \TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher + { + + protected $defaultOptions = [ + 'yourCustomOption' => 'Olli', + ]; + + ... + +If the option cannot be found by processing this fallback chain, ``null`` is +returned. + +If the option is found, the process checks whether the option value will +access :ref:`FormRuntime values<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>`. +If the ``FormRuntime`` returns a positive result, it is checked whether the +option value :ref:`can access values of preceding finishers<concepts-frontendrendering-codecomponents-customfinisherimplementations-finishercontext-sharedatabetweenfinishers>`. +At the very end, it tries to :ref:`translate the finisher options<concepts-frontendrendering-translation-finishers>`. + + +.. _concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor: + +Accessing form runtime values +''''''''''''''''''''''''''''' + +By utilizing a specific notation, finisher options can be populated with +submitted form values (assuming you are using the ``parseOption()`` method). +You can access values of the ``FormRuntime`` and thus values of each single +form element by encapsulating the option values with ``{}``. If there is a +form element with the ``identifier`` 'subject', you can access its value +within the the finisher configuration. Check out the following example to +get the whole idea. + +.. code-block:: yaml + + identifier: simple-contact-form + label: 'Simple Contact Form' + prototype: standard + type: Form + + finishers: + - + identifier: Custom + options: + yourCustomOption: '{subject}' + + renderables: + - + identifier: subject + label: 'Subject' + type: Text + + +.. code-block:: php + + // $yourCustomOption contains the value of the form element with the + // identifier 'subject' + $yourCustomOption = $this->parseOption('yourCustomOption'); + +In addition, you can use ``{__currentTimestamp}`` as a special option value. +It will return the current UNIX timestamp. + + +.. _concepts-frontendrendering-codecomponents-customfinisherimplementations-finishercontext: + +Finisher Context +++++++++++++++++ + +The class ``TYPO3\CMS\Form\Domain\Finishers\FinisherContext`` takes care of +transferring a finisher context to each finisher. Given the finisher is +derived from ``TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher`` the +finisher context will be available via + +.. code-block:: php + + $this->finisherContext + +The method ``cancel`` prevents the execution of successive finishers: + +.. code-block:: php + + $this->finisherContext->cancel(); + +The method ``getFormValues`` returns all of the submitted form values. + +``getFormValues``. + +.. code-block:: php + + $this->finisherContext->getFormValues(); + +The method ``getFormRuntime`` returns the ``FormRuntime``. + +.. code-block:: php + + $this->finisherContext->getFormRuntime(); + + +.. _concepts-frontendrendering-codecomponents-customfinisherimplementations-finishercontext-sharedatabetweenfinishers: + +Share data between finishers +'''''''''''''''''''''''''''' + +The method ``getFinisherVariableProvider`` returns an object (``TYPO3\CMS\Form\Domain\Finishers\FinisherVariableProvider``) +which allows you to store data and transfer it to other finishers. The data +can be easily accessed programmatically or within your configuration. + +.. code-block:: php + + $this->finisherContext->getFinisherVariableProvider(); + +The data is stored within the ``FinisherVariableProvider`` and is addressed +by a user-defined 'finisher identifier' and a custom option value path. The +name of the 'finisher identifier' should consist of the name of the finisher +without the potential 'Finisher' appendix. If your finisher is derived from +the class ``TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher``, the name of +this construct is stored in the following variable: + +.. code-block:: php + + $this->shortFinisherIdentifier + +For example, if the name of your finisher class is 'CustomFinisher', the +mentioned variable will contain the value 'Custom'. + +There are a bunch of methods to access and manage the finisher data: + +- Add data: + + .. code-block:: php + + $this->finisherContext->getFinisherVariableProvider()->add( + $this->shortFinisherIdentifier, + 'unique.value.identifier', + $value + ); + +- Get data: + + .. code-block:: php + + $this->finisherContext->getFinisherVariableProvider()->get( + $this->shortFinisherIdentifier, + 'unique.value.identifier', + 'default value' + ); + +- Check the existence of data: + + .. code-block:: php + + $this->finisherContext->getFinisherVariableProvider()->exists( + $this->shortFinisherIdentifier, + 'unique.value.identifier' + ); + +- Delete data: + + .. code-block:: php + + $this->finisherContext->getFinisherVariableProvider()->remove( + $this->shortFinisherIdentifier, + 'unique.value.identifier' + ); + +In this way, each finisher can access data programmatically. Moreover, it is +possible to retrieve the data via configuration, provided that a finisher +stores the values within the ``FinisherVariableProvider``. + +Assuming that a finisher called 'Custom' sets data as follows: + +.. code-block:: php + + $this->finisherContext->getFinisherVariableProvider()->add( + $this->shortFinisherIdentifier, + 'unique.value.identifier', + 'Wouter' + ); + +... you are now able to access the value 'Wouter' via ``{Custom.unique.value.identifier}`` +in any other finisher. + +.. code-block:: yaml + + identifier: sample-form + label: 'Simple Contact Form' + prototype: standard + type: Form + + finishers: + - + identifier: Custom + options: + yourCustomOption: 'Frans' + + - + identifier: SomeOtherStuff + options: + someOtherCustomOption: '{Custom.unique.value.identifier}' + + +.. _concepts-frontendrendering-codecomponents-customvalidatorimplementations: + +Custom validator implementations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Validators belong to a certain ``prototype`` and are defined within the +``validatorsDefinition``. The property ``implementationClassName`` is used +for the validator implementation. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + validatorsDefinition: + Custom: + implementationClassName: 'VENDOR\MySitePackage\Domain\Validation\CustomValidator' + +You can provide options for your validator using the property ``options``. +Those will be used as default values which can be overridden within a +specific ``form definition``. + +Define the default value of the option ``yourCustomOption``: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + validatorsDefinition: + Custom: + implementationClassName: 'VENDOR\MySitePackage\Domain\Validation\CustomValidator' + options: + yourCustomOption: 'Jurian' + +Override the default value within your ``form definition``: + +.. code-block:: yaml + + identifier: sample-form + label: 'Simple Contact Form' + prototype: standard + type: Form + + renderables: + - + identifier: subject + label: 'Name' + type: Text + validators: + - + identifier: Custom + options: + yourCustomOption: 'Mathias' + +EXT:form implements Extbase validators. That said, your own validators should +extend ``TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator``. + + +.. _concepts-frontendrendering-renderviewHelper: + +"render" viewHelper +------------------- + +The ``RenderViewHelper`` is the actual starting point for form rendering and +not the typical Extbase Controller as you may know it. + +For more technical insights read more about the viewHelper's :ref:`arguments<apireference-frontendrendering-renderviewHelper-arguments>`. + + +.. _concepts-frontendrendering-fluidtemplate: + +Render through FLUIDTEMPLATE (without controller) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: typoscript + + tt_content.custom_content_element = COA_INT + tt_content.custom_content_element { + 10 = < lib.stdheader + 20 = FLUIDTEMPLATE + 20 { + file = EXT:my_site_package/Resources/Private/Templates/CustomContentElement.html + settings { + persistenceIdentifier = EXT:my_site_package/Resources/Private/Forms/MyForm.yaml + } + extbase.pluginName = Form + extbase.controllerExtensionName = Formframework + extbase.controllerName = FormFrontend + extbase.controllerActionName = perform + } + } + +``my_site_package/Resources/Private/Templates/CustomContentElement.html``: + +.. code-block:: html + + <formvh:render persistenceIdentifier="{settings.persistenceIdentifier}" /> + + +.. _concepts-frontendrendering-extbase: + +Render within your own Extbase extension +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It is straight forward. Use the ``RenderViewHelper`` like this and you are +done: + +.. code-block:: html + + <formvh:render persistenceIdentifier="EXT:my_site_package/Resources/Private/Forms/MyForm.yaml"/> + +Point the property ``controllerAction`` to the desired action name and +provide values for the other parameters displayed below (you might need +those). + +.. code-block:: yaml + + type: Form + identifier: 'example-form' + label: 'TYPO3 is cool' + prototypeName: standard + renderingOptions: + controllerAction: perform + addQueryString: false + argumentsToBeExcludedFromQueryString: [] + additionalParams: [] + + renderables: + ... + + +.. _concepts-frontendrendering-programmatically: + +Build forms programmatically +---------------------------- + +To learn more about this topic, head to the chapter ':ref:`Build forms programmatically<apireference-frontendrendering-programmatically>`' +which is part of the API reference section. + + +.. _concepts-frontendrendering-runtimemanipulation: + +Runtime manipulation +-------------------- + +.. _concepts-frontendrendering-runtimemanipulation-hooks: + +Hooks +^^^^^ + +EXT:form implements a decent amount of hooks that allow the manipulation of +your forms during runtime. In this way, it is possible to, for example, + +- ... prefill form elements with values from your database, +- ... skip a whole page based on the value of a certain form element, +- ... mark a form element as mandatory depending of the chosen value of another + form element. + +Please check out the ':ref:`API reference section<apireference-frontendrendering-runtimemanipulation-hooks>`' +for more details. + + +.. _concepts-frontendrendering-runtimemanipulation-typoscriptoverrides: + +TypoScript overrides +^^^^^^^^^^^^^^^^^^^^ + +Each and every ``form definition`` can be overridden via TypoScript if the +``FormFrontendController`` of EXT:form is used to render the form. Normally, +this is the case if the form has been added to the page using the form +plugin or when rendering the form via :ref:`FLUIDTEMPLATE <concepts-frontendrendering-fluidtemplate>`. + +The overriding of settings with TypoScript's help takes place after the :ref:`custom finisher settings<concepts-formplugin>` +of the form plugin have been loaded. In this way, you are able to manipulate +the ``form definition`` for a single page. In doing so, the altered +``form definition`` is passed to the ``RenderViewHelper`` which then +generates the form programmatically. At this point, you can still change the +form elements using the above-mentioned concept of :ref:`hooks<concepts-frontendrendering-runtimemanipulation-hooks>`. + +.. code-block:: typoscript + + plugin.tx_form { + settings { + formDefinitionOverrides { + <formDefinitionIdentifier> { + renderables { + 0 { + renderables { + 0 { + label = TEXT + label.value = Overridden label + } + } + } + } + } + } + } + } + + +.. _concepts-frontendrendering-templates: + +Templates +--------- + +The Fluid templates of the form framework are based on Twitter Bootstrap. + + +.. _concepts-frontendrendering-templates-customtemplates: + +Custom templates +^^^^^^^^^^^^^^^^ + +If you want to use custom Fluid templates for the frontend output of the +form elements, you cannot register an additional template path using +TypoScript. Instead, the registration of new template paths has to be done +via YAML. The settings are part of the ``prototypes`` configuration. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Form: + renderingOptions: + templateRootPaths: + 100: 'EXT:my_site_package/Resources/Private/Frontend/Templates/' + partialRootPaths: + 100: 'EXT:my_site_package/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 100: 'EXT:my_site_package/Resources/Private/Frontend/Layouts/' + +For each ``form definition`` - which references the prototype ``standard`` - +the form framework will additionally look for Fluid templates within the +path 'EXT:my_site_package/Resources/Private/Frontend/[*]' as set above. +Apart from the 'Form' element, the process will search for templates within +the ``partialRootPaths`` folder. The name of the partial is derived from the +property ``formElementTypeIdentifier``. For example, the template of the +form element ``Text`` must be stored within the ``partialRootPaths`` folder +named ``Text.html``. In contrast, the template of the ``Form`` element must +reside within the ``templateRootPaths`` folder. According to the introduced +logic, the template name must be ``Form.html``. + + +.. _concepts-frontendrendering-translation: + +Translation +----------- + +.. _concepts-frontendrendering-translation-formdefinition: + +Translate form definition +^^^^^^^^^^^^^^^^^^^^^^^^^ + +The translation of ``form definitions`` works differently to the translation +of the backend aspects. Currently, there is no graphical user interface +supporting the translation process. + +If the backend editor needed to translate the ``form definition`` properties +in the same way the backend aspects are translated, he/ she would see long +and unwieldy translation keys while editing a form within the ``form editor``. +In order to avoid this, rather the element properties are translated than +their values. Thus, the form framework does not look for translation keys +within the translation file. Instead, the system searches for translations +of the form element properties independent of their property values. The +property values are ignored if the process finds a proper entry within the +translation file. As a result, the property values are overridden by the +translated value. + +This approach is a compromise between two scenarios: the exclusive usage of +the ``form editor`` and/ or the manual creation of ``form definitions`` +which can afterwards (theoretically) be edited with the ``form editor``. In +addition, the described compromise allows the editor to create forms in the +default language whose form element property values are displayed as +specified in the ``form editor``. Based on this, an integrator could provide +additional language files which automatically translate the specific form. + +Additional translation files can be defined as follows: + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Form: + renderingOptions: + translation: + translationFile: + # translation files for the frontend + 10: 'EXT:form/Resources/Private/Language/locallang.xlf' + 20: 'EXT:my_site_package/Resources/Private/Language/locallang.xlf' + +Due to compatibility issues, the setting ``translationFile`` is not defined +as an array in the default configuration. To load your own translation files, +you should define an array containing 'EXT:form/Resources/Private/Language/locallang.xlf' +as first entry (key ``10``) followed by your own file (key ``20``) as +displayed in the example above. The array is processed from the highest key +to the lowest, i.e. your translation file with the key ``20`` is processed +first. If the look-up process does not find a key within all of the provided +files, the property value will be displayed unmodified. + +The following properties can be translated: + +- label +- properties.[*] +- properties.options.[*] +- properties.fluidAdditionalAttributes.[*] +- renderingOptions.[*] + +The translation keys are put together based on a specific pattern. In +addition, a fallback chain that depends on the form element identifiers +exists. As a result, the following translation scenarios are possible: + +- translation of a form element property for a specific form and form + element +- translation of a form element property for a specific form element and + various forms +- translation of a form element property for an element type and various + forms, e.g. the ``Page`` element + +The look-up process searches for translation keys in all given translation +files based on the following order: + +- ``<formDefinitionIdentifier>.element.<elementIdentifier>.properties.<propertyName>`` +- ``element.<formElementIdentifier>.properties.<propertyName>`` +- ``element.<elementType>.properties.<propertyName>`` + +Form elements with option properties (``properties.options``), like the +``Select`` element, feature the following look-up process: + +- ``<formDefinitionIdentifier>.element.<elementIdentifier>.properties.options.<propertyValue>`` +- ``element.<elementIdentifier>.properties.options.<propertyValue>`` + + +Example ++++++++ + +.. code-block:: yaml + + identifier: ApplicationForm + type: Form + prototypeName: standard + label: 'Application form' + + renderables: + - + identifier: GeneralInformation + type: Page + label: 'General information' + + renderables: + - + identifier: LastName + type: Text + label: 'Last name' + properties: + placeholder: 'Please enter your last name.' + defaultValue: '' + - + identifier: Software + type: MultiSelect + label: 'Known software' + properties: + options: + value1: TYPO3 + value2: Neos + +For the form element ``LastName``, the process will look for the following +translation keys within the translation files: + +- ``ApplicationForm.element.LastName.properties.label`` +- ``element.LastName.properties.label`` +- ``element.Text.properties.label`` + +If none of the above-mentioned keys exist, 'Last name' will be displayed. + +For the form element ``Software``, the process will look for the following +translation keys within the translation files: + +- ``ApplicationForm.element.Software.properties.label`` +- ``element.Software.properties.label`` +- ``element.MultiSelect.properties.label`` + +If none of the above-mentioned keys exist, 'Known software' will be +displayed. The option properties are addressed as follows: + +- ``ApplicationForm.element.Software.properties.options.value1`` +- ``element.Software.properties.options.value1`` +- ``ApplicationForm.element.Software.properties.options.value2`` +- ``element.Software.properties.options.value2`` + +If none of the above-mentioned keys exist, 'TYPO3' will be displayed as +label for the first option and 'Neos' as label for the second option. + + +.. _concepts-frontendrendering-translation-validationerrors: + +Translation of validation messages +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The translation of validation messages is similar to the translation of +``form definitions``. The same translation files can be used. If the look-up +process does not find a key within the provided files, the appropriate +message of the Extbase framework will be displayed. EXT:form already +translates all of those validators by default. + +As mentioned above, the translation keys are put together based on a +specific pattern. Furthermore, the fallback chain exists here as well. Thus, +the following translation scenarios are possible: + +- translation of validation messages for a specific validator of a concrete + form element and form +- translation of validation messages for a specific validator of various + form elements within a concrete form +- translation of validation messages for a specific validator within various + forms + +In Extbase, the validation messages are identified with the help of +numerical codes (UNIX timestamps). For the same validator, different codes +are valid. Read more about :ref:`concrete validator configurations <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`. + +The look-up process searches for translation keys in all given translation +files based on the following order: + +- ``<formDefinitionIdentifier>.validation.<elementIdentifier>.<validationErrorCode>`` +- ``<formDefinitionIdentifier>.validation.<validationErrorCode>`` +- ``validation.<validationErrorCode>`` + + +Example ++++++++ + +.. code-block:: yaml + + identifier: ContactForm + type: Form + prototypeName: standard + label: 'Contact us' + + renderables: + - + identifier: Page1 + type: Page + label: 'Page 1' + + renderables: + - + identifier: LastName + type: Text + label: 'Last name' + properties: + fluidAdditionalAttributes: + required: required + validators: + - + identifier: NotEmpty + +Amongst others, the ``NotEmpty`` validator sends 1221560910 as ``<validationErrorCode>``. +If a user submits this form without providing a value for the field "Last +name", the ``NotEmpty`` validator fails. Now, the look-up process searches +for the following translation keys for the ``NotEmpty`` validator combined +with the form element ``LastName``: + +- ContactForm.validation.LastName.1221560910 +- ContactForm.validation.1221560910 +- validation.1221560910 + +As mentioned above, if there is no corresponding translation key available, +the default message of the Extbase framework will be shown. + + +.. _concepts-frontendrendering-translation-finishers: + +Translation of finisher options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The translation of finisher options is similar to the translation of +``form definitions``. The same translation files can be used. If the look-up +process does not find a key within all provided files, the property value +will be displayed unmodified. + +As mentioned above, the translation keys are put together based on a +specific pattern. Furthermore, the fallback chain exists here as well. Thus, +the following translation scenarios are possible: + +- translation of finisher options for a specific finisher of a concrete form +- translation of finisher options for a specific finisher of various forms + +The look-up process searches for translation keys in all given translation +files based on the following order: + +- ``<formDefinitionIdentifier>.finisher.<finisherIdentifier>.<optionName>`` +- ``finisher.<finisherIdentifier>.<optionName>`` + + +Example ++++++++ + +.. code-block:: yaml + + identifier: ContactForm + type: Form + prototypeName: standard + label: 'Contact us' + + finishers: + - + identifier: Confirmation + options: + message: 'Thank you for your inquiry.' + + renderables: + ... + +The look-up process searches for the following translation keys for the +``<finisherIdentifier>`` 'Confirmation' and the option 'message': + +- ``ContactForm.finisher.Confirmation.message`` +- ``finisher.Confirmation.message`` + +If no translation key exists, the message 'Thank you for your inquiry.' will +be shown. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/Index.rst b/typo3/sysext/form/Documentation/Concepts/Index.rst new file mode 100644 index 000000000000..4ade1662745e --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/Index.rst @@ -0,0 +1,24 @@ +.. include:: ../Includes.txt + + +.. _concepts: + +======== +Concepts +======== + +Within this chapter, you will learn the basic concepts of the form framework. +It addresses your concerns as backend editor and integrator. Some of the +chapters also cover topics for developers. + +.. toctree:: + + TargetGroupsAndMainPrinciples/Index + Configuration/Index + FormConfigurationFormDefinition/Index + FormFileStorages/Index + FrontendRendering/Index + Finishers/Index + FormManager/Index + FormEditor/Index + FormPlugin/Index \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Concepts/TargetGroupsAndMainPrinciples/Index.rst b/typo3/sysext/form/Documentation/Concepts/TargetGroupsAndMainPrinciples/Index.rst new file mode 100644 index 000000000000..649e9032f591 --- /dev/null +++ b/typo3/sysext/form/Documentation/Concepts/TargetGroupsAndMainPrinciples/Index.rst @@ -0,0 +1,48 @@ +.. include:: ../../Includes.txt + + +.. _concepts-introduction: + +Target groups and main principles +================================= + +As :ref:`mentioned earlier<what-does-it-do>`, the ``form`` extension can be +seen as a framework which allows editors, integrators, and developers to +create and manage all kind of forms. For this task, different interfaces +and techniques are available. + +Conceptually, EXT:form always tries to consider the ``form editor`` first. +The requirements for the ``form editor`` differ between the defined target +groups. On the one hand, as an integrator, you may want to manage HTML +class attributes. On the other hand, as a developer you may want to use the +``form editor`` as a kick starter for complex ``form definitions``, and you +may want to edit all possible (technical) properties you can think of. + +The form extension tries to find a compromise for such cases. Since the +``form editor`` is mainly used by backend editors, only simple, +nontechnical properties are displayed and editable. However, EXT:form +allows you to easily extend the ``form editor`` by writing some YAML +configurations. + +If this is not enough for your specific project, EXT:form provides a way to +integrate your own JavaScript code by utilizing the JavaScript API. Thus, +it should be possible to meet all your requirements. + +Your forms can be created and defined globally in the ``form module`` and/ +or loaded from extensions. Within the ``Mail form`` content element, one of +those forms can be referenced. + +Furthermore, certain aspects of a form can be overridden in the plugin. This +concept allows you to reuse the same form on different pages with the same, +or a different, configuration. + +The following explanations will show you that there are many ways to +manipulate the form framework in different contexts. + +Those explanations are partly contradictory, depending on your use case. It +is up to you how you want to use the form framework. Be creative and share +your solution with the TYPO3 community! + +This chapter attempts to describe the basics of the form framework. Check +out the reference and the example sections to get a deeper understanding of +the framework. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/Index.rst new file mode 100644 index 000000000000..43740fabd5ae --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/Index.rst @@ -0,0 +1,18 @@ +.. include:: ../Includes.txt + + +.. _configurationreference: + +======================= +Configuration Reference +======================= + +This chapter is a complete reference of the possible configuration settings. +It addresses your concerns as and integrator and developer. + +.. toctree:: + + persistenceManager/Index + prototypes/Index + formManager/Index + configuration/Index diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/configuration/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/configuration/Index.rst new file mode 100644 index 000000000000..263ac1d0552d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/configuration/Index.rst @@ -0,0 +1,2785 @@ +.. include:: ../../Includes.txt + + +.. _configurationreference-fullconfiguration: + +========================== +Full default configuration +========================== + + +.. code-block:: yaml + + persistenceManager: + allowedFileMounts: + 10: '1:/user_upload/' + allowSaveToExtensionPaths: false + allowDeleteFromExtensionPaths: false + prototypes: + standard: + formElementsDefinition: + Form: + formEditor: + predefinedDefaults: + renderingOptions: + submitButtonLabel: 'formEditor.elements.Form.editor.submitButtonLabel.value' + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.BaseFormElementMixin.editor.label.label + propertyPath: label + 300: + identifier: 'submitButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Form.editor.submitButtonLabel.label' + propertyPath: 'renderingOptions.submitButtonLabel' + 900: + identifier: finishers + templateName: Inspector-FinishersEditor + label: formEditor.elements.Form.editor.finishers.label + selectOptions: + 10: + value: '' + label: formEditor.elements.Form.editor.finishers.EmptyValue.label + 20: + value: EmailToSender + label: formEditor.elements.Form.editor.finishers.EmailToSender.label + 30: + value: EmailToReceiver + label: formEditor.elements.Form.editor.finishers.EmailToReceiver.label + 40: + value: Redirect + label: formEditor.elements.Form.editor.finishers.Redirect.label + 50: + value: DeleteUploads + label: formEditor.elements.Form.editor.finishers.DeleteUploads.label + _isCompositeFormElement: false + _isTopLevelFormElement: true + saveSuccessFlashMessageTitle: formEditor.elements.Form.saveSuccessFlashMessageTitle + saveSuccessFlashMessageMessage: formEditor.elements.Form.saveSuccessFlashMessageMessage + modalValidationErrorsDialogTitle: formEditor.modals.validationErrors.dialogTitle + modalValidationErrorsConfirmButton: formEditor.modals.validationErrors.confirmButton + modalInsertElementsDialogTitle: formEditor.modals.insertElements.dialogTitle + modalInsertPagesDialogTitle: formEditor.modals.newPages.dialogTitle + modalCloseDialogMessage: formEditor.modals.close.dialogMessage + modalCloseDialogTitle: formEditor.modals.close.dialogTitle + modalCloseConfirmButton: formEditor.modals.close.confirmButton + modalCloseCancleButton: formEditor.modals.close.cancleButton + modalRemoveElementDialogTitle: formEditor.modals.removeElement.dialogTitle + modalRemoveElementDialogMessage: formEditor.modals.removeElement.dialogMessage + modalRemoveElementConfirmButton: formEditor.modals.removeElement.confirmButton + modalRemoveElementCancleButton: formEditor.modals.removeElement.cancleButton + modalRemoveElementLastAvailablePageFlashMessageTitle: formEditor.modals.removeElement.lastAvailablePageFlashMessageTitle + modalRemoveElementLastAvailablePageFlashMessageMessage: formEditor.modals.removeElement.lastAvailablePageFlashMessageMessage + inspectorEditorFormElementSelectorNoElements: formEditor.inspector.editor.formelement_selector.no_elements + paginationTitle: formEditor.pagination.title + iconIdentifier: content-elements-mailform + propertyCollections: + finishers: + 10: + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label + 200: + identifier: subject + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.subject.label + propertyPath: options.subject + enableFormelementSelectionButton: true + propertyValidators: + 10: NotEmpty + 20: FormElementIdentifierWithinCurlyBracesInclusive + 300: + identifier: recipientAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientAddress.label + propertyPath: options.recipientAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 400: + identifier: recipientName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientName.label + propertyPath: options.recipientName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 500: + identifier: senderAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.senderAddress.label + propertyPath: options.senderAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 600: + identifier: senderName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.senderName.label + propertyPath: options.senderName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 700: + identifier: replyToAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.replyToAddress.label + propertyPath: options.replyToAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 800: + identifier: carbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.carbonCopyAddress.label + propertyPath: options.carbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 900: + identifier: blindCarbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.blindCarbonCopyAddress.label + propertyPath: options.blindCarbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 1000: + identifier: format + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.label + propertyPath: options.format + selectOptions: + 10: + value: plaintext + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.1 + 20: + value: html + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.2 + 1100: + identifier: attachUploads + templateName: Inspector-CheckboxEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.attachUploads.label + propertyPath: options.attachUploads + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + identifier: EmailToSender + 20: + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label + 200: + identifier: subject + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.subject.label + propertyPath: options.subject + enableFormelementSelectionButton: true + propertyValidators: + 10: NotEmpty + 20: FormElementIdentifierWithinCurlyBracesInclusive + 300: + identifier: recipientAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.recipientAddress.label + propertyPath: options.recipientAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 400: + identifier: recipientName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.recipientName.label + propertyPath: options.recipientName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 500: + identifier: senderAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.senderAddress.label + propertyPath: options.senderAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 600: + identifier: senderName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.senderName.label + propertyPath: options.senderName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 700: + identifier: replyToAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.replyToAddress.label + propertyPath: options.replyToAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 800: + identifier: carbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.carbonCopyAddress.label + propertyPath: options.carbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 900: + identifier: blindCarbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.blindCarbonCopyAddress.label + propertyPath: options.blindCarbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 1000: + identifier: format + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.format.label + propertyPath: options.format + selectOptions: + 10: + value: plaintext + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.1 + 20: + value: html + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.2 + 1100: + identifier: attachUploads + templateName: Inspector-CheckboxEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.attachUploads.label + propertyPath: options.attachUploads + 1200: + identifier: language + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.language.label + propertyPath: options.translation.language + selectOptions: + 10: + value: default + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.language.1 + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + identifier: EmailToReceiver + 30: + identifier: Redirect + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Redirect.editor.header.label + 200: + identifier: pageUid + templateName: Inspector-Typo3WinBrowserEditor + label: formEditor.elements.Form.finisher.Redirect.editor.pageUid.label + buttonLabel: formEditor.elements.Form.finisher.Redirect.editor.pageUid.buttonLabel + browsableType: pages + propertyPath: options.pageUid + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: additionalParameters + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.Redirect.editor.additionalParameters.label + propertyPath: options.additionalParameters + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: DeleteUploads + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Confirmation + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Confirmation.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Closure + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Closure.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: FlashMessage + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: SaveToDatabase + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + rendererClassName: TYPO3\CMS\Form\Domain\Renderer\FluidFormRenderer + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + Page: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.Page.editor.label.label + propertyPath: label + 300: + identifier: 'previousButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Page.editor.previousButtonLabel.label' + propertyPath: 'renderingOptions.previousButtonLabel' + 400: + identifier: 'nextButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Page.editor.nextButtonLabel.label' + propertyPath: 'renderingOptions.nextButtonLabel' + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + renderingOptions: + previousButtonLabel: 'formEditor.elements.Page.editor.previousButtonLabel.value' + nextButtonLabel: 'formEditor.elements.Page.editor.nextButtonLabel.value' + label: formEditor.elements.Page.label + group: page + groupSorting: 100 + _isTopLevelFormElement: true + _isCompositeFormElement: true + iconIdentifier: t3-form-icon-page + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\Page + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: true + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + SummaryPage: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.SummaryPage.editor.label.label + propertyPath: label + 300: + identifier: 'previousButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.SummaryPage.editor.previousButtonLabel.label' + propertyPath: 'renderingOptions.previousButtonLabel' + 400: + identifier: 'nextButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.SummaryPage.editor.nextButtonLabel.label' + propertyPath: 'renderingOptions.nextButtonLabel' + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + renderingOptions: + previousButtonLabel: 'formEditor.elements.SummaryPage.editor.previousButtonLabel.value' + nextButtonLabel: 'formEditor.elements.SummaryPage.editor.nextButtonLabel.value' + label: formEditor.elements.SummaryPage.label + group: page + groupSorting: 200 + _isTopLevelFormElement: true + _isCompositeFormElement: false + iconIdentifier: t3-form-icon-summary-page + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\Page + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: false + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + Fieldset: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.Fieldset.editor.label.label + propertyPath: label + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: { } + label: formEditor.elements.Fieldset.label + group: container + groupSorting: 100 + _isCompositeFormElement: true + iconIdentifier: t3-form-icon-fieldset + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\Section + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + renderingOptions: + _isCompositeFormElement: true + GridContainer: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.GridContainer.editor.label.label + propertyPath: label + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: { } + label: formEditor.elements.GridContainer.label + group: container + groupSorting: 200 + _isCompositeFormElement: true + _isGridContainerFormElement: true + iconIdentifier: t3-form-icon-gridcontainer + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GridContainer + properties: + containerClassAttribute: input + elementClassAttribute: container + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + renderingOptions: + _isCompositeFormElement: true + _isGridContainerFormElement: true + GridRow: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.GridRow.editor.label.label + propertyPath: label + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: { } + label: formEditor.elements.GridRow.label + group: container + groupSorting: 300 + _isCompositeFormElement: true + _isGridRowFormElement: true + iconIdentifier: t3-form-icon-gridrow + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GridRow + properties: + containerClassAttribute: input + elementClassAttribute: row + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + renderingOptions: + _isCompositeFormElement: true + _isGridRowFormElement: true + Text: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + 500: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + defaultValue: '' + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.Text.label + group: input + groupSorting: 100 + iconIdentifier: t3-form-icon-text + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + Password: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + 500: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + defaultValue: '' + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.Password.label + group: input + groupSorting: 300 + iconIdentifier: t3-form-icon-password + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + AdvancedPassword: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: confirmationLabel + templateName: Inspector-TextEditor + label: formEditor.elements.AdvancedPassword.editor.confirmationLabel.label + propertyPath: properties.confirmationLabel + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + confirmationLabel: formEditor.element.AdvancedPassword.editor.confirmationLabel.predefinedDefaults + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.AdvancedPassword.label + group: custom + groupSorting: 500 + iconIdentifier: t3-form-icon-advanced-password + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\AdvancedPassword + properties: + containerClassAttribute: input + elementClassAttribute: input-medium + elementErrorClassAttribute: error + confirmationLabel: '' + confirmationClassAttribute: input-medium + Textarea: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + 500: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + defaultValue: '' + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.Textarea.label + group: input + groupSorting: 200 + iconIdentifier: t3-form-icon-textarea + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: input + elementClassAttribute: xxlarge + elementErrorClassAttribute: error + Honeypot: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + renderAsHiddenField: false + styleAttribute: 'position:absolute; margin:0 0 0 -999em;' + Hidden: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.Hidden.editor.defaultValue.label + propertyPath: defaultValue + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + defaultValue: '' + label: formEditor.elements.Hidden.label + group: custom + groupSorting: 300 + iconIdentifier: t3-form-icon-hidden + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + Checkbox: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: { } + label: formEditor.elements.Checkbox.label + group: select + groupSorting: 100 + iconIdentifier: t3-form-icon-checkbox + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: add-on + elementErrorClassAttribute: error + value: 1 + MultiCheckbox: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: multiple + multiSelection: true + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.MultiSelectionMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.MultiSelectionMixin.editor.validators.EmptyValue.label + 20: + value: Count + label: formEditor.elements.MultiSelectionMixin.editor.validators.Count.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + options: { } + propertyCollections: + validators: + 10: + identifier: Count + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.MultiCheckbox.label + group: select + groupSorting: 400 + iconIdentifier: t3-form-icon-multi-checkbox + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: '' + elementErrorClassAttribute: error + MultiSelect: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 250: + identifier: inactiveOption + templateName: Inspector-TextEditor + label: formEditor.elements.SelectionMixin.editor.inactiveOption.label + propertyPath: properties.prependOptionLabel + fieldExplanationText: formEditor.elements.SelectionMixin.editor.inactiveOption.fieldExplanationText + doNotSetIfPropertyValueIsEmpty: true + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: multiple + multiSelection: true + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.MultiSelectionMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.MultiSelectionMixin.editor.validators.EmptyValue.label + 20: + value: Count + label: formEditor.elements.MultiSelectionMixin.editor.validators.Count.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + options: { } + propertyCollections: + validators: + 10: + identifier: Count + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.MultiSelect.label + group: select + groupSorting: 500 + iconIdentifier: t3-form-icon-multi-select + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: input + elementClassAttribute: xlarge + elementErrorClassAttribute: error + RadioButton: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: single + multiSelection: false + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + options: { } + label: formEditor.elements.RadioButton.label + group: select + groupSorting: 300 + iconIdentifier: t3-form-icon-radio-button + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: input + elementClassAttribute: xlarge + elementErrorClassAttribute: error + SingleSelect: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 250: + identifier: inactiveOption + templateName: Inspector-TextEditor + label: formEditor.elements.SelectionMixin.editor.inactiveOption.label + propertyPath: properties.prependOptionLabel + fieldExplanationText: formEditor.elements.SelectionMixin.editor.inactiveOption.fieldExplanationText + doNotSetIfPropertyValueIsEmpty: true + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: single + multiSelection: false + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + options: { } + label: formEditor.elements.SingleSelect.label + group: select + groupSorting: 200 + iconIdentifier: t3-form-icon-single-select + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + DatePicker: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: dateFormat + templateName: Inspector-TextEditor + label: formEditor.elements.DatePicker.editor.dateFormat.label + propertyPath: properties.dateFormat + 400: + identifier: enableDatePicker + templateName: Inspector-CheckboxEditor + label: formEditor.elements.DatePicker.editor.enableDatePicker.label + propertyPath: properties.enableDatePicker + 500: + identifier: displayTimeSelector + templateName: Inspector-CheckboxEditor + label: formEditor.elements.DatePicker.editor.displayTimeSelector.label + propertyPath: properties.displayTimeSelector + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.DatePicker.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.DatePicker.editor.validators.EmptyValue.label + 20: + value: DateTime + label: formEditor.elements.DatePicker.editor.validators.DateTime.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + label: formEditor.elements.DatePicker.label + group: custom + groupSorting: 200 + iconIdentifier: t3-form-icon-date-picker + propertyCollections: + validators: + 10: + identifier: DateTime + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.DatePicker.validators.DateTime.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\DatePicker + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + StaticText: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.ReadOnlyFormElement.editor.label.label + propertyPath: label + 300: + identifier: staticText + templateName: Inspector-TextareaEditor + label: formEditor.elements.StaticText.editor.staticText.label + propertyPath: properties.text + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + text: '' + label: formEditor.elements.StaticText.label + group: custom + groupSorting: 600 + iconIdentifier: t3-form-icon-static-text + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + text: '' + ContentElement: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 300: + identifier: contentElement + templateName: Inspector-Typo3WinBrowserEditor + label: formEditor.elements.ContentElement.editor.contentElement.label + buttonLabel: formEditor.elements.ContentElement.editor.contentElement.buttonLabel + browsableType: tt_content + propertyPath: properties.contentElementUid + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + contentElementUid: '' + label: formEditor.elements.ContentElement.label + group: custom + groupSorting: 700 + iconIdentifier: t3-form-icon-content-element + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + properties: + contentElementUid: '' + FileUpload: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: allowedMimeTypes + templateName: Inspector-MultiSelectEditor + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.label + propertyPath: properties.allowedMimeTypes + selectOptions: + 10: + value: application/msword + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.doc + 20: + value: application/vnd.openxmlformats-officedocument.wordprocessingml.document + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.docx + 30: + value: application/msexcel + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.xls + 40: + value: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.xlsx + 50: + value: application/pdf + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.pdf + 60: + value: application/vnd.oasis.opendocument.text + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.odt + 70: + value: application/vnd.oasis.opendocument.spreadsheet-template + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.ods + 400: + identifier: saveToFileMount + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.FileUploadMixin.editor.saveToFileMount.label + propertyPath: properties.saveToFileMount + selectOptions: + 10: + value: '1:/user_upload/' + label: '1:/user_upload/' + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/pdf + label: formEditor.elements.FileUpload.label + group: custom + groupSorting: 100 + iconIdentifier: t3-form-icon-file-upload + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\FileUpload + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/msword + - application/vnd.openxmlformats-officedocument.wordprocessingml.document + - application/vnd.oasis.opendocument.text + - application/pdf + ImageUpload: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: allowedMimeTypes + templateName: Inspector-MultiSelectEditor + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.label + propertyPath: properties.allowedMimeTypes + selectOptions: + 10: + value: image/jpeg + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.jpg + 20: + value: image/png + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.png + 30: + value: image/bmp + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.bmp + 400: + identifier: saveToFileMount + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.FileUploadMixin.editor.saveToFileMount.label + propertyPath: properties.saveToFileMount + selectOptions: + 10: + value: '1:/user_upload/' + label: '1:/user_upload/' + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + label: formEditor.elements.ImageUpload.label + group: custom + groupSorting: 400 + iconIdentifier: t3-form-icon-image-upload + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\FileUpload + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + finishersDefinition: + Closure: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\ClosureFinisher + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Closure.editor.header.label + predefinedDefaults: + options: + closure: '' + Confirmation: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\ConfirmationFinisher + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Confirmation.editor.header.label + predefinedDefaults: + options: + message: '' + EmailToSender: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\EmailFinisher + options: + templatePathAndFilename: 'EXT:form/Resources/Private/Frontend/Templates/Finishers/Email/{@format}.html' + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label + predefinedDefaults: + options: + subject: '' + recipientAddress: '' + recipientName: '' + senderAddress: '' + senderName: '' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: true + FormEngine: + label: tt_content.finishersDefinition.EmailToSender.label + elements: + subject: + label: tt_content.finishersDefinition.EmailToSender.subject.label + config: + type: input + recipientAddress: + label: tt_content.finishersDefinition.EmailToSender.recipientAddress.label + config: + type: input + eval: required + recipientName: + label: tt_content.finishersDefinition.EmailToSender.recipientName.label + config: + type: input + senderAddress: + label: tt_content.finishersDefinition.EmailToSender.senderAddress.label + config: + type: input + eval: required + senderName: + label: tt_content.finishersDefinition.EmailToSender.senderName.label + config: + type: input + replyToAddress: + label: tt_content.finishersDefinition.EmailToSender.replyToAddress.label + config: + type: input + carbonCopyAddress: + label: tt_content.finishersDefinition.EmailToSender.carbonCopyAddress.label + config: + type: input + blindCarbonCopyAddress: + label: tt_content.finishersDefinition.EmailToSender.blindCarbonCopyAddress.label + config: + type: input + format: + label: tt_content.finishersDefinition.EmailToSender.format.label + config: + type: select + renderType: selectSingle + minitems: 1 + maxitems: 1 + size: 1 + items: + 10: + - tt_content.finishersDefinition.EmailToSender.format.1 + - html + 20: + - tt_content.finishersDefinition.EmailToSender.format.2 + - plaintext + EmailToReceiver: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\EmailFinisher + options: + templatePathAndFilename: 'EXT:form/Resources/Private/Frontend/Templates/Finishers/Email/{@format}.html' + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label + predefinedDefaults: + options: + subject: '' + recipientAddress: '' + recipientName: '' + senderAddress: '' + senderName: '' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: true + translation: + language: '' + FormEngine: + label: tt_content.finishersDefinition.EmailToReceiver.label + elements: + subject: + label: tt_content.finishersDefinition.EmailToReceiver.subject.label + config: + type: input + recipientAddress: + label: tt_content.finishersDefinition.EmailToReceiver.recipientAddress.label + config: + type: input + eval: required + recipientName: + label: tt_content.finishersDefinition.EmailToReceiver.recipientName.label + config: + type: input + senderAddress: + label: tt_content.finishersDefinition.EmailToReceiver.senderAddress.label + config: + type: input + eval: required + senderName: + label: tt_content.finishersDefinition.EmailToReceiver.senderName.label + config: + type: input + replyToAddress: + label: tt_content.finishersDefinition.EmailToReceiver.replyToAddress.label + config: + type: input + carbonCopyAddress: + label: tt_content.finishersDefinition.EmailToReceiver.carbonCopyAddress.label + config: + type: input + blindCarbonCopyAddress: + label: tt_content.finishersDefinition.EmailToReceiver.blindCarbonCopyAddress.label + config: + type: input + format: + label: tt_content.finishersDefinition.EmailToReceiver.format.label + config: + type: select + renderType: selectSingle + minitems: 1 + maxitems: 1 + size: 1 + items: + 10: + - tt_content.finishersDefinition.EmailToSender.format.1 + - html + 20: + - tt_content.finishersDefinition.EmailToSender.format.2 + - plaintext + translation: + language: + label: tt_content.finishersDefinition.EmailToReceiver.language.label + config: + type: select + renderType: selectSingle + minitems: 1 + maxitems: 1 + size: 1 + items: + 10: + - tt_content.finishersDefinition.EmailToReceiver.language.1 + - default + DeleteUploads: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\DeleteUploadsFinisher + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label + FlashMessage: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\FlashMessageFinisher + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label + predefinedDefaults: + options: + messageBody: '' + messageTitle: '' + messageArguments: '' + messageCode: 0 + severity: 0 + Redirect: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\RedirectFinisher + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Redirect.editor.header.label + predefinedDefaults: + options: + pageUid: '' + additionalParameters: '' + FormEngine: + label: tt_content.finishersDefinition.Redirect.label + elements: + pageUid: + label: tt_content.finishersDefinition.Redirect.pageUid.label + config: + type: group + internal_type: db + allowed: pages + size: 1 + minitems: 1 + maxitems: 1 + fieldWizard: + recordOverview: + disabled: 1 + additionalParameters: + label: tt_content.finishersDefinition.Redirect.additionalParameters.label + config: + type: input + SaveToDatabase: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\SaveToDatabaseFinisher + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label + predefinedDefaults: + options: { } + validatorsDefinition: + NotEmpty: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.FormElement.editor.requiredValidator.label + DateTime: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\DateTimeValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.DatePicker.validators.DateTime.editor.header.label + Alphanumeric: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\AlphanumericValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + Text: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\TextValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Text.label + StringLength: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\StringLengthValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + predefinedDefaults: + options: + minimum: '' + maximum: '' + EmailAddress: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\EmailAddressValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + Integer: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\IntegerValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Integer.label + Float: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\FloatValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Float.label + NumberRange: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\NumberRangeValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + predefinedDefaults: + options: + minimum: '' + maximum: '' + RegularExpression: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\RegularExpressionValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + predefinedDefaults: + options: + regularExpression: '' + Count: + implementationClassName: TYPO3\CMS\Form\Mvc\Validation\CountValidator + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + predefinedDefaults: + options: + minimum: '' + maximum: '' + formEditor: + translationFile: 'EXT:form/Resources/Private/Language/Database.xlf' + dynamicRequireJsModules: + app: TYPO3/CMS/Form/Backend/FormEditor + mediator: TYPO3/CMS/Form/Backend/FormEditor/Mediator + viewModel: TYPO3/CMS/Form/Backend/FormEditor/ViewModel + addInlineSettings: { } + maximumUndoSteps: 10 + stylesheets: + 200: 'EXT:form/Resources/Public/Css/form.css' + formEditorFluidConfiguration: + templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/' + formEditorPartials: + FormElement-_ElementToolbar: Stage/_ElementToolbar + FormElement-_UnknownElement: Stage/_UnknownElement + FormElement-Page: Stage/Page + FormElement-SummaryPage: Stage/SummaryPage + FormElement-Fieldset: Stage/Fieldset + FormElement-GridContainer: Stage/Fieldset + FormElement-GridRow: Stage/Fieldset + FormElement-Text: Stage/SimpleTemplate + FormElement-Password: Stage/SimpleTemplate + FormElement-AdvancedPassword: Stage/SimpleTemplate + FormElement-Textarea: Stage/SimpleTemplate + FormElement-Checkbox: Stage/SimpleTemplate + FormElement-MultiCheckbox: Stage/SelectTemplate + FormElement-MultiSelect: Stage/SelectTemplate + FormElement-RadioButton: Stage/SelectTemplate + FormElement-SingleSelect: Stage/SelectTemplate + FormElement-DatePicker: Stage/SimpleTemplate + FormElement-StaticText: Stage/StaticText + FormElement-Hidden: Stage/SimpleTemplate + FormElement-ContentElement: Stage/ContentElement + FormElement-FileUpload: Stage/FileUploadTemplate + FormElement-ImageUpload: Stage/FileUploadTemplate + Modal-InsertElements: Modals/InsertElements + Modal-InsertPages: Modals/InsertPages + Modal-ValidationErrors: Modals/ValidationErrors + Inspector-FormElementHeaderEditor: Inspector/FormElementHeaderEditor + Inspector-CollectionElementHeaderEditor: Inspector/CollectionElementHeaderEditor + Inspector-TextEditor: Inspector/TextEditor + Inspector-PropertyGridEditor: Inspector/PropertyGridEditor + Inspector-SingleSelectEditor: Inspector/SingleSelectEditor + Inspector-MultiSelectEditor: Inspector/MultiSelectEditor + Inspector-GridColumnViewPortConfigurationEditor: Inspector/GridColumnViewPortConfigurationEditor + Inspector-TextareaEditor: Inspector/TextareaEditor + Inspector-RemoveElementEditor: Inspector/RemoveElementEditor + Inspector-FinishersEditor: Inspector/FinishersEditor + Inspector-ValidatorsEditor: Inspector/ValidatorsEditor + Inspector-RequiredValidatorEditor: Inspector/RequiredValidatorEditor + Inspector-CheckboxEditor: Inspector/CheckboxEditor + Inspector-Typo3WinBrowserEditor: Inspector/Typo3WinBrowserEditor + formElementPropertyValidatorsDefinition: + NotEmpty: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NotEmpty.label + Integer: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.Integer.label + NaiveEmail: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label + NaiveEmailOrEmpty: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label + FormElementIdentifierWithinCurlyBracesInclusive: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label + FormElementIdentifierWithinCurlyBracesExclusive: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label + formElementGroups: + input: + label: formEditor.formElementGroups.input.label + select: + label: formEditor.formElementGroups.select.label + custom: + label: formEditor.formElementGroups.custom.label + container: + label: formEditor.formElementGroups.container.label + page: + label: formEditor.formElementGroups.page.label + formEngine: + translationFile: 'EXT:form/Resources/Private/Language/Database.xlf' + formManager: + dynamicRequireJsModules: + app: TYPO3/CMS/Form/Backend/FormManager + viewModel: TYPO3/CMS/Form/Backend/FormManager/ViewModel + stylesheets: + 100: 'EXT:form/Resources/Public/Css/form.css' + translationFile: 'EXT:form/Resources/Private/Language/Database.xlf' + javaScriptTranslationFile: 'EXT:form/Resources/Private/Language/locallang_formManager_javascript.xlf' + selectablePrototypesConfiguration: + 100: + identifier: standard + label: formManager.selectablePrototypesConfiguration.standard.label + newFormTemplates: + 100: + templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/BlankForm.yaml' + label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.blankForm.label + 200: + templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/SimpleContactForm.yaml' + label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.simpleContactForm.label + controller: + deleteAction: + errorTitle: formManagerController.deleteAction.error.title + errorMessage: formManagerController.deleteAction.error.body diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/formManager/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/formManager/Index.rst new file mode 100644 index 000000000000..ffa64832ef93 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/formManager/Index.rst @@ -0,0 +1,436 @@ +.. include:: ../../Includes.txt + + +.. _typo3.cms.form.formmanager: + +============= +[formManager] +============= + + +.. _typo3.cms.form.formmanager-properties: + +Properties +========== + + +.. _typo3.cms.form.formmanager.dynamicrequirejsmodules.app: + +dynamicRequireJsModules.app +--------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.dynamicRequireJsModules.app + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + dynamicRequireJsModules: + app: TYPO3/CMS/Form/Backend/FormManager + viewModel: TYPO3/CMS/Form/Backend/FormManager/ViewModel + +:aspect:`Description` + Internal setting. RequireJS path for the form manager JavaScript app. + + +.. _typo3.cms.form.formmanager.dynamicrequirejsmodules.viewmodel: + +dynamicRequireJsModules.viewModel +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.dynamicRequireJsModules.viewModel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + dynamicRequireJsModules: + app: TYPO3/CMS/Form/Backend/FormManager + viewModel: TYPO3/CMS/Form/Backend/FormManager/ViewModel + +:aspect:`Description` + Internal setting. RequireJS path for the form manager JavaScript view model. + + +.. _typo3.cms.form.formmanager.stylesheets: + +stylesheets +----------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.stylesheets + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + stylesheets: + 100: 'EXT:form/Resources/Public/Css/form.css' + +:aspect:`Description` + Internal setting. Path for the form manager CSS file. + + +.. _typo3.cms.form.formmanager.translationfile: + +translationFile +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + translationFile: 'EXT:form/Resources/Private/Language/Database.xlf' + +:aspect:`Good to know` + :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>` + +:aspect:`Description` + The translation file(s) which should be used to translate parts of the form manager. + + +.. _typo3.cms.form.formmanager.javascripttranslationfile: + +javaScriptTranslationFile +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.javaScriptTranslationFile + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + javaScriptTranslationFile: 'EXT:form/Resources/Private/Language/locallang_formManager_javascript.xlf' + +:aspect:`Description` + Internal setting. Path for the inline language labels for the form manager app. + + +.. _typo3.cms.form.formmanager.selectableprototypesconfiguration: + +selectablePrototypesConfiguration +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + selectablePrototypesConfiguration: + 100: + identifier: standard + label: formManager.selectablePrototypesConfiguration.standard.label + newFormTemplates: + 100: + templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/BlankForm.yaml' + label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.blankForm.label + 200: + templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/SimpleContactForm.yaml' + label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.simpleContactForm.label + +:aspect:`Good to know` + - :ref:`"Start templates"<concepts-formmanager-starttemplate>` + - :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>` + +:aspect:`Description` + Array with numerical Keys. Configure the ``Start template`` selection list within the ``form manager`` "Advanced settings" step. + + +.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.identifier: + +selectablePrototypesConfiguration.*.identifier +---------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes <typo3.cms.form.prototypes>` + +:aspect:`Good to know` + - :ref:`"Start templates"<concepts-formmanager-starttemplate>` + +:aspect:`Description` + Reference to a ``prototype`` which should be used for the newly created form definition. + + +.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.label: + +selectablePrototypesConfiguration.*.label +----------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Good to know` + - :ref:`"Start templates"<concepts-formmanager-starttemplate>` + - :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>` + +:aspect:`Description` + The ``Form prototype`` selectlist label for this ``prototype`` within the ``form manager`` "Advanced settings" step. + + +.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.newformtemplates: + +selectablePrototypesConfiguration.*.newFormTemplates +---------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.newFormTemplates + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + selectablePrototypesConfiguration: + 100: + identifier: standard + label: formManager.selectablePrototypesConfiguration.standard.label + newFormTemplates: + 100: + templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/BlankForm.yaml' + label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.blankForm.label + 200: + templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/SimpleContactForm.yaml' + label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.simpleContactForm.label + +:aspect:`Good to know` + - :ref:`"Start templates"<concepts-formmanager-starttemplate>` + - :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>` + +:aspect:`Description` + Array with numerical Keys. Configure the ``Start templates`` selectlist for this ``prototype`` within the ``form manager`` "Advanced settings" step. + + +.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.newformtemplates.*.templatepath: + +selectablePrototypesConfiguration.*.newFormTemplates.*.templatePath +------------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.newFormTemplates.*.templatePath + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Good to know` + - :ref:`"Start templates"<concepts-formmanager-starttemplate>` + - :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>` + +:aspect:`Description` + The filesystem path to the `Start template`` yaml file. + + +.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.newformtemplates.*.label: + +selectablePrototypesConfiguration.*.newFormTemplates.*.label +------------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.newFormTemplates.*.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Good to know` + - :ref:`"Start templates"<concepts-formmanager-starttemplate>` + - :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>` + +:aspect:`Description` + The ``Start template`` selectlist label for this ``Start template`` within the ``form manager`` "Advanced settings" step. + + +.. _typo3.cms.form.formmanager.controller: + +controller +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.controller + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + controller: + deleteAction: + errorTitle: formManagerController.deleteAction.error.title + errorMessage: formManagerController.deleteAction.error.body + +:aspect:`Description` + Internal setting. Configure the ``form manager`` flash message texts. + + +.. _typo3.cms.form.formmanager.controller.deleteaction.errortitle: + +controller.deleteAction.errorTitle +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.controller.deleteAction.errorTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + controller: + deleteAction: + errorTitle: formManagerController.deleteAction.error.title + errorMessage: formManagerController.deleteAction.error.body + +:aspect:`Description` + Internal setting. Configure the ``form manager`` flash message texts. + + +.. _typo3.cms.form.formmanager.controller.deleteaction.errormessage: + +controller.deleteAction.errorMessage +------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.formManager.controller.deleteAction.errorMessage + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + controller: + deleteAction: + errorTitle: formManagerController.deleteAction.error.title + errorMessage: formManagerController.deleteAction.error.body + +:aspect:`Description` + Internal setting. Configure the ``form manager`` flash message texts. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/persistenceManager/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/persistenceManager/Index.rst new file mode 100644 index 000000000000..f1cb928b514d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/persistenceManager/Index.rst @@ -0,0 +1,146 @@ +.. include:: ../../Includes.txt + + +.. _typo3.cms.form.persistencemanager: + +==================== +[persistenceManager] +==================== + + +.. _typo3.cms.form.persistencemanager-properties: + +Properties +========== + +.. _typo3.cms.form.persistencemanager.allowedfilemounts: + +allowedFileMounts +----------------- + +:aspect:`Option path` + TYPO3.CMS.Form.persistenceManager.allowedFileMounts + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form manager/ form editor/ plugin) + +:aspect:`Mandatory` + Yes (if :ref:`allowedExtensionPaths <TYPO3.CMS.Form.persistenceManager.allowedExtensionPaths>` is not set) + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + persistenceManager: + allowedFileMounts: + 10: '1:/user_upload/' + +:aspect:`Good to know` + :ref:`Form/ File storages<concepts-form-file-storages>` + +:aspect:`Description` + EXT:form stores the form definitions within the file system and thus needs + write access to this storage. By default, the filemount ``user_uploads`` is + used. It is possible to configure a different and/ or an additional + filemount which is then utilized for storing and reading forms. + + +.. _typo3.cms.form.persistencemanager.allowSaveToExtensionPaths: + +allowSaveToExtensionPaths +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.persistenceManager.allowSaveToExtensionPaths + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + persistenceManager: + allowSaveToExtensionPaths: false + +:aspect:`Good to know` + :ref:`Form/ File storages<concepts-form-file-storages>` + +:aspect:`Description` + Set this to ``true`` if you want to allow backend users to **edit** forms stored within your own extension. + + +.. _typo3.cms.form.persistencemanager.allowDeleteFromExtensionPaths: + +allowDeleteFromExtensionPaths +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.persistenceManager.allowDeleteFromExtensionPaths + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form manager) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + persistenceManager: + allowDeleteFromExtensionPaths: false + +:aspect:`Good to know` + :ref:`Form/ File storages<concepts-form-file-storages>` + +:aspect:`Description` + Set this to ``true`` if you want to allow backend users to **delete** forms stored within your own extension. + + +.. _typo3.cms.form.persistencemanager.allowedExtensionPaths: + +allowedExtensionPaths +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.persistenceManager.allowedExtensionPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form manager/ form editor/ plugin) + +:aspect:`Mandatory` + Yes (if :ref:`allowedFileMounts <TYPO3.CMS.Form.persistenceManager.allowedFileMounts>` is not set) + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + :ref:`Form/ File storages<concepts-form-file-storages>` + +:aspect:`Description` + Define the paths to folders which contain forms within your own extension. + For example: + + .. code-block:: yaml + + allowedExtensionPaths: + 10: EXT:my_site_package/Resources/Private/Forms/ diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/Index.rst new file mode 100644 index 000000000000..0804acdbac81 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/Index.rst @@ -0,0 +1,95 @@ +.. include:: ../../Includes.txt + + +.. _typo3.cms.form.prototypes: + +============ +[prototypes] +============ + + +.. _typo3.cms.form.prototypes-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.*: + +prototypes +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form manager/ form editor/ plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + prototypes: + standard: + [...] + +:aspect:`Good to know` + - :ref:`"Prototypes"<concepts-configuration-prototypes>` + - :ref:`"Form configuration vs. form definition"<concepts-formdefinition-vs-formconfiguration>` + +:aspect:`Description` + Array which defines the available prototypes. Every key within this array is called the ``<prototypeIdentifier>``. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>: + +<prototypeIdentifier> +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier> + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form manager/ form editor/ plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`"TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.identifier"<typo3.cms.form.formmanager.selectableprototypesconfiguration.*.identifier>` + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + prototypes: + standard: + [...] + +:aspect:`Good to know` + - :ref:`"Prototypes"<concepts-configuration-prototypes>` + - :ref:`"Form configuration vs. form definition"<concepts-formdefinition-vs-formconfiguration>` + +:aspect:`Description` + This array key identifies the `prototype``. Every ``form definition`` references to such a ``<prototypeIdentifier>`` through the property ``prototypeName``. + + +Subproperties +============= + +.. toctree:: + + formElementsDefinition/Index + finishersDefinition/Index + validatorsDefinition/Index + formEditor/Index + formEngine/Index diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/Index.rst new file mode 100644 index 000000000000..a2e99eed5ecb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/Index.rst @@ -0,0 +1,395 @@ +.. include:: ../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition: + +===================== +[finishersDefinition] +===================== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.*: + +[finishersDefinition] +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + prototypes: + <prototypeIdentifier>: + finishersDefinition: + [...] + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + Array which defines the available finishers. Every key within this array is called the ``<finisherIdentifier>``. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.<finisheridentifier>: + +<finisherIdentifier> +-------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisherIdentifier> + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + + prototypes: + standard: + Closure: + [...] + Confirmation: + [...] + EmailToSender: + [...] + EmailToReceiver: + [...] + DeleteUploads: + [...] + FlashMessage: + [...] + Redirect: + [...] + SaveToDatabase: + [...] + +:aspect:`Related options` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.\<formElementTypeIdentifier>.formEditor.propertyCollections.finishers.[*].identifier"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.propertycollections.finishers.*.identifier>` + - :ref:`"[FinishersEditor] selectOptions.[*].value"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-finisherseditor>` + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + This array key identifies a finisher. This identifier could be used to attach a finisher to a form. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.<finisheridentifier>-commonproperties: + +Common <finisherIdentifier> properties +============================================= + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + .. include:: properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.options: + +options +------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.options + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + Array with finisher options. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.translation.translationFile: + +translation.translationFile +--------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.translation.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + Filesystem path(s) to translation files which should be searched for finisher translations. + If the property is undefined, - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.translation.translationFile"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.translation.translationfile>` will be used. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formeditor: + +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Array with configurations for the ``form editor`` + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: properties/predefinedDefaults.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formengine: + +FormEngine +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.FormEngine + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Array with configurations for the ``form plugin`` + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.FormEngine.label: + +FormEngine.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.FormEngine.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + .. include:: properties/formEngine/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.FormEngine.elements: + +FormEngine.elements +------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.FormEngine.elements + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + .. include:: properties/formEngine/elements.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.<finisheridentifier>-concreteconfigurations: + +Concrete configurations +======================= + +.. toctree:: + + finishers/Closure + finishers/Confirmation + finishers/EmailToReceiver + finishers/EmailToSender + finishers/DeleteUploads + finishers/FlashMessage + finishers/Redirect + finishers/SaveToDatabase diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Closure.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Closure.rst new file mode 100644 index 000000000000..768452cccf58 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Closure.rst @@ -0,0 +1,186 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.closure: + +========= +[Closure] +========= + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionclosure-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Closure: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\ClosureFinisher + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.options.closure: + +options.closure +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.options.closure + +:aspect:`Data type` + \Closure + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + null + +.. :aspect:`Good to know` + ToDo + - :ref:`"Closure finisher"<apireference-finisheroptions-closurefinisher>` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + The closure which are invoked if the finisher is treggered. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Closure: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Closure.editor.header.label + predefinedDefaults: + options: + closure: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Closure: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Closure.editor.header.label + predefinedDefaults: + options: + closure: '' + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Closure: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Closure.editor.header.label + predefinedDefaults: + options: + closure: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Confirmation.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Confirmation.rst new file mode 100644 index 000000000000..f9f94f34bad5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Confirmation.rst @@ -0,0 +1,217 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.confirmation: + +============== +[Confirmation] +============== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionconfirmation-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Confirmation: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\ConfirmationFinisher + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.message: + +options.message +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.message + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + The form has been submitted. + +:aspect:`Good to know` + - :ref:`"Confirmation finisher"<apireference-finisheroptions-confirmationfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + The text which is shown if the finisher is invoked. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.translation.translationfile: + +options.translation.translationFile +----------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.translation.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Confirmation finisher"<apireference-finisheroptions-confirmationfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + If set, this translation file(s) will be used for finisher option translations. + If not set, the translation file(s) from the 'Form' element will be used. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Confirmation: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Confirmation.editor.header.label + predefinedDefaults: + options: + message: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Confirmation: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Confirmation.editor.header.label + predefinedDefaults: + options: + message: '' + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Confirmation: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Confirmation.editor.header.label + predefinedDefaults: + options: + message: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/DeleteUploads.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/DeleteUploads.rst new file mode 100644 index 000000000000..eabb81fc6b1f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/DeleteUploads.rst @@ -0,0 +1,114 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.deleteuploads: + +=============== +[DeleteUploads] +=============== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitiondeleteuploads-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.deleteuploads.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.DeleteUploads.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + DeleteUploads: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\DeleteUploadsFinisher + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + Array which defines the available finishers. Every key within this array is called the ``<finisherIdentifier>`` + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.deleteuploads.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.DeleteUploads.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + DeleteUploads: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.deleteuploads.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.DeleteUploads.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + DeleteUploads: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/EmailToReceiver.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/EmailToReceiver.rst new file mode 100644 index 000000000000..52205d0e0c96 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/EmailToReceiver.rst @@ -0,0 +1,788 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.emailtoreceiver: + +================= +[EmailToReceiver] +================= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionemailtoreceiver-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + EmailToReceiver: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\EmailFinisher + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.subject: + +options.subject +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.subject + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + Subject of the email. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.recipientaddress: + +options.recipientAddress +------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.recipientAddress + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of the recipient (To). + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.recipientname: + +options.recipientName +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.recipientName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Human-readable name of the recipient. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.senderaddress: + +options.senderAddress +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.senderAddress + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of the sender/ visitor (From). + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.sendername: + +options.senderName +------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.senderName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Human-readable name of the sender. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.replytoaddress: + +options.replyToAddress +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.replyToAddress + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of to be used as reply-to email (use multiple addresses with an array). + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple reply-to addresses (use multiple addresses with an array) + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.carboncopyaddress: + +options.carbonCopyAddress +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.carbonCopyAddress + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of the copy recipient (use multiple addresses with an array) + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple copy recipient addresses (use multiple addresses with an array) + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.blindcarboncopyaddress: + +options.blindCarbonCopyAddress +------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.blindCarbonCopyAddress + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of the blind copy recipient (use multiple addresses with an array) + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple blind copy recipient addresses (use multiple addresses with an array) + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.format: + +options.format +-------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.format + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + html + +:aspect:`Possible values` + html/ plaintext + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + The format of the email. By default mails are sent as HTML. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.attachuploads: + +options.attachUploads +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.attachUploads + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + true + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + If set, all uploaded items are attached to the email. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.translation.language: + +options.translation.language +---------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.translation.language + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + If not set, the finisher options are translated depending on the current frontend language (if translations exists). + This option allows you to force translations for a given sys_language isocode, e.g 'dk' or 'de'. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.translation.translationfile: + +options.translation.translationFile +----------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.translation.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + If set, this translation file(s) will be used for finisher option translations. + If not set, the translation file(s) from the 'Form' element will be used. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.templatepathandfilename: + +options.templatePathAndFilename +------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.templatePathAndFilename + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + EmailToReceiver: + options: + templatePathAndFilename: 'EXT:form/Resources/Private/Frontend/Templates/Finishers/Email/{@format}.html' + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + +:aspect:`Description` + Template path and filename for the mail body. + The placeholder {\@format} will be replaced with the value from option ``format``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.partialrootpaths: + +options.partialRootPaths +------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.partialRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + +:aspect:`Description` + Fluid layout paths. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.layoutrootpaths: + +options.layoutRootPaths +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.layoutRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + +:aspect:`Description` + Fluid partial paths. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.variables: + +options.variables +----------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.variables + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + +:aspect:`Description` + Associative array of variables which are available inside the Fluid template. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + EmailToReceiver: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label + predefinedDefaults: + options: + subject: '' + recipientAddress: '' + recipientName: '' + senderAddress: '' + senderName: '' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: true + translation: + language: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + EmailToReceiver: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label + predefinedDefaults: + options: + subject: '' + recipientAddress: '' + recipientName: '' + senderAddress: '' + senderName: '' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: true + translation: + language: '' + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + EmailToReceiver: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label + predefinedDefaults: + options: + subject: '' + recipientAddress: '' + recipientName: '' + senderAddress: '' + senderName: '' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: true + translation: + language: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formengine.label: + +FormEngine.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.FormEngine.label + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + EmailToReceiver: + FormEngine: + label: tt_content.finishersDefinition.EmailToReceiver.label + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + .. include:: ../properties/formEngine/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formengine.elements: + +FormEngine.elements +------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.FormEngine.elements + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + EmailToReceiver: + FormEngine: + label: tt_content.finishersDefinition.EmailToReceiver.label + elements: + subject: + label: tt_content.finishersDefinition.EmailToReceiver.subject.label + config: + type: input + recipientAddress: + label: tt_content.finishersDefinition.EmailToReceiver.recipientAddress.label + config: + type: input + eval: required + recipientName: + label: tt_content.finishersDefinition.EmailToReceiver.recipientName.label + config: + type: input + senderAddress: + label: tt_content.finishersDefinition.EmailToReceiver.senderAddress.label + config: + type: input + eval: required + senderName: + label: tt_content.finishersDefinition.EmailToReceiver.senderName.label + config: + type: input + replyToAddress: + label: tt_content.finishersDefinition.EmailToReceiver.replyToAddress.label + config: + type: input + carbonCopyAddress: + label: tt_content.finishersDefinition.EmailToReceiver.carbonCopyAddress.label + config: + type: input + blindCarbonCopyAddress: + label: tt_content.finishersDefinition.EmailToReceiver.blindCarbonCopyAddress.label + config: + type: input + format: + label: tt_content.finishersDefinition.EmailToReceiver.format.label + config: + type: select + renderType: selectSingle + minitems: 1 + maxitems: 1 + size: 1 + items: + 10: + - tt_content.finishersDefinition.EmailToSender.format.1 + - html + 20: + - tt_content.finishersDefinition.EmailToSender.format.2 + - plaintext + translation: + language: + label: tt_content.finishersDefinition.EmailToReceiver.language.label + config: + type: select + renderType: selectSingle + minitems: 1 + maxitems: 1 + size: 1 + items: + 10: + - tt_content.finishersDefinition.EmailToReceiver.language.1 + - default + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + .. include:: ../properties/formEngine/elements.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/EmailToSender.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/EmailToSender.rst new file mode 100644 index 000000000000..1eccf63e9699 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/EmailToSender.rst @@ -0,0 +1,788 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.emailtosender: + +================= +[EmailToSender] +================= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionemailtosender-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + EmailToSender: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\EmailFinisher + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.subject: + +options.subject +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.subject + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + Subject of the email. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.recipientaddress: + +options.recipientAddress +------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.recipientAddress + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of the recipient (To). + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.recipientname: + +options.recipientName +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.recipientName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Human-readable name of the recipient. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.senderaddress: + +options.senderAddress +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.senderAddress + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of the sender/ visitor (From). + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.sendername: + +options.senderName +------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.senderName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Human-readable name of the sender. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.replytoaddress: + +options.replyToAddress +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.replyToAddress + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of to be used as reply-to email (use multiple addresses with an array). + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple reply-to addresses (use multiple addresses with an array) + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.carboncopyaddress: + +options.carbonCopyAddress +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.carbonCopyAddress + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of the copy recipient (use multiple addresses with an array) + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple copy recipient addresses (use multiple addresses with an array) + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.blindcarboncopyaddress: + +options.blindCarbonCopyAddress +------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.blindCarbonCopyAddress + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Email address of the blind copy recipient (use multiple addresses with an array) + +.. note:: + For the moment, the ``form editor`` cannot deal with multiple blind copy recipient addresses (use multiple addresses with an array) + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.format: + +options.format +-------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.format + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + html + +:aspect:`Possible values` + html/ plaintext + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + The format of the email. By default mails are sent as HTML. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.attachuploads: + +options.attachUploads +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.attachUploads + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + true + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + If set, all uploaded items are attached to the email. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.translation.language: + +options.translation.language +---------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.translation.language + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + If not set, the finisher options are translated depending on the current frontend language (if translations exists). + This option allows you to force translations for a given sys_language isocode, e.g 'dk' or 'de'. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.translation.translationfile: + +options.translation.translationFile +----------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.translation.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + If set, this translation file(s) will be used for finisher option translations. + If not set, the translation file(s) from the 'Form' element will be used. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.templatepathandfilename: + +options.templatePathAndFilename +------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.templatePathAndFilename + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + EmailToSender: + options: + templatePathAndFilename: 'EXT:form/Resources/Private/Frontend/Templates/Finishers/Email/{@format}.html' + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + +:aspect:`Description` + Template path and filename for the mail body. + The placeholder {\@format} will be replaced with the value from option ``format``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.partialrootpaths: + +options.partialRootPaths +------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.partialRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + +:aspect:`Description` + Fluid layout paths. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.layoutrootpaths: + +options.layoutRootPaths +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.layoutRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + +:aspect:`Description` + Fluid partial paths. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.variables: + +options.variables +----------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.variables + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>` + +:aspect:`Description` + Associative array of variables which are available inside the Fluid template. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + EmailToSender: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label + predefinedDefaults: + options: + subject: '' + recipientAddress: '' + recipientName: '' + senderAddress: '' + senderName: '' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: true + translation: + language: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + EmailToSender: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label + predefinedDefaults: + options: + subject: '' + recipientAddress: '' + recipientName: '' + senderAddress: '' + senderName: '' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: true + translation: + language: '' + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + EmailToSender: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label + predefinedDefaults: + options: + subject: '' + recipientAddress: '' + recipientName: '' + senderAddress: '' + senderName: '' + replyToAddress: '' + carbonCopyAddress: '' + blindCarbonCopyAddress: '' + format: html + attachUploads: true + translation: + language: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formengine.label: + +FormEngine.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.FormEngine.label + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + EmailToSender: + FormEngine: + label: tt_content.finishersDefinition.EmailToSender.label + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + .. include:: ../properties/formEngine/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formengine.elements: + +FormEngine.elements +------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.FormEngine.elements + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + EmailToSender: + FormEngine: + label: tt_content.finishersDefinition.EmailToSender.label + elements: + subject: + label: tt_content.finishersDefinition.EmailToSender.subject.label + config: + type: input + recipientAddress: + label: tt_content.finishersDefinition.EmailToSender.recipientAddress.label + config: + type: input + eval: required + recipientName: + label: tt_content.finishersDefinition.EmailToSender.recipientName.label + config: + type: input + senderAddress: + label: tt_content.finishersDefinition.EmailToSender.senderAddress.label + config: + type: input + eval: required + senderName: + label: tt_content.finishersDefinition.EmailToSender.senderName.label + config: + type: input + replyToAddress: + label: tt_content.finishersDefinition.EmailToSender.replyToAddress.label + config: + type: input + carbonCopyAddress: + label: tt_content.finishersDefinition.EmailToSender.carbonCopyAddress.label + config: + type: input + blindCarbonCopyAddress: + label: tt_content.finishersDefinition.EmailToSender.blindCarbonCopyAddress.label + config: + type: input + format: + label: tt_content.finishersDefinition.EmailToSender.format.label + config: + type: select + renderType: selectSingle + minitems: 1 + maxitems: 1 + size: 1 + items: + 10: + - tt_content.finishersDefinition.EmailToSender.format.1 + - html + 20: + - tt_content.finishersDefinition.EmailToSender.format.2 + - plaintext + translation: + language: + label: tt_content.finishersDefinition.EmailToSender.language.label + config: + type: select + renderType: selectSingle + minitems: 1 + maxitems: 1 + size: 1 + items: + 10: + - tt_content.finishersDefinition.EmailToSender.language.1 + - default + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + .. include:: ../properties/formEngine/elements.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/FlashMessage.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/FlashMessage.rst new file mode 100644 index 000000000000..c4d591299603 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/FlashMessage.rst @@ -0,0 +1,341 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.flashmessage: + +============== +[FlashMessage] +============== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionflashmessage-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + FlashMessage: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\FlashMessageFinisher + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.messagebody: + +options.messageBody +------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.messageBody + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + null + +:aspect:`Good to know` + - :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + The flash message body TEXT. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.messagetitle: + +options.messageTitle +-------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.messageTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Good to know` + - :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + The flash message title. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.messagearguments: + +options.messageArguments +------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.messageArguments + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty array + +:aspect:`Good to know` + - :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + The flash message arguments, if needed. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.messagecode: + +options.messageCode +------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.messageCode + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + null + +:aspect:`Good to know` + - :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>` + +:aspect:`Description` + The flash message code, if needed. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.severity: + +options.severity +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.severity + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + \TYPO3\CMS\Core\Messaging\AbstractMessage::OK (0) + +:aspect:`Good to know` + - :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>` + +:aspect:`Description` + The flash message severity code. + See \TYPO3\CMS\Core\Messaging\AbstractMessage constants for the codes. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.translation.translationfile: + +options.translation.translationFile +----------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.translation.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + If set, this translation file(s) will be used for finisher option translations. + If not set, the translation file(s) from the 'Form' element will be used. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + FlashMessage: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label + predefinedDefaults: + options: + messageBody: '' + messageTitle: '' + messageArguments: '' + messageCode: 0 + severity: 0 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + FlashMessage: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label + predefinedDefaults: + options: + messageBody: '' + messageTitle: '' + messageArguments: '' + messageCode: 0 + severity: 0 + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + FlashMessage: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label + predefinedDefaults: + options: + messageBody: '' + messageTitle: '' + messageArguments: '' + messageCode: 0 + severity: 0 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Redirect.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Redirect.rst new file mode 100644 index 000000000000..7571afd72d5f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/Redirect.rst @@ -0,0 +1,386 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.redirect: + +========== +[Redirect] +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionredirect-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Redirect: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\RedirectFinisher + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.pageuid: + +options.pageUid +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.pageUid + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + 1 + +:aspect:`Good to know` + - :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Redirect to this page uid. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.additionalparameters: + +options.additionalParameters +---------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.additionalParameters + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty string + +:aspect:`Good to know` + - :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Additional parameters which should be used on the target page. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.delay: + +options.delay +------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.delay + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + 0 + +:aspect:`Good to know` + - :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + The redirect delay in seconds. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.statuscode: + +options.statusCode +------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.statusCode + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + 303 + +:aspect:`Good to know` + - :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + The HTTP status code for the redirect. Default is "303 See Other". + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.translation.translationfile: + +options.translation.translationFile +----------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.translation.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + If set, this translation file(s) will be used for finisher option translations. + If not set, the translation file(s) from the 'Form' element will be used. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Redirect: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Redirect.editor.header.label + predefinedDefaults: + options: + pageUid: '' + additionalParameters: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Redirect: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Redirect.editor.header.label + predefinedDefaults: + options: + pageUid: '' + additionalParameters: '' + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Redirect: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.Redirect.editor.header.label + predefinedDefaults: + options: + pageUid: '' + additionalParameters: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formengine.label: + +FormEngine.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.FormEngine.label + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Redirect: + FormEngine: + label: tt_content.finishersDefinition.Redirect.label + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + .. include:: ../properties/formEngine/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formengine.elements: + +FormEngine.elements +------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.FormEngine.elements + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Redirect: + FormEngine: + label: tt_content.finishersDefinition.Redirect.label + elements: + pageUid: + label: tt_content.finishersDefinition.Redirect.pageUid.label + config: + type: group + internal_type: db + allowed: pages + size: 1 + minitems: 1 + maxitems: 1 + fieldWizard: + recordOverview: + disabled: 1 + additionalParameters: + label: tt_content.finishersDefinition.Redirect.additionalParameters.label + config: + type: input + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + .. include:: ../properties/formEngine/elements.rst + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/SaveToDatabase.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/SaveToDatabase.rst new file mode 100644 index 000000000000..d1163c79b596 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/finishers/SaveToDatabase.rst @@ -0,0 +1,489 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.savetodatabase: + +================ +[SaveToDatabase] +================ + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionsavetodatabase-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + SaveToDatabase: + implementationClassName: TYPO3\CMS\Form\Domain\Finishers\SaveToDatabaseFinisher + +:aspect:`Good to know` + - :ref:`"Custom finisher implementations"<concepts-frontendrendering-codecomponents-customfinisherimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.table: + +options.table +------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.table + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + null + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Insert or update values into this table. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.mode: + +options.mode +------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.mode + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + 'insert' + +:aspect:`Possible values` + insert/ update + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + ``insert`` will create a new database row with the values from the submitted form and/or some predefined values. @see options.elements and options.databaseFieldMappings + + ``update`` will update a given database row with the values from the submitted form and/or some predefined values. 'options.whereClause' is then required. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.whereclause: + +options.whereClause +------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.whereClause + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes, if mode = update + +:aspect:`Default value` + empty array + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + This where clause will be used for a database update action. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements: + +options.elements +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + empty array + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Use ``options.elements`` to map form element values to existing database columns. + Each key within ``options.elements`` has to match with a form element identifier. + The value for each key within ``options.elements`` is an array with additional informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements.<formelementidentifier>.mapondatabasecolumn: + +options.elements.<formElementIdentifier>.mapOnDatabaseColumn +------------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements.<formElementIdentifier>.mapOnDatabaseColumn + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + The value from the submitted form element with the identifier ``<formElementIdentifier>`` will be written into this database column. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements.<formelementidentifier>.mapondatabasecolumn.savefileidentifierinsteadofuid: + +options.elements.<formElementIdentifier>.mapOnDatabaseColumn.saveFileIdentifierInsteadOfUid +------------------------------------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements.<formElementIdentifier>.mapOnDatabaseColumn.saveFileIdentifierInsteadOfUid + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + false + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Set this to true if the database column should not be written if the value from the submitted form element with the identifier + ``<formElementIdentifier>`` is empty (think about password fields etc.) + + This setting only rules for form elements which creates a FAL object like ``FileUpload`` or ``ImageUpload``. + By default, the uid of the FAL object will be written into the database column. Set this to true if you want to store the + FAL identifier (1:/user_uploads/some_uploaded_pic.jpg) instead. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements.<formelementidentifier>.mapondatabasecolumn.skipifvalueisempty: + +options.elements.<formElementIdentifier>.mapOnDatabaseColumn.skipIfValueIsEmpty +------------------------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements.<formElementIdentifier>.mapOnDatabaseColumn.skipIfValueIsEmpty + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + false + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Set this to true if the database column should not be written if the value from the submitted form element with the identifier + ``<formElementIdentifier>`` is empty (think about password fields etc.) + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.databasecolumnmappings: + +options.databaseColumnMappings +------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.databaseColumnMappings + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + empty array + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Use this to map database columns to static values. + Each key within ``options.databaseColumnMappings`` has to match with an existing database column. + The value for each key within ``options.databaseColumnMappings`` is an array with additional informations. + + This mapping is done *before* the ``options.element`` mapping. + This means if you map a database column to a value through ``options.databaseColumnMappings`` and map a submitted + form element value to the same database column through ``options.element``, the submitted form element value + will override the value you set within ``options.databaseColumnMappings``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.databasecolumnmappings.<databasecolumnname>.value: + +options.databaseColumnMappings.<databaseColumnName>.value +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.databaseColumnMappings.<databaseColumnName>.value + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + The value which will be written to the database column. + You can also use the :ref:`FormRuntime accessor feature<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` to access every getable property from the ``FormRuntime`` + In short: use something like ``{<formElementIdentifier>}`` to get the value from the submitted form element with the identifier ``<formElementIdentifier>``. + + If you use the FormRuntime accessor feature within ``options.databaseColumnMappings``, than the functionality is nearly equal + to the the ``options.elements`` configuration variant. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.databasecolumnmappings.<databasecolumnname>.skipifvalueisempty: + +options.databaseColumnMappings.<databaseColumnName>.skipIfValueIsEmpty +---------------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.databaseColumnMappings.<databaseColumnName>.skipIfValueIsEmpty + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + +:aspect:`Description` + Set this to true if the database column should not be written if the value from ``options.databaseColumnMappings.<databaseColumnName>.value`` is empty. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.translation.translationfile: + +options.translation.translationFile +----------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.translation.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + No + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>` + - :ref:`"Accessing form runtime values"<concepts-frontendrendering-codecomponents-customfinisherimplementations-accessingoptions-formruntimeaccessor>` + - :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>` + +:aspect:`Description` + If set, this translation file(s) will be used for finisher option translations. + If not set, the translation file(s) from the 'Form' element will be used. + Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SaveToDatabase: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label + predefinedDefaults: + options: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + SaveToDatabase: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label + predefinedDefaults: + options: { } + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + SaveToDatabase: + formEditor: + iconIdentifier: t3-form-icon-finisher + label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label + predefinedDefaults: + options: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/formEngine/elements.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/formEngine/elements.rst new file mode 100644 index 000000000000..3d58e7f965fb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/formEngine/elements.rst @@ -0,0 +1,4 @@ +Every array key must match to the related finisher option name. +For example, the - :ref:`"[Redirect] finisher"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.redirect>` has the option - :ref:`"pageUid"<typo3.cms.form.prototypes.\<prototypeIdentifier>.finishersdefinition.redirect.options.pageuid>`. +If you want to make the ``pageUid`` overwritable within the ``form plugin``, then an array key ``pageUid`` has to exists within ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.FormEngine.elements``. +The configuration within ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.FormEngine.elements.pageUid`` must follow the TCA syntax. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/formEngine/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/formEngine/label.rst new file mode 100644 index 000000000000..000474d80fb6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/formEngine/label.rst @@ -0,0 +1,3 @@ +Finisher options are overwritable within the ``form plugin``. +If the "Override finisher settings" checkbox is selected within the ``form plugin``, every finisher who has a - :ref:`"FormEngine"<typo3.cms.form.prototypes.\<prototypeIdentifier>.finishersdefinition.\<finisheridentifier>.formengine>` configuration, is shown in a seperate tab. +``label`` is the label for such a tab. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/iconIdentifier.rst new file mode 100644 index 000000000000..a4de2a003b4f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/iconIdentifier.rst @@ -0,0 +1,2 @@ +An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. +This icon will be shown within the - :ref:`"Inspector [CollectionElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` if the finisher is selected. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/implementationClassName.rst new file mode 100644 index 000000000000..aa74df744ba8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/implementationClassName.rst @@ -0,0 +1 @@ +Classname which implements the finisher. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/label.rst new file mode 100644 index 000000000000..f144f610c858 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/label.rst @@ -0,0 +1 @@ +This label will be shown within the - :ref:`"Inspector [CollectionElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` if the finisher is selected. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/predefinedDefaults.rst new file mode 100644 index 000000000000..0a7f05300d0e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/finishersDefinition/properties/predefinedDefaults.rst @@ -0,0 +1 @@ +Defines predefined defaults for finisher options which are prefilled, if the finisher is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formEditor/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formEditor/Index.rst new file mode 100644 index 000000000000..c1ec50f28323 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formEditor/Index.rst @@ -0,0 +1,705 @@ +.. include:: ../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor: + +============ +[formEditor] +============ + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.translationfile: + +translationFile +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + formEditor: + translationFile: 'EXT:form/Resources/Private/Language/Database.xlf' + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Filesystem path(s) to translation files which should be searched for form editor translations. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.dynamicrequirejsmodules.app: + +dynamicRequireJsModules.app +--------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.dynamicRequireJsModules.app + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + formEditor: + dynamicRequireJsModules: + app: TYPO3/CMS/Form/Backend/FormEditor + mediator: TYPO3/CMS/Form/Backend/FormEditor/Mediator + viewModel: TYPO3/CMS/Form/Backend/FormEditor/ViewModel + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + RequireJS path for the form editor JavaScript app. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.dynamicrequirejsmodules.mediator: + +dynamicRequireJsModules.mediator +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.dynamicRequireJsModules.mediator + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + formEditor: + dynamicRequireJsModules: + app: TYPO3/CMS/Form/Backend/FormEditor + mediator: TYPO3/CMS/Form/Backend/FormEditor/Mediator + viewModel: TYPO3/CMS/Form/Backend/FormEditor/ViewModel + + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + RequireJS path for the form editor JavaScript mediator. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.dynamicrequirejsmodules.viewmodel: + +dynamicRequireJsModules.viewModel +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.dynamicRequireJsModules.viewModel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + formEditor: + dynamicRequireJsModules: + app: TYPO3/CMS/Form/Backend/FormEditor + mediator: TYPO3/CMS/Form/Backend/FormEditor/Mediator + viewModel: TYPO3/CMS/Form/Backend/FormEditor/ViewModel + + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + RequireJS path for the form editor JavaScript view model. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.dynamicrequirejsmodules.additionalviewmodelmodules: + +dynamicRequireJsModules.additionalViewModelModules +-------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.dynamicRequireJsModules.additionalViewModelModules + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (prototype 'standard')` + undefined + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + - :ref:`"Register custom JavaScript modules"<concepts-formeditor-basicjavascriptconcepts-registercustomjavascriptmodules>` + +:aspect:`Description` + Array with RequireJS paths for custom JavaScript modules. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.addinlinesettings: + +addInlineSettings +----------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.addInlineSettings + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (prototype 'standard')` + undefined + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + Adds Javascript Inline Setting. This will occur in TYPO3.settings - object. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.maximumundosteps: + +maximumUndoSteps +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.maximumUndoSteps + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + formEditor: + maximumUndoSteps: 10 + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + Define the maximum possible undo steps within the form editor. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.stylesheets: + +stylesheets +----------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.stylesheets + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + formEditor: + stylesheets: + 200: 'EXT:form/Resources/Public/Css/form.css' + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + The CSS files to be used by the ``form editor``. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorfluidconfiguration: + +formEditorFluidConfiguration +---------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorFluidConfiguration + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + formEditor: + formEditorFluidConfiguration: + templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/' + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + - :ref:`"view/inspector/editor/insert/perform"<apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform>` + +:aspect:`Description` + Basic fluid template search path configurations. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorfluidconfiguration.templatepathandfilename: + +formEditorFluidConfiguration.templatePathAndFilename +---------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorFluidConfiguration.templatePathAndFilename + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + formEditor: + formEditorFluidConfiguration: + templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/' + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + Internal setting. Template which render the inline HTML templates which are used by the form editor JavaScript. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorfluidconfiguration.partialrootpaths: + +formEditorFluidConfiguration.partialRootPaths +--------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorFluidConfiguration.partialRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4-5 + + formEditor: + formEditorFluidConfiguration: + templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/' + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + - :ref:`"view/inspector/editor/insert/perform"<apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform>` + +:aspect:`Description` + Array with fluid partial search paths for the inline HTML templates which are used by the form editor JavaScript. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorfluidconfiguration.layoutrootpaths: + +formEditorFluidConfiguration.layoutRootPaths +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorFluidConfiguration.layoutRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6-7 + + formEditor: + formEditorFluidConfiguration: + templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/' + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + - :ref:`"view/inspector/editor/insert/perform"<apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform>` + +:aspect:`Description` + Internal setting. Array with fluid layout search paths. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorpartials: + +formEditorPartials +------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorPartials + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + formEditor: + formEditorPartials: + FormElement-_ElementToolbar: Stage/_ElementToolbar + FormElement-_UnknownElement: Stage/_UnknownElement + FormElement-Page: Stage/Page + FormElement-SummaryPage: Stage/SummaryPage + FormElement-Fieldset: Stage/Fieldset + FormElement-GridContainer: Stage/Fieldset + FormElement-GridRow: Stage/Fieldset + FormElement-Text: Stage/SimpleTemplate + FormElement-Password: Stage/SimpleTemplate + FormElement-AdvancedPassword: Stage/SimpleTemplate + FormElement-Textarea: Stage/SimpleTemplate + FormElement-Checkbox: Stage/SimpleTemplate + FormElement-MultiCheckbox: Stage/SelectTemplate + FormElement-MultiSelect: Stage/SelectTemplate + FormElement-RadioButton: Stage/SelectTemplate + FormElement-SingleSelect: Stage/SelectTemplate + FormElement-DatePicker: Stage/SimpleTemplate + FormElement-StaticText: Stage/StaticText + FormElement-Hidden: Stage/SimpleTemplate + FormElement-ContentElement: Stage/ContentElement + FormElement-FileUpload: Stage/FileUploadTemplate + FormElement-ImageUpload: Stage/FileUploadTemplate + Modal-InsertElements: Modals/InsertElements + Modal-InsertPages: Modals/InsertPages + Modal-ValidationErrors: Modals/ValidationErrors + Inspector-FormElementHeaderEditor: Inspector/FormElementHeaderEditor + Inspector-CollectionElementHeaderEditor: Inspector/CollectionElementHeaderEditor + Inspector-TextEditor: Inspector/TextEditor + Inspector-PropertyGridEditor: Inspector/PropertyGridEditor + Inspector-SingleSelectEditor: Inspector/SingleSelectEditor + Inspector-MultiSelectEditor: Inspector/MultiSelectEditor + Inspector-GridColumnViewPortConfigurationEditor: Inspector/GridColumnViewPortConfigurationEditor + Inspector-TextareaEditor: Inspector/TextareaEditor + Inspector-RemoveElementEditor: Inspector/RemoveElementEditor + Inspector-FinishersEditor: Inspector/FinishersEditor + Inspector-ValidatorsEditor: Inspector/ValidatorsEditor + Inspector-RequiredValidatorEditor: Inspector/RequiredValidatorEditor + Inspector-CheckboxEditor: Inspector/CheckboxEditor + Inspector-Typo3WinBrowserEditor: Inspector/Typo3WinBrowserEditor + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + - :ref:`"Common Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>` + - :ref:`"available inspector editors"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formEditor.editors-availableinspectoreditors>` + - :ref:`"view/inspector/editor/insert/perform"<apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform>` + +:aspect:`Description` + Array with mappings for the inline HTML templates. The keys are identifierts which could be used within the JavaScript code. The values are partial paths, relative to :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formeditor.formEditorFluidConfiguration.partialRootPaths"<typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorfluidconfiguration.partialrootpaths>`. + The partials content will be rendered as inline HTML. This inline HTML templates can be identified and used by such a key (e.g. "Inspector-TextEditor") within the JavaScript code. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formelementpropertyvalidatorsdefinition: + +formElementPropertyValidatorsDefinition +--------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formElementPropertyValidatorsDefinition + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + formEditor: + formElementPropertyValidatorsDefinition: + NotEmpty: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NotEmpty.label + Integer: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.Integer.label + NaiveEmail: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label + NaiveEmailOrEmpty: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label + FormElementIdentifierWithinCurlyBracesInclusive: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label + FormElementIdentifierWithinCurlyBracesExclusive: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label + +:aspect:`Related options` + - :ref:`"[TextEditor] propertyValidators"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-texteditor>` + - :ref:`"[Typo3WinBrowserEditor] propertyValidators"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-typo3winbrowsereditor>` + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + Some inspector editors are able to validate it's values through a JavaScript methods. + ``formElementPropertyValidatorsDefinition`` define basic configurations for such JavaScript validators. + This JavaScript validators can be registered through ``getFormEditorApp().addPropertyValidationValidator()``. The first method argument is the identifier + for this validator. Every array key within ``formElementPropertyValidatorsDefinition`` must be equal to such a identifier. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formelementpropertyvalidatorsdefinition.<formelementpropertyvalidatoridentifier>.errormessage: + +formElementPropertyValidatorsDefinition.<formElementPropertyValidatorIdentifier>.errorMessage +--------------------------------------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formElementPropertyValidatorsDefinition.<formElementPropertyValidatorIdentifier>.errorMessage + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4, 6, 8, 10, 12, 14 + + formEditor: + formElementPropertyValidatorsDefinition: + NotEmpty: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NotEmpty.label + Integer: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.Integer.label + NaiveEmail: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label + NaiveEmailOrEmpty: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label + FormElementIdentifierWithinCurlyBracesInclusive: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label + FormElementIdentifierWithinCurlyBracesExclusive: + errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label + +:aspect:`Related options` + - :ref:`"[TextEditor] propertyValidators"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-texteditor>` + - :ref:`"[Typo3WinBrowserEditor] propertyValidators"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-typo3winbrowsereditor>` + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + The error message for a inspector editor property validator which is shown if the validation fails. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formelementgroups: + +formElementGroups +----------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formElementGroups + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + formEditor: + formElementGroups: + input: + label: formEditor.formElementGroups.input.label + select: + label: formEditor.formElementGroups.select.label + custom: + label: formEditor.formElementGroups.custom.label + container: + label: formEditor.formElementGroups.container.label + page: + label: formEditor.formElementGroups.page.label + +:aspect:`Related options` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Password.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.password.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Text.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.text.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Page.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.page.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.group>` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.group>` + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + Every form element can be placed within a group within the ``form editor`` "new Element" modal. + Every form element which should be shown within such a group, must have a ``group`` property. The form element ``group`` property value + must be equal to an array key within ``formElementGroups``. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formelementgroups.<formelementgroupidentifier>.label: + +formElementGroups.<formElementGroupIdentifier>.label +---------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formElementGroups.<formElementGroupIdentifier>.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4, 6, 8, 10, 12 + + formEditor: + formElementGroups: + input: + label: formEditor.formElementGroups.input.label + select: + label: formEditor.formElementGroups.select.label + custom: + label: formEditor.formElementGroups.custom.label + container: + label: formEditor.formElementGroups.container.label + page: + label: formEditor.formElementGroups.page.label + +:aspect:`Good to know` + - :ref:`"Form editor"<concepts-formeditor>` + +:aspect:`Description` + The label for a group within the ``form editor`` "new Element" modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/Index.rst new file mode 100644 index 000000000000..f8319bc1ee2b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/Index.rst @@ -0,0 +1,765 @@ +.. include:: ../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition: + +======================== +[formElementsDefinition] +======================== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.*: + +[formElementsDefinition] +------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + prototypes: + <prototypeIdentifier>: + formElementsDefinition: + [...] + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + +:aspect:`Description` + Array which defines the available form elements. Every key within this array is called the ``<formElementTypeIdentifier>``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>: + +<formElementTypeIdentifier> +--------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier> + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + + prototypes: + standard: + Form: + [...] + Page: + [...] + SummaryPage: + [...] + Fieldset: + [...] + GridContainer: + [...] + GridRow: + [...] + Text: + [...] + Password: + [...] + AdvancedPassword: + [...] + Textarea: + [...] + Honeypot: + [...] + Hidden: + [...] + Checkbox: + [...] + MultiCheckbox: + [...] + MultiSelect: + [...] + RadioButton: + [...] + SingleSelect: + [...] + DatePicker: + [...] + StaticText: + [...] + ContentElement: + [...] + FileUpload: + [...] + ImageUpload: + [...] + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + +:aspect:`Description` + This array key identifies a form element. This identifier could be used to attach a form element to a form. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>-commonproperties: + +Common <formElementTypeIdentifier> properties +============================================= + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.implementationclassname: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + +:aspect:`Description` + Classname which implements the form element. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.renderingoptions.translation.translationfile: + +renderingOptions.translation.translationFile +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.renderingOptions.translation.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + - :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>` + +:aspect:`Description` + Filesystem path(s) to translation files which should be searched for form element property translations. + If ``translationFile`` is undefined, - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.translation.translationFile"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.translation.translationfile>` will be used. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.renderingOptions.translation.translatePropertyValueIfEmpty: + +renderingOptions.translation.translatePropertyValueIfEmpty +---------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.renderingoptions.translation.translatepropertyvalueifempty + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + true + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + - :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>` + +:aspect:`Description` + If set to ``false``, the form element property translation will be skipped if the form element property value is empty. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.renderingoptions.templatename: + +renderingOptions.templateName +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.renderingOptions.templateName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Default value` + undefined + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + - :ref:`"templateName"<apireference-frontendrendering-fluidformrenderer-options-templatename>` + +:aspect:`Description` + Set ``templateName`` to define a custom template name which should be used instead of the ``<formElementTypeIdentifier>``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.properties: + +properties +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + - :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>` + +:aspect:`Description` + Array with form element specific properties. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.properties.fluidadditionalattributes: + +properties.fluidAdditionalAttributes +------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties.fluidAdditionalAttributes + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + - :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>` + +:aspect:`Description` + The values within this array goes directely into the fluid form element viewhelpers property ``additionalAttributes``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.properties.gridcolumnclassautoconfiguration: + +properties.gridColumnClassAutoConfiguration +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties.gridColumnClassAutoConfiguration + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Undefined + +:aspect:`Related options` + - :ref:`"GridRow viewPorts"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.gridrow.properties.gridcolumnclassautoconfiguration.viewports>` + +:aspect:`Description` + If the form element lies within a GridRow you can define the number of columns which the form element should occupy. + Each ``viewPorts`` configuration key has to match with on ofe the defined viewports within ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.properties.gridColumnClassAutoConfiguration.viewPorts`` + + .. code-block:: yaml + :linenos: + + gridColumnClassAutoConfiguration: + viewPorts: + lg: + numbersOfColumnsToUse: '2' + md: + numbersOfColumnsToUse: '3' + sm: + numbersOfColumnsToUse: '4' + xs: + numbersOfColumnsToUse: '5' + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.label: + +label +----- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>` + - :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>` + +:aspect:`Description` + The label for the form element. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor: + +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No (but recommended) + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Array with configurations for the ``form editor`` + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.predefineddefaults: + +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections: + +formEditor.propertyCollections +------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + Array with configurations for ``property collections`` for the form element. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.validators: + +formEditor.propertyCollections.validators +----------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.validators + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + Array with configurations for available validators for a form element. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.validators.*.identifier: + +formEditor.propertyCollections.validators.[*].identifier +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.validators.[*].identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.validators.*.editors: + +formEditor.propertyCollections.validators.[*].editors +----------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.validators.[*].editors + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + Array with available ``inspector editors`` for this validator. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.finishers: + +formEditor.propertyCollections.finishers +---------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.finishers + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + Array with configurations for available finisher for a form definition. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.finishers.*.identifier: + +formEditor.propertyCollections.finishers.[*].identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.finishers.[*].identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.finishers.*.editors: + +formEditor.propertyCollections.finishers.[*].editors +---------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.finishers.[*].editors + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + Array with available ``inspector editors`` for this finisher. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.label: + +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.group: + +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formElementGroups <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formelementgroups>` + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.groupsorting: + +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.iconidentifier: + +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formEditor.editors-tree: + +formEditor.editors +------------------ + +.. toctree:: + + formEditor/Index + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>-concreteconfigurations: + +Concrete configurations +======================= + +.. toctree:: + + formElementTypes/AdvancedPassword + formElementTypes/Checkbox + formElementTypes/ContentElement + formElementTypes/DatePicker + formElementTypes/Fieldset + formElementTypes/FileUpload + formElementTypes/Form + formElementTypes/GridContainer + formElementTypes/GridRow + formElementTypes/Hidden + formElementTypes/Honeypot + formElementTypes/ImageUpload + formElementTypes/MultiCheckbox + formElementTypes/MultiSelect + formElementTypes/Page + formElementTypes/Password + formElementTypes/RadioButton + formElementTypes/SingleSelect + formElementTypes/StaticText + formElementTypes/SummaryPage + formElementTypes/Text + formElementTypes/Textarea diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/Index.rst new file mode 100644 index 000000000000..d75b33902ffb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/Index.rst @@ -0,0 +1,110 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*: + +================================================== +[<formElementTypeIdentifier>][formEditor][editors] +================================================== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors: + +<formElementTypeIdentifier>.formEditor.editors +---------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeidentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + Array with numerical keys. Each arrayitem describes an ``inspector editor`` which is used to write values into a form element property. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*-commonproperties: + +Common [<formElementTypeIdentifier>][formEditor][editors][*] properties +======================================================================= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier: +.. include:: inspectorEditors/properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename: + +templateName +------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors.*.templateName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: inspectorEditors/properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label: +.. include:: inspectorEditors/properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath: +.. include:: inspectorEditors/properties/PropertyPath.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formEditor.editors-availableinspectoreditors: + +available inspector editors +--------------------------- + +.. toctree:: + + inspectorEditors/CheckboxEditor + inspectorEditors/CollectionElementHeaderEditor + inspectorEditors/FinishersEditor + inspectorEditors/FormElementHeaderEditor + inspectorEditors/GridColumnViewPortConfigurationEditor + inspectorEditors/MultiSelectEditor + inspectorEditors/PropertyGridEditor + inspectorEditors/RemoveElementEditor + inspectorEditors/RequiredValidatorEditor + inspectorEditors/SingleSelectEditor + inspectorEditors/TextareaEditor + inspectorEditors/TextEditor + inspectorEditors/Typo3WinBrowserEditor + inspectorEditors/ValidatorsEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/CheckboxEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/CheckboxEditor.rst new file mode 100644 index 000000000000..4394726188f4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/CheckboxEditor.rst @@ -0,0 +1,60 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor: + +================ +[CheckboxEditor] +================ + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor-introduction: + +Introduction +============ + +Shows a checkbox which write 'true' or 'false' within the form definition for a form element property. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-checkboxeditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-CheckboxEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-checkboxeditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-checkboxeditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-checkboxeditor: +.. include:: properties/PropertyPath.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/CollectionElementHeaderEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/CollectionElementHeaderEditor.rst new file mode 100644 index 000000000000..0e944356fad1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/CollectionElementHeaderEditor.rst @@ -0,0 +1,57 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor: + +=============================== +[CollectionElementHeaderEditor] +=============================== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor-introduction: + +Introduction +============ + +This is not really an editor because this editor don't write values into the form definition. +This editor show the header area for collection elements (finishers/ validators) with it's icon and label. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templateName-collectionelementheadereditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-CollectionElementHeaderEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-collectionelementheadereditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-collectionelementheadereditor: +.. include:: properties/Label.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/FinishersEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/FinishersEditor.rst new file mode 100644 index 000000000000..601cedae9116 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/FinishersEditor.rst @@ -0,0 +1,105 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.finisherseditor: + +================= +[FinishersEditor] +================= + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.finisherseditor-introduction: + +Introduction +============ + +Shows a select list with finishers. If a finisher is already added to the form definition, then this finisher will be removed from the select list. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.finisherseditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-finisherseditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-FinishersEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-finisherseditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-finisherseditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-finisherseditor: + +selectOptions.[*].value +----------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`"[finishersDefinition]"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.*>` + + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Has to match with a ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersdefinition`` configuration key. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.label-finisherseditor: + +selectOptions.[*].label +----------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label which is shown within the select field. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/FormElementHeaderEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/FormElementHeaderEditor.rst new file mode 100644 index 000000000000..136c3d416899 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/FormElementHeaderEditor.rst @@ -0,0 +1,53 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor: + +========================= +[FormElementHeaderEditor] +========================= + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor-introduction: + +Introduction +============ + +This is not really an editor because this editor don't write values into the form definition. +This editor show the header area for the form element with it's icon and label. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-formelementheadereditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-FormElementHeaderEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-formelementheadereditor: +.. include:: properties/Identifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/GridColumnViewPortConfigurationEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/GridColumnViewPortConfigurationEditor.rst new file mode 100644 index 000000000000..7b50d6ac20b3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/GridColumnViewPortConfigurationEditor.rst @@ -0,0 +1,175 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor: + +======================================= +[GridColumnViewPortConfigurationEditor] +======================================= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor-introduction: + +Introduction +============ + +Shows a viewport selector as buttons and an input field. With this editor, you can define how many columns per viewPort an form element should occupy. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templateName-gridcolumnviewportconfigurationeditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-GridColumnViewPortConfigurationEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-gridcolumnviewportconfigurationeditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-gridcolumnviewportconfigurationeditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.viewPorts.*.viewPortIdentifier-gridcolumnviewportconfigurationeditor: + +configurationOptions.viewPorts.[*].viewPortIdentifier +----------------------------------------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`"properties.gridColumnClassAutoConfiguration"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.properties.gridcolumnclassautoconfiguration>` + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Has to match with a ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties.gridColumnClassAutoConfiguration.viewPorts`` configuration key. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.viewPorts.*.label-gridcolumnviewportconfigurationeditor: + +configurationOptions.viewPorts.[*].label +---------------------------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the viewport button. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.numbersOfColumnsToUse.label-gridcolumnviewportconfigurationeditor: + +configurationOptions.numbersOfColumnsToUse.label +------------------------------------------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the "Numbers of columns" input field. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.numbersOfColumnsToUse.propertyPath-gridcolumnviewportconfigurationeditor: + +configurationOptions.numbersOfColumnsToUse.propertyPath +------------------------------------------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The path to the property of the form element which should be written. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.numbersOfColumnsToUse.fieldExplanationText-gridcolumnviewportconfigurationeditor: + +configurationOptions.numbersOfColumnsToUse.fieldExplanationText +--------------------------------------------------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A text which is shown at the bottom of the "Numbers of columns" input field. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/MultiSelectEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/MultiSelectEditor.rst new file mode 100644 index 000000000000..679c4e1b562a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/MultiSelectEditor.rst @@ -0,0 +1,108 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.multiselecteditor: + +=================== +[MultiSelectEditor] +=================== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.multiselecteditor-introduction: + +Introduction +============ + +Shows a multiselect list with values. If one or more selectoptions are selected, then the option value will be written within a form element property which is defined by the "propertyPath" option. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.multiselecteditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-multiselecteditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-MultiSelectEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-multiselecteditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-multiselecteditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-multiselecteditor: +.. include:: properties/PropertyPath.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-multiselecteditor: + +selectOptions.[*].value +----------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The value which should be written into the corresponding form elements property. + The corresponding form elements property is identified by the ``propertyPath`` option. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.label-multiselecteditor: + +selectOptions.[*].label +----------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label which is shown within the select field. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/PropertyGridEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/PropertyGridEditor.rst new file mode 100644 index 000000000000..0e484f55b7a0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/PropertyGridEditor.rst @@ -0,0 +1,232 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor: + +==================== +[PropertyGridEditor] +==================== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor-introduction: + +Introduction +============ + +Shows a grid which allows you to add (and remove) multiple rows and fill values for each row. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-propertygrideditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-PropertyGridEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-propertygrideditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-propertygrideditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-propertygrideditor: +.. include:: properties/PropertyPath.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.issortable-propertygrideditor: + +isSortable +---------- + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + If set to 'false' then the rows are not sortable. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.enableaddrow-propertygrideditor: + +enableAddRow +------------ + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + If set to 'false' the the "add new row" button is disabled. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.enabledeleterow-propertygrideditor: + +enableDeleteRow +--------------- + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + If set to 'false' the the "delete row" button is disabled. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.multiselection-propertygrideditor: + +multiSelection +-------------- + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + If set to 'false' then only one row can be marked as preselected. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removelastavailablerowflashmessagetitle-propertygrideditor: + +removeLastAvailableRowFlashMessageTitle +--------------------------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + There must be at least one existing row within this ``inspector editor``. If the last existing row is tried to be removed then a flash message is shown. + This property define the title for the flash message. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removelastavailablerowflashmessagemessage-propertygrideditor: + +removeLastAvailableRowFlashMessageMessage +----------------------------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + There must be at least one existing row within this ``inspector editor``. If the last existing row is tried to be removed then a flash message is shown. + This property define the text for the flash message. + + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.shouldshowpreselectedvaluecolumn-propertygrideditor: + +shouldShowPreselectedValueColumn +-------------------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + If set to 'false' then the column which is used to mark a row as preselected will be disabled. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/RemoveElementEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/RemoveElementEditor.rst new file mode 100644 index 000000000000..caba6d658eeb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/RemoveElementEditor.rst @@ -0,0 +1,52 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor: + +===================== +[RemoveElementEditor] +===================== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor-introduction: + +Introduction +============ + +This editor show a button which allows you to remove the form element or the collection element (finishers/ validators). + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-removeelementeditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-RemoveElementEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-removeelementeditor: +.. include:: properties/Identifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/RequiredValidatorEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/RequiredValidatorEditor.rst new file mode 100644 index 000000000000..5ca5147d10aa --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/RequiredValidatorEditor.rst @@ -0,0 +1,127 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor: + +========================= +[RequiredValidatorEditor] +========================= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor-introduction: + +Introduction +============ + +Shows a checkbox. If set, a validator ('NotEmpty' by default) will be written into the ``form definition``. In addition another property could be written into the ``form definition``. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-requiredvalidatoreditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-RequiredValidatorEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-requiredvalidatoreditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-requiredvalidatoreditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validatoridentifier-requiredvalidatoreditor: + +validatorIdentifier +------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + The ``<validatorIdentifier>`` which should be used. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-requiredvalidatoreditor: + +propertyPath +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + An property path which should be written into the `form definition`` if the checkbox is set. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalue-requiredvalidatoreditor: + +propertyValue +------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + The value for the property path which should be written into the `form definition`` if the checkbox is set. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/SingleSelectEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/SingleSelectEditor.rst new file mode 100644 index 000000000000..a74f6158d7e5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/SingleSelectEditor.rst @@ -0,0 +1,110 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor: + +==================== +[SingleSelectEditor] +==================== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor-introduction: + +Introduction +============ + +Shows a single select list with values. If a selectoption is selected, then the option value will be written within a form element property which is defined by the "propertyPath" option. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-singleselecteditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-SingleSelectEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-singleselecteditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-singleselecteditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-singleselecteditor: +.. include:: properties/PropertyPath.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-singleselecteditor: + +selectOptions.[*].value +----------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The value which should be written into the corresponding form elements property. + The corresponding form elements property is identified by the ``propertyPath`` option. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.label-singleselecteditor: + +selectOptions.[*].label +----------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label which is shown within the select field. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/TextEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/TextEditor.rst new file mode 100644 index 000000000000..bdda54901cbb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/TextEditor.rst @@ -0,0 +1,205 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.texteditor: + +============ +[TextEditor] +============ + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.texteditor-introduction: + +Introduction +============ + +Shows a single line textfield. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.texteditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-texteditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-TextEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-texteditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-texteditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-texteditor: +.. include:: properties/PropertyPath.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.donotsetifpropertyvalueisempty-texteditor: + +doNotSetIfPropertyValueIsEmpty +------------------------------ + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + If set to true then the property which should be written through this ``inspector editor`` will be removed within the ``form definition`` if the + value from the ``inspector editor`` is empty instead of writing an empty value ('') for this property. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-texteditor: + +propertyValidators +------------------ + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Related options` + - :ref:`"formElementPropertyValidatorsDefinition"<typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formelementpropertyvalidatorsdefinition>` + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + This ``inspector editors`` is able to validate it's value through JavaScript methods. + This JavaScript validators can be registered through ``getFormEditorApp().addPropertyValidationValidator()``. + The first method argument is the identifier for such a validator. + Every array value within ``propertyValidators`` must be equal to such a identifier. + + For example: + + .. code-block:: yaml + + propertyValidators: + 10: 'Integer' + 20: 'FormElementIdentifierWithinCurlyBracesExclusive' + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalidatorsmode-texteditor: + +propertyValidatorsMode +---------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value` + AND + +:aspect:`possible values` + OR/ AND + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + If set to 'OR' then at least one validator must be valid to accept the ``inspector editor`` value. If set to 'AND' then all validators must be valid. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.fieldexplanationtext-texteditor: + +fieldExplanationText +-------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + A text which is shown at the bottom of the ``inspector editor``. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.additionalelementpropertypaths-texteditor: + +additionalElementPropertyPaths +------------------------------ + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + An array which holds property paths which should be written in addition to the propertyPath option. + + For example: + + .. code-block:: yaml + + additionalElementPropertyPaths: + 10: 'properties.fluidAdditionalAttributes.maxlength' diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/TextareaEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/TextareaEditor.rst new file mode 100644 index 000000000000..ae2149ce27b9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/TextareaEditor.rst @@ -0,0 +1,59 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.textareaeditor: + +================ +[TextareaEditor] +================ + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.textareaeditor-introduction: + +Introduction +============ + +Shows a textarea. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.textareaeditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-textareaeditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-TextareaEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-textareaeditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-textareaeditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-textareaeditor: +.. include:: properties/PropertyPath.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/Typo3WinBrowserEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/Typo3WinBrowserEditor.rst new file mode 100644 index 000000000000..f747ee8c2e5b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/Typo3WinBrowserEditor.rst @@ -0,0 +1,199 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.typo3winbrowsereditor: + +======================= +[Typo3WinBrowserEditor] +======================= + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.typo3winbrowsereditor-introduction: + +Introduction +============ + +Shows a popup window to select a record (e.g. pages or tt_content records) as you know it from within the form engine. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.typo3winbrowsereditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-typo3winbrowsereditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-Typo3WinBrowserEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-typo3winbrowsereditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-typo3winbrowsereditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-typo3winbrowsereditor: +.. include:: properties/PropertyPath.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.buttonlabel-typo3winbrowsereditor: + +buttonLabel +----------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + The label for the button which opens the popup window. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.browsabletype-typo3winbrowsereditor: + +browsableType +------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + The allowed selectable record types e.g 'pages' or 'tt_content'. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-typo3winbrowsereditor: + +propertyValidators +------------------ + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Related options` + - :ref:`"formElementPropertyValidatorsDefinition"<typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formelementpropertyvalidatorsdefinition>` + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + This ``inspector editors`` is able to validate it's value through JavaScript methods. + This JavaScript validators can be registered through ``getFormEditorApp().addPropertyValidationValidator()``. + The first method argument is the identifier for such a validator. + Every array value within ``propertyValidators`` must be equal to such a identifier. + + For example: + + .. code-block:: yaml + + propertyValidators: + 10: 'Integer' + 20: 'FormElementIdentifierWithinCurlyBracesExclusive' + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalidatorsmode-typo3winbrowsereditor: + +propertyValidatorsMode +---------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value` + AND + +:aspect:`possible values` + OR/ AND + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + If set to 'OR' then at least one validator must be valid to accept the ``inspector editor`` value. If set to 'AND' then all validators must be valid. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.fieldexplanationtext-typo3winbrowsereditor: + +fieldExplanationText +-------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +.. :aspect:`Related options` + @ToDo + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + A text which is shown at the bottom of the ``inspector editor``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/ValidatorsEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/ValidatorsEditor.rst new file mode 100644 index 000000000000..987134cf02d9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/ValidatorsEditor.rst @@ -0,0 +1,104 @@ +.. include:: ../../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validatorseditor: + +================== +[ValidatorsEditor] +================== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validatorseditor-introduction: + +Introduction +============ + +Shows a select list with validators. If a validator is already added to the form element, then this validator will be removed from the select list. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validatorseditor-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-validatorseditor: + +templateName +------------ + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>` + +:aspect:`value` + Inspector-FinishersEditor + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + .. include:: properties/TemplateName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-validatorseditor: +.. include:: properties/Identifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-validatorseditor: +.. include:: properties/Label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-validatorseditor: + +selectOptions.[*].value +----------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Related options` + - :ref:`"[validatorsDefinition]"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.*>` + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Has to match with a ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition`` configuration key. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.label-validatorseditor: + +selectOptions.[*].label +----------------------- + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +.. :aspect:`Related options` + @ToDo + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label which is shown within the select field. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/Identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/Identifier.rst new file mode 100644 index 000000000000..d8eaac745307 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/Identifier.rst @@ -0,0 +1,24 @@ +identifier +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors.*.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + +:aspect:`Description` + Identifies the current ``inspector editor`` within the current form element. + The identifier is a text of your choice but must be unique within the optionpath ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/Label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/Label.rst new file mode 100644 index 000000000000..ea92ac305ef6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/Label.rst @@ -0,0 +1,24 @@ +label +----- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors.*.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + The label for this ``inspector editor`` which is shown within the ``inspector component``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/PropertyPath.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/PropertyPath.rst new file mode 100644 index 000000000000..797123c4a603 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/PropertyPath.rst @@ -0,0 +1,25 @@ +propertyPath +------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors.*.propertyPath + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"JavaScript FormElement model"<apireference-formeditor-basicjavascriptconcepts-formelementmodel>` + +:aspect:`Description` + The path to the property of the form element which should be written by this ``inspector editor``. + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/TemplateName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/TemplateName.rst new file mode 100644 index 000000000000..9ec65df8ff5a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formEditor/inspectorEditors/properties/TemplateName.rst @@ -0,0 +1,2 @@ +The inline HTML template which is used for this inspector editor. +Must be equal to an existing array key within ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formEditor.formEditorPartials`` and must be started with 'Inspector-' by convention. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword.rst new file mode 100644 index 000000000000..96862235acbf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword.rst @@ -0,0 +1,184 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.advancedpassword: + +================== +[AdvancedPassword] +================== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.advancedpassword-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.implementationclassname: +.. include:: AdvancedPassword/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.containerclassattribute: +.. include:: AdvancedPassword/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.elementclassattribute: +.. include:: AdvancedPassword/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.elementerrorclassattribute: +.. include:: AdvancedPassword/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.confirmationlabel: +.. include:: AdvancedPassword/properties/confirmationLabel.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.confirmationclassattribute: +.. include:: AdvancedPassword/properties/confirmationClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor: +.. include:: AdvancedPassword/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.100: +.. include:: AdvancedPassword/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.200: +.. include:: AdvancedPassword/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.300: +.. include:: AdvancedPassword/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.400: +.. include:: AdvancedPassword/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.700: +.. include:: AdvancedPassword/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.800: +.. include:: AdvancedPassword/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.900: +.. include:: AdvancedPassword/formEditor/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.9999: +.. include:: AdvancedPassword/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.predefineddefaults: +.. include:: AdvancedPassword/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.10: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/10.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.10.identifier: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/10/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.10.editors.100: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/10/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.10.editors.9999: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/10/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.20: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/20.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.20.identifier: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/20/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.20.editors.100: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/20/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.20.editors.9999: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/20/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.identifier: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.editors.100: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.editors.200: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.editors.300: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.editors.9999: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.40: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/40.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.40.identifier: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/40/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.40.editors.100: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/40/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.40.editors.9999: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/40/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.50: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/50.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.50.identifier: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/50/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.50.editors.100: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/50/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.50.editors.9999: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/50/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.60: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/60.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.60.identifier: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/60/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.60.editors.100: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/60/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.60.editors.9999: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/60/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.identifier: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.editors.100: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.editors.200: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.editors.300: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.editors.9999: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80.identifier: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80.editors.100: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80.editors.200: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80.editors.9999: +.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.label: +.. include:: AdvancedPassword/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.group: +.. include:: AdvancedPassword/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.groupsorting: +.. include:: AdvancedPassword/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.iconidentifier: +.. include:: AdvancedPassword/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor.rst new file mode 100644 index 000000000000..9de6aad332c2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor.rst @@ -0,0 +1,244 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + AdvancedPassword: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: confirmationLabel + templateName: Inspector-TextEditor + label: formEditor.elements.AdvancedPassword.editor.confirmationLabel.label + propertyPath: properties.confirmationLabel + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + confirmationLabel: formEditor.element.AdvancedPassword.editor.confirmationLabel.predefinedDefaults + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.AdvancedPassword.label + group: custom + groupSorting: 500 + iconIdentifier: t3-form-icon-advanced-password diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/100.rst new file mode 100644 index 000000000000..715ae335dcca --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/200.rst new file mode 100644 index 000000000000..ff477b151f4a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/300.rst new file mode 100644 index 000000000000..0f31b7eea38e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/300.rst @@ -0,0 +1,31 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 300: + identifier: confirmationLabel + templateName: Inspector-TextEditor + label: formEditor.elements.AdvancedPassword.editor.confirmationLabel.label + propertyPath: properties.confirmationLabel diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/400.rst new file mode 100644 index 000000000000..bfe647ee4d21 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/400.rst @@ -0,0 +1,33 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/700.rst new file mode 100644 index 000000000000..311ec910fa90 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/700.rst @@ -0,0 +1,48 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/800.rst new file mode 100644 index 000000000000..6d0c6be67b00 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/800.rst @@ -0,0 +1,34 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/900.rst new file mode 100644 index 000000000000..487114f7796a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/900.rst @@ -0,0 +1,58 @@ +formEditor.editors.900 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.900 + +:aspect:`Data type` + array/ :ref:`[ValidatorsEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/9999.rst new file mode 100644 index 000000000000..2597d35e88e9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/editors/9999.rst @@ -0,0 +1,29 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/group.rst new file mode 100644 index 000000000000..24895cbecbff --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + AdvancedPassword: + formEditor: + group: custom + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/groupSorting.rst new file mode 100644 index 000000000000..3865faec7280 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + AdvancedPassword: + formEditor: + groupSorting: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..5ca6f5f4e649 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + AdvancedPassword: + formEditor: + iconIdentifier: t3-form-icon-advanced-password + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/label.rst new file mode 100644 index 000000000000..35025fe3014f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + AdvancedPassword: + formEditor: + label: formEditor.elements.AdvancedPassword.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..038f314a8fbb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/predefinedDefaults.rst @@ -0,0 +1,31 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + AdvancedPassword: + formEditor: + predefinedDefaults: + properties: + confirmationLabel: formEditor.element.AdvancedPassword.editor.confirmationLabel.predefinedDefaults + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10.rst new file mode 100644 index 000000000000..8764cb0a7428 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.10 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.10 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/editors/100.rst new file mode 100644 index 000000000000..9ba32ba01064 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/editors/9999.rst new file mode 100644 index 000000000000..789f7eba2101 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.10.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.10.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/identifier.rst new file mode 100644 index 000000000000..aa305afc454d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/10/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.10.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.10.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20.rst new file mode 100644 index 000000000000..8740529673f6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.20 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.20 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/editors/100.rst new file mode 100644 index 000000000000..83846da8f2de --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.20.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.20.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/editors/9999.rst new file mode 100644 index 000000000000..3c1665d79538 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.20.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.20.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/identifier.rst new file mode 100644 index 000000000000..ce07224a71ba --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/20/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.20.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.20.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30.rst new file mode 100644 index 000000000000..3430d4420546 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30.rst @@ -0,0 +1,57 @@ +formEditor.propertyCollections.validators.30 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.30 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/100.rst new file mode 100644 index 000000000000..f3789c0ce4f6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.30.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.30.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/200.rst new file mode 100644 index 000000000000..96af2666f8da --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/200.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.validators.30.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.30.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/300.rst new file mode 100644 index 000000000000..5bd95db8a4e8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/300.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.validators.30.editors.300 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.30.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/9999.rst new file mode 100644 index 000000000000..a29ba5351962 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.30.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.30.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/identifier.rst new file mode 100644 index 000000000000..b4bf710b6b73 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/30/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.30.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.30.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40.rst new file mode 100644 index 000000000000..bb7b4ee3b8e0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.40 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.40 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/editors/100.rst new file mode 100644 index 000000000000..2ae87f92aa77 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.40.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.40.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/editors/9999.rst new file mode 100644 index 000000000000..e7f6e7b49961 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.40.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.40.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/identifier.rst new file mode 100644 index 000000000000..38ea31547538 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/40/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.40.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.40.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50.rst new file mode 100644 index 000000000000..5e8e11ecf938 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.50 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.50 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/editors/100.rst new file mode 100644 index 000000000000..fa9eb52e7374 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.50.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.50.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/editors/9999.rst new file mode 100644 index 000000000000..09ca4263a864 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.50.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.50.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/identifier.rst new file mode 100644 index 000000000000..5b5856ee47cb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/50/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.50.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.50.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60.rst new file mode 100644 index 000000000000..ae795d935cae --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.60 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.60 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/editors/100.rst new file mode 100644 index 000000000000..12f90e2f4319 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.60.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.60.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/editors/9999.rst new file mode 100644 index 000000000000..1fb1dcf669d1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.60.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.60.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/identifier.rst new file mode 100644 index 000000000000..92e9d57bf1b8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/60/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.60.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.60.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70.rst new file mode 100644 index 000000000000..da6347601e8b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70.rst @@ -0,0 +1,53 @@ +formEditor.propertyCollections.validators.70 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.70 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/100.rst new file mode 100644 index 000000000000..15bc655c344c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.70.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.70.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/200.rst new file mode 100644 index 000000000000..5dac71d1cced --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/200.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.validators.70.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.70.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/300.rst new file mode 100644 index 000000000000..5f837e00ba5b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/300.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.validators.70.editors.300 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.70.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/9999.rst new file mode 100644 index 000000000000..c5cbc03064e2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.70.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.70.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/identifier.rst new file mode 100644 index 000000000000..f14aba0500dd --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/70/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.70.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.70.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80.rst new file mode 100644 index 000000000000..b86d3a4cae1f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80.rst @@ -0,0 +1,43 @@ +formEditor.propertyCollections.validators.80 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.80 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/100.rst new file mode 100644 index 000000000000..a7d0a53d5b92 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.80.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.80.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/200.rst new file mode 100644 index 000000000000..ff9a40fdd71c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/200.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.validators.80.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.80.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/9999.rst new file mode 100644 index 000000000000..a93ef25ffffe --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.80.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.80.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/identifier.rst new file mode 100644 index 000000000000..ad358593a063 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/formEditor/propertyCollections/validators/80/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.80.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.propertyCollections.validators.80.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/implementationClassName.rst new file mode 100644 index 000000000000..b77cbdd8d4ef --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + AdvancedPassword: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\AdvancedPassword + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/confirmationClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/confirmationClassAttribute.rst new file mode 100644 index 000000000000..2b7ca7bad096 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/confirmationClassAttribute.rst @@ -0,0 +1,39 @@ +properties.confirmationClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.properties.confirmationClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 7 + + AdvancedPassword: + properties: + containerClassAttribute: input + elementClassAttribute: input-medium + elementErrorClassAttribute: error + confirmationLabel: '' + confirmationClassAttribute: input-medium + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the password confirmation form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/confirmationLabel.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/confirmationLabel.rst new file mode 100644 index 000000000000..78f92aa5d7b6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/confirmationLabel.rst @@ -0,0 +1,39 @@ +properties.confirmationLabel +---------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.properties.confirmationLabel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + AdvancedPassword: + properties: + containerClassAttribute: input + elementClassAttribute: input-medium + elementErrorClassAttribute: error + confirmationLabel: '' + confirmationClassAttribute: input-medium + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the password confirmation form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..84759d889a64 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/containerClassAttribute.rst @@ -0,0 +1,39 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + AdvancedPassword: + properties: + containerClassAttribute: input + elementClassAttribute: input-medium + elementErrorClassAttribute: error + confirmationLabel: '' + confirmationClassAttribute: input-medium + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..6c029f7ce49f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/elementClassAttribute.rst @@ -0,0 +1,39 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + AdvancedPassword: + properties: + containerClassAttribute: input + elementClassAttribute: input-medium + elementErrorClassAttribute: error + confirmationLabel: '' + confirmationClassAttribute: input-medium + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..db16a00e88ed --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/AdvancedPassword/properties/elementErrorClassAttribute.rst @@ -0,0 +1,39 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + AdvancedPassword: + properties: + containerClassAttribute: input + elementClassAttribute: input-medium + elementErrorClassAttribute: error + confirmationLabel: '' + confirmationClassAttribute: input-medium + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox.rst new file mode 100644 index 000000000000..adc6d880ce6c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox.rst @@ -0,0 +1,62 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.checkbox: + +========== +[Checkbox] +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.checkbox-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.implementationclassname: +.. include:: Checkbox/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.properties.containerclassattribute: +.. include:: Checkbox/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.properties.elementclassattribute: +.. include:: Checkbox/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.properties.elementerrorclassattribute: +.. include:: Checkbox/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.properties.value: +.. include:: Checkbox/properties/value.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor: +.. include:: Checkbox/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.editors.100: +.. include:: Checkbox/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.editors.200: +.. include:: Checkbox/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.editors.700: +.. include:: Checkbox/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.editors.800: +.. include:: Checkbox/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.editors.9999: +.. include:: Checkbox/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.predefineddefaults: +.. include:: Checkbox/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.label: +.. include:: Checkbox/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.group: +.. include:: Checkbox/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.groupsorting: +.. include:: Checkbox/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.iconidentifier: +.. include:: Checkbox/formEditor/iconIdentifier.rst + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor.rst new file mode 100644 index 000000000000..b2950ab0d96a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor.rst @@ -0,0 +1,68 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + Checkbox: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: { } + label: formEditor.elements.Checkbox.label + group: select + groupSorting: 100 + iconIdentifier: t3-form-icon-checkbox diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/100.rst new file mode 100644 index 000000000000..343b5a4246db --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Checkbox: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/200.rst new file mode 100644 index 000000000000..b8b5d7e09595 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Checkbox: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/700.rst new file mode 100644 index 000000000000..4f9499184a19 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Checkbox: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/800.rst new file mode 100644 index 000000000000..61334c56a52b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Checkbox: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/9999.rst new file mode 100644 index 000000000000..8a9e2cbdaf3f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Checkbox: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/group.rst new file mode 100644 index 000000000000..5fcc5f4c68b9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Checkbox: + formEditor: + group: select + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/groupSorting.rst new file mode 100644 index 000000000000..3d80ca8e56a3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Checkbox: + formEditor: + groupSorting: 100 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..4fdc99766ba1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Checkbox: + formEditor: + iconIdentifier: t3-form-icon-checkbox + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/label.rst new file mode 100644 index 000000000000..b06f7cb6e9b5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Checkbox: + formEditor: + label: formEditor.elements.Checkbox.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..6248bd66c786 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/formEditor/predefinedDefaults.rst @@ -0,0 +1,29 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Checkbox: + formEditor: + predefinedDefaults: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/implementationClassName.rst new file mode 100644 index 000000000000..6dad683f3d6c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Checkbox: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..e71d6679ad2b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/containerClassAttribute.rst @@ -0,0 +1,38 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Checkbox: + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: add-on + elementErrorClassAttribute: error + value: 1 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..02c7c48b6a27 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/elementClassAttribute.rst @@ -0,0 +1,38 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Checkbox: + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: add-on + elementErrorClassAttribute: error + value: 1 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..64fed7fa9c63 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/elementErrorClassAttribute.rst @@ -0,0 +1,38 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + Checkbox: + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: add-on + elementErrorClassAttribute: error + value: 1 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/value.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/value.rst new file mode 100644 index 000000000000..e8199c5b11e4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Checkbox/properties/value.rst @@ -0,0 +1,38 @@ +properties.value +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Checkbox.properties.value + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Checkbox: + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: add-on + elementErrorClassAttribute: error + value: 1 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The value of the checkbox which should be sent to the server. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement.rst new file mode 100644 index 000000000000..6c5312f343c0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement.rst @@ -0,0 +1,46 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.contentelement: + +================ +[ContentElement] +================ + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.contentelement-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.implementationclassname: +.. include:: ContentElement/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.properties.contentelementuid: +.. include:: ContentElement/properties/contentElementUid.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor: +.. include:: ContentElement/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.editors.100: +.. include:: ContentElement/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.editors.300: +.. include:: ContentElement/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.editors.9999: +.. include:: ContentElement/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.predefineddefaults: +.. include:: ContentElement/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.label: +.. include:: ContentElement/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.group: +.. include:: ContentElement/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.groupsorting: +.. include:: ContentElement/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.iconidentifier: +.. include:: ContentElement/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor.rst new file mode 100644 index 000000000000..b868af585ff1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor.rst @@ -0,0 +1,47 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + ContentElement: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 300: + identifier: contentElement + templateName: Inspector-Typo3WinBrowserEditor + label: formEditor.elements.ContentElement.editor.contentElement.label + buttonLabel: formEditor.elements.ContentElement.editor.contentElement.buttonLabel + browsableType: tt_content + propertyPath: properties.contentElementUid + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + contentElementUid: '' + label: formEditor.elements.ContentElement.label + group: custom + groupSorting: 700 + iconIdentifier: t3-form-icon-content-element diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/100.rst new file mode 100644 index 000000000000..3523b790f21d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ContentElement: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/300.rst new file mode 100644 index 000000000000..62ea0d4a9ece --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/300.rst @@ -0,0 +1,37 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[Typo3WinBrowserEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.typo3winbrowsereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ContentElement: + formEditor: + editors: + 300: + identifier: contentElement + templateName: Inspector-Typo3WinBrowserEditor + label: formEditor.elements.ContentElement.editor.contentElement.label + buttonLabel: formEditor.elements.ContentElement.editor.contentElement.buttonLabel + browsableType: tt_content + propertyPath: properties.contentElementUid + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/9999.rst new file mode 100644 index 000000000000..1f623822987e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ContentElement: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/group.rst new file mode 100644 index 000000000000..075b75e2455a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ContentElement: + formEditor: + group: custom + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/groupSorting.rst new file mode 100644 index 000000000000..67d1111bdf17 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ContentElement: + formEditor: + groupSorting: 700 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..94f2f8b4e30e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ContentElement: + formEditor: + iconIdentifier: t3-form-icon-content-element + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/label.rst new file mode 100644 index 000000000000..e4cac8d7edb0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ContentElement: + formEditor: + label: formEditor.elements.ContentElement.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..70f2dbc9cf95 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/formEditor/predefinedDefaults.rst @@ -0,0 +1,31 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + ContentElement: + formEditor: + predefinedDefaults: + properties: + contentElementUid: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/implementationClassName.rst new file mode 100644 index 000000000000..62f2d3a94cf3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + ContentElement: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/properties/contentElementUid.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/properties/contentElementUid.rst new file mode 100644 index 000000000000..852a296cafed --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ContentElement/properties/contentElementUid.rst @@ -0,0 +1,35 @@ +properties.contentElementUid +---------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ContentElement.properties.contentElementUid + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ContentElement: + properties: + contentElementUid: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The uid of the content element which should be rendered. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker.rst new file mode 100644 index 000000000000..a22f3b9d9d4a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker.rst @@ -0,0 +1,100 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.datepicker: + +============ +[DatePicker] +============ + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.datepicker-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.implementationclassname: +.. include:: DatePicker/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.containerclassattribute: +.. include:: DatePicker/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.elementclassattribute: +.. include:: DatePicker/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.elementerrorclassattribute: +.. include:: DatePicker/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.timeselectorclassattribute: +.. include:: DatePicker/properties/timeSelectorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.timeselectorhourlabel: +.. include:: DatePicker/properties/timeSelectorHourLabel.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.timeselectorminutelabel: +.. include:: DatePicker/properties/timeSelectorMinuteLabel.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.dateformat: +.. include:: DatePicker/properties/dateFormat.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.enabledatepicker: +.. include:: DatePicker/properties/enableDatePicker.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.properties.displaytimeselector: +.. include:: DatePicker/properties/displayTimeSelector.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor: +.. include:: DatePicker/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.100: +.. include:: DatePicker/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.200: +.. include:: DatePicker/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.300: +.. include:: DatePicker/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.400: +.. include:: DatePicker/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.500: +.. include:: DatePicker/formEditor/editors/500.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.700: +.. include:: DatePicker/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.800: +.. include:: DatePicker/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.900: +.. include:: DatePicker/formEditor/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.editors.9999: +.. include:: DatePicker/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.predefineddefaults: +.. include:: DatePicker/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.propertycollections.validators.10: +.. include:: DatePicker/formEditor/propertyCollections/validators/10.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.propertycollections.validators.10.identifier: +.. include:: DatePicker/formEditor/propertyCollections/validators/10/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.propertycollections.validators.10.editors.100: +.. include:: DatePicker/formEditor/propertyCollections/validators/10/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.propertycollections.validators.10.editors.9999: +.. include:: DatePicker/formEditor/propertyCollections/validators/10/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.label: +.. include:: DatePicker/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.group: +.. include:: DatePicker/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.groupsorting: +.. include:: DatePicker/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.iconidentifier: +.. include:: DatePicker/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor.rst new file mode 100644 index 000000000000..8ed60ad131c9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor.rst @@ -0,0 +1,110 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + DatePicker: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: dateFormat + templateName: Inspector-TextEditor + label: formEditor.elements.DatePicker.editor.dateFormat.label + propertyPath: properties.dateFormat + 400: + identifier: enableDatePicker + templateName: Inspector-CheckboxEditor + label: formEditor.elements.DatePicker.editor.enableDatePicker.label + propertyPath: properties.enableDatePicker + 500: + identifier: displayTimeSelector + templateName: Inspector-CheckboxEditor + label: formEditor.elements.DatePicker.editor.displayTimeSelector.label + propertyPath: properties.displayTimeSelector + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.DatePicker.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.DatePicker.editor.validators.EmptyValue.label + 20: + value: DateTime + label: formEditor.elements.DatePicker.editor.validators.DateTime.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + label: formEditor.elements.DatePicker.label + group: custom + groupSorting: 200 + iconIdentifier: t3-form-icon-date-picker + propertyCollections: + validators: + 10: + identifier: DateTime + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.DatePicker.validators.DateTime.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/100.rst new file mode 100644 index 000000000000..e9eb53f3376c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + DatePicker: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/200.rst new file mode 100644 index 000000000000..31f0d115e816 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + DatePicker: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/300.rst new file mode 100644 index 000000000000..466df81353e2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/300.rst @@ -0,0 +1,31 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + DatePicker: + formEditor: + editors: + 300: + identifier: dateFormat + templateName: Inspector-TextEditor + label: formEditor.elements.DatePicker.editor.dateFormat.label + propertyPath: properties.dateFormat diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/400.rst new file mode 100644 index 000000000000..fd0b4919336f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/400.rst @@ -0,0 +1,32 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[CheckboxEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + DatePicker: + formEditor: + editors: + 400: + identifier: enableDatePicker + templateName: Inspector-CheckboxEditor + label: formEditor.elements.DatePicker.editor.enableDatePicker.label + propertyPath: properties.enableDatePicker + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/500.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/500.rst new file mode 100644 index 000000000000..75e173b4a3de --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/500.rst @@ -0,0 +1,32 @@ +formEditor.editors.500 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.500 + +:aspect:`Data type` + array/ :ref:`[CheckboxEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + AdvancedPassword: + formEditor: + editors: + 500: + identifier: displayTimeSelector + templateName: Inspector-CheckboxEditor + label: formEditor.elements.DatePicker.editor.displayTimeSelector.label + propertyPath: properties.displayTimeSelector + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/700.rst new file mode 100644 index 000000000000..75d503c77973 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + DatePicker: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/800.rst new file mode 100644 index 000000000000..adb5a0df9b07 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + DatePicker: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/900.rst new file mode 100644 index 000000000000..485d69630f9a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/900.rst @@ -0,0 +1,38 @@ +formEditor.editors.900 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.editors.900 + +:aspect:`Data type` + array/ :ref:`[ValidatorsEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + DatePicker: + formEditor: + editors: + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.DatePicker.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.DatePicker.editor.validators.EmptyValue.label + 20: + value: DateTime + label: formEditor.elements.DatePicker.editor.validators.DateTime.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/9999.rst new file mode 100644 index 000000000000..a70cd8862cbd --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + DatePicker: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/group.rst new file mode 100644 index 000000000000..dd5decf18da1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + DatePicker: + formEditor: + group: custom + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/groupSorting.rst new file mode 100644 index 000000000000..3d75e32eee36 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + DatePicker: + formEditor: + groupSorting: 200 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..00d53193d41a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + DatePicker: + formEditor: + iconIdentifier: t3-form-icon-date-picker + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/label.rst new file mode 100644 index 000000000000..c6c8b2d34653 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + DatePicker: + formEditor: + label: formEditor.elements.DatePicker.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..443a5f0b7e2c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/predefinedDefaults.rst @@ -0,0 +1,33 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + DatePicker: + formEditor: + predefinedDefaults: + properties: + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10.rst new file mode 100644 index 000000000000..c5a5d59d586b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.10 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.propertyCollections.validators.10 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + DatePicker: + formEditor: + propertyCollections: + validators: + 10: + identifier: DateTime + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.DatePicker.validators.DateTime.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/editors/100.rst new file mode 100644 index 000000000000..9b97767c1a84 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + DatePicker: + formEditor: + propertyCollections: + validators: + 10: + identifier: DateTime + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.DatePicker.validators.DateTime.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/editors/9999.rst new file mode 100644 index 000000000000..2e9910432302 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.10.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.propertyCollections.validators.10.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + DatePicker: + formEditor: + propertyCollections: + validators: + 10: + identifier: DateTime + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/identifier.rst new file mode 100644 index 000000000000..bccfa1c996cf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/formEditor/propertyCollections/validators/10/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.10.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.propertyCollections.validators.10.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + DatePicker: + formEditor: + propertyCollections: + validators: + 10: + identifier: DateTime + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/implementationClassName.rst new file mode 100644 index 000000000000..2c849b47296a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + DatePicker: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\DatePicker + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..b3c7688b3f48 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/containerClassAttribute.rst @@ -0,0 +1,43 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/dateFormat.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/dateFormat.rst new file mode 100644 index 000000000000..c47efad03f6e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/dateFormat.rst @@ -0,0 +1,43 @@ +properties.dateFormat +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.dateFormat + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The datepicker time format. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/displayTimeSelector.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/displayTimeSelector.rst new file mode 100644 index 000000000000..0270bb983e65 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/displayTimeSelector.rst @@ -0,0 +1,43 @@ +properties.displayTimeSelector +------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.displayTimeSelector + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 11 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + If set to true, an additional timeselector will be shown. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..b6c4dcf274f7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/elementClassAttribute.rst @@ -0,0 +1,43 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..a6c1893649b6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/elementErrorClassAttribute.rst @@ -0,0 +1,43 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/enableDatePicker.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/enableDatePicker.rst new file mode 100644 index 000000000000..0d917d853302 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/enableDatePicker.rst @@ -0,0 +1,43 @@ +properties.enableDatePicker +--------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.enableDatePicker + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 10 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + If set to true, an inline javascript will be rendered. This javascript binds the jquery UI datepicker to the formelement. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorClassAttribute.rst new file mode 100644 index 000000000000..d398966b7469 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorClassAttribute.rst @@ -0,0 +1,43 @@ +properties.timeSelectorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.timeSelectorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the time selector form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorHourLabel.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorHourLabel.rst new file mode 100644 index 000000000000..f2df79e20481 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorHourLabel.rst @@ -0,0 +1,43 @@ +properties.timeSelectorHourLabel +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.timeSelectorHourLabel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 7 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the hour selector. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorMinuteLabel.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorMinuteLabel.rst new file mode 100644 index 000000000000..f70f25a7afb1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/DatePicker/properties/timeSelectorMinuteLabel.rst @@ -0,0 +1,43 @@ +properties.timeSelectorMinuteLabel +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.DatePicker.properties.timeSelectorMinuteLabel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8 + + DatePicker: + properties: + containerClassAttribute: input + elementClassAttribute: 'small form-control' + elementErrorClassAttribute: error + timeSelectorClassAttribute: mini + timeSelectorHourLabel: '' + timeSelectorMinuteLabel: '' + dateFormat: Y-m-d + enableDatePicker: true + displayTimeSelector: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the minute selector. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset.rst new file mode 100644 index 000000000000..ac4c2fe8513d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset.rst @@ -0,0 +1,61 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.fieldset: + +========== +[Fieldset] +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.fieldset-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.implementationclassname: +.. include:: Fieldset/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.properties.containerclassattribute: +.. include:: Fieldset/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.properties.elementclassattribute: +.. include:: Fieldset/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.properties.elementerrorclassattribute: +.. include:: Fieldset/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.renderingoptions._iscompositeformelement: +.. include:: Fieldset/renderingOptions/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor: +.. include:: Fieldset/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.editors.100: +.. include:: Fieldset/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.editors.200: +.. include:: Fieldset/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.editors.700: +.. include:: Fieldset/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.editors.9999: +.. include:: Fieldset/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.predefineddefaults: +.. include:: Fieldset/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.label: +.. include:: Fieldset/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.group: +.. include:: Fieldset/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.groupsorting: +.. include:: Fieldset/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.iconidentifier: +.. include:: Fieldset/formEditor/iconIdentifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor._iscompositeformelement: +.. include:: Fieldset/formEditor/_isCompositeFormElement.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor.rst new file mode 100644 index 000000000000..2efced831145 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor.rst @@ -0,0 +1,62 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + Fieldset: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.Fieldset.editor.label.label + propertyPath: label + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: { } + label: formEditor.elements.Fieldset.label + group: container + groupSorting: 100 + _isCompositeFormElement: true + iconIdentifier: t3-form-icon-fieldset diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/_isCompositeFormElement.rst new file mode 100644 index 000000000000..57b6d1561631 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/_isCompositeFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isCompositeFormElement +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Fieldset: + formEditor: + _isCompositeFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/100.rst new file mode 100644 index 000000000000..aa7e036474ee --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Fieldset: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/200.rst new file mode 100644 index 000000000000..9002c5aefbc5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Fieldset: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.Fieldset.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/700.rst new file mode 100644 index 000000000000..984353e5da4f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Fieldset: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/9999.rst new file mode 100644 index 000000000000..fe59de56693a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Fieldset: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/group.rst new file mode 100644 index 000000000000..4aece39f65d4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Fieldset: + formEditor: + group: container + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/groupSorting.rst new file mode 100644 index 000000000000..2962ae97e708 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Fieldset: + formEditor: + groupSorting: 100 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..22f5d1c5008b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Fieldset: + formEditor: + iconIdentifier: t3-form-icon-fieldset + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/label.rst new file mode 100644 index 000000000000..f6df277ec7c6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Fieldset: + formEditor: + label: formEditor.elements.Fieldset.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..4314a007c7b2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/formEditor/predefinedDefaults.rst @@ -0,0 +1,29 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Fieldset: + formEditor: + predefinedDefaults: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/implementationClassName.rst new file mode 100644 index 000000000000..c6c128b5374d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Fieldset: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\Section + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..b65e44784986 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Fieldset: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..71e18be3532d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Fieldset: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..083c4b7bc0db --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + Fieldset: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/renderingOptions/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/renderingOptions/_isCompositeFormElement.rst new file mode 100644 index 000000000000..d02f6ead628c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Fieldset/renderingOptions/_isCompositeFormElement.rst @@ -0,0 +1,35 @@ +renderingOptions._isCompositeFormElement +---------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Fieldset.renderingOptions._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + AdvancedPassword: + renderingOptions: + _isCompositeFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload.rst new file mode 100644 index 000000000000..f58b5e15d5f5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload.rst @@ -0,0 +1,70 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.fileupload: + +============ +[FileUpload] +============ + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.fileupload-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.implementationclassname: +.. include:: FileUpload/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.properties.containerclassattribute: +.. include:: FileUpload/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.properties.elementclassattribute: +.. include:: FileUpload/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.properties.elementerrorclassattribute: +.. include:: FileUpload/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.properties.savetofilemount: +.. include:: FileUpload/properties/saveToFileMount.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.properties.allowedmimetypes: +.. include:: FileUpload/properties/allowedMimeTypes.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor: +.. include:: FileUpload/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.editors.100: +.. include:: FileUpload/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.editors.200: +.. include:: FileUpload/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.editors.300: +.. include:: FileUpload/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.editors.400: +.. include:: FileUpload/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.editors.700: +.. include:: FileUpload/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.editors.800: +.. include:: FileUpload/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.editors.9999: +.. include:: FileUpload/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.predefineddefaults: +.. include:: FileUpload/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.label: +.. include:: FileUpload/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.group: +.. include:: FileUpload/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.groupsorting: +.. include:: FileUpload/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.iconidentifier: +.. include:: FileUpload/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor.rst new file mode 100644 index 000000000000..23bb26f45d7f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor.rst @@ -0,0 +1,108 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + FileUpload: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: allowedMimeTypes + templateName: Inspector-MultiSelectEditor + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.label + propertyPath: properties.allowedMimeTypes + selectOptions: + 10: + value: application/msword + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.doc + 20: + value: application/vnd.openxmlformats-officedocument.wordprocessingml.document + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.docx + 30: + value: application/msexcel + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.xls + 40: + value: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.xlsx + 50: + value: application/pdf + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.pdf + 60: + value: application/vnd.oasis.opendocument.text + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.odt + 70: + value: application/vnd.oasis.opendocument.spreadsheet-template + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.ods + 400: + identifier: saveToFileMount + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.FileUploadMixin.editor.saveToFileMount.label + propertyPath: properties.saveToFileMount + selectOptions: + 10: + value: '1:/user_upload/' + label: '1:/user_upload/' + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/pdf + label: formEditor.elements.FileUpload.label + group: custom + groupSorting: 100 + iconIdentifier: t3-form-icon-file-upload diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/100.rst new file mode 100644 index 000000000000..aac468971f14 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + FileUpload: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/200.rst new file mode 100644 index 000000000000..d20db1a45405 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + FileUpload: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/300.rst new file mode 100644 index 000000000000..ae0a29e3f927 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/300.rst @@ -0,0 +1,53 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[MultiSelectEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.multiselecteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + FileUpload: + formEditor: + editors: + 300: + identifier: allowedMimeTypes + templateName: Inspector-MultiSelectEditor + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.label + propertyPath: properties.allowedMimeTypes + selectOptions: + 10: + value: application/msword + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.doc + 20: + value: application/vnd.openxmlformats-officedocument.wordprocessingml.document + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.docx + 30: + value: application/msexcel + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.xls + 40: + value: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.xlsx + 50: + value: application/pdf + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.pdf + 60: + value: application/vnd.oasis.opendocument.text + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.odt + 70: + value: application/vnd.oasis.opendocument.spreadsheet-template + label: formEditor.elements.FileUpload.editor.allowedMimeTypes.ods diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/400.rst new file mode 100644 index 000000000000..bbf539672382 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/400.rst @@ -0,0 +1,36 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[SingleSelectEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + FileUpload: + formEditor: + editors: + 400: + identifier: saveToFileMount + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.FileUploadMixin.editor.saveToFileMount.label + propertyPath: properties.saveToFileMount + selectOptions: + 10: + value: '1:/user_upload/' + label: '1:/user_upload/' + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/700.rst new file mode 100644 index 000000000000..7bc6a8f21bab --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + FileUpload: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/800.rst new file mode 100644 index 000000000000..69d6fa5b22b0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + FileUpload: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/9999.rst new file mode 100644 index 000000000000..7f7b9c5071ed --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + FileUpload: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/group.rst new file mode 100644 index 000000000000..b8c4ff1a32fc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + FileUpload: + formEditor: + group: custom + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/groupSorting.rst new file mode 100644 index 000000000000..ba55525bf49e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + FileUpload: + formEditor: + groupSorting: 100 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..56534e1233c9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + FileUpload: + formEditor: + iconIdentifier: t3-form-icon-file-upload + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/label.rst new file mode 100644 index 000000000000..80a087af3186 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + FileUpload: + formEditor: + label: formEditor.elements.FileUpload.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..16848a645530 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/formEditor/predefinedDefaults.rst @@ -0,0 +1,33 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + FileUpload: + formEditor: + predefinedDefaults: + properties: + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/pdf + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/implementationClassName.rst new file mode 100644 index 000000000000..d3530d5230b1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + FileUpload: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\FileUpload + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/allowedMimeTypes.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/allowedMimeTypes.rst new file mode 100644 index 000000000000..5656b3638bbe --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/allowedMimeTypes.rst @@ -0,0 +1,43 @@ +properties.allowedMimeTypes +--------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.properties.allowedMimeTypes + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 7- + + FileUpload: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/msword + - application/vnd.openxmlformats-officedocument.wordprocessingml.document + - application/vnd.oasis.opendocument.text + - application/pdf + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The allowed mime types for the file uploads. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..639c1ba2c183 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/containerClassAttribute.rst @@ -0,0 +1,43 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + FileUpload: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/msword + - application/vnd.openxmlformats-officedocument.wordprocessingml.document + - application/vnd.oasis.opendocument.text + - application/pdf + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..3002b8c26b41 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/elementClassAttribute.rst @@ -0,0 +1,43 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + FileUpload: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/msword + - application/vnd.openxmlformats-officedocument.wordprocessingml.document + - application/vnd.oasis.opendocument.text + - application/pdf + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..f08118898b64 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/elementErrorClassAttribute.rst @@ -0,0 +1,43 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + FileUpload: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/msword + - application/vnd.openxmlformats-officedocument.wordprocessingml.document + - application/vnd.oasis.opendocument.text + - application/pdf + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/saveToFileMount.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/saveToFileMount.rst new file mode 100644 index 000000000000..87a3b1accb87 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/FileUpload/properties/saveToFileMount.rst @@ -0,0 +1,47 @@ +properties.saveToFileMount +-------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.FileUpload.properties.saveToFileMount + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + FileUpload: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - application/msword + - application/vnd.openxmlformats-officedocument.wordprocessingml.document + - application/vnd.oasis.opendocument.text + - application/pdf + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The location (file mount) for the uploaded files. + If this file mount or the property "saveToFileMount" does not exist + the folder in which the form definition lies (persistence identifier) will be used. + If the form is generated programmatically and therefore no persistence identifier exist + the default storage "1:/user_upload/" will be used. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form.rst new file mode 100644 index 000000000000..8b8443eec866 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form.rst @@ -0,0 +1,307 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.form: + +====== +[Form] +====== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.form-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.translation.translationfile: +.. include:: Form/renderingOptions/translation/translationFile.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.templaterootpaths: +.. include:: Form/renderingOptions/templateRootPaths.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.partialrootpaths: +.. include:: Form/renderingOptions/partialRootPaths.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.layoutrootpaths: +.. include:: Form/renderingOptions/layoutRootPaths.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.addquerystring: +.. include:: Form/renderingOptions/addQueryString.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.argumentstobeexcludedfromquerystring: +.. include:: Form/renderingOptions/argumentsToBeExcludedFromQueryString.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.additionalparams: +.. include:: Form/renderingOptions/additionalParams.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.controlleraction: +.. include:: Form/renderingOptions/controllerAction.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.httpmethod: +.. include:: Form/renderingOptions/httpMethod.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.httpenctype: +.. include:: Form/renderingOptions/httpEnctype.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions._iscompositeformelement: +.. include:: Form/renderingOptions/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions._istoplevelformelement: +.. include:: Form/renderingOptions/_isTopLevelFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.honeypot.enable: +.. include:: Form/renderingOptions/honeypot/enable.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.honeypot.formelementtouse: +.. include:: Form/renderingOptions/honeypot/formElementToUse.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.submitbuttonlabel: +.. include:: Form/renderingOptions/submitButtonLabel.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.skipunknownelements: +.. include:: Form/renderingOptions/skipUnknownElements.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor: +.. include:: Form/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.editors.100: +.. include:: Form/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.editors.200: +.. include:: Form/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.editors.300: +.. include:: Form/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.editors.900: +.. include:: Form/formEditor/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.predefineddefaults: +.. include:: Form/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor._iscompositeformelement: +.. include:: Form/formEditor/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor._istoplevelformelement: +.. include:: Form/formEditor/_isTopLevelFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.savesuccessflashmessagetitle: +.. include:: Form/formEditor/saveSuccessFlashMessageTitle.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.savesuccessflashmessagemessage: +.. include:: Form/formEditor/saveSuccessFlashMessageMessage.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalvalidationerrorsdialogtitle: +.. include:: Form/formEditor/modalValidationErrorsDialogTitle.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalvalidationerrorsconfirmButton: +.. include:: Form/formEditor/modalValidationErrorsConfirmButton.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalinsertelementsdialogtitle: +.. include:: Form/formEditor/modalInsertElementsDialogTitle.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalinsertpagesdialogtitle: +.. include:: Form/formEditor/modalInsertPagesDialogTitle.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalclosedialogmessage: +.. include:: Form/formEditor/modalCloseDialogMessage.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalclosedialogtitle: +.. include:: Form/formEditor/modalCloseDialogTitle.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalcloseconfirmbutton: +.. include:: Form/formEditor/modalCloseConfirmButton.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalclosecanclebutton: +.. include:: Form/formEditor/modalCloseCancleButton.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalremoveelementdialogtitle: +.. include:: Form/formEditor/modalRemoveElementDialogTitle.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalremoveelementdialogmessage: +.. include:: Form/formEditor/modalRemoveElementDialogMessage.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalremoveelementconfirmbutton: +.. include:: Form/formEditor/modalRemoveElementConfirmButton.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalremoveelementcanclebutton: +.. include:: Form/formEditor/modalRemoveElementCancleButton.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalremoveelementlastavailablepageflashmessagetitle: +.. include:: Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageTitle.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.modalremoveelementlastavailablepageflashmessagemessage: +.. include:: Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageMessage.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.inspectoreditorformelementselectornoelements: +.. include:: Form/formEditor/inspectorEditorFormElementSelectorNoElements.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.paginationtitle: +.. include:: Form/formEditor/paginationTitle.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.iconidentifier: +.. include:: Form/formEditor/iconIdentifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10: +.. include:: Form/formEditor/propertyCollections/finishers/10.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.identifier: +.. include:: Form/formEditor/propertyCollections/finishers/10/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.100: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.200: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.300: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.400: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.500: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/500.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.600: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/600.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.700: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.800: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.900: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.1000: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/1000.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.1100: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/1100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.10.editors.9999: +.. include:: Form/formEditor/propertyCollections/finishers/10/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20: +.. include:: Form/formEditor/propertyCollections/finishers/20.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.identifier: +.. include:: Form/formEditor/propertyCollections/finishers/20/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.100: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.200: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.300: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.400: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.500: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/500.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.600: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/600.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.700: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.800: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.900: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.1000: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/1000.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.1100: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/1100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.1200: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/1200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.20.editors.9999: +.. include:: Form/formEditor/propertyCollections/finishers/20/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.30: +.. include:: Form/formEditor/propertyCollections/finishers/30.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.30.identifier: +.. include:: Form/formEditor/propertyCollections/finishers/30/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.30.editors.100: +.. include:: Form/formEditor/propertyCollections/finishers/30/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.30.editors.200: +.. include:: Form/formEditor/propertyCollections/finishers/30/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.30.editors.300: +.. include:: Form/formEditor/propertyCollections/finishers/30/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.30.editors.9999: +.. include:: Form/formEditor/propertyCollections/finishers/30/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.40: +.. include:: Form/formEditor/propertyCollections/finishers/40.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.40.identifier: +.. include:: Form/formEditor/propertyCollections/finishers/40/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.40.editors.100: +.. include:: Form/formEditor/propertyCollections/finishers/40/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.40.editors.9999: +.. include:: Form/formEditor/propertyCollections/finishers/40/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.50: +.. include:: Form/formEditor/propertyCollections/finishers/50.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.50.identifier: +.. include:: Form/formEditor/propertyCollections/finishers/50/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.50.editors.100: +.. include:: Form/formEditor/propertyCollections/finishers/50/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.50.editors.9999: +.. include:: Form/formEditor/propertyCollections/finishers/50/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.60: +.. include:: Form/formEditor/propertyCollections/finishers/60.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.60.identifier: +.. include:: Form/formEditor/propertyCollections/finishers/60/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.60.editors.100: +.. include:: Form/formEditor/propertyCollections/finishers/60/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.60.editors.9999: +.. include:: Form/formEditor/propertyCollections/finishers/60/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.70: +.. include:: Form/formEditor/propertyCollections/finishers/70.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.70.identifier: +.. include:: Form/formEditor/propertyCollections/finishers/70/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.70.editors.100: +.. include:: Form/formEditor/propertyCollections/finishers/70/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.70.editors.9999: +.. include:: Form/formEditor/propertyCollections/finishers/70/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.80: +.. include:: Form/formEditor/propertyCollections/finishers/80.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.80.identifier: +.. include:: Form/formEditor/propertyCollections/finishers/80/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.80.editors.100: +.. include:: Form/formEditor/propertyCollections/finishers/80/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.form.formeditor.propertycollections.finishers.80.editors.9999: +.. include:: Form/formEditor/propertyCollections/finishers/80/editors/9999.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor.rst new file mode 100644 index 000000000000..a0573114c884 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor.rst @@ -0,0 +1,371 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + Form: + formEditor: + predefinedDefaults: + renderingOptions: + submitButtonLabel: 'formEditor.elements.Form.editor.submitButtonLabel.value' + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.BaseFormElementMixin.editor.label.label + propertyPath: label + 300: + identifier: 'submitButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Form.editor.submitButtonLabel.label' + propertyPath: 'renderingOptions.submitButtonLabel' + 900: + identifier: finishers + templateName: Inspector-FinishersEditor + label: formEditor.elements.Form.editor.finishers.label + selectOptions: + 10: + value: '' + label: formEditor.elements.Form.editor.finishers.EmptyValue.label + 20: + value: EmailToSender + label: formEditor.elements.Form.editor.finishers.EmailToSender.label + 30: + value: EmailToReceiver + label: formEditor.elements.Form.editor.finishers.EmailToReceiver.label + 40: + value: Redirect + label: formEditor.elements.Form.editor.finishers.Redirect.label + 50: + value: DeleteUploads + label: formEditor.elements.Form.editor.finishers.DeleteUploads.label + _isCompositeFormElement: false + _isTopLevelFormElement: true + saveSuccessFlashMessageTitle: formEditor.elements.Form.saveSuccessFlashMessageTitle + saveSuccessFlashMessageMessage: formEditor.elements.Form.saveSuccessFlashMessageMessage + modalValidationErrorsDialogTitle: formEditor.modals.validationErrors.dialogTitle + modalValidationErrorsConfirmButton: formEditor.modals.validationErrors.confirmButton + modalInsertElementsDialogTitle: formEditor.modals.insertElements.dialogTitle + modalInsertPagesDialogTitle: formEditor.modals.newPages.dialogTitle + modalCloseDialogMessage: formEditor.modals.close.dialogMessage + modalCloseDialogTitle: formEditor.modals.close.dialogTitle + modalCloseConfirmButton: formEditor.modals.close.confirmButton + modalCloseCancleButton: formEditor.modals.close.cancleButton + modalRemoveElementDialogTitle: formEditor.modals.removeElement.dialogTitle + modalRemoveElementDialogMessage: formEditor.modals.removeElement.dialogMessage + modalRemoveElementConfirmButton: formEditor.modals.removeElement.confirmButton + modalRemoveElementCancleButton: formEditor.modals.removeElement.cancleButton + modalRemoveElementLastAvailablePageFlashMessageTitle: formEditor.modals.removeElement.lastAvailablePageFlashMessageTitle + modalRemoveElementLastAvailablePageFlashMessageMessage: formEditor.modals.removeElement.lastAvailablePageFlashMessageMessage + inspectorEditorFormElementSelectorNoElements: formEditor.inspector.editor.formelement_selector.no_elements + paginationTitle: formEditor.pagination.title + iconIdentifier: content-elements-mailform + propertyCollections: + finishers: + 10: + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label + 200: + identifier: subject + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.subject.label + propertyPath: options.subject + enableFormelementSelectionButton: true + propertyValidators: + 10: NotEmpty + 20: FormElementIdentifierWithinCurlyBracesInclusive + 300: + identifier: recipientAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientAddress.label + propertyPath: options.recipientAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 400: + identifier: recipientName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientName.label + propertyPath: options.recipientName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 500: + identifier: senderAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.senderAddress.label + propertyPath: options.senderAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 600: + identifier: senderName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.senderName.label + propertyPath: options.senderName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 700: + identifier: replyToAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.replyToAddress.label + propertyPath: options.replyToAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 800: + identifier: carbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.carbonCopyAddress.label + propertyPath: options.carbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 900: + identifier: blindCarbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.blindCarbonCopyAddress.label + propertyPath: options.blindCarbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 1000: + identifier: format + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.label + propertyPath: options.format + selectOptions: + 10: + value: plaintext + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.1 + 20: + value: html + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.2 + 1100: + identifier: attachUploads + templateName: Inspector-CheckboxEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.attachUploads.label + propertyPath: options.attachUploads + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + identifier: EmailToSender + 20: + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label + 200: + identifier: subject + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.subject.label + propertyPath: options.subject + enableFormelementSelectionButton: true + propertyValidators: + 10: NotEmpty + 20: FormElementIdentifierWithinCurlyBracesInclusive + 300: + identifier: recipientAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.recipientAddress.label + propertyPath: options.recipientAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 400: + identifier: recipientName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.recipientName.label + propertyPath: options.recipientName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 500: + identifier: senderAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.senderAddress.label + propertyPath: options.senderAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 600: + identifier: senderName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.senderName.label + propertyPath: options.senderName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 700: + identifier: replyToAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.replyToAddress.label + propertyPath: options.replyToAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 800: + identifier: carbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.carbonCopyAddress.label + propertyPath: options.carbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 900: + identifier: blindCarbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.blindCarbonCopyAddress.label + propertyPath: options.blindCarbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 1000: + identifier: format + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.format.label + propertyPath: options.format + selectOptions: + 10: + value: plaintext + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.1 + 20: + value: html + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.2 + 1100: + identifier: attachUploads + templateName: Inspector-CheckboxEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.attachUploads.label + propertyPath: options.attachUploads + 1200: + identifier: language + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.language.label + propertyPath: options.translation.language + selectOptions: + 10: + value: default + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.language.1 + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + identifier: EmailToReceiver + 30: + identifier: Redirect + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Redirect.editor.header.label + 200: + identifier: pageUid + templateName: Inspector-Typo3WinBrowserEditor + label: formEditor.elements.Form.finisher.Redirect.editor.pageUid.label + buttonLabel: formEditor.elements.Form.finisher.Redirect.editor.pageUid.buttonLabel + browsableType: pages + propertyPath: options.pageUid + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: additionalParameters + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.Redirect.editor.additionalParameters.label + propertyPath: options.additionalParameters + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: DeleteUploads + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Confirmation + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Confirmation.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Closure + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Closure.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: FlashMessage + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: SaveToDatabase + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/_isCompositeFormElement.rst new file mode 100644 index 000000000000..6c3441aae15e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/_isCompositeFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isCompositeFormElement +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + _isCompositeFormElement: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/_isTopLevelFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/_isTopLevelFormElement.rst new file mode 100644 index 000000000000..60c0320a13a7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/_isTopLevelFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isTopLevelFormElement +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor._isTopLevelFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + _isTopLevelFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element must not have a parent form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/100.rst new file mode 100644 index 000000000000..d2bd5eb5f25e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Form: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/200.rst new file mode 100644 index 000000000000..af616636f587 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Form: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.BaseFormElementMixin.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/300.rst new file mode 100644 index 000000000000..60ea32570ffe --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/300.rst @@ -0,0 +1,31 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Form: + formEditor: + editors: + 300: + identifier: 'submitButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Form.editor.submitButtonLabel.label' + propertyPath: 'renderingOptions.submitButtonLabel' diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/900.rst new file mode 100644 index 000000000000..1654a1c8c9a2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/editors/900.rst @@ -0,0 +1,47 @@ +formEditor.editors.900 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.editors.900 + +:aspect:`Data type` + array/ :ref:`[FinishersEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.finisherseditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Form: + formEditor: + editors: + 900: + identifier: finishers + templateName: Inspector-FinishersEditor + label: formEditor.elements.Form.editor.finishers.label + selectOptions: + 10: + value: '' + label: formEditor.elements.Form.editor.finishers.EmptyValue.label + 20: + value: EmailToSender + label: formEditor.elements.Form.editor.finishers.EmailToSender.label + 30: + value: EmailToReceiver + label: formEditor.elements.Form.editor.finishers.EmailToReceiver.label + 40: + value: Redirect + label: formEditor.elements.Form.editor.finishers.Redirect.label + 50: + value: DeleteUploads + label: formEditor.elements.Form.editor.finishers.DeleteUploads.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..171ebbd99163 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + iconIdentifier: content-elements-mailform + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/inspectorEditorFormElementSelectorNoElements.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/inspectorEditorFormElementSelectorNoElements.rst new file mode 100644 index 000000000000..2c59974f34d3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/inspectorEditorFormElementSelectorNoElements.rst @@ -0,0 +1,29 @@ +formEditor.inspectorEditorFormElementSelectorNoElements +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.inspectorEditorFormElementSelectorNoElements + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + inspectorEditorFormElementSelectorNoElements: formEditor.inspector.editor.formelement_selector.no_elements + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseCancleButton.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseCancleButton.rst new file mode 100644 index 000000000000..2b8e0ca0d6e3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseCancleButton.rst @@ -0,0 +1,29 @@ +formEditor.modalCloseCancleButton +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalCloseCancleButton + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalCloseCancleButton: formEditor.modals.close.cancleButton + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseConfirmButton.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseConfirmButton.rst new file mode 100644 index 000000000000..3bfb723d4e1c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseConfirmButton.rst @@ -0,0 +1,29 @@ +formEditor.modalCloseConfirmButton +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalCloseConfirmButton + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalCloseConfirmButton: formEditor.modals.close.confirmButton + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseDialogMessage.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseDialogMessage.rst new file mode 100644 index 000000000000..463f1e7f6849 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseDialogMessage.rst @@ -0,0 +1,29 @@ +formEditor.modalCloseDialogMessage +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalCloseDialogMessage + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalCloseDialogMessage: formEditor.modals.close.dialogMessage + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseDialogTitle.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseDialogTitle.rst new file mode 100644 index 000000000000..aea54025678f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalCloseDialogTitle.rst @@ -0,0 +1,29 @@ +formEditor.modalCloseDialogTitle +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalCloseDialogTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalCloseDialogTitle: formEditor.modals.close.dialogTitle + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalInsertElementsDialogTitle.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalInsertElementsDialogTitle.rst new file mode 100644 index 000000000000..e3c49c713daf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalInsertElementsDialogTitle.rst @@ -0,0 +1,29 @@ +formEditor.modalInsertPagesDialogTitle +-------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalInsertPagesDialogTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalInsertElementsDialogTitle: formEditor.modals.insertElements.dialogTitle + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalInsertPagesDialogTitle.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalInsertPagesDialogTitle.rst new file mode 100644 index 000000000000..5a89bd31b44f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalInsertPagesDialogTitle.rst @@ -0,0 +1,29 @@ +formEditor.modalInsertPagesDialogTitle +-------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalInsertPagesDialogTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalInsertPagesDialogTitle: formEditor.modals.newPages.dialogTitle + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementCancleButton.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementCancleButton.rst new file mode 100644 index 000000000000..0dd2b80673bb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementCancleButton.rst @@ -0,0 +1,29 @@ +formEditor.modalRemoveElementCancleButton +----------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalRemoveElementCancleButton + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalRemoveElementCancleButton: formEditor.modals.removeElement.cancleButton + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementConfirmButton.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementConfirmButton.rst new file mode 100644 index 000000000000..ee3e19c79219 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementConfirmButton.rst @@ -0,0 +1,29 @@ +formEditor.modalRemoveElementConfirmButton +------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalRemoveElementConfirmButton + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalRemoveElementConfirmButton: formEditor.modals.removeElement.confirmButton + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementDialogMessage.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementDialogMessage.rst new file mode 100644 index 000000000000..f9cba8ddc322 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementDialogMessage.rst @@ -0,0 +1,29 @@ +formEditor.modalRemoveElementDialogMessage +------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalRemoveElementDialogMessage + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalRemoveElementDialogMessage: formEditor.modals.removeElement.dialogMessage + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementDialogTitle.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementDialogTitle.rst new file mode 100644 index 000000000000..ecd21f3649ce --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementDialogTitle.rst @@ -0,0 +1,29 @@ +formEditor.modalRemoveElementDialogTitle +---------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalRemoveElementDialogTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalRemoveElementDialogTitle: formEditor.modals.removeElement.dialogTitle + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageMessage.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageMessage.rst new file mode 100644 index 000000000000..08627da65b52 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageMessage.rst @@ -0,0 +1,29 @@ +formEditor.modalRemoveElementLastAvailablePageFlashMessageMessage +----------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalRemoveElementLastAvailablePageFlashMessageMessage + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalRemoveElementLastAvailablePageFlashMessageMessage: formEditor.modals.removeElement.lastAvailablePageFlashMessageMessage + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageTitle.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageTitle.rst new file mode 100644 index 000000000000..f17cbd50a53e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalRemoveElementLastAvailablePageFlashMessageTitle.rst @@ -0,0 +1,29 @@ +formEditor.modalRemoveElementLastAvailablePageFlashMessageTitle +--------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalRemoveElementLastAvailablePageFlashMessageTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalRemoveElementLastAvailablePageFlashMessageTitle: formEditor.modals.removeElement.lastAvailablePageFlashMessageTitle + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalValidationErrorsConfirmButton.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalValidationErrorsConfirmButton.rst new file mode 100644 index 000000000000..75cc0effa2a4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalValidationErrorsConfirmButton.rst @@ -0,0 +1,29 @@ +formEditor.modalValidationErrorsConfirmButton +--------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalValidationErrorsConfirmButton + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalValidationErrorsConfirmButton: formEditor.modals.validationErrors.confirmButton + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalValidationErrorsDialogTitle.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalValidationErrorsDialogTitle.rst new file mode 100644 index 000000000000..f74deeb185b2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/modalValidationErrorsDialogTitle.rst @@ -0,0 +1,29 @@ +formEditor.modalValidationErrorsDialogTitle +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.modalValidationErrorsDialogTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + modalValidationErrorsDialogTitle: formEditor.modals.validationErrors.dialogTitle + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/paginationTitle.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/paginationTitle.rst new file mode 100644 index 000000000000..78c970d0e40c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/paginationTitle.rst @@ -0,0 +1,29 @@ +formEditor.paginationTitle +-------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.paginationTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + paginationTitle: formEditor.pagination.title + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..de74e1e96b02 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/predefinedDefaults.rst @@ -0,0 +1,31 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Form: + formEditor: + predefinedDefaults: + renderingOptions: + submitButtonLabel: 'formEditor.elements.Form.editor.submitButtonLabel.value' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10.rst new file mode 100644 index 000000000000..cd7c910f8b50 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10.rst @@ -0,0 +1,127 @@ +formEditor.propertyCollections.finishers.10 +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label + 200: + identifier: subject + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.subject.label + propertyPath: options.subject + enableFormelementSelectionButton: true + propertyValidators: + 10: NotEmpty + 20: FormElementIdentifierWithinCurlyBracesInclusive + 300: + identifier: recipientAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientAddress.label + propertyPath: options.recipientAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 400: + identifier: recipientName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientName.label + propertyPath: options.recipientName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 500: + identifier: senderAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.senderAddress.label + propertyPath: options.senderAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 600: + identifier: senderName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.senderName.label + propertyPath: options.senderName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 700: + identifier: replyToAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.replyToAddress.label + propertyPath: options.replyToAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 800: + identifier: carbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.carbonCopyAddress.label + propertyPath: options.carbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 900: + identifier: blindCarbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.blindCarbonCopyAddress.label + propertyPath: options.blindCarbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 1000: + identifier: format + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.label + propertyPath: options.format + selectOptions: + 10: + value: plaintext + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.1 + 20: + value: html + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.2 + 1100: + identifier: attachUploads + templateName: Inspector-CheckboxEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.attachUploads.label + propertyPath: options.attachUploads + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/100.rst new file mode 100644 index 000000000000..6123d5188389 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.finishers.10.editors.100 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/1000.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/1000.rst new file mode 100644 index 000000000000..3f4b12bacc98 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/1000.rst @@ -0,0 +1,40 @@ +formEditor.propertyCollections.finishers.10.editors.1000 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.1000 + +:aspect:`Data type` + array/ :ref:`[SingleSelectEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 1000: + identifier: format + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.label + propertyPath: options.format + selectOptions: + 10: + value: plaintext + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.1 + 20: + value: html + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.2 + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/1100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/1100.rst new file mode 100644 index 000000000000..7ef9b4c5b2ee --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/1100.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.10.editors.1000 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.1000 + +:aspect:`Data type` + array/ :ref:`[CheckboxEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 1100: + identifier: attachUploads + templateName: Inspector-CheckboxEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.attachUploads.label + propertyPath: options.attachUploads + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/200.rst new file mode 100644 index 000000000000..610a151f1ef9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/200.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.finishers.10.editors.200 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 200: + identifier: subject + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.subject.label + propertyPath: options.subject + enableFormelementSelectionButton: true + propertyValidators: + 10: NotEmpty + 20: FormElementIdentifierWithinCurlyBracesInclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/300.rst new file mode 100644 index 000000000000..4c3c5e0154c6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/300.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.10.editors.300 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 300: + identifier: recipientAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientAddress.label + propertyPath: options.recipientAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/400.rst new file mode 100644 index 000000000000..f3c50d17d42d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/400.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.finishers.10.editors.400 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 400: + identifier: recipientName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientName.label + propertyPath: options.recipientName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/500.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/500.rst new file mode 100644 index 000000000000..3c7a44c39c4c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/500.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.10.editors.500 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.500 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 500: + identifier: senderAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.senderAddress.label + propertyPath: options.senderAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/600.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/600.rst new file mode 100644 index 000000000000..c371ebe24989 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/600.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.finishers.10.editors.600 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.600 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 600: + identifier: senderName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.senderName.label + propertyPath: options.senderName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/700.rst new file mode 100644 index 000000000000..3bb4a0fc6cb0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/700.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.10.editors.700 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.700 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 700: + identifier: replyToAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.replyToAddress.label + propertyPath: options.replyToAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/800.rst new file mode 100644 index 000000000000..5a6bfd5aa035 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/800.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.10.editors.800 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.800 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 800: + identifier: carbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.carbonCopyAddress.label + propertyPath: options.carbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/900.rst new file mode 100644 index 000000000000..e27bcee9916f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/900.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.10.editors.900 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.900 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 900: + identifier: blindCarbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.blindCarbonCopyAddress.label + propertyPath: options.blindCarbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/9999.rst new file mode 100644 index 000000000000..68811e22cf88 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.finishers.10.editors.9999 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/identifier.rst new file mode 100644 index 000000000000..d4a31be00ecf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/10/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.10.identifier +------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.10.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Form: + formEditor: + propertyCollections: + finishers: + 10: + identifier: EmailToSender + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20.rst new file mode 100644 index 000000000000..ae04a933c200 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20.rst @@ -0,0 +1,136 @@ +formEditor.propertyCollections.finishers.20 +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label + 200: + identifier: subject + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.subject.label + propertyPath: options.subject + enableFormelementSelectionButton: true + propertyValidators: + 10: NotEmpty + 20: FormElementIdentifierWithinCurlyBracesInclusive + 300: + identifier: recipientAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.recipientAddress.label + propertyPath: options.recipientAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 400: + identifier: recipientName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.recipientName.label + propertyPath: options.recipientName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 500: + identifier: senderAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.senderAddress.label + propertyPath: options.senderAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + 600: + identifier: senderName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.senderName.label + propertyPath: options.senderName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + 700: + identifier: replyToAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.replyToAddress.label + propertyPath: options.replyToAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 800: + identifier: carbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.carbonCopyAddress.label + propertyPath: options.carbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 900: + identifier: blindCarbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.blindCarbonCopyAddress.label + propertyPath: options.blindCarbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + 1000: + identifier: format + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.format.label + propertyPath: options.format + selectOptions: + 10: + value: plaintext + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.1 + 20: + value: html + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.2 + 1100: + identifier: attachUploads + templateName: Inspector-CheckboxEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.attachUploads.label + propertyPath: options.attachUploads + 1200: + identifier: language + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.language.label + propertyPath: options.translation.language + selectOptions: + 10: + value: default + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.language.1 + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/100.rst new file mode 100644 index 000000000000..56da923e796b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.finishers.20.editors.100 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1000.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1000.rst new file mode 100644 index 000000000000..d69fea158805 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1000.rst @@ -0,0 +1,40 @@ +formEditor.propertyCollections.finishers.20.editors.1000 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.1000 + +:aspect:`Data type` + array/ :ref:`[SingleSelectEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 1000: + identifier: format + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.format.label + propertyPath: options.format + selectOptions: + 10: + value: plaintext + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.1 + 20: + value: html + label: formEditor.elements.Form.finisher.EmailToSender.editor.format.2 + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1100.rst new file mode 100644 index 000000000000..066f1d445640 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1100.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.20.editors.1000 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.1000 + +:aspect:`Data type` + array/ :ref:`[CheckboxEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 1100: + identifier: attachUploads + templateName: Inspector-CheckboxEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.attachUploads.label + propertyPath: options.attachUploads + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1200.rst new file mode 100644 index 000000000000..57b79e01c34a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/1200.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.finishers.20.editors.1200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.1200 + +:aspect:`Data type` + array/ :ref:`[SingleSelectEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 1200: + identifier: language + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.language.label + propertyPath: options.translation.language + selectOptions: + 10: + value: default + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.language.1 + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/200.rst new file mode 100644 index 000000000000..1eb70fe078cb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/200.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.finishers.20.editors.200 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 200: + identifier: subject + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.subject.label + propertyPath: options.subject + enableFormelementSelectionButton: true + propertyValidators: + 10: NotEmpty + 20: FormElementIdentifierWithinCurlyBracesInclusive diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/300.rst new file mode 100644 index 000000000000..29977cd15171 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/300.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.20.editors.300 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 300: + identifier: recipientAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.recipientAddress.label + propertyPath: options.recipientAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/400.rst new file mode 100644 index 000000000000..4563065b5fee --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/400.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.finishers.20.editors.400 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 400: + identifier: recipientName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToSender.editor.recipientName.label + propertyPath: options.recipientName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/500.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/500.rst new file mode 100644 index 000000000000..5201d13335d3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/500.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.20.editors.500 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.500 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 500: + identifier: senderAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.senderAddress.label + propertyPath: options.senderAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmail + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/600.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/600.rst new file mode 100644 index 000000000000..f03ac4221cd9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/600.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.finishers.20.editors.600 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.600 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 600: + identifier: senderName + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.senderName.label + propertyPath: options.senderName + enableFormelementSelectionButton: true + propertyValidators: + 10: FormElementIdentifierWithinCurlyBracesInclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/700.rst new file mode 100644 index 000000000000..4eb91f4706be --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/700.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.20.editors.700 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.700 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 700: + identifier: replyToAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.replyToAddress.label + propertyPath: options.replyToAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/800.rst new file mode 100644 index 000000000000..a019779fad0a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/800.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.20.editors.800 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.800 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 800: + identifier: carbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.carbonCopyAddress.label + propertyPath: options.carbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/900.rst new file mode 100644 index 000000000000..239dd72e4eb7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/900.rst @@ -0,0 +1,38 @@ +formEditor.propertyCollections.finishers.20.editors.900 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.900 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 900: + identifier: blindCarbonCopyAddress + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.EmailToReceiver.editor.blindCarbonCopyAddress.label + propertyPath: options.blindCarbonCopyAddress + enableFormelementSelectionButton: true + propertyValidatorsMode: OR + propertyValidators: + 10: NaiveEmailOrEmpty + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/9999.rst new file mode 100644 index 000000000000..d089793a7e87 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.finishers.20.editors.9999 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/identifier.rst new file mode 100644 index 000000000000..8809c9d02473 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/20/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.20.identifier +------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.20.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Form: + formEditor: + propertyCollections: + finishers: + 20: + identifier: EmailToReceiver + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30.rst new file mode 100644 index 000000000000..1e11a183ed37 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30.rst @@ -0,0 +1,51 @@ +formEditor.propertyCollections.finishers.30 +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.30 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Form: + formEditor: + propertyCollections: + finishers: + 30: + identifier: Redirect + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Redirect.editor.header.label + 200: + identifier: pageUid + templateName: Inspector-Typo3WinBrowserEditor + label: formEditor.elements.Form.finisher.Redirect.editor.pageUid.label + buttonLabel: formEditor.elements.Form.finisher.Redirect.editor.pageUid.buttonLabel + browsableType: pages + propertyPath: options.pageUid + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: additionalParameters + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.Redirect.editor.additionalParameters.label + propertyPath: options.additionalParameters + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/100.rst new file mode 100644 index 000000000000..7744c218afad --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.finishers.30.editors.100 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.30.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 30: + identifier: Redirect + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Redirect.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/200.rst new file mode 100644 index 000000000000..a937e06bc5b7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/200.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.finishers.30.editors.200 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.30.editors.200 + +:aspect:`Data type` + array/ :ref:`[Typo3WinBrowserEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.typo3winbrowsereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 30: + identifier: Redirect + editors: + 200: + identifier: pageUid + templateName: Inspector-Typo3WinBrowserEditor + label: formEditor.elements.Form.finisher.Redirect.editor.pageUid.label + buttonLabel: formEditor.elements.Form.finisher.Redirect.editor.pageUid.buttonLabel + browsableType: pages + propertyPath: options.pageUid + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/300.rst new file mode 100644 index 000000000000..b48a5849f5ac --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/300.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.30.editors.300 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.30.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 30: + identifier: Redirect + editors: + 300: + identifier: additionalParameters + templateName: Inspector-TextEditor + label: formEditor.elements.Form.finisher.Redirect.editor.additionalParameters.label + propertyPath: options.additionalParameters + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/9999.rst new file mode 100644 index 000000000000..72f694ec2f77 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.finishers.30.editors.9999 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.30.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 30: + identifier: Redirect + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/identifier.rst new file mode 100644 index 000000000000..f0fe2d34862d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/30/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.30.identifier +------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.30.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Form: + formEditor: + propertyCollections: + finishers: + 30: + identifier: Redirect + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40.rst new file mode 100644 index 000000000000..203e61b4fd2d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.finishers.40 +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.40 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Form: + formEditor: + propertyCollections: + finishers: + 40: + identifier: DeleteUploads + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/editors/100.rst new file mode 100644 index 000000000000..ef7d064889e3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.finishers.40.editors.100 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.40.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 40: + identifier: DeleteUploads + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/editors/9999.rst new file mode 100644 index 000000000000..dc1e19717392 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.finishers.40.editors.9999 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.40.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 40: + identifier: DeleteUploads + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/identifier.rst new file mode 100644 index 000000000000..39202cea925d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/40/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.40.identifier +------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.40.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Form: + formEditor: + propertyCollections: + finishers: + 40: + identifier: DeleteUploads + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50.rst new file mode 100644 index 000000000000..f3f15d21039a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.finishers.50 +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.50 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Form: + formEditor: + propertyCollections: + finishers: + 50: + identifier: Confirmation + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Confirmation.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/editors/100.rst new file mode 100644 index 000000000000..d2f0c004d1be --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.finishers.50.editors.100 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.50.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 50: + identifier: Confirmation + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Confirmation.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/editors/9999.rst new file mode 100644 index 000000000000..646d742d2ab9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.finishers.50.editors.9999 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.50.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 50: + identifier: Confirmation + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/identifier.rst new file mode 100644 index 000000000000..6a109a80cb5e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/50/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.50.identifier +------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.50.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Form: + formEditor: + propertyCollections: + finishers: + 50: + identifier: Confirmation + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60.rst new file mode 100644 index 000000000000..98aeff6ed09e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.finishers.60 +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.60 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Form: + formEditor: + propertyCollections: + finishers: + 60: + identifier: Closure + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Closure.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/editors/100.rst new file mode 100644 index 000000000000..e2b8b9ff2402 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.finishers.60.editors.100 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.60.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 60: + identifier: Closure + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.Closure.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/editors/9999.rst new file mode 100644 index 000000000000..071f0bafd206 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.finishers.60.editors.9999 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.60.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 60: + identifier: Closure + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/identifier.rst new file mode 100644 index 000000000000..6d73e5966850 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/60/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.60.identifier +------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.60.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Form: + formEditor: + propertyCollections: + finishers: + 60: + identifier: Closure + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70.rst new file mode 100644 index 000000000000..84b6930019df --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.finishers.70 +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.70 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Form: + formEditor: + propertyCollections: + finishers: + 70: + identifier: FlashMessage + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/editors/100.rst new file mode 100644 index 000000000000..356e5cc2a0c3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.finishers.70.editors.100 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.70.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 70: + identifier: FlashMessage + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/editors/9999.rst new file mode 100644 index 000000000000..8e238a9d9cdf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.finishers.70.editors.9999 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.70.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 70: + identifier: FlashMessage + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/identifier.rst new file mode 100644 index 000000000000..e9a01f7b8140 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/70/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.70.identifier +------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.70.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Form: + formEditor: + propertyCollections: + finishers: + 70: + identifier: FlashMessage + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80.rst new file mode 100644 index 000000000000..d648c02227b1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.finishers.80 +------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.80 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Form: + formEditor: + propertyCollections: + finishers: + 80: + identifier: SaveToDatabase + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/editors/100.rst new file mode 100644 index 000000000000..19ac618bff34 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.finishers.80.editors.100 +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.80.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 80: + identifier: SaveToDatabase + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/editors/9999.rst new file mode 100644 index 000000000000..1cda8910b23f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.finishers.80.editors.9999 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.80.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Form: + formEditor: + propertyCollections: + finishers: + 80: + identifier: SaveToDatabase + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/identifier.rst new file mode 100644 index 000000000000..c039d8537f8f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/propertyCollections/finishers/80/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.finishers.80.identifier +------------------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.propertyCollections.finishers.80.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Form: + formEditor: + propertyCollections: + finishers: + 80: + identifier: SaveToDatabase + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>` + +:aspect:`Description` + Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/saveSuccessFlashMessageMessage.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/saveSuccessFlashMessageMessage.rst new file mode 100644 index 000000000000..de5d716d9f3e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/saveSuccessFlashMessageMessage.rst @@ -0,0 +1,29 @@ +formEditor.saveSuccessFlashMessageMessage +----------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.saveSuccessFlashMessageMessage + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + saveSuccessFlashMessageMessage: formEditor.elements.Form.saveSuccessFlashMessageMessage + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/saveSuccessFlashMessageTitle.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/saveSuccessFlashMessageTitle.rst new file mode 100644 index 000000000000..bcfb594a35d5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/formEditor/saveSuccessFlashMessageTitle.rst @@ -0,0 +1,29 @@ +formEditor.saveSuccessFlashMessageTitle +--------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.formEditor.saveSuccessFlashMessageTitle + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Form: + formEditor: + saveSuccessFlashMessageTitle: formEditor.elements.Form.saveSuccessFlashMessageTitle + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + Internal setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/_isCompositeFormElement.rst new file mode 100644 index 000000000000..e4eeb40773c9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/_isCompositeFormElement.rst @@ -0,0 +1,55 @@ +renderingOptions._isCompositeFormElement +---------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 17 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/_isTopLevelFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/_isTopLevelFormElement.rst new file mode 100644 index 000000000000..e33a7a167b21 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/_isTopLevelFormElement.rst @@ -0,0 +1,55 @@ +renderingOptions._isTopLevelFormElement +--------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions._isTopLevelFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 18 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element must not have a parent form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/addQueryString.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/addQueryString.rst new file mode 100644 index 000000000000..f79a8edcc4a0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/addQueryString.rst @@ -0,0 +1,55 @@ +renderingOptions.addQueryString +------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.addQueryString + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 11 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Fluid f:form viewHelper option ``addQueryString`` \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/additionalParams.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/additionalParams.rst new file mode 100644 index 000000000000..a855190a0e93 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/additionalParams.rst @@ -0,0 +1,55 @@ +renderingOptions.additionalParams +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.additionalParams + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 13 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Fluid f:form viewHelper option ``additionalParams``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/argumentsToBeExcludedFromQueryString.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/argumentsToBeExcludedFromQueryString.rst new file mode 100644 index 000000000000..9279bec14e96 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/argumentsToBeExcludedFromQueryString.rst @@ -0,0 +1,55 @@ +renderingOptions.argumentsToBeExcludedFromQueryString +----------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.argumentsToBeExcludedFromQueryString + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 12 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Fluid f:form viewHelper option ``argumentsToBeExcludedFromQueryString``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/controllerAction.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/controllerAction.rst new file mode 100644 index 000000000000..c0ff6081b212 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/controllerAction.rst @@ -0,0 +1,55 @@ +renderingOptions.controllerAction +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.controllerAction + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 14 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +:aspect:`Good to know` + - :ref:`"Render within your own Extbase extension"<concepts-frontendrendering-extbase>` + +:aspect:`Description` + Fluid f:form viewHelper option ``action``. This is usefull if you want to render your form within your own extbase extension. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/honeypot/enable.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/honeypot/enable.rst new file mode 100644 index 000000000000..d4cd077ed1d2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/honeypot/enable.rst @@ -0,0 +1,55 @@ +renderingOptions.honeypot.enable +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.honeypot.enable + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 20 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Enable or disable the honeypot feature. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/honeypot/formElementToUse.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/honeypot/formElementToUse.rst new file mode 100644 index 000000000000..ebade3824007 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/honeypot/formElementToUse.rst @@ -0,0 +1,55 @@ +renderingOptions.honeypot.formElementToUse +------------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.honeypot.formElementToUse + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 21 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Define which ``<formElementIdentifier>`` should be used to render the honeypot. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/httpEnctype.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/httpEnctype.rst new file mode 100644 index 000000000000..bc4cb7bbcf00 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/httpEnctype.rst @@ -0,0 +1,55 @@ +renderingOptions.httpEnctype +---------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.httpEnctype + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 16 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Fluid f:form viewHelper option ``enctype``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/httpMethod.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/httpMethod.rst new file mode 100644 index 000000000000..f5853c23c6ad --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/httpMethod.rst @@ -0,0 +1,55 @@ +renderingOptions.httpMethod +--------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.httpMethod + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 15 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Fluid f:form viewHelper option ``method``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/layoutRootPaths.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/layoutRootPaths.rst new file mode 100644 index 000000000000..f53262570a05 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/layoutRootPaths.rst @@ -0,0 +1,55 @@ +renderingOptions.layoutRootPaths +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.layoutRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 9-10 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +:aspect:`Good to know` + - :ref:`"Custom templates"<concepts-frontendrendering-templates-customtemplates>` + +:aspect:`Description` + Please read the section :ref:`layoutRootPaths<apireference-frontendrendering-fluidformrenderer-options-layoutrootpaths>`. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/partialRootPaths.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/partialRootPaths.rst new file mode 100644 index 000000000000..418efc43c545 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/partialRootPaths.rst @@ -0,0 +1,55 @@ +renderingOptions.partialRootPaths +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.partialRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 7-8 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +:aspect:`Good to know` + - :ref:`"Custom templates"<concepts-frontendrendering-templates-customtemplates>` + +:aspect:`partialRootPaths` + Please read the section :ref:`templateRootPaths<apireference-frontendrendering-fluidformrenderer-options-partialrootpaths>`. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/skipUnknownElements.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/skipUnknownElements.rst new file mode 100644 index 000000000000..bba1c22a1bc8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/skipUnknownElements.rst @@ -0,0 +1,55 @@ +renderingOptions.skipUnknownElements +------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.skipUnknownElements + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 23 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + If set, every unknown ``<formElementIdentifier>`` will not be rendered. If set to false an exeption will be thrown. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/submitButtonLabel.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/submitButtonLabel.rst new file mode 100644 index 000000000000..3f193ba81336 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/submitButtonLabel.rst @@ -0,0 +1,55 @@ +renderingOptions.submitButtonLabel +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.submitButtonLabel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 22 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + The submit Button label. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/templateRootPaths.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/templateRootPaths.rst new file mode 100644 index 000000000000..3435f000dad4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/templateRootPaths.rst @@ -0,0 +1,55 @@ +renderingOptions.templateRootPaths +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.templateRootPaths + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5-6 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +:aspect:`Good to know` + - :ref:`"Custom templates"<concepts-frontendrendering-templates-customtemplates>` + +:aspect:`Description` + Please read the section :ref:`templateRootPaths<apireference-frontendrendering-fluidformrenderer-options-templaterootpaths>`. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/translation/translationFile.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/translation/translationFile.rst new file mode 100644 index 000000000000..6fa7927ccaed --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Form/renderingOptions/translation/translationFile.rst @@ -0,0 +1,56 @@ +renderingOptions.translation.translationFile +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.translation.translationFile + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Form: + renderingOptions: + translation: + translationFile: 'EXT:form/Resources/Private/Language/locallang.xlf' + templateRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Templates/' + partialRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Partials/' + layoutRootPaths: + 10: 'EXT:form/Resources/Private/Frontend/Layouts/' + addQueryString: false + argumentsToBeExcludedFromQueryString: { } + additionalParams: { } + controllerAction: perform + httpMethod: post + httpEnctype: multipart/form-data + _isCompositeFormElement: false + _isTopLevelFormElement: true + honeypot: + enable: true + formElementToUse: Honeypot + submitButtonLabel: Submit + skipUnknownElements: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Filesystem path(s) to translation files which should be searched for form element property translations. + If ``translationFile`` is undefined, - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.translation.translationFile"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.translation.translationfile>` will be used. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer.rst new file mode 100644 index 000000000000..1be21ebb2f9e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer.rst @@ -0,0 +1,73 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.gridcontainer: + +=============== +[GridContainer] +=============== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.gridcontainer-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.implementationclassname: +.. include:: GridContainer/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.properties.containerclassattribute: +.. include:: GridContainer/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.properties.elementclassattribute: +.. include:: GridContainer/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.properties.elementerrorclassattribute: +.. include:: GridContainer/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.properties.gridcolumnclassautoconfiguration.gridsize: +.. include:: GridContainer/properties/gridColumnClassAutoConfiguration/gridSize.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.properties.gridcolumnclassautoconfiguration.viewports: +.. include:: GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.properties.gridcolumnclassautoconfiguration.viewports.*.classpattern: +.. include:: GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.renderingoptions._iscompositeformelement: +.. include:: GridContainer/renderingOptions/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.renderingoptions._isgridcontainerformelement: +.. include:: GridContainer/renderingOptions/_isGridContainerFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor: +.. include:: GridContainer/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.editors.100: +.. include:: GridContainer/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.editors.200: +.. include:: GridContainer/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.editors.9999: +.. include:: GridContainer/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.predefineddefaults: +.. include:: GridContainer/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor._iscompositeformelement: +.. include:: GridContainer/formEditor/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor._isgridcontainerformelement: +.. include:: GridContainer/formEditor/_isGridContainerFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.label: +.. include:: GridContainer/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.group: +.. include:: GridContainer/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.groupsorting: +.. include:: GridContainer/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.formeditor.iconidentifier: +.. include:: GridContainer/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor.rst new file mode 100644 index 000000000000..62ac5ea2f428 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor.rst @@ -0,0 +1,41 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + GridContainer: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.GridContainer.editor.label.label + propertyPath: label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: { } + label: formEditor.elements.GridContainer.label + group: container + groupSorting: 200 + _isCompositeFormElement: true + _isGridContainerFormElement: true + iconIdentifier: t3-form-icon-gridcontainer diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/_isCompositeFormElement.rst new file mode 100644 index 000000000000..280f7fca9526 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/_isCompositeFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isCompositeFormElement +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + formEditor: + _isCompositeFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/_isGridContainerFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/_isGridContainerFormElement.rst new file mode 100644 index 000000000000..fe5433b1ab69 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/_isGridContainerFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isGridContainerFormElement +-------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor._isGridContainerFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + formEditor: + _isGridContainerFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/100.rst new file mode 100644 index 000000000000..6f32af192efc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + GridContainer: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/200.rst new file mode 100644 index 000000000000..cf8d1e19597a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + GridContainer: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.GridContainer.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/9999.rst new file mode 100644 index 000000000000..36a1d1a1b1fe --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + GridContainer: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/group.rst new file mode 100644 index 000000000000..381ba3504038 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + formEditor: + group: container + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/groupSorting.rst new file mode 100644 index 000000000000..1ce362bf67a0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + formEditor: + groupSorting: 200 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..0faf8bfe8834 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + formEditor: + iconIdentifier: t3-form-icon-gridcontainer + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/label.rst new file mode 100644 index 000000000000..e2035bff94b3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + formEditor: + label: formEditor.elements.GridContainer.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..79183ddee195 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/formEditor/predefinedDefaults.rst @@ -0,0 +1,29 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + GridContainer: + formEditor: + predefinedDefaults: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/implementationClassName.rst new file mode 100644 index 000000000000..719854c58392 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + GridContainer: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GridContainer + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..c6ab715cbc53 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/containerClassAttribute.rst @@ -0,0 +1,48 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + properties: + containerClassAttribute: input + elementClassAttribute: container + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..c7c09cc9b037 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/elementClassAttribute.rst @@ -0,0 +1,48 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + GridContainer: + properties: + containerClassAttribute: input + elementClassAttribute: container + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..c2c1cfca66f1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/elementErrorClassAttribute.rst @@ -0,0 +1,48 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + GridContainer: + properties: + containerClassAttribute: input + elementClassAttribute: container + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/gridSize.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/gridSize.rst new file mode 100644 index 000000000000..712b5b4424a5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/gridSize.rst @@ -0,0 +1,48 @@ +properties.gridColumnClassAutoConfiguration.gridSize +---------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.properties.gridColumnClassAutoConfiguration.gridSize + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 7 + + GridContainer: + properties: + containerClassAttribute: input + elementClassAttribute: container + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The grid size of the CSS grid system (bootstrap by default). \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts.rst new file mode 100644 index 000000000000..c39a9fa89346 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts.rst @@ -0,0 +1,48 @@ +properties.gridColumnClassAutoConfiguration.viewPorts +----------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.properties.gridColumnClassAutoConfiguration.viewPorts + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + GridContainer: + properties: + containerClassAttribute: input + elementClassAttribute: container + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +:aspect:`Related options` + - :ref:`"properties.gridColumnClassAutoConfiguration"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.properties.gridcolumnclassautoconfiguration>` + +:aspect:`Description` + Each configuration key within `properties.gridColumnClassAutoConfiguration.viewPorts` represents an viewport of the CSS grid system (bootstrap by default). \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst new file mode 100644 index 000000000000..1c26ba52a573 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst @@ -0,0 +1,52 @@ +properties.gridColumnClassAutoConfiguration.viewPorts.[*].classPattern +---------------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.properties.gridColumnClassAutoConfiguration.viewPorts.<gridColumnClassAutoConfigurationViewPortIdentifier>.classPattern + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 10, 12, 14, 16 + + GridContainer: + properties: + containerClassAttribute: input + elementClassAttribute: container + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +:aspect:`Related options` + - :ref:`"properties.gridColumnClassAutoConfiguration"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.properties.gridcolumnclassautoconfiguration>` + +:aspect:`Description` + Defines the CSS class pattern for the CSS grid system. + Each viewport `classPattern` will be wrapped around a form element within a grid row. + The `{@numbersOfColumnsToUse}` placeholder will be replaced by the number of columns which the respective form element should occupy. + The number of columns which the respective form element should occupy has to defined within the respective form elements within a GridRow. + If a form element has no number of columns defined, the ``{@numbersOfColumnsToUse}`` are calculated automatically. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/renderingOptions/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/renderingOptions/_isCompositeFormElement.rst new file mode 100644 index 000000000000..e8721a91ed35 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/renderingOptions/_isCompositeFormElement.rst @@ -0,0 +1,36 @@ +renderingOptions._isCompositeFormElement +---------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.renderingOptions._isCompositeFormElement + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + renderingOptions: + _isCompositeFormElement: true + _isGridContainerFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/renderingOptions/_isGridContainerFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/renderingOptions/_isGridContainerFormElement.rst new file mode 100644 index 000000000000..dc4b81edcdea --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridContainer/renderingOptions/_isGridContainerFormElement.rst @@ -0,0 +1,36 @@ +renderingOptions._isGridContainerFormElement +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.renderingOptions._isGridContainerFormElement + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + GridContainer: + renderingOptions: + _isCompositeFormElement: true + _isGridContainerFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow.rst new file mode 100644 index 000000000000..225a1dce61d9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow.rst @@ -0,0 +1,76 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.gridrow: + +========= +[GridRow] +========= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.gridrow-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.implementationclassname: +.. include:: GridRow/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.properties.containerclassattribute: +.. include:: GridRow/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.properties.elementclassattribute: +.. include:: GridRow/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.properties.elementerrorclassattribute: +.. include:: GridRow/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.properties.gridcolumnclassautoconfiguration.gridsize: +.. include:: GridRow/properties/gridColumnClassAutoConfiguration/gridSize.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.properties.gridcolumnclassautoconfiguration.viewports: +.. include:: GridRow/properties/gridColumnClassAutoConfiguration/viewPorts.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.properties.gridcolumnclassautoconfiguration.viewports.*.classpattern: +.. include:: GridRow/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.renderingoptions._iscompositeformelement: +.. include:: GridRow/renderingOptions/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.renderingoptions._isgridrowformelement: +.. include:: GridRow/renderingOptions/_isGridRowFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor: +.. include:: GridRow/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.editors.100: +.. include:: GridRow/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.editors.200: +.. include:: GridRow/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.editors.700: +.. include:: GridRow/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.editors.9999: +.. include:: GridRow/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.predefineddefaults: +.. include:: GridRow/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor._iscompositeformelement: +.. include:: GridRow/formEditor/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor._isgridrowformelement: +.. include:: GridRow/formEditor/_isGridRowFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.label: +.. include:: GridRow/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.group: +.. include:: GridRow/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.groupsorting: +.. include:: GridRow/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.iconidentifier: +.. include:: GridRow/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor.rst new file mode 100644 index 000000000000..0e9d9f02d3e8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor.rst @@ -0,0 +1,63 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + GridRow: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.GridRow.editor.label.label + propertyPath: label + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: { } + label: formEditor.elements.GridRow.label + group: container + groupSorting: 300 + _isCompositeFormElement: true + _isGridRowFormElement: true + iconIdentifier: t3-form-icon-gridrow diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/_isCompositeFormElement.rst new file mode 100644 index 000000000000..4da261dd1d2d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/_isCompositeFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isCompositeFormElement +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridRow: + formEditor: + _isCompositeFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/_isGridRowFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/_isGridRowFormElement.rst new file mode 100644 index 000000000000..040977afe693 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/_isGridRowFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isGridRowFormElement +-------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor._isGridRowFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridContainer: + formEditor: + _isGridRowFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + todo diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/100.rst new file mode 100644 index 000000000000..fffe08215968 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + GridRow: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/200.rst new file mode 100644 index 000000000000..33866aba148f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + GridRow: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.GridRow.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/700.rst new file mode 100644 index 000000000000..cb703cf1bc08 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + GridRow: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/9999.rst new file mode 100644 index 000000000000..2c20f276bf85 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + GridRow: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/group.rst new file mode 100644 index 000000000000..5491afd505ea --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridRow: + formEditor: + group: container + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/groupSorting.rst new file mode 100644 index 000000000000..c2b0ab8ab0ed --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridRow: + formEditor: + groupSorting: 300 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..523c888b5e13 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridRow: + formEditor: + iconIdentifier: t3-form-icon-gridrow + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/label.rst new file mode 100644 index 000000000000..35e8c9b91310 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridRow: + formEditor: + label: formEditor.elements.GridRow.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..aac4b024c34c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/formEditor/predefinedDefaults.rst @@ -0,0 +1,29 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + GridRow: + formEditor: + predefinedDefaults: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/implementationClassName.rst new file mode 100644 index 000000000000..371b2364e7d3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + GridRow: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GridRow + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..67e1ca28cc39 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/containerClassAttribute.rst @@ -0,0 +1,48 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridRow: + properties: + containerClassAttribute: input + elementClassAttribute: row + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..0880b145ec0b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/elementClassAttribute.rst @@ -0,0 +1,48 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + GridRow: + properties: + containerClassAttribute: input + elementClassAttribute: row + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..068cd75b7858 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/elementErrorClassAttribute.rst @@ -0,0 +1,48 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + GridRow: + properties: + containerClassAttribute: input + elementClassAttribute: row + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/gridSize.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/gridSize.rst new file mode 100644 index 000000000000..e56c3f6b5078 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/gridSize.rst @@ -0,0 +1,48 @@ +properties.gridColumnClassAutoConfiguration.gridSize +---------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.properties.gridColumnClassAutoConfiguration.gridSize + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 7 + + GridRow: + properties: + containerClassAttribute: input + elementClassAttribute: row + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The grid size of the CSS grid system (bootstrap by default). \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/viewPorts.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/viewPorts.rst new file mode 100644 index 000000000000..81811426a039 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/viewPorts.rst @@ -0,0 +1,48 @@ +properties.gridColumnClassAutoConfiguration.viewPorts +----------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.properties.gridColumnClassAutoConfiguration.viewPorts + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + GridRow: + properties: + containerClassAttribute: input + elementClassAttribute: row + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +:aspect:`Related options` + - :ref:`"properties.gridColumnClassAutoConfiguration"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.properties.gridcolumnclassautoconfiguration>` + +:aspect:`Description` + Each configuration key within `properties.gridColumnClassAutoConfiguration.viewPorts` represents an viewport of the CSS grid system (bootstrap by default). \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst new file mode 100644 index 000000000000..b6983eae9eba --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/properties/gridColumnClassAutoConfiguration/viewPorts/classPattern.rst @@ -0,0 +1,52 @@ +properties.gridColumnClassAutoConfiguration.viewPorts.[*].classPattern +---------------------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.properties.gridColumnClassAutoConfiguration.viewPorts.<gridColumnClassAutoConfigurationViewPortIdentifier>.classPattern + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 10, 12, 14, 16 + + GridRow: + properties: + containerClassAttribute: input + elementClassAttribute: row + elementErrorClassAttribute: error + gridColumnClassAutoConfiguration: + gridSize: 12 + viewPorts: + xs: + classPattern: 'col-xs-{@numbersOfColumnsToUse}' + sm: + classPattern: 'col-sm-{@numbersOfColumnsToUse}' + md: + classPattern: 'col-md-{@numbersOfColumnsToUse}' + lg: + classPattern: 'col-lg-{@numbersOfColumnsToUse}' + +:aspect:`Related options` + - :ref:`"properties.gridColumnClassAutoConfiguration"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.properties.gridcolumnclassautoconfiguration>` + +:aspect:`Description` + Defines the CSS class pattern for the CSS grid system. + Each viewport `classPattern` will be wrapped around a form element within a grid row. + The `{@numbersOfColumnsToUse}` placeholder will be replaced by the number of columns which the respective form element should occupy. + The number of columns which the respective form element should occupy has to defined within the respective form elements within a GridRow. + If a form element has no number of columns defined, the ``{@numbersOfColumnsToUse}`` are calculated automatically. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/renderingOptions/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/renderingOptions/_isCompositeFormElement.rst new file mode 100644 index 000000000000..a85a1894dffa --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/renderingOptions/_isCompositeFormElement.rst @@ -0,0 +1,36 @@ +renderingOptions._isCompositeFormElement +---------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.renderingOptions._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + GridRow: + renderingOptions: + _isCompositeFormElement: true + _isGridRowFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/renderingOptions/_isGridRowFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/renderingOptions/_isGridRowFormElement.rst new file mode 100644 index 000000000000..b98a6e29f390 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/GridRow/renderingOptions/_isGridRowFormElement.rst @@ -0,0 +1,36 @@ +renderingOptions._isGridRowFormElement +-------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.renderingOptions._isGridRowFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + GridRow: + renderingOptions: + _isCompositeFormElement: true + _isGridRowFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden.rst new file mode 100644 index 000000000000..98b775ca30b8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden.rst @@ -0,0 +1,59 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.hidden: + +======== +[Hidden] +======== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.hidden-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.implementationclassname: +.. include:: Hidden/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.properties.containerclassattribute: +.. include:: Hidden/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.properties.elementclassattribute: +.. include:: Hidden/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.properties.elementerrorclassattribute: +.. include:: Hidden/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor: +.. include:: Hidden/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.editors.100: +.. include:: Hidden/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.editors.200: +.. include:: Hidden/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.editors.300: +.. include:: Hidden/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.editors.700: +.. include:: Hidden/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.editors.9999: +.. include:: Hidden/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.predefineddefaults: +.. include:: Hidden/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.label: +.. include:: Hidden/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.group: +.. include:: Hidden/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.groupsorting: +.. include:: Hidden/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.iconidentifier: +.. include:: Hidden/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor.rst new file mode 100644 index 000000000000..0428983f1762 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor.rst @@ -0,0 +1,67 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + Hidden: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.Hidden.editor.defaultValue.label + propertyPath: defaultValue + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + defaultValue: '' + label: formEditor.elements.Hidden.label + group: custom + groupSorting: 300 + iconIdentifier: t3-form-icon-hidden diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/100.rst new file mode 100644 index 000000000000..0b60a5f1e519 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Hidden: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/200.rst new file mode 100644 index 000000000000..eba597172567 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Hidden: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/300.rst new file mode 100644 index 000000000000..398984c618e2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/300.rst @@ -0,0 +1,31 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Hidden: + formEditor: + editors: + 300: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.Hidden.editor.defaultValue.label + propertyPath: defaultValue diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/700.rst new file mode 100644 index 000000000000..f33be242adc3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Hidden: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/9999.rst new file mode 100644 index 000000000000..9727cf75ace9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Hidden: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/group.rst new file mode 100644 index 000000000000..2a8ba6a36ef2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Hidden: + formEditor: + group: custom + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/groupSorting.rst new file mode 100644 index 000000000000..13b48f09b895 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Hidden: + formEditor: + groupSorting: 300 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..6015f1595c4b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Hidden: + formEditor: + iconIdentifier: t3-form-icon-hidden + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/label.rst new file mode 100644 index 000000000000..9b24907cb245 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Hidden: + formEditor: + label: formEditor.elements.Hidden.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..12a8524bb450 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/formEditor/predefinedDefaults.rst @@ -0,0 +1,30 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Hidden: + formEditor: + predefinedDefaults: + defaultValue: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/implementationClassName.rst new file mode 100644 index 000000000000..23feaae8171e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Hidden: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..421ba1f71885 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Hidden: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..aa7ae2864217 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Hidden: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..89324042581f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Hidden/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Hidden.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + Hidden: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot.rst new file mode 100644 index 000000000000..e0a691ea65bc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot.rst @@ -0,0 +1,31 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.honeypot: + +========== +[Honeypot] +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.honeypot-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.honeypot.implementationclassname: +.. include:: Honeypot/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.honeypot.properties.containerclassattribute: +.. include:: Honeypot/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.honeypot.properties.elementclassattribute: +.. include:: Honeypot/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.honeypot.properties.elementerrorclassattribute: +.. include:: Honeypot/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.honeypot.properties.renderashiddenfield: +.. include:: Honeypot/properties/renderAsHiddenField.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.honeypot.properties.styleattribute: +.. include:: Honeypot/properties/styleAttribute.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/implementationClassName.rst new file mode 100644 index 000000000000..cd197b195fb9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Honeypot.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Honeypot: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..afb05eb2e21f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/containerClassAttribute.rst @@ -0,0 +1,39 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Honeypot.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Honeypot: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + renderAsHiddenField: false + styleAttribute: 'position:absolute; margin:0 0 0 -999em;' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..17c3f94a231b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/elementClassAttribute.rst @@ -0,0 +1,39 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Honeypot.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Honeypot: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + renderAsHiddenField: false + styleAttribute: 'position:absolute; margin:0 0 0 -999em;' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..be59e754304a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/elementErrorClassAttribute.rst @@ -0,0 +1,39 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Honeypot.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + Honeypot: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + renderAsHiddenField: false + styleAttribute: 'position:absolute; margin:0 0 0 -999em;' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/renderAsHiddenField.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/renderAsHiddenField.rst new file mode 100644 index 000000000000..628cff8a9f4f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/renderAsHiddenField.rst @@ -0,0 +1,39 @@ +properties.renderAsHiddenField +------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Honeypot.properties.renderAsHiddenField + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Honeypot: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + renderAsHiddenField: false + styleAttribute: 'position:absolute; margin:0 0 0 -999em;' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + By default the honeypot will be rendered as a regular text form element (input type "text"). ``renderAsHiddenField`` renders the honeypot as a hidden form element (input type "hidden"). \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/styleAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/styleAttribute.rst new file mode 100644 index 000000000000..b6c40e842de8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Honeypot/properties/styleAttribute.rst @@ -0,0 +1,39 @@ +properties.styleAttribute +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Honeypot.properties.styleAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 7 + + Honeypot: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + renderAsHiddenField: false + styleAttribute: 'position:absolute; margin:0 0 0 -999em;' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + By default the honeypot will be rendered as a regular text form element (input type "text"). The ``styleAttribute`` is written to the honeypot form element to make it "invisible" for humans. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload.rst new file mode 100644 index 000000000000..a93322cee602 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload.rst @@ -0,0 +1,79 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.imageupload: + +============= +[ImageUpload] +============= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.imageupload-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.implementationclassname: +.. include:: ImageUpload/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.properties.containerclassattribute: +.. include:: ImageUpload/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.properties.elementclassattribute: +.. include:: ImageUpload/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.properties.elementerrorclassattribute: +.. include:: ImageUpload/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.properties.savetofilemount: +.. include:: ImageUpload/properties/saveToFileMount.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.properties.allowedmimetypes: +.. include:: ImageUpload/properties/allowedMimeTypes.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.properties.imagelinkmaxwidth: +.. include:: ImageUpload/properties/imageLinkMaxWidth.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.properties.imagemaxwidth: +.. include:: ImageUpload/properties/imageMaxWidth.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.properties.imagemaxheight: +.. include:: ImageUpload/properties/imageMaxHeight.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor: +.. include:: ImageUpload/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.editors.100: +.. include:: ImageUpload/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.editors.200: +.. include:: ImageUpload/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.editors.300: +.. include:: ImageUpload/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.editors.400: +.. include:: ImageUpload/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.editors.700: +.. include:: ImageUpload/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.editors.800: +.. include:: ImageUpload/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.editors.9999: +.. include:: ImageUpload/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.predefineddefaults: +.. include:: ImageUpload/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.label: +.. include:: ImageUpload/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.group: +.. include:: ImageUpload/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.groupsorting: +.. include:: ImageUpload/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.iconidentifier: +.. include:: ImageUpload/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor.rst new file mode 100644 index 000000000000..22df255f0848 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor.rst @@ -0,0 +1,96 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + ImageUpload: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: allowedMimeTypes + templateName: Inspector-MultiSelectEditor + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.label + propertyPath: properties.allowedMimeTypes + selectOptions: + 10: + value: image/jpeg + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.jpg + 20: + value: image/png + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.png + 30: + value: image/bmp + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.bmp + 400: + identifier: saveToFileMount + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.FileUploadMixin.editor.saveToFileMount.label + propertyPath: properties.saveToFileMount + selectOptions: + 10: + value: '1:/user_upload/' + label: '1:/user_upload/' + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + label: formEditor.elements.ImageUpload.label + group: custom + groupSorting: 400 + iconIdentifier: t3-form-icon-image-upload diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/100.rst new file mode 100644 index 000000000000..c00530037346 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ImageUpload: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/200.rst new file mode 100644 index 000000000000..bc07871452df --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ImageUpload: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/300.rst new file mode 100644 index 000000000000..b59d331ca7ec --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/300.rst @@ -0,0 +1,41 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ImageUpload: + formEditor: + editors: + 300: + identifier: allowedMimeTypes + templateName: Inspector-MultiSelectEditor + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.label + propertyPath: properties.allowedMimeTypes + selectOptions: + 10: + value: image/jpeg + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.jpg + 20: + value: image/png + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.png + 30: + value: image/bmp + label: formEditor.elements.ImageUpload.editor.allowedMimeTypes.bmp diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/400.rst new file mode 100644 index 000000000000..8edd1ed2efa9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/400.rst @@ -0,0 +1,36 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[SingleSelectEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ImageUpload: + formEditor: + editors: + 400: + identifier: saveToFileMount + templateName: Inspector-SingleSelectEditor + label: formEditor.elements.FileUploadMixin.editor.saveToFileMount.label + propertyPath: properties.saveToFileMount + selectOptions: + 10: + value: '1:/user_upload/' + label: '1:/user_upload/' + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/700.rst new file mode 100644 index 000000000000..9196bd0046dd --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ImageUpload: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/800.rst new file mode 100644 index 000000000000..f5391a8816d5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ImageUpload: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/9999.rst new file mode 100644 index 000000000000..9a5099ff4c1a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + ImageUpload: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/group.rst new file mode 100644 index 000000000000..6b865c68355c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ImageUpload: + formEditor: + group: custom + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/groupSorting.rst new file mode 100644 index 000000000000..7db474731157 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ImageUpload: + formEditor: + groupSorting: 400 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..bf08c5e73811 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ImageUpload: + formEditor: + iconIdentifier: t3-form-icon-image-upload + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/label.rst new file mode 100644 index 000000000000..03d0611e8dbf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ImageUpload: + formEditor: + label: formEditor.elements.ImageUpload.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..e2dda4f9d7e6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/formEditor/predefinedDefaults.rst @@ -0,0 +1,33 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + ImageUpload: + formEditor: + predefinedDefaults: + properties: + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/implementationClassName.rst new file mode 100644 index 000000000000..a0d7dc55c613 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + ImageUpload: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\FileUpload + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/allowedMimeTypes.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/allowedMimeTypes.rst new file mode 100644 index 000000000000..d30b0369f820 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/allowedMimeTypes.rst @@ -0,0 +1,45 @@ +properties.allowedMimeTypes +--------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.properties.allowedMimeTypes + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 7-10 + + ImageUpload: + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The allowed mime types for the image uploads. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..0e25051f1ab1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/containerClassAttribute.rst @@ -0,0 +1,45 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + ImageUpload: + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..18003be84d8f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/elementClassAttribute.rst @@ -0,0 +1,45 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + ImageUpload: + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..d7ec00abf0aa --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/elementErrorClassAttribute.rst @@ -0,0 +1,45 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + ImageUpload: + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageLinkMaxWidth.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageLinkMaxWidth.rst new file mode 100644 index 000000000000..642b7cbc66b2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageLinkMaxWidth.rst @@ -0,0 +1,45 @@ +properties.imageLinkMaxWidth +---------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.properties.imageLinkMaxWidth + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 11 + + ImageUpload: + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The max width for the uploaded image preview link. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageMaxHeight.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageMaxHeight.rst new file mode 100644 index 000000000000..f744dbb05d7a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageMaxHeight.rst @@ -0,0 +1,45 @@ +properties.imageMaxHeight +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.properties.imageMaxHeight + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 13 + + ImageUpload: + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The max height for the uploaded image preview. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageMaxWidth.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageMaxWidth.rst new file mode 100644 index 000000000000..0ebe1049d26e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/imageMaxWidth.rst @@ -0,0 +1,45 @@ +properties.imageMaxWidth +------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.properties.imageMaxWidth + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 12 + + ImageUpload: + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The max width for the uploaded image preview. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/saveToFileMount.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/saveToFileMount.rst new file mode 100644 index 000000000000..b8872fe21264 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/ImageUpload/properties/saveToFileMount.rst @@ -0,0 +1,49 @@ +properties.saveToFileMount +-------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.ImageUpload.properties.saveToFileMount + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + ImageUpload: + properties: + containerClassAttribute: input + elementClassAttribute: lightbox + elementErrorClassAttribute: error + saveToFileMount: '1:/user_upload/' + allowedMimeTypes: + - image/jpeg + - image/png + - image/bmp + imageLinkMaxWidth: 500 + imageMaxWidth: 500 + imageMaxHeight: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The location (file mount) for the uploaded images. + If this file mount or the property "saveToFileMount" does not exist + the folder in which the form definition lies (persistence identifier) will be used. + If the form is generated programmatically and therefore no persistence identifier exist + the default storage "1:/user_upload/" will be used. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox.rst new file mode 100644 index 000000000000..0423b72ead53 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox.rst @@ -0,0 +1,82 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.multicheckbox: + +=============== +[MultiCheckbox] +=============== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.multicheckbox-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.implementationclassname: +.. include:: MultiCheckbox/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.properties.containerclassattribute: +.. include:: MultiCheckbox/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.properties.elementclassattribute: +.. include:: MultiCheckbox/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.properties.elementerrorclassattribute: +.. include:: MultiCheckbox/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor: +.. include:: MultiCheckbox/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.editors.100: +.. include:: MultiCheckbox/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.editors.200: +.. include:: MultiCheckbox/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.editors.300: +.. include:: MultiCheckbox/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.editors.700: +.. include:: MultiCheckbox/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.editors.800: +.. include:: MultiCheckbox/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.editors.900: +.. include:: MultiCheckbox/formEditor/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.editors.9999: +.. include:: MultiCheckbox/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.predefineddefaults: +.. include:: MultiCheckbox/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.propertycollections.validators.10: +.. include:: MultiCheckbox/formEditor/propertyCollections/validators/10.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.propertycollections.validators.10.identifier: +.. include:: MultiCheckbox/formEditor/propertyCollections/validators/10/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.propertycollections.validators.10.editors.100: +.. include:: MultiCheckbox/formEditor/propertyCollections/validators/10/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.propertycollections.validators.10.editors.200: +.. include:: MultiCheckbox/formEditor/propertyCollections/validators/10/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.propertycollections.validators.10.editors.300: +.. include:: MultiCheckbox/formEditor/propertyCollections/validators/10/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.propertycollections.validators.10.editors.9999: +.. include:: MultiCheckbox/formEditor/propertyCollections/validators/10/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.label: +.. include:: MultiCheckbox/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.group: +.. include:: MultiCheckbox/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.groupsorting: +.. include:: MultiCheckbox/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.iconidentifier: +.. include:: MultiCheckbox/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor.rst new file mode 100644 index 000000000000..9b6aa92d2f55 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor.rst @@ -0,0 +1,121 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + MultiCheckbox: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: multiple + multiSelection: true + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.MultiSelectionMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.MultiSelectionMixin.editor.validators.EmptyValue.label + 20: + value: Count + label: formEditor.elements.MultiSelectionMixin.editor.validators.Count.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + options: { } + propertyCollections: + validators: + 10: + identifier: Count + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.MultiCheckbox.label + group: select + groupSorting: 400 + iconIdentifier: t3-form-icon-multi-checkbox diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/100.rst new file mode 100644 index 000000000000..da2bfb90b686 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiCheckbox: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/200.rst new file mode 100644 index 000000000000..56262086af40 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiCheckbox: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/300.rst new file mode 100644 index 000000000000..bab098f01112 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/300.rst @@ -0,0 +1,38 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[PropertyGridEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiCheckbox: + formEditor: + editors: + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: multiple + multiSelection: true diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/700.rst new file mode 100644 index 000000000000..b704c70033d5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiCheckbox: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/800.rst new file mode 100644 index 000000000000..960a91ff5b6d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiCheckbox: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/900.rst new file mode 100644 index 000000000000..abe1081bd548 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/900.rst @@ -0,0 +1,38 @@ +formEditor.editors.900 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.editors.900 + +:aspect:`Data type` + array/ :ref:`[ValidatorsEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiCheckbox: + formEditor: + editors: + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.MultiSelectionMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.MultiSelectionMixin.editor.validators.EmptyValue.label + 20: + value: Count + label: formEditor.elements.MultiSelectionMixin.editor.validators.Count.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/9999.rst new file mode 100644 index 000000000000..1f343d5928d4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiCheckbox: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/group.rst new file mode 100644 index 000000000000..64d95a2733b2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiCheckbox: + formEditor: + group: select + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/groupSorting.rst new file mode 100644 index 000000000000..2c624cc6c9b5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiCheckbox: + formEditor: + groupSorting: 400 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..1f63ff2ed4f1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiCheckbox: + formEditor: + iconIdentifier: t3-form-icon-multi-checkbox + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/label.rst new file mode 100644 index 000000000000..6d38aeecba61 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiCheckbox: + formEditor: + label: formEditor.elements.MultiCheckbox.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..814a9673edbd --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/predefinedDefaults.rst @@ -0,0 +1,31 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + MultiCheckbox: + formEditor: + predefinedDefaults: + properties: + options: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10.rst new file mode 100644 index 000000000000..fc3aab07b971 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10.rst @@ -0,0 +1,53 @@ +formEditor.propertyCollections.validators.10 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.propertyCollections.validators.10 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + MultiCheckbox: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/100.rst new file mode 100644 index 000000000000..29d5fa033f9b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + MultiCheckbox: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/200.rst new file mode 100644 index 000000000000..171c1e51d531 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/200.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + MultiCheckbox: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/300.rst new file mode 100644 index 000000000000..ee41c88ee2b4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/300.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + MultiCheckbox: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/9999.rst new file mode 100644 index 000000000000..c50fe2fa606c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.10.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.propertyCollections.validators.10.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + MultiCheckbox: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/identifier.rst new file mode 100644 index 000000000000..67a015b45b45 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/formEditor/propertyCollections/validators/10/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.10.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.propertyCollections.validators.10.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + MultiCheckbox: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/implementationClassName.rst new file mode 100644 index 000000000000..9b8145ab5104 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + MultiCheckbox: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..8e70fb26aefc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiCheckbox: + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..e622696d0005 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + MultiCheckbox: + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..aaf9a5e11ca4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiCheckbox/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + MultiCheckbox: + properties: + containerClassAttribute: 'input checkbox' + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect.rst new file mode 100644 index 000000000000..b679457f8ba4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect.rst @@ -0,0 +1,85 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.multiselect: + +============= +[MultiSelect] +============= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.multiselect-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.implementationclassname: +.. include:: MultiSelect/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.properties.containerclassattribute: +.. include:: MultiSelect/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.properties.elementclassattribute: +.. include:: MultiSelect/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.properties.elementerrorclassattribute: +.. include:: MultiSelect/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor: +.. include:: MultiSelect/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.editors.100: +.. include:: MultiSelect/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.editors.200: +.. include:: MultiSelect/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.editors.250: +.. include:: MultiSelect/formEditor/editors/250.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.editors.300: +.. include:: MultiSelect/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.editors.700: +.. include:: MultiSelect/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.editors.800: +.. include:: MultiSelect/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.editors.900: +.. include:: MultiSelect/formEditor/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.editors.9999: +.. include:: MultiSelect/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.predefineddefaults: +.. include:: MultiSelect/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.propertycollections.validators.10: +.. include:: MultiSelect/formEditor/propertyCollections/validators/10.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.propertycollections.validators.10.identifier: +.. include:: MultiSelect/formEditor/propertyCollections/validators/10/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.propertycollections.validators.10.editors.100: +.. include:: MultiSelect/formEditor/propertyCollections/validators/10/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.propertycollections.validators.10.editors.200: +.. include:: MultiSelect/formEditor/propertyCollections/validators/10/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.propertycollections.validators.10.editors.300: +.. include:: MultiSelect/formEditor/propertyCollections/validators/10/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.propertycollections.validators.10.editors.9999: +.. include:: MultiSelect/formEditor/propertyCollections/validators/10/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.label: +.. include:: MultiSelect/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.group: +.. include:: MultiSelect/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.groupsorting: +.. include:: MultiSelect/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.iconidentifier: +.. include:: MultiSelect/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor.rst new file mode 100644 index 000000000000..f82425f5e51b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor.rst @@ -0,0 +1,130 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + MultiSelect: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 250: + identifier: inactiveOption + templateName: Inspector-TextEditor + label: formEditor.elements.SelectionMixin.editor.inactiveOption.label + propertyPath: properties.prependOptionLabel + fieldExplanationText: formEditor.elements.SelectionMixin.editor.inactiveOption.fieldExplanationText + doNotSetIfPropertyValueIsEmpty: true + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: multiple + multiSelection: true + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.MultiSelectionMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.MultiSelectionMixin.editor.validators.EmptyValue.label + 20: + value: Count + label: formEditor.elements.MultiSelectionMixin.editor.validators.Count.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + options: { } + propertyCollections: + validators: + 10: + identifier: Count + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.MultiSelect.label + group: select + groupSorting: 500 + iconIdentifier: t3-form-icon-multi-select diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/100.rst new file mode 100644 index 000000000000..f11dc5ca6181 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiSelect: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/200.rst new file mode 100644 index 000000000000..fb16e0c99971 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiSelect: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/250.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/250.rst new file mode 100644 index 000000000000..5e53c606e1a6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/250.rst @@ -0,0 +1,33 @@ +formEditor.editors.250 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.editors.250 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiSelect: + formEditor: + editors: + 250: + identifier: inactiveOption + templateName: Inspector-TextEditor + label: formEditor.elements.SelectionMixin.editor.inactiveOption.label + propertyPath: properties.prependOptionLabel + fieldExplanationText: formEditor.elements.SelectionMixin.editor.inactiveOption.fieldExplanationText + doNotSetIfPropertyValueIsEmpty: true diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/300.rst new file mode 100644 index 000000000000..f20157398966 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/300.rst @@ -0,0 +1,38 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[PropertyGridEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiSelect: + formEditor: + editors: + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: multiple + multiSelection: true diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/700.rst new file mode 100644 index 000000000000..9858b1e76cb5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiSelect: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/800.rst new file mode 100644 index 000000000000..e33121b0ca3e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiSelect: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/900.rst new file mode 100644 index 000000000000..ad23b36bf035 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/900.rst @@ -0,0 +1,38 @@ +formEditor.editors.900 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.editors.900 + +:aspect:`Data type` + array/ :ref:`[ValidatorsEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiSelect: + formEditor: + editors: + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.MultiSelectionMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.MultiSelectionMixin.editor.validators.EmptyValue.label + 20: + value: Count + label: formEditor.elements.MultiSelectionMixin.editor.validators.Count.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/9999.rst new file mode 100644 index 000000000000..2e57fceffe14 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + MultiSelect: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/group.rst new file mode 100644 index 000000000000..e08833c0a6f6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiSelect: + formEditor: + group: select + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/groupSorting.rst new file mode 100644 index 000000000000..0c3227b07c15 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiSelect: + formEditor: + groupSorting: 500 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..29a6a9536138 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiSelect: + formEditor: + iconIdentifier: t3-form-icon-multi-select + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/label.rst new file mode 100644 index 000000000000..06d05b3f884b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiSelect: + formEditor: + label: formEditor.elements.MultiSelect.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..8f88129cffd1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/predefinedDefaults.rst @@ -0,0 +1,31 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + MultiSelect: + formEditor: + predefinedDefaults: + properties: + options: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10.rst new file mode 100644 index 000000000000..1c022d119ef7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10.rst @@ -0,0 +1,53 @@ +formEditor.propertyCollections.validators.10 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.propertyCollections.validators.10 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + MultiSelect: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/100.rst new file mode 100644 index 000000000000..6d8f11637b7d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + MultiSelect: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/200.rst new file mode 100644 index 000000000000..a521c685628f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/200.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + MultiSelect: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/300.rst new file mode 100644 index 000000000000..6d71258946e7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/300.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + MultiSelect: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/9999.rst new file mode 100644 index 000000000000..6a358ee83559 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.10.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.propertyCollections.validators.10.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + MultiSelect: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/identifier.rst new file mode 100644 index 000000000000..698bf14e6d41 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/formEditor/propertyCollections/validators/10/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.10.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.propertyCollections.validators.10.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + MultiSelect: + formEditor: + propertyCollections: + validators: + 10: + identifier: Count + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/implementationClassName.rst new file mode 100644 index 000000000000..d7600add8fe9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + MultiSelect: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..8cdc7e25e487 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + MultiSelect: + properties: + containerClassAttribute: input + elementClassAttribute: xlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..5a57c8c477c6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + MultiSelect: + properties: + containerClassAttribute: input + elementClassAttribute: xlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..24cad799141c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/MultiSelect/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.MultiSelect.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + MultiSelect: + properties: + containerClassAttribute: input + elementClassAttribute: xlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page.rst new file mode 100644 index 000000000000..23b552594a3f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page.rst @@ -0,0 +1,67 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.page: + +====== +[Page] +====== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.page-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.implementationclassname: +.. include:: Page/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.renderingoptions._iscompositeformelement: +.. include:: Page/renderingOptions/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.renderingoptions._istoplevelformelement: +.. include:: Page/renderingOptions/_isTopLevelFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.renderingoptions.nextbuttonlabel: +.. include:: Page/renderingOptions/nextButtonLabel.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.renderingoptions.previousbuttonlabel: +.. include:: Page/renderingOptions/previousButtonLabel.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor: +.. include:: Page/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.editors.100: +.. include:: Page/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.editors.200: +.. include:: Page/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.editors.300: +.. include:: Page/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.editors.400: +.. include:: Page/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.editors.9999: +.. include:: Page/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.predefineddefaults: +.. include:: Page/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor._iscompositeformelement: +.. include:: Page/formEditor/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor._istoplevelformelement: +.. include:: Page/formEditor/_isTopLevelFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.label: +.. include:: Page/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.group: +.. include:: Page/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.groupsorting: +.. include:: Page/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.page.formeditor.iconidentifier: +.. include:: Page/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor.rst new file mode 100644 index 000000000000..60952f9174cd --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor.rst @@ -0,0 +1,54 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + Page: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.Page.editor.label.label + propertyPath: label + 300: + identifier: 'previousButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Page.editor.previousButtonLabel.label' + propertyPath: 'renderingOptions.previousButtonLabel' + 400: + identifier: 'nextButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Page.editor.nextButtonLabel.label' + propertyPath: 'renderingOptions.nextButtonLabel' + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + renderingOptions: + previousButtonLabel: 'formEditor.elements.Page.editor.previousButtonLabel.value' + nextButtonLabel: 'formEditor.elements.Page.editor.nextButtonLabel.value' + label: formEditor.elements.Page.label + group: page + groupSorting: 100 + _isTopLevelFormElement: true + _isCompositeFormElement: true + iconIdentifier: t3-form-icon-page diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/_isCompositeFormElement.rst new file mode 100644 index 000000000000..15b1b44d5cef --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/_isCompositeFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isCompositeFormElement +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Page: + formEditor: + _isCompositeFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/_isTopLevelFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/_isTopLevelFormElement.rst new file mode 100644 index 000000000000..0493c0b7127b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/_isTopLevelFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isTopLevelFormElement +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor._isTopLevelFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Page: + formEditor: + _isTopLevelFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element must not have a parent form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/100.rst new file mode 100644 index 000000000000..92aa1a4d1f56 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Page: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/200.rst new file mode 100644 index 000000000000..777bd15e8cf6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Page: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.Page.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/300.rst new file mode 100644 index 000000000000..93ac441c53bb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/300.rst @@ -0,0 +1,31 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Form: + formEditor: + editors: + 300: + identifier: 'previousButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Page.editor.previousButtonLabel.label' + propertyPath: 'renderingOptions.previousButtonLabel' diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/400.rst new file mode 100644 index 000000000000..328aa918427d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/400.rst @@ -0,0 +1,31 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Form: + formEditor: + editors: + 400: + identifier: 'nextButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.Page.editor.nextButtonLabel.label' + propertyPath: 'renderingOptions.nextButtonLabel' diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/9999.rst new file mode 100644 index 000000000000..652285d685a9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Page: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/group.rst new file mode 100644 index 000000000000..0794db7a59fb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Page: + formEditor: + group: page + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/groupSorting.rst new file mode 100644 index 000000000000..f9f921520fa5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Page: + formEditor: + groupSorting: 100 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..5500553c0edc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Page: + formEditor: + iconIdentifier: t3-form-icon-page + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/label.rst new file mode 100644 index 000000000000..c044e6f4462c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Page: + formEditor: + label: formEditor.elements.Page.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..9cf59df3a8d6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/formEditor/predefinedDefaults.rst @@ -0,0 +1,32 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Page: + formEditor: + predefinedDefaults: + renderingOptions: + previousButtonLabel: 'formEditor.elements.Page.editor.previousButtonLabel.value' + nextButtonLabel: 'formEditor.elements.Page.editor.nextButtonLabel.value' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/implementationClassName.rst new file mode 100644 index 000000000000..e844a533043d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Page: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\Page + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/_isCompositeFormElement.rst new file mode 100644 index 000000000000..04eb8e4579ed --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/_isCompositeFormElement.rst @@ -0,0 +1,38 @@ +renderingOptions._isCompositeFormElement +---------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.renderingOptions._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Page: + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: true + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/_isTopLevelFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/_isTopLevelFormElement.rst new file mode 100644 index 000000000000..ace12e7b4490 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/_isTopLevelFormElement.rst @@ -0,0 +1,38 @@ +renderingOptions._isTopLevelFormElement +--------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.renderingOptions._isTopLevelFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Page: + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: true + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element must not have a parent form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/nextButtonLabel.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/nextButtonLabel.rst new file mode 100644 index 000000000000..da8da66113c3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/nextButtonLabel.rst @@ -0,0 +1,38 @@ +renderingOptions.nextButtonLabel +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.renderingOptions.nextButtonLabel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + Page: + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: false + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the "next page" Button. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/previousButtonLabel.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/previousButtonLabel.rst new file mode 100644 index 000000000000..72d11eca26ee --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Page/renderingOptions/previousButtonLabel.rst @@ -0,0 +1,38 @@ +renderingOptions.previousButtonLabel +------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Page.renderingOptions.previousButtonLabel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Page: + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: false + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the "previous page" Button. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password.rst new file mode 100644 index 000000000000..a92e37050f54 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password.rst @@ -0,0 +1,178 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.password: + +========== +[Password] +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.password-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.implementationclassname: +.. include:: Password/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.properties.containerclassattribute: +.. include:: Password/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.properties.elementclassattribute: +.. include:: Password/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.properties.elementerrorclassattribute: +.. include:: Password/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor: +.. include:: Password/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.editors.100: +.. include:: Password/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.editors.200: +.. include:: Password/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.editors.400: +.. include:: Password/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.editors.500: +.. include:: Password/formEditor/editors/500.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.editors.700: +.. include:: Password/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.editors.800: +.. include:: Password/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.editors.900: +.. include:: Password/formEditor/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.editors.9999: +.. include:: Password/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.predefineddefaults: +.. include:: Password/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.10: +.. include:: Password/formEditor/propertyCollections/validators/10.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.10.identifier: +.. include:: Password/formEditor/propertyCollections/validators/10/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.10.editors.100: +.. include:: Password/formEditor/propertyCollections/validators/10/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.10.editors.9999: +.. include:: Password/formEditor/propertyCollections/validators/10/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.20: +.. include:: Password/formEditor/propertyCollections/validators/20.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.20.identifier: +.. include:: Password/formEditor/propertyCollections/validators/20/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.20.editors.100: +.. include:: Password/formEditor/propertyCollections/validators/20/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.20.editors.9999: +.. include:: Password/formEditor/propertyCollections/validators/20/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.30: +.. include:: Password/formEditor/propertyCollections/validators/30.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.30.identifier: +.. include:: Password/formEditor/propertyCollections/validators/30/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.30.editors.100: +.. include:: Password/formEditor/propertyCollections/validators/30/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.30.editors.200: +.. include:: Password/formEditor/propertyCollections/validators/30/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.30.editors.300: +.. include:: Password/formEditor/propertyCollections/validators/30/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.30.editors.9999: +.. include:: Password/formEditor/propertyCollections/validators/30/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.40: +.. include:: Password/formEditor/propertyCollections/validators/40.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.40.identifier: +.. include:: Password/formEditor/propertyCollections/validators/40/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.40.editors.100: +.. include:: Password/formEditor/propertyCollections/validators/40/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.40.editors.9999: +.. include:: Password/formEditor/propertyCollections/validators/40/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.50: +.. include:: Password/formEditor/propertyCollections/validators/50.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.50.identifier: +.. include:: Password/formEditor/propertyCollections/validators/50/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.50.editors.100: +.. include:: Password/formEditor/propertyCollections/validators/50/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.50.editors.9999: +.. include:: Password/formEditor/propertyCollections/validators/50/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.60: +.. include:: Password/formEditor/propertyCollections/validators/60.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.60.identifier: +.. include:: Password/formEditor/propertyCollections/validators/60/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.60.editors.100: +.. include:: Password/formEditor/propertyCollections/validators/60/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.60.editors.9999: +.. include:: Password/formEditor/propertyCollections/validators/60/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.70: +.. include:: Password/formEditor/propertyCollections/validators/70.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.70.identifier: +.. include:: Password/formEditor/propertyCollections/validators/70/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.70.editors.100: +.. include:: Password/formEditor/propertyCollections/validators/70/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.70.editors.200: +.. include:: Password/formEditor/propertyCollections/validators/70/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.70.editors.300: +.. include:: Password/formEditor/propertyCollections/validators/70/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.70.editors.9999: +.. include:: Password/formEditor/propertyCollections/validators/70/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.80: +.. include:: Password/formEditor/propertyCollections/validators/80.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.80.identifier: +.. include:: Password/formEditor/propertyCollections/validators/80/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.80.editors.100: +.. include:: Password/formEditor/propertyCollections/validators/80/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.80.editors.200: +.. include:: Password/formEditor/propertyCollections/validators/80/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.propertycollections.validators.80.editors.9999: +.. include:: Password/formEditor/propertyCollections/validators/80/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.label: +.. include:: Password/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.group: +.. include:: Password/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.groupsorting: +.. include:: Password/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.password.formeditor.iconidentifier: +.. include:: Password/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor.rst new file mode 100644 index 000000000000..d4165e38da77 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor.rst @@ -0,0 +1,243 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + Password: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + 500: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + defaultValue: '' + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.Password.label + group: input + groupSorting: 300 + iconIdentifier: t3-form-icon-password \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/100.rst new file mode 100644 index 000000000000..a0209be03b25 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Password: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/200.rst new file mode 100644 index 000000000000..e2d4cb285658 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/200.rst @@ -0,0 +1,32 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Password: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/400.rst new file mode 100644 index 000000000000..12ca70405e63 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/400.rst @@ -0,0 +1,35 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Password: + formEditor: + editors: + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/500.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/500.rst new file mode 100644 index 000000000000..97dc5c949e5b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/500.rst @@ -0,0 +1,32 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Password: + formEditor: + editors: + 500: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/700.rst new file mode 100644 index 000000000000..92c7e2790e3b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Password: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/800.rst new file mode 100644 index 000000000000..0988b976957a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Password: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/900.rst new file mode 100644 index 000000000000..75cd9ae6878b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/900.rst @@ -0,0 +1,59 @@ +formEditor.editors.900 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.editors.900 + +:aspect:`Data type` + array/ :ref:`[ValidatorsEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Password: + formEditor: + editors: + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/9999.rst new file mode 100644 index 000000000000..4008dbc1d8ac --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Password: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/group.rst new file mode 100644 index 000000000000..bdad919d31ad --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Password: + formEditor: + group: input + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/groupSorting.rst new file mode 100644 index 000000000000..576e3b46ab17 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Password: + formEditor: + groupSorting: 300 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..d31a78927b03 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Password: + formEditor: + iconIdentifier: t3-form-icon-password + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/label.rst new file mode 100644 index 000000000000..a71e8ca9427e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Password: + formEditor: + label: formEditor.elements.Password.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..7ed824291eec --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/predefinedDefaults.rst @@ -0,0 +1,30 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Password: + formEditor: + predefinedDefaults: + defaultValue: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10.rst new file mode 100644 index 000000000000..aa2b355ee2fa --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.10 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.10 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Password: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/editors/100.rst new file mode 100644 index 000000000000..1f3f27c6cc0c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/editors/9999.rst new file mode 100644 index 000000000000..6c67e11de6da --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.10.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.10.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/identifier.rst new file mode 100644 index 000000000000..874f7c66cfc7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/10/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.10.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.10.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Password: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20.rst new file mode 100644 index 000000000000..00a05a6a5d42 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.20 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.20 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Password: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/editors/100.rst new file mode 100644 index 000000000000..758d6f3fdd2d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.20.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.20.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/editors/9999.rst new file mode 100644 index 000000000000..012aa7fafd6f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.20.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.20.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/identifier.rst new file mode 100644 index 000000000000..eed392b29a7f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/20/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.20.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.20.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Password: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30.rst new file mode 100644 index 000000000000..3559fc445120 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30.rst @@ -0,0 +1,57 @@ +formEditor.propertyCollections.validators.30 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.30 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Password: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/100.rst new file mode 100644 index 000000000000..095938de59dd --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.30.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.30.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/200.rst new file mode 100644 index 000000000000..f547a97e7df2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/200.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.validators.30.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.30.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/300.rst new file mode 100644 index 000000000000..9c0555c199f6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/300.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.validators.30.editors.300 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.30.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/9999.rst new file mode 100644 index 000000000000..b5a9bcc53923 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.30.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.30.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/identifier.rst new file mode 100644 index 000000000000..58209b7e49eb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/30/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.30.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.30.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Password: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40.rst new file mode 100644 index 000000000000..585b3337b10a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.40 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.40 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Password: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/editors/100.rst new file mode 100644 index 000000000000..cdbd2a3ce571 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.40.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.40.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/editors/9999.rst new file mode 100644 index 000000000000..9029ecac7e2e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.40.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.40.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/identifier.rst new file mode 100644 index 000000000000..17a851b6d125 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/40/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.40.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.40.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Password: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50.rst new file mode 100644 index 000000000000..69fab0802d0a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.50 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.50 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Password: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/editors/100.rst new file mode 100644 index 000000000000..d02e9a6b48b3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.50.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.50.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/editors/9999.rst new file mode 100644 index 000000000000..75486bff795d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.50.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.50.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/identifier.rst new file mode 100644 index 000000000000..9b53663e9632 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/50/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.50.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.50.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Password: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60.rst new file mode 100644 index 000000000000..2a02e0337e3a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.60 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.60 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Password: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/editors/100.rst new file mode 100644 index 000000000000..41e450e0f2cc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.60.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.60.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/editors/9999.rst new file mode 100644 index 000000000000..2faec5682a86 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.60.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.60.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/identifier.rst new file mode 100644 index 000000000000..93046eae102c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/60/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.60.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.60.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Password: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70.rst new file mode 100644 index 000000000000..658bb12280be --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70.rst @@ -0,0 +1,53 @@ +formEditor.propertyCollections.validators.70 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.70 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Password: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/100.rst new file mode 100644 index 000000000000..99edc59076cf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.70.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.70.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/200.rst new file mode 100644 index 000000000000..19cb8eb411f4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/200.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.validators.70.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.70.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/300.rst new file mode 100644 index 000000000000..205dfea8ef8e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/300.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.validators.70.editors.300 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.70.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/9999.rst new file mode 100644 index 000000000000..a5daada27e55 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.70.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.70.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/identifier.rst new file mode 100644 index 000000000000..2a7c90e37834 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/70/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.70.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.70.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Password: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80.rst new file mode 100644 index 000000000000..fbd027619427 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80.rst @@ -0,0 +1,43 @@ +formEditor.propertyCollections.validators.80 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.80 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Password: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/100.rst new file mode 100644 index 000000000000..c400e9cf8f8e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.80.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.80.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/200.rst new file mode 100644 index 000000000000..1d04f6a9df6d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/200.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.validators.80.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.80.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/9999.rst new file mode 100644 index 000000000000..fadf37c07e9b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.80.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.80.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Password: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/identifier.rst new file mode 100644 index 000000000000..d573eaa4b212 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/formEditor/propertyCollections/validators/80/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.80.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.formEditor.propertyCollections.validators.80.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Password: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/implementationClassName.rst new file mode 100644 index 000000000000..5d990d7e42f5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Password: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..bb76c4184c26 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Password: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..88c36eafaf08 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Password: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..695e5ab17946 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Password/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Password.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + Password: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton.rst new file mode 100644 index 000000000000..86cd43609c3d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton.rst @@ -0,0 +1,61 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.radiobutton: + +============= +[RadioButton] +============= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.radiobutton-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.implementationclassname: +.. include:: RadioButton/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.properties.containerclassattribute: +.. include:: RadioButton/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.properties.elementclassattribute: +.. include:: RadioButton/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.properties.elementerrorclassattribute: +.. include:: RadioButton/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor: +.. include:: RadioButton/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.editors.100: +.. include:: RadioButton/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.editors.200: +.. include:: RadioButton/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.editors.300: +.. include:: RadioButton/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.editors.700: +.. include:: RadioButton/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.editors.800: +.. include:: RadioButton/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.editors.9999: +.. include:: RadioButton/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.predefineddefaults: +.. include:: RadioButton/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.label: +.. include:: RadioButton/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.group: +.. include:: RadioButton/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.groupsorting: +.. include:: RadioButton/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.iconidentifier: +.. include:: RadioButton/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor.rst new file mode 100644 index 000000000000..bf2b8b5d7c43 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor.rst @@ -0,0 +1,82 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + RadioButton: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: single + multiSelection: false + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + options: { } + label: formEditor.elements.RadioButton.label + group: select + groupSorting: 300 + iconIdentifier: t3-form-icon-radio-button diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/100.rst new file mode 100644 index 000000000000..4809c2fb0912 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + RadioButton: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/200.rst new file mode 100644 index 000000000000..ec440f51cb43 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + RadioButton: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/300.rst new file mode 100644 index 000000000000..ac26f6756b49 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/300.rst @@ -0,0 +1,38 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[PropertyGridEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + RadioButton: + formEditor: + editors: + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: single + multiSelection: false diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/700.rst new file mode 100644 index 000000000000..96ccbea8c05b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + RadioButton: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/800.rst new file mode 100644 index 000000000000..f8b1b9ed2a54 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + RadioButton: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/9999.rst new file mode 100644 index 000000000000..c47bc249089e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + RadioButton: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/group.rst new file mode 100644 index 000000000000..ea3903ab76a1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + RadioButton: + formEditor: + group: select + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/groupSorting.rst new file mode 100644 index 000000000000..0e99ab9fcd6c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + RadioButton: + formEditor: + groupSorting: 300 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..e007a42def06 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + RadioButton: + formEditor: + iconIdentifier: t3-form-icon-radio-button + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/label.rst new file mode 100644 index 000000000000..10f09be3b2be --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + RadioButton: + formEditor: + label: formEditor.elements.RadioButton.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..34384a74248c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/formEditor/predefinedDefaults.rst @@ -0,0 +1,31 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + RadioButton: + formEditor: + predefinedDefaults: + properties: + options: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/implementationClassName.rst new file mode 100644 index 000000000000..d69af519a29c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + RadioButton: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..fc33a39088c7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + RadioButton: + properties: + containerClassAttribute: input + elementClassAttribute: xlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..79cd8e1515b9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + RadioButton: + properties: + containerClassAttribute: input + elementClassAttribute: xlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..31c582dd5629 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/RadioButton/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.RadioButton.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + RadioButton: + properties: + containerClassAttribute: input + elementClassAttribute: xlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect.rst new file mode 100644 index 000000000000..3d591309dbfb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect.rst @@ -0,0 +1,64 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.singleselect: + +============== +[SingleSelect] +============== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.singleselect-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.implementationclassname: +.. include:: SingleSelect/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.properties.containerclassattribute: +.. include:: SingleSelect/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.properties.elementclassattribute: +.. include:: SingleSelect/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.properties.elementerrorclassattribute: +.. include:: SingleSelect/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor: +.. include:: SingleSelect/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.editors.100: +.. include:: SingleSelect/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.editors.200: +.. include:: SingleSelect/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.editors.250: +.. include:: SingleSelect/formEditor/editors/250.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.editors.300: +.. include:: SingleSelect/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.editors.700: +.. include:: SingleSelect/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.editors.800: +.. include:: SingleSelect/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.editors.9999: +.. include:: SingleSelect/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.predefineddefaults: +.. include:: SingleSelect/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.label: +.. include:: SingleSelect/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.group: +.. include:: SingleSelect/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.groupsorting: +.. include:: SingleSelect/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.iconidentifier: +.. include:: SingleSelect/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor.rst new file mode 100644 index 000000000000..5587708167c3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor.rst @@ -0,0 +1,89 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + SingleSelect: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 250: + identifier: inactiveOption + templateName: Inspector-TextEditor + label: formEditor.elements.SelectionMixin.editor.inactiveOption.label + propertyPath: properties.prependOptionLabel + fieldExplanationText: formEditor.elements.SelectionMixin.editor.inactiveOption.fieldExplanationText + doNotSetIfPropertyValueIsEmpty: true + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: single + multiSelection: false + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + options: { } + label: formEditor.elements.SingleSelect.label + group: select + groupSorting: 200 + iconIdentifier: t3-form-icon-single-select diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/100.rst new file mode 100644 index 000000000000..f64c885c9f60 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SingleSelect: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/200.rst new file mode 100644 index 000000000000..645959213751 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SingleSelect: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/250.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/250.rst new file mode 100644 index 000000000000..34d153e6271e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/250.rst @@ -0,0 +1,33 @@ +formEditor.editors.250 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.editors.250 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SingleSelect: + formEditor: + editors: + 250: + identifier: inactiveOption + templateName: Inspector-TextEditor + label: formEditor.elements.SelectionMixin.editor.inactiveOption.label + propertyPath: properties.prependOptionLabel + fieldExplanationText: formEditor.elements.SelectionMixin.editor.inactiveOption.fieldExplanationText + doNotSetIfPropertyValueIsEmpty: true diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/300.rst new file mode 100644 index 000000000000..6b4eeafd98ef --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/300.rst @@ -0,0 +1,38 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[PropertyGridEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SingleSelect: + formEditor: + editors: + 300: + identifier: options + templateName: Inspector-PropertyGridEditor + label: formEditor.elements.SelectionMixin.editor.options.label + propertyPath: properties.options + isSortable: true + enableAddRow: true + enableDeleteRow: true + removeLastAvailableRowFlashMessageTitle: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageTitle + removeLastAvailableRowFlashMessageMessage: formEditor.elements.SelectionMixin.editor.options.removeLastAvailableRowFlashMessageMessage + shouldShowPreselectedValueColumn: single + multiSelection: false diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/700.rst new file mode 100644 index 000000000000..8e0edc44d0ac --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/700.rst @@ -0,0 +1,49 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SingleSelect: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/800.rst new file mode 100644 index 000000000000..949a7468bbfa --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/800.rst @@ -0,0 +1,35 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SingleSelect: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/9999.rst new file mode 100644 index 000000000000..c112dec95efa --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SingleSelect: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/group.rst new file mode 100644 index 000000000000..395376f608e0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SingleSelect: + formEditor: + group: select + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/groupSorting.rst new file mode 100644 index 000000000000..90367e245ecc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SingleSelect: + formEditor: + groupSorting: 200 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..8bbf3b9202ca --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SingleSelect: + formEditor: + iconIdentifier: t3-form-icon-single-select + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/label.rst new file mode 100644 index 000000000000..153e3fc47d54 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SingleSelect: + formEditor: + label: formEditor.elements.SingleSelect.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..445da2a82469 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/formEditor/predefinedDefaults.rst @@ -0,0 +1,31 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + SingleSelect: + formEditor: + predefinedDefaults: + properties: + options: { } + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/implementationClassName.rst new file mode 100644 index 000000000000..48ae35d7436e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + SingleSelect: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..7ef03c43b945 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SingleSelect: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..ff6cc1478cb2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + SingleSelect: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..7e6140d12549 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SingleSelect/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SingleSelect.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + SingleSelect: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText.rst new file mode 100644 index 000000000000..5b6854930687 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText.rst @@ -0,0 +1,49 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.statictext: + +============ +[StaticText] +============ + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.statictext-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.implementationclassname: +.. include:: StaticText/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.properties.text: +.. include:: StaticText/properties/text.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor: +.. include:: StaticText/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.editors.100: +.. include:: StaticText/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.editors.200: +.. include:: StaticText/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.editors.300: +.. include:: StaticText/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.editors.9999: +.. include:: StaticText/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.predefineddefaults: +.. include:: StaticText/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.label: +.. include:: StaticText/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.group: +.. include:: StaticText/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.groupsorting: +.. include:: StaticText/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.iconidentifier: +.. include:: StaticText/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor.rst new file mode 100644 index 000000000000..0144c2c303b1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor.rst @@ -0,0 +1,46 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + StaticText: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.ReadOnlyFormElement.editor.label.label + propertyPath: label + 300: + identifier: staticText + templateName: Inspector-TextareaEditor + label: formEditor.elements.StaticText.editor.staticText.label + propertyPath: properties.text + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + properties: + text: '' + label: formEditor.elements.StaticText.label + group: custom + groupSorting: 600 + iconIdentifier: t3-form-icon-static-text diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/100.rst new file mode 100644 index 000000000000..756ffe601705 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + StaticText: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/200.rst new file mode 100644 index 000000000000..334eba736fd4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + StaticText: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.ReadOnlyFormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/300.rst new file mode 100644 index 000000000000..b6ccde393d89 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/300.rst @@ -0,0 +1,31 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextareaEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.textareaeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + StaticText: + formEditor: + editors: + 300: + identifier: staticText + templateName: Inspector-TextareaEditor + label: formEditor.elements.StaticText.editor.staticText.label + propertyPath: properties.text diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/9999.rst new file mode 100644 index 000000000000..4edcd154cc5c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + StaticText: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/group.rst new file mode 100644 index 000000000000..62bde1bacbce --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + StaticText: + formEditor: + group: custom + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/groupSorting.rst new file mode 100644 index 000000000000..0abbdf1ed6c3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + StaticText: + formEditor: + groupSorting: 600 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..fc46135c12d1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + StaticText: + formEditor: + iconIdentifier: t3-form-icon-static-text + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/label.rst new file mode 100644 index 000000000000..69a4ceee7148 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + StaticText: + formEditor: + label: formEditor.elements.StaticText.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..0ae639dac336 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/formEditor/predefinedDefaults.rst @@ -0,0 +1,31 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + StaticText: + formEditor: + predefinedDefaults: + properties: + text: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/implementationClassName.rst new file mode 100644 index 000000000000..d493c03883b3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + StaticText: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/properties/text.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/properties/text.rst new file mode 100644 index 000000000000..806945139dd8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/StaticText/properties/text.rst @@ -0,0 +1,35 @@ +properties.text +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.StaticText.properties.text + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + StaticText: + properties: + text: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The text to display. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage.rst new file mode 100644 index 000000000000..be75cff0d969 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage.rst @@ -0,0 +1,67 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.summarysummarypage: + +============= +[SummaryPage] +============= + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.summarysummarypage-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.implementationclassname: +.. include:: SummaryPage/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.renderingoptions._iscompositeformelement: +.. include:: SummaryPage/renderingOptions/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.renderingoptions._istoplevelformelement: +.. include:: SummaryPage/renderingOptions/_isTopLevelFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.renderingoptions.nextbuttonlabel: +.. include:: SummaryPage/renderingOptions/nextButtonLabel.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.renderingoptions.previousbuttonlabel: +.. include:: SummaryPage/renderingOptions/previousButtonLabel.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor: +.. include:: SummaryPage/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.editors.100: +.. include:: SummaryPage/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.editors.200: +.. include:: SummaryPage/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.editors.300: +.. include:: SummaryPage/formEditor/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.editors.400: +.. include:: SummaryPage/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.editors.9999: +.. include:: SummaryPage/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.predefineddefaults: +.. include:: SummaryPage/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor._iscompositeformelement: +.. include:: SummaryPage/formEditor/_isCompositeFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor._istoplevelformelement: +.. include:: SummaryPage/formEditor/_isTopLevelFormElement.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.label: +.. include:: SummaryPage/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.group: +.. include:: SummaryPage/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.groupsorting: +.. include:: SummaryPage/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.iconidentifier: +.. include:: SummaryPage/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor.rst new file mode 100644 index 000000000000..6b0d982d7b59 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor.rst @@ -0,0 +1,54 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + SummaryPage: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.SummaryPage.editor.label.label + propertyPath: label + 300: + identifier: 'previousButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.SummaryPage.editor.previousButtonLabel.label' + propertyPath: 'renderingOptions.previousButtonLabel' + 400: + identifier: 'nextButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.SummaryPage.editor.nextButtonLabel.label' + propertyPath: 'renderingOptions.nextButtonLabel' + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + renderingOptions: + previousButtonLabel: 'formEditor.elements.SummaryPage.editor.previousButtonLabel.value' + nextButtonLabel: 'formEditor.elements.SummaryPage.editor.nextButtonLabel.value' + label: formEditor.elements.SummaryPage.label + group: page + groupSorting: 200 + _isTopLevelFormElement: true + _isCompositeFormElement: false + iconIdentifier: t3-form-icon-summary-page diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/_isCompositeFormElement.rst new file mode 100644 index 000000000000..3136a4e403e1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/_isCompositeFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isCompositeFormElement +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + SummaryPage: + formEditor: + _isCompositeFormElement: false + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/_isTopLevelFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/_isTopLevelFormElement.rst new file mode 100644 index 000000000000..a9b6e941cedc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/_isTopLevelFormElement.rst @@ -0,0 +1,29 @@ +formEditor._isTopLevelFormElement +--------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor._isTopLevelFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + SummaryPage: + formEditor: + _isTopLevelFormElement: true + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element must not have a parent form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/100.rst new file mode 100644 index 000000000000..3db693649893 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SummaryPage: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/200.rst new file mode 100644 index 000000000000..28f5caf013f8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SummaryPage: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.SummaryPage.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/300.rst new file mode 100644 index 000000000000..70f12d1b0cee --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/300.rst @@ -0,0 +1,31 @@ +formEditor.editors.300 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Form: + formEditor: + editors: + 300: + identifier: 'previousButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.SummaryPage.editor.previousButtonLabel.label' + propertyPath: 'renderingOptions.previousButtonLabel' diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/400.rst new file mode 100644 index 000000000000..565c09d14da4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/400.rst @@ -0,0 +1,31 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Form: + formEditor: + editors: + 400: + identifier: 'nextButtonLabel' + templateName: 'Inspector-TextEditor' + label: 'formEditor.elements.SummaryPage.editor.nextButtonLabel.label' + propertyPath: 'renderingOptions.nextButtonLabel' diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/9999.rst new file mode 100644 index 000000000000..465a95965704 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + SummaryPage: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/group.rst new file mode 100644 index 000000000000..6e195babaa18 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SummaryPage: + formEditor: + group: page + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/groupSorting.rst new file mode 100644 index 000000000000..ba977004f821 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SummaryPage: + formEditor: + groupSorting: 200 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..9923ce2f34f7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SummaryPage: + formEditor: + iconIdentifier: t3-form-icon-summary-page + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/label.rst new file mode 100644 index 000000000000..0ce9a8e17fa8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SummaryPage: + formEditor: + label: formEditor.elements.SummaryPage.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..bbfaa790f8fc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/formEditor/predefinedDefaults.rst @@ -0,0 +1,32 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + SummaryPage: + formEditor: + predefinedDefaults: + renderingOptions: + previousButtonLabel: 'formEditor.elements.SummaryPage.editor.previousButtonLabel.value' + nextButtonLabel: 'formEditor.elements.SummaryPage.editor.nextButtonLabel.value' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/implementationClassName.rst new file mode 100644 index 000000000000..d1e255117cc3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + SummaryPage: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\Page + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/_isCompositeFormElement.rst new file mode 100644 index 000000000000..47e9977d2ad1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/_isCompositeFormElement.rst @@ -0,0 +1,38 @@ +renderingOptions._isCompositeFormElement +---------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.renderingOptions._isCompositeFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + SummaryPage: + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: false + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element contains child form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/_isTopLevelFormElement.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/_isTopLevelFormElement.rst new file mode 100644 index 000000000000..64ad04781771 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/_isTopLevelFormElement.rst @@ -0,0 +1,38 @@ +renderingOptions._isTopLevelFormElement +--------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.renderingOptions._isTopLevelFormElement + +:aspect:`Data type` + bool + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + SummaryPage: + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: false + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Internal control setting to define that the form element must not have a parent form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/nextButtonLabel.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/nextButtonLabel.rst new file mode 100644 index 000000000000..330ec7ce6113 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/nextButtonLabel.rst @@ -0,0 +1,38 @@ +renderingOptions.nextButtonLabel +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.renderingOptions.nextButtonLabel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + SummaryPage: + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: false + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the "next page" Button. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/previousButtonLabel.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/previousButtonLabel.rst new file mode 100644 index 000000000000..f27919bce2d7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/SummaryPage/renderingOptions/previousButtonLabel.rst @@ -0,0 +1,38 @@ +renderingOptions.previousButtonLabel +------------------------------------ + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.SummaryPage.renderingOptions.previousButtonLabel + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + Yes + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + SummaryPage: + renderingOptions: + _isTopLevelFormElement: true + _isCompositeFormElement: false + nextButtonLabel: 'next Page' + previousButtonLabel: 'previous Page' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The label for the "previous page" Button. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text.rst new file mode 100644 index 000000000000..973e27852bd1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text.rst @@ -0,0 +1,178 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.text: + +====== +[Text] +====== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.text-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.implementationclassname: +.. include:: Text/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.properties.containerclassattribute: +.. include:: Text/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.properties.elementclassattribute: +.. include:: Text/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.properties.elementerrorclassattribute: +.. include:: Text/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor: +.. include:: Text/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.editors.100: +.. include:: Text/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.editors.200: +.. include:: Text/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.editors.400: +.. include:: Text/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.editors.500: +.. include:: Text/formEditor/editors/500.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.editors.700: +.. include:: Text/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.editors.800: +.. include:: Text/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.editors.900: +.. include:: Text/formEditor/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.editors.9999: +.. include:: Text/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.predefineddefaults: +.. include:: Text/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.10: +.. include:: Text/formEditor/propertyCollections/validators/10.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.10.identifier: +.. include:: Text/formEditor/propertyCollections/validators/10/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.10.editors.100: +.. include:: Text/formEditor/propertyCollections/validators/10/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.10.editors.9999: +.. include:: Text/formEditor/propertyCollections/validators/10/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.20: +.. include:: Text/formEditor/propertyCollections/validators/20.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.20.identifier: +.. include:: Text/formEditor/propertyCollections/validators/20/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.20.editors.100: +.. include:: Text/formEditor/propertyCollections/validators/20/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.20.editors.9999: +.. include:: Text/formEditor/propertyCollections/validators/20/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.30: +.. include:: Text/formEditor/propertyCollections/validators/30.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.30.identifier: +.. include:: Text/formEditor/propertyCollections/validators/30/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.30.editors.100: +.. include:: Text/formEditor/propertyCollections/validators/30/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.30.editors.200: +.. include:: Text/formEditor/propertyCollections/validators/30/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.30.editors.300: +.. include:: Text/formEditor/propertyCollections/validators/30/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.30.editors.9999: +.. include:: Text/formEditor/propertyCollections/validators/30/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.40: +.. include:: Text/formEditor/propertyCollections/validators/40.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.40.identifier: +.. include:: Text/formEditor/propertyCollections/validators/40/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.40.editors.100: +.. include:: Text/formEditor/propertyCollections/validators/40/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.40.editors.9999: +.. include:: Text/formEditor/propertyCollections/validators/40/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.50: +.. include:: Text/formEditor/propertyCollections/validators/50.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.50.identifier: +.. include:: Text/formEditor/propertyCollections/validators/50/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.50.editors.100: +.. include:: Text/formEditor/propertyCollections/validators/50/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.50.editors.9999: +.. include:: Text/formEditor/propertyCollections/validators/50/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.60: +.. include:: Text/formEditor/propertyCollections/validators/60.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.60.identifier: +.. include:: Text/formEditor/propertyCollections/validators/60/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.60.editors.100: +.. include:: Text/formEditor/propertyCollections/validators/60/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.60.editors.9999: +.. include:: Text/formEditor/propertyCollections/validators/60/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.70: +.. include:: Text/formEditor/propertyCollections/validators/70.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.70.identifier: +.. include:: Text/formEditor/propertyCollections/validators/70/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.70.editors.100: +.. include:: Text/formEditor/propertyCollections/validators/70/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.70.editors.200: +.. include:: Text/formEditor/propertyCollections/validators/70/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.70.editors.300: +.. include:: Text/formEditor/propertyCollections/validators/70/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.70.editors.9999: +.. include:: Text/formEditor/propertyCollections/validators/70/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.80: +.. include:: Text/formEditor/propertyCollections/validators/80.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.80.identifier: +.. include:: Text/formEditor/propertyCollections/validators/80/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.80.editors.100: +.. include:: Text/formEditor/propertyCollections/validators/80/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.80.editors.200: +.. include:: Text/formEditor/propertyCollections/validators/80/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.propertycollections.validators.80.editors.9999: +.. include:: Text/formEditor/propertyCollections/validators/80/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.label: +.. include:: Text/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.group: +.. include:: Text/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.groupsorting: +.. include:: Text/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.text.formeditor.iconidentifier: +.. include:: Text/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor.rst new file mode 100644 index 000000000000..eec94b6612c6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor.rst @@ -0,0 +1,243 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + Text: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + 500: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + defaultValue: '' + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.Text.label + group: input + groupSorting: 100 + iconIdentifier: t3-form-icon-text diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/100.rst new file mode 100644 index 000000000000..228454bdc9ab --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/100.rst @@ -0,0 +1,30 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Text: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/200.rst new file mode 100644 index 000000000000..4340af6f3074 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/200.rst @@ -0,0 +1,32 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Text: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/400.rst new file mode 100644 index 000000000000..417c19a9dafc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/400.rst @@ -0,0 +1,35 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Text: + formEditor: + editors: + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/500.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/500.rst new file mode 100644 index 000000000000..fbcc2200a7f8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/500.rst @@ -0,0 +1,32 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Text: + formEditor: + editors: + 500: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/700.rst new file mode 100644 index 000000000000..434c123fd62e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/700.rst @@ -0,0 +1,50 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Text: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/800.rst new file mode 100644 index 000000000000..7042833aec99 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/800.rst @@ -0,0 +1,36 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Text: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + + + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/900.rst new file mode 100644 index 000000000000..6cbda9b0a053 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/900.rst @@ -0,0 +1,59 @@ +formEditor.editors.900 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.editors.900 + +:aspect:`Data type` + array/ :ref:`[ValidatorsEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Text: + formEditor: + editors: + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/9999.rst new file mode 100644 index 000000000000..fc7dbe877ef2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/editors/9999.rst @@ -0,0 +1,30 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Text: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/group.rst new file mode 100644 index 000000000000..8d76c0d96e22 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Text: + formEditor: + group: input + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/groupSorting.rst new file mode 100644 index 000000000000..e8d30c656ec3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Text: + formEditor: + groupSorting: 100 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..915dc9a5c830 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Text: + formEditor: + iconIdentifier: t3-form-icon-text + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/label.rst new file mode 100644 index 000000000000..ddb1ab51defb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Text: + formEditor: + label: formEditor.elements.Text.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..7bb5e928626b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/predefinedDefaults.rst @@ -0,0 +1,30 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Text: + formEditor: + predefinedDefaults: + defaultValue: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10.rst new file mode 100644 index 000000000000..0d038e90b39f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.10 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.10 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Text: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/editors/100.rst new file mode 100644 index 000000000000..e052b1006353 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/editors/9999.rst new file mode 100644 index 000000000000..17a330d48ba1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.10.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.10.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/identifier.rst new file mode 100644 index 000000000000..125afe15026f --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/10/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.10.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.10.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Text: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20.rst new file mode 100644 index 000000000000..8ab3c33f64a2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.20 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.20 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Text: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/editors/100.rst new file mode 100644 index 000000000000..462fb0fa34b6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.20.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.20.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/editors/9999.rst new file mode 100644 index 000000000000..ba688c0b3974 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.20.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.20.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/identifier.rst new file mode 100644 index 000000000000..496d0981381e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/20/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.20.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.20.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Text: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30.rst new file mode 100644 index 000000000000..8034b797b7d4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30.rst @@ -0,0 +1,57 @@ +formEditor.propertyCollections.validators.30 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.30 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Text: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/100.rst new file mode 100644 index 000000000000..a5cc4a2b5ef6 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.30.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.30.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/200.rst new file mode 100644 index 000000000000..7ed62a11d610 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/200.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.validators.30.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.30.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/300.rst new file mode 100644 index 000000000000..6c8dd73e3f99 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/300.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.validators.30.editors.300 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.30.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/9999.rst new file mode 100644 index 000000000000..739a6c1e9c23 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.30.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.30.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/identifier.rst new file mode 100644 index 000000000000..7335bde7b85a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/30/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.30.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.30.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Text: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40.rst new file mode 100644 index 000000000000..87cca0a92d59 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.40 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.40 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Text: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/editors/100.rst new file mode 100644 index 000000000000..f126e59f76b0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.40.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.40.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/editors/9999.rst new file mode 100644 index 000000000000..ab288fcc4e2e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.40.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.40.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/identifier.rst new file mode 100644 index 000000000000..5b83ed9076f2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/40/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.40.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.40.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Text: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50.rst new file mode 100644 index 000000000000..ded05666983b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.50 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.50 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Text: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/editors/100.rst new file mode 100644 index 000000000000..3093b92bd23b --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.50.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.50.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/editors/9999.rst new file mode 100644 index 000000000000..8425938c2da5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.50.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.50.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/identifier.rst new file mode 100644 index 000000000000..143a45dddbdc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/50/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.50.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.50.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Text: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60.rst new file mode 100644 index 000000000000..41141ea09014 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.60 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.60 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Text: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/editors/100.rst new file mode 100644 index 000000000000..75ed65c748b1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.60.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.60.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/editors/9999.rst new file mode 100644 index 000000000000..b3f5fa3bed6c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.60.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.60.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/identifier.rst new file mode 100644 index 000000000000..3a97c98bc23d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/60/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.60.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.60.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Text: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70.rst new file mode 100644 index 000000000000..137a4afe71c3 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70.rst @@ -0,0 +1,53 @@ +formEditor.propertyCollections.validators.70 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.70 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Text: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/100.rst new file mode 100644 index 000000000000..b1d845b5e42e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.70.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.70.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/200.rst new file mode 100644 index 000000000000..166a03daeba2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/200.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.validators.70.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.70.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/300.rst new file mode 100644 index 000000000000..0e32fd4c8f12 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/300.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.validators.70.editors.300 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.70.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/9999.rst new file mode 100644 index 000000000000..24d5ae576cf4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.70.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.70.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/identifier.rst new file mode 100644 index 000000000000..8e84e02bf622 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/70/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.70.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.70.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Text: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80.rst new file mode 100644 index 000000000000..b338a8c4acc4 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80.rst @@ -0,0 +1,43 @@ +formEditor.propertyCollections.validators.80 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.80 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Text: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/100.rst new file mode 100644 index 000000000000..c4085582fc3c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.80.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.80.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/200.rst new file mode 100644 index 000000000000..6a29b340eed2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/200.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.validators.80.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.80.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/9999.rst new file mode 100644 index 000000000000..0ef6839ea5f5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.80.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.80.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Text: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/identifier.rst new file mode 100644 index 000000000000..dfc51c29177c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/formEditor/propertyCollections/validators/80/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.80.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.formEditor.propertyCollections.validators.80.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Text: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/implementationClassName.rst new file mode 100644 index 000000000000..96a5dd541d22 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Text: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..e5bf7e849adc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Text: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..17f165588379 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Text: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..9500b80c43c5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Text/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Text.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + Text: + properties: + containerClassAttribute: input + elementClassAttribute: '' + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea.rst new file mode 100644 index 000000000000..787ce1818f2d --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea.rst @@ -0,0 +1,178 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.textareaarea: + +========== +[Textarea] +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.textareaarea-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.implementationclassname: +.. include:: Textarea/implementationClassName.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.properties.containerclassattribute: +.. include:: Textarea/properties/containerClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.properties.elementclassattribute: +.. include:: Textarea/properties/elementClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.properties.elementerrorclassattribute: +.. include:: Textarea/properties/elementErrorClassAttribute.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor: +.. include:: Textarea/formEditor.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.editors.100: +.. include:: Textarea/formEditor/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.editors.200: +.. include:: Textarea/formEditor/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.editors.400: +.. include:: Textarea/formEditor/editors/400.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.editors.500: +.. include:: Textarea/formEditor/editors/500.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.editors.700: +.. include:: Textarea/formEditor/editors/700.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.editors.800: +.. include:: Textarea/formEditor/editors/800.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.editors.900: +.. include:: Textarea/formEditor/editors/900.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.editors.9999: +.. include:: Textarea/formEditor/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.predefineddefaults: +.. include:: Textarea/formEditor/predefinedDefaults.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.10: +.. include:: Textarea/formEditor/propertyCollections/validators/10.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.10.identifier: +.. include:: Textarea/formEditor/propertyCollections/validators/10/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.10.editors.100: +.. include:: Textarea/formEditor/propertyCollections/validators/10/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.10.editors.9999: +.. include:: Textarea/formEditor/propertyCollections/validators/10/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.20: +.. include:: Textarea/formEditor/propertyCollections/validators/20.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.20.identifier: +.. include:: Textarea/formEditor/propertyCollections/validators/20/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.20.editors.100: +.. include:: Textarea/formEditor/propertyCollections/validators/20/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.20.editors.9999: +.. include:: Textarea/formEditor/propertyCollections/validators/20/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.30: +.. include:: Textarea/formEditor/propertyCollections/validators/30.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.30.identifier: +.. include:: Textarea/formEditor/propertyCollections/validators/30/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.30.editors.100: +.. include:: Textarea/formEditor/propertyCollections/validators/30/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.30.editors.200: +.. include:: Textarea/formEditor/propertyCollections/validators/30/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.30.editors.300: +.. include:: Textarea/formEditor/propertyCollections/validators/30/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.30.editors.9999: +.. include:: Textarea/formEditor/propertyCollections/validators/30/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.40: +.. include:: Textarea/formEditor/propertyCollections/validators/40.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.40.identifier: +.. include:: Textarea/formEditor/propertyCollections/validators/40/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.40.editors.100: +.. include:: Textarea/formEditor/propertyCollections/validators/40/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.40.editors.9999: +.. include:: Textarea/formEditor/propertyCollections/validators/40/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.50: +.. include:: Textarea/formEditor/propertyCollections/validators/50.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.50.identifier: +.. include:: Textarea/formEditor/propertyCollections/validators/50/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.50.editors.100: +.. include:: Textarea/formEditor/propertyCollections/validators/50/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.50.editors.9999: +.. include:: Textarea/formEditor/propertyCollections/validators/50/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.60: +.. include:: Textarea/formEditor/propertyCollections/validators/60.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.60.identifier: +.. include:: Textarea/formEditor/propertyCollections/validators/60/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.60.editors.100: +.. include:: Textarea/formEditor/propertyCollections/validators/60/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.60.editors.9999: +.. include:: Textarea/formEditor/propertyCollections/validators/60/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.70: +.. include:: Textarea/formEditor/propertyCollections/validators/70.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.70.identifier: +.. include:: Textarea/formEditor/propertyCollections/validators/70/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.70.editors.100: +.. include:: Textarea/formEditor/propertyCollections/validators/70/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.70.editors.200: +.. include:: Textarea/formEditor/propertyCollections/validators/70/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.70.editors.300: +.. include:: Textarea/formEditor/propertyCollections/validators/70/editors/300.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.70.editors.9999: +.. include:: Textarea/formEditor/propertyCollections/validators/70/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.80: +.. include:: Textarea/formEditor/propertyCollections/validators/80.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.80.identifier: +.. include:: Textarea/formEditor/propertyCollections/validators/80/identifier.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.80.editors.100: +.. include:: Textarea/formEditor/propertyCollections/validators/80/editors/100.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.80.editors.200: +.. include:: Textarea/formEditor/propertyCollections/validators/80/editors/200.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.propertycollections.validators.80.editors.9999: +.. include:: Textarea/formEditor/propertyCollections/validators/80/editors/9999.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.label: +.. include:: Textarea/formEditor/label.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.group: +.. include:: Textarea/formEditor/group.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.groupsorting: +.. include:: Textarea/formEditor/groupSorting.rst + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.iconidentifier: +.. include:: Textarea/formEditor/iconIdentifier.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor.rst new file mode 100644 index 000000000000..8ba55e4923e2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor.rst @@ -0,0 +1,240 @@ +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2- + + Textarea: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true + 500: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + predefinedDefaults: + defaultValue: '' + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + label: formEditor.elements.Textarea.label + group: input + groupSorting: 200 + iconIdentifier: t3-form-icon-textarea diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/100.rst new file mode 100644 index 000000000000..7c09fcb98058 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/100.rst @@ -0,0 +1,29 @@ +formEditor.editors.100 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.editors.100 + +:aspect:`Data type` + array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Textarea: + formEditor: + editors: + 100: + identifier: header + templateName: Inspector-FormElementHeaderEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/200.rst new file mode 100644 index 000000000000..81cc2f2d40da --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/200.rst @@ -0,0 +1,31 @@ +formEditor.editors.200 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Textarea: + formEditor: + editors: + 200: + identifier: label + templateName: Inspector-TextEditor + label: formEditor.elements.FormElement.editor.label.label + propertyPath: label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/400.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/400.rst new file mode 100644 index 000000000000..38540c5e1e41 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/400.rst @@ -0,0 +1,33 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Textarea: + formEditor: + editors: + 400: + identifier: placeholder + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.placeholder.label + propertyPath: properties.fluidAdditionalAttributes.placeholder + compatibilityPropertyPath: properties.placeholder + doNotSetIfPropertyValueIsEmpty: true diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/500.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/500.rst new file mode 100644 index 000000000000..d1c380fb4795 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/500.rst @@ -0,0 +1,31 @@ +formEditor.editors.400 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.editors.400 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Textarea: + formEditor: + editors: + 400: + identifier: defaultValue + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.editor.defaultValue.label + propertyPath: defaultValue diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/700.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/700.rst new file mode 100644 index 000000000000..a90f7047ea93 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/700.rst @@ -0,0 +1,48 @@ +formEditor.editors.700 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.editors.700 + +:aspect:`Data type` + array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Textarea: + formEditor: + editors: + 700: + identifier: gridColumnViewPortConfiguration + templateName: Inspector-GridColumnViewPortConfigurationEditor + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label + configurationOptions: + viewPorts: + 10: + viewPortIdentifier: xs + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label + 20: + viewPortIdentifier: sm + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label + 30: + viewPortIdentifier: md + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label + 40: + viewPortIdentifier: lg + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label + numbersOfColumnsToUse: + label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label + propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse' + fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/800.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/800.rst new file mode 100644 index 000000000000..349ca27b40d1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/800.rst @@ -0,0 +1,33 @@ +formEditor.editors.800 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.editors.800 + +:aspect:`Data type` + array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Textarea: + formEditor: + editors: + 800: + identifier: requiredValidator + templateName: Inspector-RequiredValidatorEditor + label: formEditor.elements.FormElement.editor.requiredValidator.label + validatorIdentifier: NotEmpty + propertyPath: properties.fluidAdditionalAttributes.required + propertyValue: required diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/900.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/900.rst new file mode 100644 index 000000000000..d79f89136779 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/900.rst @@ -0,0 +1,58 @@ +formEditor.editors.900 +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.editors.900 + +:aspect:`Data type` + array/ :ref:`[ValidatorsEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Textarea: + formEditor: + editors: + 900: + identifier: validators + templateName: Inspector-ValidatorsEditor + label: formEditor.elements.TextMixin.editor.validators.label + selectOptions: + 10: + value: '' + label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label + 20: + value: Alphanumeric + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + 30: + value: Text + label: formEditor.elements.TextMixin.editor.validators.Text.label + 40: + value: StringLength + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + 50: + value: EmailAddress + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + 60: + value: Integer + label: formEditor.elements.TextMixin.editor.validators.Integer.label + 70: + value: Float + label: formEditor.elements.TextMixin.editor.validators.Float.label + 80: + value: NumberRange + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + 90: + value: RegularExpression + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/9999.rst new file mode 100644 index 000000000000..aa698a7465a5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/editors/9999.rst @@ -0,0 +1,29 @@ +formEditor.editors.9999 +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +.. :aspect:`Related options` + @ToDo + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4- + + Textarea: + formEditor: + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/group.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/group.rst new file mode 100644 index 000000000000..d246a57dff6e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/group.rst @@ -0,0 +1,30 @@ +formEditor.group +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.group + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Textarea: + formEditor: + group: input + +:aspect:`Default value` + Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`) + +:aspect:`Description` + Define within which group within the ``form editor`` "new Element" modal the form element should be shown. + The ``group`` value must be equal to an array key within ``formElementGroups``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/groupSorting.rst new file mode 100644 index 000000000000..219ac4d544ef --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/groupSorting.rst @@ -0,0 +1,29 @@ +formEditor.groupSorting +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.groupSorting + +:aspect:`Data type` + int + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Textarea: + formEditor: + groupSorting: 200 + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + The position within the ``formEditor.group`` for this form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/iconIdentifier.rst new file mode 100644 index 000000000000..86328d9f8201 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/iconIdentifier.rst @@ -0,0 +1,35 @@ +formEditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Textarea: + formEditor: + iconIdentifier: t3-form-icon-textarea + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. + This icon will be shown within + + - :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`. + - :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`. + - ``Tree`` component. + - "new element" Modal \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/label.rst new file mode 100644 index 000000000000..9ffdba2a7eee --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/label.rst @@ -0,0 +1,29 @@ +formEditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Textarea: + formEditor: + label: formEditor.elements.Textarea.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + This label will be shown within the "new element" Modal. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/predefinedDefaults.rst new file mode 100644 index 000000000000..d8a3c6b615a7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/predefinedDefaults.rst @@ -0,0 +1,30 @@ +formEditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Textarea: + formEditor: + predefinedDefaults: + defaultValue: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10.rst new file mode 100644 index 000000000000..aa0e04af4606 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.10 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.10 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Textarea: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/editors/100.rst new file mode 100644 index 000000000000..7c09e019440a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.10.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.10.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/editors/9999.rst new file mode 100644 index 000000000000..110f651d82ce --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.10.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.10.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/identifier.rst new file mode 100644 index 000000000000..8c55f3419045 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/10/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.10.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.10.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Textarea: + formEditor: + propertyCollections: + validators: + 10: + identifier: Alphanumeric + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20.rst new file mode 100644 index 000000000000..41d118e60948 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.20 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.20 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Textarea: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/editors/100.rst new file mode 100644 index 000000000000..7262f826b721 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.20.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.20.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Text.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/editors/9999.rst new file mode 100644 index 000000000000..c684931d94b5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.20.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.20.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/identifier.rst new file mode 100644 index 000000000000..508caa60935a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/20/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.20.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.20.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Textarea: + formEditor: + propertyCollections: + validators: + 20: + identifier: Text + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30.rst new file mode 100644 index 000000000000..fa3b38e94c9c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30.rst @@ -0,0 +1,57 @@ +formEditor.propertyCollections.validators.30 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.30 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Textarea: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/100.rst new file mode 100644 index 000000000000..43b81a920876 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.30.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.30.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/200.rst new file mode 100644 index 000000000000..bf248cc7d343 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/200.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.validators.30.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.30.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.minlength + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/300.rst new file mode 100644 index 000000000000..df026687fd79 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/300.rst @@ -0,0 +1,39 @@ +formEditor.propertyCollections.validators.30.editors.300 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.30.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + additionalElementPropertyPaths: + 10: properties.fluidAdditionalAttributes.maxlength + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/9999.rst new file mode 100644 index 000000000000..b9d4a4c7ea3e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.30.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.30.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/identifier.rst new file mode 100644 index 000000000000..bf3ad39a6ba8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/30/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.30.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.30.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Textarea: + formEditor: + propertyCollections: + validators: + 30: + identifier: StringLength + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40.rst new file mode 100644 index 000000000000..7063deed4fcf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.40 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.40 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Textarea: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/editors/100.rst new file mode 100644 index 000000000000..822b3e886fc2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.40.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.40.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/editors/9999.rst new file mode 100644 index 000000000000..574dc45a07d8 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.40.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.40.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/identifier.rst new file mode 100644 index 000000000000..e82834c6961a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/40/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.40.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.40.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Textarea: + formEditor: + propertyCollections: + validators: + 40: + identifier: EmailAddress + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50.rst new file mode 100644 index 000000000000..7a646f7822b9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.50 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.50 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Textarea: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/editors/100.rst new file mode 100644 index 000000000000..b0e2efb9fccb --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.50.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.50.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Integer.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/editors/9999.rst new file mode 100644 index 000000000000..f6cbf23afaf5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.50.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.50.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/identifier.rst new file mode 100644 index 000000000000..7c557a547daf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/50/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.50.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.50.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Textarea: + formEditor: + propertyCollections: + validators: + 50: + identifier: Integer + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60.rst new file mode 100644 index 000000000000..9c35228d1dd1 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60.rst @@ -0,0 +1,35 @@ +formEditor.propertyCollections.validators.60 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.60 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Textarea: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/editors/100.rst new file mode 100644 index 000000000000..e05cdfa1cebf --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.60.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.60.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.Float.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/editors/9999.rst new file mode 100644 index 000000000000..32e188e6b7a7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.60.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.60.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/identifier.rst new file mode 100644 index 000000000000..72c21fc36c9a --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/60/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.60.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.60.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Textarea: + formEditor: + propertyCollections: + validators: + 60: + identifier: Float + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70.rst new file mode 100644 index 000000000000..42c6258b7ff5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70.rst @@ -0,0 +1,53 @@ +formEditor.propertyCollections.validators.70 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.70 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Textarea: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/100.rst new file mode 100644 index 000000000000..778e179ffc32 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.70.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.70.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/200.rst new file mode 100644 index 000000000000..1ac2c3e84705 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/200.rst @@ -0,0 +1,37 @@ +formEditor.propertyCollections.validators.70.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.70.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 200: + identifier: minimum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label + propertyPath: options.minimum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/300.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/300.rst new file mode 100644 index 000000000000..851a82b95d77 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/300.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.validators.70.editors.300 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.70.editors.300 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 300: + identifier: maximum + templateName: Inspector-TextEditor + label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label + propertyPath: options.maximum + propertyValidatorsMode: OR + propertyValidators: + 10: Integer + 20: FormElementIdentifierWithinCurlyBracesExclusive diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/9999.rst new file mode 100644 index 000000000000..cd450bff7a03 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.70.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.70.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + editors: + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/identifier.rst new file mode 100644 index 000000000000..95247ebb13ee --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/70/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.70.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.70.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Textarea: + formEditor: + propertyCollections: + validators: + 70: + identifier: NumberRange + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80.rst new file mode 100644 index 000000000000..e025e3d57af2 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80.rst @@ -0,0 +1,43 @@ +formEditor.propertyCollections.validators.80 +-------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.80 + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5- + + Textarea: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + 9999: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/100.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/100.rst new file mode 100644 index 000000000000..a53746ef6de0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/100.rst @@ -0,0 +1,32 @@ +formEditor.propertyCollections.validators.80.editors.100 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.80.editors.100 + +:aspect:`Data type` + array/ :ref:`[CollectionElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: header + templateName: Inspector-CollectionElementHeaderEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/200.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/200.rst new file mode 100644 index 000000000000..d71312eb0bee --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/200.rst @@ -0,0 +1,36 @@ +formEditor.propertyCollections.validators.80.editors.200 +-------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.80.editors.200 + +:aspect:`Data type` + array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 200: + identifier: regex + templateName: Inspector-TextEditor + label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label + fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText + propertyPath: options.regularExpression + propertyValidators: + 10: NotEmpty + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/9999.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/9999.rst new file mode 100644 index 000000000000..b0d978fcc6b0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/editors/9999.rst @@ -0,0 +1,31 @@ +formEditor.propertyCollections.validators.80.editors.9999 +--------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.80.editors.9999 + +:aspect:`Data type` + array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>` + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 8- + + Textarea: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + editors: + 100: + identifier: removeButton + templateName: Inspector-RemoveElementEditor + diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/identifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/identifier.rst new file mode 100644 index 000000000000..3726ff30f865 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/formEditor/propertyCollections/validators/80/identifier.rst @@ -0,0 +1,33 @@ +formEditor.propertyCollections.validators.80.identifier +------------------------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.propertyCollections.validators.80.identifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 6 + + Textarea: + formEditor: + propertyCollections: + validators: + 80: + identifier: RegularExpression + +:aspect:`Good to know` + - :ref:`"Inspector"<concepts-formeditor-inspector>` + - :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>` + +:aspect:`Description` + Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/implementationClassName.rst new file mode 100644 index 000000000000..a724373139c5 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/implementationClassName.rst @@ -0,0 +1,34 @@ +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + No + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Textarea: + implementationClassName: TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Classname which implements the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/containerClassAttribute.rst new file mode 100644 index 000000000000..1a0758a653f7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/containerClassAttribute.rst @@ -0,0 +1,37 @@ +properties.containerClassAttribute +---------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.properties.containerClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Textarea: + properties: + containerClassAttribute: input + elementClassAttribute: xxlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is typically wrapped around the form elements. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/elementClassAttribute.rst new file mode 100644 index 000000000000..260dce894d8e --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/elementClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementClassAttribute +-------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.properties.elementClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Textarea: + properties: + containerClassAttribute: input + elementClassAttribute: xxlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class written to the form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/elementErrorClassAttribute.rst new file mode 100644 index 000000000000..94eaf29d17ad --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formElementsDefinition/formElementTypes/Textarea/properties/elementErrorClassAttribute.rst @@ -0,0 +1,37 @@ +properties.elementErrorClassAttribute +------------------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.Textarea.properties.elementErrorClassAttribute + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Overwritable within form definition` + Yes + +:aspect:`form editor can write this property into the form definition (for prototype 'standard')` + No + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 5 + + Textarea: + properties: + containerClassAttribute: input + elementClassAttribute: xxlarge + elementErrorClassAttribute: error + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + A CSS class which is written to the form element if validation errors exists. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formEngine/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formEngine/Index.rst new file mode 100644 index 000000000000..78db186cb550 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/formEngine/Index.rst @@ -0,0 +1,45 @@ +.. include:: ../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formengine: + +============ +[formEngine] +============ + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formengine-properties: + +Properties +========== + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.formengine.translationfile: + +translationFile +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formEngine.translationFile + +:aspect:`Data type` + string/ array + +:aspect:`Needed by` + Backend (plugin) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + formEngine: + translationFile: 'EXT:form/Resources/Private/Language/Database.xlf' + +:aspect:`Good to know` + - :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>` + +:aspect:`Description` + Filesystem path(s) to translation files which should be searched for form plugin translations. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/Index.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/Index.rst new file mode 100644 index 000000000000..fcb13dfeabce --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/Index.rst @@ -0,0 +1,292 @@ +.. include:: ../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition: + +====================== +[validatorsDefinition] +====================== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.*: + +[validatorsDefinition] +---------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + .. code-block:: yaml + :linenos: + + prototypes: + <prototypeIdentifier>: + validatorsDefinition: + [...] + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + Array which defines the available serverside validators. Every key within this array is called the ``<validatoridentifier>``. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.<validatoridentifier>: + +<validatorIdentifier> +--------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.<validatorIdentifier> + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + + prototypes: + standard: + NotEmpty: + [...] + DateTime: + [...] + Alphanumeric: + [...] + Text: + [...] + StringLength: + [...] + EmailAddress: + [...] + Integer: + [...] + Float: + [...] + NumberRange: + [...] + RegularExpression: + [...] + Count: + [...] + +:aspect:`Related options` + - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.\<formElementTypeIdentifier>.formEditor.propertyCollections.validators.[*].identifier"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.propertycollections.validators.*.identifier>` + - :ref:`"[ValidatorsEditor] selectOptions.[*].value"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-validatorseditor>` + - :ref:`"[RequiredValidatorEditor] validatorIdentifier"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatoridentifier-requiredvalidatoreditor>` + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + This array key identifies a validator. This identifier could be used to attach a validator to a form element. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.<validatoridentifier>-commonproperties: + +Common <validatorIdentifier> properties +======================================= + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.validatorsdefinition.<validatoridentifier>.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.<validatorIdentifier>.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete validators configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.validatorsdefinition.<validatoridentifier>.options: + +options +------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.<validatorIdentifier>.options + +:aspect:`Data type` + array + +:aspect:`Needed by` + Frontend/ Backend (form editor) + +:aspect:`Mandatory` + Depends (see :ref:`concrete validators configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`) + +:aspect:`Default value` + Depends (see :ref:`concrete validators configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + Array with validator options. + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.validatorsdefinition.<validatoridentifier>.formeditor: + +formEditor +---------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.<validatorIdentifier>.formEditor + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Recommended + +:aspect:`Default value` + Depends (see :ref:`concrete validators configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + Array with configurations for the ``form editor`` + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.validatorsdefinition.<validatoridentifier>.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.<validatorIdentifier>.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete validators configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.validatorsdefinition.<validatoridentifier>.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.<validatorIdentifier>.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value` + Depends (see :ref:`concrete validators configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`) + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeIdentifier>.validatorsdefinition.<validatoridentifier>.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.<validatorIdentifier>.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value` + Depends (see :ref:`concrete validators configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`) + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: properties/predefinedDefaults.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.<validatoridentifier>-concreteconfigurations: + +Concrete configurations +======================= + +.. toctree:: + + validators/Alphanumeric + validators/Count + validators/DateTime + validators/EmailAddress + validators/Float + validators/Integer + validators/NotEmpty + validators/NumberRange + validators/RegularExpression + validators/StringLength + validators/Text diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/iconIdentifier.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/iconIdentifier.rst new file mode 100644 index 000000000000..8284530e2ef0 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/iconIdentifier.rst @@ -0,0 +1,2 @@ +An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``. +This icon will be shown within the - :ref:`"Inspector [CollectionElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` if the validator is selected. diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/implementationClassName.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/implementationClassName.rst new file mode 100644 index 000000000000..60f3d0b2062c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/implementationClassName.rst @@ -0,0 +1 @@ +Classname which implements the validator. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/label.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/label.rst new file mode 100644 index 000000000000..758c71d1d049 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/label.rst @@ -0,0 +1 @@ +This label will be shown within the - :ref:`"Inspector [CollectionElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` if the validator is selected. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/predefinedDefaults.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/predefinedDefaults.rst new file mode 100644 index 000000000000..4b30701c1526 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/properties/predefinedDefaults.rst @@ -0,0 +1 @@ +Defines predefined defaults for validator options which are prefilled, if the validator is added to a form element. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Alphanumeric.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Alphanumeric.rst new file mode 100644 index 000000000000..f468c046f553 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Alphanumeric.rst @@ -0,0 +1,122 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.alphanumeric: + +============== +[Alphanumeric] +============== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.alphanumeric-validationerrorcodes: + +validation error codes +====================== + +- 1221551320 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.alphanumeric-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.alphanumeric.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Alphanumeric.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Alphanumeric: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\AlphanumericValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.alphanumeric.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Alphanumeric.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Alphanumeric: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.alphanumeric.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Alphanumeric.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Alphanumeric: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Count.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Count.rst new file mode 100644 index 000000000000..207b12eb5255 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Count.rst @@ -0,0 +1,207 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.validatorsdefinition.count: + +======= +[Count] +======= + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.count-validationerrorcodes: + +validation error codes +====================== + +- 1475002976 +- 1475002994 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.count-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.count.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Count.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Count: + implementationClassName: TYPO3\CMS\Form\Mvc\Validation\CountValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.count.options.minimum: + +options.minimum +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Count.options.minimum + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + undefined + +:aspect:`Description` + The minimum count to accep. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.count.options.maximum: + +options.maximum +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Count.options.maximum + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + undefined + +:aspect:`Description` + The maximum count to accep. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.count.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Count.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Count: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.count.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Count.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Count: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.MultiSelectionMixin.validators.Count.editor.header.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.count.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Count.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + Count: + formEditor: + predefinedDefaults: + options: + minimum: '' + maximum: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/DateTime.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/DateTime.rst new file mode 100644 index 000000000000..f294f47a2d29 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/DateTime.rst @@ -0,0 +1,122 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.datetime: + +========== +[DateTime] +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.datetime-validationerrorcodes: + +validation error codes +====================== + +- 1238087674 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.datetime-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.datetime.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.DateTime.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + DateTime: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\DateTimeValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.datetime.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.DateTime.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + DateTime: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.DatePicker.validators.DateTime.editor.header.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.datetime.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.DateTime.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + DateTime: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.DatePicker.validators.DateTime.editor.header.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/EmailAddress.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/EmailAddress.rst new file mode 100644 index 000000000000..30db13b679a7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/EmailAddress.rst @@ -0,0 +1,125 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.validatorsdefinition.emailaddress: + +============== +[EmailAddress] +============== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.emailaddress-validationerrorcodes: + +validation error codes +====================== + +- 1221559976 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.emailaddress-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.emailaddress.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.EmailAddress.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + EmailAddress: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.emailaddress.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.EmailAddress.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + EmailAddress: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.emailaddress.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.EmailAddress.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + EmailAddress: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Float.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Float.rst new file mode 100644 index 000000000000..ae6d04c2f6f7 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Float.rst @@ -0,0 +1,122 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.validatorsdefinition.float: + +======= +[Float] +======= + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.float-validationerrorcodes: + +validation error codes +====================== + +- 1221560288 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.float-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.float.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Float.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Float: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\FloatValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.float.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Float.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Float: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Float.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.float.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Float.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Float: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Float.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Integer.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Integer.rst new file mode 100644 index 000000000000..97c26eac5a19 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Integer.rst @@ -0,0 +1,122 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.validatorsdefinition.integer: + +========= +[Integer] +========= + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.integer-validationerrorcodes: + +validation error codes +====================== + +- 1221560494 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.integer-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.integer.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Integer.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Integer: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\IntegerValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.integer.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Integer.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Integer: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Integer.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.integer.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Integer.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Integer: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Integer.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/NotEmpty.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/NotEmpty.rst new file mode 100644 index 000000000000..20db7fc82ba9 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/NotEmpty.rst @@ -0,0 +1,125 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.notempty: + +========== +[NotEmpty] +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.notempty-validationerrorcodes: + +validation error codes +====================== + +- 1221560910 +- 1221560718 +- 1347992400 +- 1347992453 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.notempty-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.notempty.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NotEmpty.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + NotEmpty: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.notempty.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NotEmpty.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + NotEmpty: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.FormElement.editor.requiredValidator.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.notempty.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NotEmpty.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + NotEmpty: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.FormElement.editor.requiredValidator.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/NumberRange.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/NumberRange.rst new file mode 100644 index 000000000000..c2d5d1a64a8c --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/NumberRange.rst @@ -0,0 +1,207 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.validatorsdefinition.numberrange: + +============= +[NumberRange] +============= + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.numberrange-validationerrorcodes: + +validation error codes +====================== + +- 1221563685 +- 1221561046 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.numberrange-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.numberrange.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NumberRange.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + NumberRange: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\NumberRangeValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.numberrange.options.minimum: + +options.minimum +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NumberRange.options.minimum + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + undefined + +:aspect:`Description` + The minimum value to accep. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.numberrange.options.maximum: + +options.maximum +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NumberRange.options.maximum + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + undefined + +:aspect:`Description` + The maximum value to accep. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.numberrange.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NumberRange.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + NumberRange: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.numberrange.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NumberRange.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + NumberRange: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.NumberRange.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.numberrange.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.NumberRange.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + NumberRange: + formEditor: + predefinedDefaults: + options: + minimum: '' + maximum: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/RegularExpression.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/RegularExpression.rst new file mode 100644 index 000000000000..a9c989d538cc --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/RegularExpression.rst @@ -0,0 +1,181 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.validatorsdefinition.regularexpression: + +=================== +[RegularExpression] +=================== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.regularexpression-validationerrorcodes: + +validation error codes +====================== + +- 1221565130 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.regularexpression-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.regularexpression.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.RegularExpression.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + RegularExpression: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\RegularExpressionValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.regularexpression.options.regularExpression: + +options.regularExpression +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.RegularExpression.options.regularExpression + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + undefined + +:aspect:`Description` + The regular expression to use for validation, used as given. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.regularexpression.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.RegularExpression.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + RegularExpression: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.regularexpression.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.RegularExpression.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + RegularExpression: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.regularexpression.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.RegularExpression.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + RegularExpression: + formEditor: + predefinedDefaults: + options: + regularExpression: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/StringLength.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/StringLength.rst new file mode 100644 index 000000000000..fcbac4b16b62 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/StringLength.rst @@ -0,0 +1,210 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.validatorsdefinition.stringlength: + +============== +[StringLength] +============== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.stringlength-validationerrorcodes: + +validation error codes +====================== + +- 1238110957 +- 1269883975 +- 1428504122 +- 1238108068 +- 1238108069 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.stringlength-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.stringlength.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.StringLength.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + StringLength: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\StringLengthValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.stringlength.options.minimum: + +options.minimum +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.StringLength.options.minimum + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + undefined + +:aspect:`Description` + The minimum value to accep. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.stringlength.options.maximum: + +options.maximum +--------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.StringLength.options.maximum + +:aspect:`Data type` + int + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + undefined + +:aspect:`Description` + The maximum value to accep. + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.stringlength.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.StringLength.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + StringLength: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.stringlength.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.StringLength.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + StringLength: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.StringLength.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.stringlength.formeditor.predefineddefaults: + +formeditor.predefinedDefaults +----------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.StringLength.formEditor.predefinedDefaults + +:aspect:`Data type` + array + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + No + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3- + + StringLength: + formEditor: + predefinedDefaults: + options: + minimum: '' + maximum: '' + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/predefinedDefaults.rst diff --git a/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Text.rst b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Text.rst new file mode 100644 index 000000000000..20c66cd7a243 --- /dev/null +++ b/typo3/sysext/form/Documentation/ConfigurationReference/prototypes/validatorsDefinition/validators/Text.rst @@ -0,0 +1,122 @@ +.. include:: ../../../../Includes.txt + + +.. _typo3.cms.form.prototypes.validatorsdefinition.text: + +====== +[Text] +====== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.text-validationerrorcodes: + +validation error codes +====================== + +- 1221565786 + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.text-properties: + +Properties +========== + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.text.implementationClassName: + +implementationClassName +----------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Text.implementationClassName + +:aspect:`Data type` + string + +:aspect:`Needed by` + Frontend + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 2 + + Text: + implementationClassName: TYPO3\CMS\Extbase\Validation\Validator\TextValidator + +:aspect:`Good to know` + - :ref:`"Custom validator implementations"<concepts-frontendrendering-codecomponents-customvalidatorimplementations>` + +:aspect:`Description` + .. include:: ../properties/implementationClassName.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.text.formeditor.iconidentifier: + +formeditor.iconIdentifier +------------------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Text.formEditor.iconIdentifier + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 3 + + Text: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Text.label + +.. :aspect:`Good to know` + ToDo + +:aspect:`Description` + .. include:: ../properties/iconIdentifier.rst + + +.. _typo3.cms.form.prototypes.<prototypeidentifier>.validatorsdefinition.text.formeditor.label: + +formeditor.label +---------------- + +:aspect:`Option path` + TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition.Text.formEditor.label + +:aspect:`Data type` + string + +:aspect:`Needed by` + Backend (form editor) + +:aspect:`Mandatory` + Yes + +:aspect:`Default value (for prototype 'standard')` + .. code-block:: yaml + :linenos: + :emphasize-lines: 4 + + Text: + formEditor: + iconIdentifier: t3-form-icon-validator + label: formEditor.elements.TextMixin.editor.validators.Text.label + +:aspect:`Good to know` + - :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>` + +:aspect:`Description` + .. include:: ../properties/label.rst diff --git a/typo3/sysext/form/Documentation/FAQ/Index.rst b/typo3/sysext/form/Documentation/FAQ/Index.rst new file mode 100644 index 000000000000..264076710ef8 --- /dev/null +++ b/typo3/sysext/form/Documentation/FAQ/Index.rst @@ -0,0 +1,153 @@ +.. include:: ../Includes.txt + + +.. _faq: + +=== +FAQ +=== + + +.. _faq-override-frontend-templates: + +How do I override the frontend templates? +========================================= + +There are 2 possible ways to override the frontend templates. + + +Globally extend the fluid search paths +-------------------------------------- + +Since EXT:form mainly uses YAML as configuration language you need to +register your own additional YAML files. Let us assume you are using a +sitepackage ``EXT:my_site_package`` which contains your whole frontend +integration. + + +EXT:my_site_package/Configuration/TypoScript/setup.txt +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +First of all, register a new EXT:form configuration for the frontend via +TypoScript. + +.. code-block:: typoscript + + plugin.tx_form { + settings { + yamlConfigurations { + # register your own additional configuration + # choose a number higher than 30 (below is reserved) + 100 = EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml + } + } + } + + +EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Next, define the additional fluid template search paths via YAML. + +.. code-block:: yaml + + TYPO3: + CMS: + Form: + prototypes: + standard: + formElementsDefinition: + Form: + renderingOptions: + templateRootPaths: + 20: 'EXT:my_site_package/Resources/Private/Form/Frontend/Templates/' + partialRootPaths: + 20: 'EXT:my_site_package/Resources/Private/Form/Frontend/Partials/' + layoutRootPaths: + 20: 'EXT:my_site_package/Resources/Private/Form/Frontend/Layouts/' + +.. note:: + The preview within the form editor (backend module) uses the frontend + templates as well. If you want the preview to show your customized + templates, register the new paths for the backend module as well. + + +EXT:my_site_package/ext_typoscript_setup.txt +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Register your EXT:form configuration for the backend via TypoScript. Read +the :ref:`chapter <concepts-configuration-yamlregistration-backend>` to +learn why we recommend using the concept behind ``ext_typoscript_setup.txt``. + +.. code-block:: typoscript + + module.tx_form { + settings { + yamlConfigurations { + 100 = EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml + } + } + } + + +.. _faq-migrate-from-v7: + +How do I migrate from EXT:form v7? +================================== + +The old form extension (used in TYPO3 v7, which is compatible to TYPO3 v6) +was moved into an own extension called ``form_legacy``. This extension can +be found within the official `TER <https://typo3.org/extensions/repository/view/form_legacy>`_. +When upgrading to TYPO3 v8 an upgrade wizard will tell you if form_legacy is +still needed. + + +.. _faq-frontend-validation: + +Is there a frontend validation? +=============================== + +Yes, an HTML 5 based frontend validation is implemented. Nevertheless, +there is no JavaScript validation. This has to be integrated manually. +Reliable and maintained projects are `Parsley <https://github.com/guillaumepotier/Parsley.js>`_ +and `jQuery Validation <https://github.com/jquery-validation/jquery-validation>`_. + + +.. _faq-localize-client-side-validations: + +How do I localize the client side validations in the frontend? +============================================================== + +The displayed validation message is a browser specific text. The output is +not generated by TYPO3 and therefore you cannot change it easily. +Nevertheless, there is a JavaScript solution for changing the validation +message. See `Stack Overflow <http://stackoverflow.com/questions/5272433/html5-form-required-attribute-set-custom-validation-message>`_ +for more information. + + +.. _faq-date-picker: + +How does the date picker work? +============================== + +EXT:form ships a datepicker form element. To unfold its full potential you +should add jquery JavaScript files and jqueryUi JavaScript and CSS files to +your frontend. + + +.. _faq-user-registration: + +Is it possible to build a frontend user registration with EXT:form? +=================================================================== + +Possible, yes. But we are not aware of an integration. + + +.. _faq-export-module: + +Is there some kind of export module for saved forms? +==================================================== + +Currently, there are no plans to implement such a feature. There are huge +concerns regarding the data privacy when it comes to storing user data in +your TYPO3 database permanently. \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Images/basic_code_components.png b/typo3/sysext/form/Documentation/Images/basic_code_components.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6612f9d21bedc1a42ca1359bf3b2e96787ed41 GIT binary patch literal 124554 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 Ombph|cigTYPW&&(O&;q2 literal 0 HcmV?d00001 diff --git a/typo3/sysext/form/Documentation/Images/form_manager.png b/typo3/sysext/form/Documentation/Images/form_manager.png new file mode 100644 index 0000000000000000000000000000000000000000..d2352c73c75711d79e4d69c2bba2968327a408b0 GIT binary patch literal 37998 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 Bq!9oB literal 0 HcmV?d00001 diff --git a/typo3/sysext/form/Documentation/Images/introduction_form_editor.png b/typo3/sysext/form/Documentation/Images/introduction_form_editor.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed471625139e352cf6de5e827eebc0775d5b522 GIT binary patch literal 65639 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
hH{sg*T1H&<VpsghDZE-0jU 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 literal 0 HcmV?d00001 diff --git a/typo3/sysext/form/Documentation/Images/javascript_module_interaction.png b/typo3/sysext/form/Documentation/Images/javascript_module_interaction.png new file mode 100644 index 0000000000000000000000000000000000000000..1b133d67d7ef418a487a4e4e1bdea4821100ef10 GIT binary patch literal 54086 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 literal 0 HcmV?d00001 diff --git a/typo3/sysext/form/Documentation/Includes.txt b/typo3/sysext/form/Documentation/Includes.txt new file mode 100644 index 000000000000..a7ddd8f2479d --- /dev/null +++ b/typo3/sysext/form/Documentation/Includes.txt @@ -0,0 +1,13 @@ +.. This is 'Includes.txt'. It is included at the very top of each and + every ReST source file in THIS documentation project (= manual). + +.. role:: aspect (emphasis) +.. role:: html(code) +.. role:: js(code) +.. role:: php(code) +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript + +.. highlight:: php +.. default-role:: code \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Index.rst b/typo3/sysext/form/Documentation/Index.rst new file mode 100644 index 000000000000..d7e632afbdee --- /dev/null +++ b/typo3/sysext/form/Documentation/Index.rst @@ -0,0 +1,55 @@ +.. include:: Includes.txt + + +.. _Start: + +==== +Form +==== + + +:Extension key: + form + +:Version: + 8 + +:Language: + en + +:Description: + Form framework, form editor and plugin + + +:Keywords: + form + +:Copyright: + 2000-2017 + +:Author: + TRITUM GmbH + +:License: + Open Content License available from `www.opencontent.org/openpub/ + <http://www.opencontent.org/openpub/>`_ + +:Rendered: + |today| + +The content of this document is related to TYPO3, + +a GNU/GPL CMS/Framework available from `www.typo3.org +<https://www.typo3.org/>`_ + + + +**Table of Contents** + +.. toctree:: + + Introduction/Index + Concepts/Index + ConfigurationReference/Index + ApiReference/Index + FAQ/Index \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Introduction/Index.rst b/typo3/sysext/form/Documentation/Introduction/Index.rst new file mode 100644 index 000000000000..15bfb6500d0a --- /dev/null +++ b/typo3/sysext/form/Documentation/Introduction/Index.rst @@ -0,0 +1,86 @@ +.. include:: ../Includes.txt + + +.. _introduction: + +============ +Introduction +============ + +.. note:: + This documentation will be extended on a constant basis. If you have + problems understanding a certain aspect, or if you notice something + missing, contribute to improve it. This will help you and everyone else! + + Get in touch with us: + + - Find us on `Slack <https://typo3.slack.com>`_ and join the channel + ``#ext:form``. + - Use the "Edit me on Github" function. + + +.. _what-does-it-do: + +What does it do? +---------------- + +The ``form`` extension acts as a flexible, extendible, yet easy to use form +framework. It equally allows editors, integrators, and developers to build +all types of forms. For this task, different interfaces and techniques are +available. + +As a non-technical editor, you can use the "Forms" backend module. It +allows you to create and manage your individual forms with the help of a +nifty drag and drop interface. Your work can be previewed instantly. + +As an experienced integrator, you are able to build ambitious forms which +are stored directly in your site package. Those forms can utilize hefty +finishers and ship localization files. + +As a developer, you can use the PHP API to forge interfaces with conditional +form elements, register new validators and finishers, as well as create +custom form elements. Plenty of hooks allow you to manipulate the generation +and processing of the both form and data. + +.. figure:: ../Images/introduction_form_editor.png + :alt: The form creation wizard + + Form editor displaying a new form in the abstract view + + +Features List +------------- + +The following list names some features of the form framework: + +* form editor + * fully customisable editor for building complex forms + * replaceable and extendible form editor components + * JS API to extend form editor +* PHP API + * entire forms via API + * own renderers for form and/ or form elements + * conditional steps, form elements and validators based on other form + elements +* configuration + * YAML as configuration and definition language including inheritances + and overrides + * file based + * behaviour and design of the frontend, plugin, and form editor can be + adapted on a per form basis + * 'prototypes' can be used as boilerplate +* form elements + * own form elements possible + * uploads handled as FAL objects +* finishers + * ships a bunch of built-in finishers, like email, redirect, and save to + database + * own finishers possible + * finisher configuration can be overridden within the form plugin +* validators + * own validators possible +* miscellaneous + * multiple language support + * multiple step support + * multiple forms on one page + * built-in spam protection (honeypot) \ No newline at end of file diff --git a/typo3/sysext/form/Documentation/Settings.cfg b/typo3/sysext/form/Documentation/Settings.cfg new file mode 100644 index 000000000000..2c04e0d473a3 --- /dev/null +++ b/typo3/sysext/form/Documentation/Settings.cfg @@ -0,0 +1,18 @@ +[general] + +project = Form Framework +version = 8 +release = 8 +t3author = TRITUM GmbH +copyright = 1997-2017 + +description = This is the documentation of TYPO3's system + extension 'form'. This extension implements a very. + flexible form framework. It ships the "Forms" backend + module and a plugin. + + +[html_theme_options] + +project_issues = https://forge.typo3.org/projects/typo3cms-core/issues +project_repository = https://git.typo3.org/Packages/TYPO3.CMS.git \ No newline at end of file -- GitLab