[!!!][TASK] Remove last marked deprecations 03/59503/6
authorBenni Mack <benni@typo3.org>
Mon, 21 Jan 2019 06:38:28 +0000 (07:38 +0100)
committerGeorg Ringer <georg.ringer@gmail.com>
Mon, 28 Jan 2019 06:36:23 +0000 (07:36 +0100)
Various deprecated code regarding EXT:form and FormEngine
have been removed.

* IRRE CustomControls without userFunc is not possible anymore.
* TBE_MODULES's configureModuleFunction is removed
* EXT:form type "GridContainer" is removed (use GridRow)
* EXT:form form configuration files must end with .form.yaml.
* EXT:form renderingOptions._isHiddenFormElement and
renderingOptions._isReadOnlyFormElement are removed
* CLI Command "lang:language:update" is now only
available under "language:update"

Resolves: #87514
Releases: master
Change-Id: Idef84daf51f882df23ef227d1777d24b1076dfaf
Reviewed-on: https://review.typo3.org/59503
Tested-by: TYPO3com <noreply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
49 files changed:
typo3/sysext/backend/Classes/Form/Container/InlineControlContainer.php
typo3/sysext/backend/Classes/Form/FormDataProvider/SiteDatabaseEditRow.php
typo3/sysext/backend/Classes/Module/ModuleLoader.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
typo3/sysext/form/Classes/Controller/FormManagerController.php
typo3/sysext/form/Classes/Domain/Model/FormElements/GridContainer.php [deleted file]
typo3/sysext/form/Classes/Domain/Model/FormElements/GridContainerInterface.php [deleted file]
typo3/sysext/form/Classes/Domain/Model/FormElements/GridRow.php
typo3/sysext/form/Classes/Hooks/DataStructureIdentifierHook.php
typo3/sysext/form/Classes/Mvc/Persistence/FormPersistenceManager.php
typo3/sysext/form/Classes/ViewHelpers/GridColumnClassAutoConfigurationViewHelper.php
typo3/sysext/form/Classes/ViewHelpers/RenderAllFormValuesViewHelper.php
typo3/sysext/form/Classes/ViewHelpers/TranslateElementErrorViewHelper.php
typo3/sysext/form/Configuration/Yaml/BaseSetup.yaml
typo3/sysext/form/Configuration/Yaml/FormEditorSetup.yaml
typo3/sysext/form/Documentation/Concepts/FormFileStorages/Index.rst
typo3/sysext/form/Documentation/Config/configuration/Index.rst
typo3/sysext/form/Documentation/Config/proto/formEditor/Index.rst
typo3/sysext/form/Documentation/Config/proto/formElements/Index.rst
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/_isCompositeFormElement.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/_isGridContainerFormElement.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/100.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/200.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/9999.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/group.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/groupSorting.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/iconIdentifier.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/label.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/predefinedDefaults.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/implementationClassName.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/containerClassAttribute.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/elementClassAttribute.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/elementErrorClassAttribute.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/gridSize.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/viewPorts.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/viewPorts/classPattern.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/renderingOptions/_isCompositeFormElement.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/renderingOptions/_isGridContainerFormElement.rst [deleted file]
typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridRow/formEditor/_isGridRowFormElement.rst
typo3/sysext/form/Resources/Private/Backend/Templates/FormManager/Index.html
typo3/sysext/form/Resources/Private/Language/Database.xlf
typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor.js
typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/Core.js
typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/StageComponent.js
typo3/sysext/form/Resources/Public/JavaScript/Backend/FormEditor/TreeComponent.js
typo3/sysext/form/Tests/Unit/Domain/FormElements/GridContainerTest.php [deleted file]
typo3/sysext/install/Classes/Command/LanguagePackCommand.php

index 0c96e01..0885c83 100644 (file)
@@ -346,10 +346,7 @@ class InlineControlContainer extends AbstractContainer
             $html .= '<div id="' . $nameObject . '_customControls">';
             foreach ($config['customControls'] as $customControlConfig) {
                 if (!isset($customControlConfig['userFunc'])) {
-                    trigger_error('Support for customControl without a userFunc key will be removed in TYPO3 v10.0.', E_USER_DEPRECATED);
-                    $customControlConfig = [
-                        'userFunc' => $customControlConfig
-                    ];
+                    throw new \RuntimeException('Support for customControl without a userFunc key in TCA type inline is not supported.', 1548052629);
                 }
                 $parameters = [
                     'table' => $table,
index 96ea8a2..6f12603 100644 (file)
@@ -85,14 +85,6 @@ class SiteDatabaseEditRow implements FormDataProviderInterface
             Environment::getConfigPath() . '/sites'
         );
         // load config as it is stored on disk (without replacements)
-        $configuration = $siteConfiguration->load($site->getIdentifier());
-        if (isset($configuration['site'])) {
-            trigger_error(
-                'Site configuration with key \'site\' has been deprecated, remove indentation level and site key.',
-                E_USER_DEPRECATED
-            );
-            $configuration = $configuration['site'];
-        }
-        return $configuration;
+        return $siteConfiguration->load($site->getIdentifier());
     }
 }
index 30a097a..e7c0157 100644 (file)
@@ -137,20 +137,6 @@ class ModuleLoader
      */
     public function checkMod($name)
     {
-        // Check for own way of configuring module
-        if (is_array($GLOBALS['TBE_MODULES']['_configuration'][$name]['configureModuleFunction'] ?? false)) {
-            trigger_error('Registering a module using "configureModuleFunction" will be removed in TYPO3 v10.0.', E_USER_DEPRECATED);
-            $obj = $GLOBALS['TBE_MODULES']['_configuration'][$name]['configureModuleFunction'];
-            if (is_callable($obj)) {
-                $MCONF = call_user_func($obj, $name);
-                if ($this->checkModAccess($name, $MCONF) !== true) {
-                    return false;
-                }
-                $this->addLabelsForModule($name, $MCONF['labels']);
-                return $MCONF;
-            }
-        }
-
         // merge configuration and labels into one array
         $setupInformation = $this->getModuleSetupInformation($name);
 
index 9778938..cd06413 100644 (file)
@@ -59,6 +59,7 @@ The following PHP classes that have been previously deprecated for v9 have been
 * :php:`TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator\AbstractValidatorTestcase`
 * :php:`TYPO3\CMS\Extbase\Validation\Validator\RawValidator`
 * :php:`TYPO3\CMS\Extensionmanager\Command\ExtensionCommandController`
+* :php:`TYPO3\CMS\Form\Domain\Model\FormElements\GridContainer`
 * :php:`TYPO3\CMS\Frontend\ContentObject\FileContentObject`
 * :php:`TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject`
 * :php:`TYPO3\CMS\Frontend\ContentObject\Menu\ImageMenuContentObject`
@@ -1331,7 +1332,7 @@ The following signals have been removed:
 * :php:`TYPO3\CMS\Extensionmanager\Utility\InstallUtility` signal `tablesDefinitionIsBeingBuilt`
 
 
-The following feature is now always enabled:
+The following features are now always enabled:
 
 * Extbase's :php:`consistentTranslationOverlayHandling` - Translations in Extbase are now always consistent
 * :php:`simplifiedControllerActionDispatching` - Backend controller actions do not receive a prepared response object anymore
@@ -1363,7 +1364,10 @@ The following features have been removed:
 * Extension :php:`feedit` has been dropped from core
 * The extension :php:`taskcenter` and its add-on extension :php:`sys_action` have been dropped from core
 * Translation :php:`locallang` references :php:`EXT:lang` to removed extension "lang" do not work any longer
-
+* EXT:form: type GridContainer
+* EXT:form: renderingOptions._isHiddenFormElement and renderingOptions._isReadOnlyFormElement are dropped
+* :php:`$TBE_MODULES`: configuring a module via a custom "configureModuleFunction" is dropped
+* CLI Command alias "lang:language:update" is dropped in favor of "language:update"
 
 The following database tables have been removed:
 
index 0a65f92..d71505c 100644 (file)
@@ -292,11 +292,6 @@ class FormManagerController extends AbstractBackendController
     {
         $preparedAccessibleFormStorageFolders = [];
         foreach ($this->formPersistenceManager->getAccessibleFormStorageFolders() as $identifier => $folder) {
-            // TODO: deprecated since TYPO3 v9, will be removed in TYPO3 v10.0
-            if ($folder->getCombinedIdentifier() === '1:/user_upload/') {
-                continue;
-            }
-
             $preparedAccessibleFormStorageFolders[] = [
                 'label' => $folder->getName(),
                 'value' => $identifier
diff --git a/typo3/sysext/form/Classes/Domain/Model/FormElements/GridContainer.php b/typo3/sysext/form/Classes/Domain/Model/FormElements/GridContainer.php
deleted file mode 100644 (file)
index 3a5d1e1..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-declare(strict_types = 1);
-namespace TYPO3\CMS\Form\Domain\Model\FormElements;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Form\Domain\Exception\TypeDefinitionNotValidException;
-
-/**
- * A GridContainer, being part of a bigger Page
- *
- * This class contains multiple GridRow elements.
- *
- * Scope: frontend
- * **This class is NOT meant to be sub classed by developers.**
- */
-class GridContainer extends Section implements GridContainerInterface
-{
-    /**
-     * Initializes the Form Element
-     *
-     * @internal
-     */
-    public function initializeFormElement()
-    {
-        trigger_error(
-            '"GridContainer" form elements will be removed in TYPO3 v10.0. Use "GridRow" form elements instead.',
-            E_USER_DEPRECATED
-        );
-        parent::initializeFormElement();
-    }
-
-    /**
-     * Register this element at the parent form, if there is a connection to the parent form.
-     *
-     * @throws TypeDefinitionNotValidException
-     * @internal
-     */
-    public function registerInFormIfPossible()
-    {
-        foreach ($this->getElementsRecursively() as $renderable) {
-            if ($renderable instanceof GridContainerInterface) {
-                throw new TypeDefinitionNotValidException(
-                    sprintf('Grid containers ("%s") within grid containers ("%s") are not allowed.', $renderable->getIdentifier(), $this->getIdentifier()),
-                    1489412790
-                );
-            }
-        }
-        parent::registerInFormIfPossible();
-    }
-
-    /**
-     * Add a new row element at the end of the grid container
-     *
-     * @param FormElementInterface $formElement The form element to add
-     */
-    public function addElement(FormElementInterface $formElement)
-    {
-        if (!$formElement instanceof GridRowInterface) {
-            throw new TypeDefinitionNotValidException(
-                sprintf('The "implementationClassName" for element "%s" (type "%s") does not implement the GridRowInterface.', $formElement->getIdentifier(), $formElement->getType()),
-                1489486301
-            );
-        }
-        $this->addRenderable($formElement);
-    }
-
-    /**
-     * Create a form element with the given $identifier and attach it to this container.
-     *
-     * @param string $identifier Identifier of the new form element
-     * @param string $typeName type of the new form element
-     * @return FormElementInterface the newly created grid row
-     * @throws TypeDefinitionNotValidException
-     */
-    public function createElement(string $identifier, string $typeName): FormElementInterface
-    {
-        $element = parent::createElement($identifier, $typeName);
-
-        if (!$element instanceof GridRowInterface) {
-            throw new TypeDefinitionNotValidException(
-                sprintf('The "implementationClassName" for element "%s" (type "%s") does not implement the GridRowInterface.', $identifier, $typeName),
-                1489486302
-            );
-        }
-        return $element;
-    }
-}
diff --git a/typo3/sysext/form/Classes/Domain/Model/FormElements/GridContainerInterface.php b/typo3/sysext/form/Classes/Domain/Model/FormElements/GridContainerInterface.php
deleted file mode 100644 (file)
index ec72d33..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-declare(strict_types = 1);
-namespace TYPO3\CMS\Form\Domain\Model\FormElements;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Scope: frontend
- */
-interface GridContainerInterface extends FormElementInterface
-{
-}
index 6e909d0..ca992ea 100644 (file)
@@ -15,8 +15,6 @@ namespace TYPO3\CMS\Form\Domain\Model\FormElements;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Form\Domain\Exception\TypeDefinitionNotValidException;
-
 /**
  * A grid row, being part of a grid container
  *
@@ -29,44 +27,4 @@ use TYPO3\CMS\Form\Domain\Exception\TypeDefinitionNotValidException;
  */
 class GridRow extends Section implements GridRowInterface
 {
-
-    /**
-     * Add a new form element at the end of the grid row
-     *
-     * @param FormElementInterface $formElement The form element to add
-     * @throws TypeDefinitionNotValidException if FormElement is already added to a section
-     */
-    public function addElement(FormElementInterface $formElement)
-    {
-        if ($formElement instanceof GridContainerInterface) {
-            throw new TypeDefinitionNotValidException(
-                sprintf('Grid containers ("%s") within grid rows ("%s") are not allowed.', $formElement->getIdentifier(), $this->getIdentifier()),
-                1489413379
-            );
-        }
-
-        $this->addRenderable($formElement);
-    }
-
-    /**
-     * Create a form element with the given $identifier and attach it to this container.
-     *
-     * @param string $identifier Identifier of the new form element
-     * @param string $typeName type of the new form element
-     * @return GridRowInterface the newly created frid row
-     * @throws TypeDefinitionNotValidException
-     */
-    public function createElement(string $identifier, string $typeName): FormElementInterface
-    {
-        $element = parent::createElement($identifier, $typeName);
-
-        if ($element instanceof GridContainerInterface) {
-            throw new TypeDefinitionNotValidException(
-                sprintf('Grid containers ("%s") within grid rows ("%s") are not allowed.', $element->getIdentifier(), $this->getIdentifier()),
-                1489413538
-            );
-        }
-
-        return $element;
-    }
 }
index d30a115..48ceff5 100644 (file)
@@ -108,17 +108,12 @@ class DataStructureIdentifierHook
                 $formIsAccessible = false;
                 foreach ($formPersistenceManager->listForms() as $form) {
                     $invalidFormDefinition = $form['invalid'] ?? false;
-                    $hasDeprecatedFileExtension = $form['deprecatedFileExtension'] ?? false;
-
-                    if ($form['location'] === 'storage' && $hasDeprecatedFileExtension) {
-                        continue;
-                    }
 
                     if ($form['persistenceIdentifier'] === $identifier['ext-form-persistenceIdentifier']) {
                         $formIsAccessible = true;
                     }
 
-                    if ($invalidFormDefinition || $hasDeprecatedFileExtension) {
+                    if ($invalidFormDefinition) {
                         $dataStructure['sheets']['sDEF']['ROOT']['el']['settings.persistenceIdentifier']['TCEforms']['config']['items'][] = [
                             $form['name'] . ' (' . $form['persistenceIdentifier'] . ')',
                             $form['persistenceIdentifier'],
index 76f7717..92047ab 100644 (file)
@@ -125,8 +125,6 @@ class FormPersistenceManager implements FormPersistenceManagerInterface
     /**
      * Load the array formDefinition identified by $persistenceIdentifier, and return it.
      * Only files with the extension .yaml or .form.yaml are loaded.
-     * Form definition file names which not ends with ".form.yaml" has been
-     * deprecated in TYPO3 v9 and will not be supported in TYPO3 v10.0.
      *
      * @param string $persistenceIdentifier
      * @return array
@@ -279,11 +277,6 @@ class FormPersistenceManager implements FormPersistenceManagerInterface
         $forms = [];
 
         foreach ($this->retrieveYamlFilesFromStorageFolders() as $file) {
-            /** @var Folder $folder */
-            $folder = $file->getParentFolder();
-            // TODO: deprecated since TYPO3 v9, will be removed in TYPO3 v10.0
-            $formReadOnly = $folder->getCombinedIdentifier() === '1:/user_upload/';
-
             $form = $this->loadMetaData($file);
 
             if (!$this->looksLikeAFormDefinition($form)) {
@@ -296,7 +289,7 @@ class FormPersistenceManager implements FormPersistenceManagerInterface
                     'identifier' => $form['identifier'],
                     'name' => $form['label'] ?? $form['identifier'],
                     'persistenceIdentifier' => $persistenceIdentifier,
-                    'readOnly' => $formReadOnly,
+                    'readOnly' => false,
                     'removable' => true,
                     'location' => 'storage',
                     'duplicateIdentifier' => false,
@@ -304,19 +297,6 @@ class FormPersistenceManager implements FormPersistenceManagerInterface
                     'fileUid' => $form['fileUid'],
                 ];
                 $identifiers[$form['identifier']]++;
-            } else {
-                $forms[] = [
-                    'identifier' => $form['identifier'],
-                    'name' => $form['label'] ?? $form['identifier'],
-                    'persistenceIdentifier' => $persistenceIdentifier,
-                    'readOnly' => true,
-                    'removable' => false,
-                    'location' => 'storage',
-                    'duplicateIdentifier' => false,
-                    'invalid' => false,
-                    'deprecatedFileExtension' => true,
-                    'fileUid' => $form['fileUid'],
-                ];
             }
         }
 
@@ -337,19 +317,6 @@ class FormPersistenceManager implements FormPersistenceManagerInterface
                         'fileUid' => $form['fileUid'],
                     ];
                     $identifiers[$form['identifier']]++;
-                } else {
-                    $forms[] = [
-                        'identifier' => $form['identifier'],
-                        'name' => $form['label'] ?? $form['identifier'],
-                        'persistenceIdentifier' => $fullPath,
-                        'readOnly' => true,
-                        'removable' => false,
-                        'location' => 'extension',
-                        'duplicateIdentifier' => false,
-                        'invalid' => false,
-                        'deprecatedFileExtension' => true,
-                        'fileUid' => $form['fileUid'],
-                    ];
                 }
             }
         }
@@ -735,14 +702,7 @@ class FormPersistenceManager implements FormPersistenceManagerInterface
             $this->looksLikeAFormDefinition($formDefinition)
             && !$this->hasValidFileExtension($persistenceIdentifier)
         ) {
-            if (strpos($persistenceIdentifier, 'EXT:') === 0) {
-                trigger_error(
-                    'Form definition file name ("' . $persistenceIdentifier . '") which does not end with ".form.yaml" will not be supported in TYPO3 v10.0.',
-                    E_USER_DEPRECATED
-                );
-            } elseif (strpos($persistenceIdentifier, 'EXT:') !== 0) {
-                throw new PersistenceManagerException(sprintf('Form definition "%s" does not end with ".form.yaml".', $persistenceIdentifier), 1531160649);
-            }
+            throw new PersistenceManagerException(sprintf('Form definition "%s" does not end with ".form.yaml".', $persistenceIdentifier), 1531160649);
         }
     }
 
index cd08ae9..e45580f 100644 (file)
@@ -15,7 +15,6 @@ namespace TYPO3\CMS\Form\ViewHelpers;
  * The TYPO3 project - inspiring people to share!
  */
 
-use TYPO3\CMS\Form\Domain\Model\FormElements\GridContainerInterface;
 use TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
@@ -57,14 +56,9 @@ class GridColumnClassAutoConfigurationViewHelper extends AbstractViewHelper
         $formElement = $arguments['element'];
 
         $gridRowElement = $formElement->getParentRenderable();
-        $gridContainerElement = $gridRowElement->getParentRenderable();
-        $gridRowEChildElements = $gridRowElement->getElements();
+        $gridRowChildElements = $gridRowElement->getElements();
 
-        if ($gridContainerElement instanceof GridContainerInterface) {
-            $gridViewPortConfiguration = $gridContainerElement->getProperties()['gridColumnClassAutoConfiguration'];
-        } else {
-            $gridViewPortConfiguration = $gridRowElement->getProperties()['gridColumnClassAutoConfiguration'];
-        }
+        $gridViewPortConfiguration = $gridRowElement->getProperties()['gridColumnClassAutoConfiguration'];
 
         if (empty($gridViewPortConfiguration)) {
             return '';
@@ -73,7 +67,7 @@ class GridColumnClassAutoConfigurationViewHelper extends AbstractViewHelper
 
         $columnsToCalculate = [];
         $usedColumns = [];
-        foreach ($gridRowEChildElements as $childElement) {
+        foreach ($gridRowChildElements as $childElement) {
             if (empty($childElement->getProperties()['gridColumnClassAutoConfiguration'])) {
                 foreach ($gridViewPortConfiguration['viewPorts'] as $viewPortName => $configuration) {
                     $columnsToCalculate[$viewPortName]['elements']++;
index 60d4943..abaac17 100644 (file)
@@ -92,17 +92,6 @@ class RenderAllFormValuesViewHelper extends AbstractViewHelper
                 continue;
             }
 
-            if (
-                (isset($renderingOptions['_isHiddenFormElement']) && (bool)$renderingOptions['_isHiddenFormElement'] === true)
-                || (isset($renderingOptions['_isReadOnlyFormElement']) && (bool)$renderingOptions['_isReadOnlyFormElement'] === true)
-            ) {
-                trigger_error(
-                    'Using the properties "renderingOptions._isHiddenFormElement" and "renderingOptions._isReadOnlyFormElement" will be removed in TYPO3 v10.0. Use variants instead.',
-                    E_USER_DEPRECATED
-                );
-                continue;
-            }
-
             $value = $formRuntime[$element->getIdentifier()];
 
             $formValue = [
index 6c60dc1..c8c975b 100644 (file)
@@ -56,12 +56,6 @@ class TranslateElementErrorViewHelper extends AbstractViewHelper
         $element = $arguments['element'];
         $error = $arguments['error'];
 
-        if ($error instanceof Error) {
-            $code = $error->getCode();
-            $errorArguments = $error->getArguments();
-            $defaultValue = $error->__toString();
-        }
-
         /** @var FormRuntime $formRuntime */
         $formRuntime = $renderingContext
             ->getViewHelperVariableContainer()
@@ -69,9 +63,9 @@ class TranslateElementErrorViewHelper extends AbstractViewHelper
 
         return TranslationService::getInstance()->translateFormElementError(
             $element,
-            $code,
-            $errorArguments,
-            $defaultValue,
+            $error->getCode(),
+            $error->getArguments(),
+            $error->__toString(),
             $formRuntime
         );
     }
index ef9eebb..3e01edf 100644 (file)
@@ -4,7 +4,6 @@ TYPO3:
       persistenceManager:
         allowedFileMounts:
           10: 1:/form_definitions/
-          20: 1:/user_upload/
         allowSaveToExtensionPaths: false
         allowDeleteFromExtensionPaths: false
         #allowedExtensionPaths:
@@ -75,28 +74,6 @@ TYPO3:
               renderingOptions:
                 _isCompositeFormElement: true
 
-            GridContainer:
-              __inheritances:
-                10: 'TYPO3.CMS.Form.mixins.formElementMixins.FormElementMixin'
-              implementationClassName: 'TYPO3\CMS\Form\Domain\Model\FormElements\GridContainer'
-              renderingOptions:
-                _isCompositeFormElement: true
-                _isGridContainerFormElement: true
-              properties:
-                elementClassAttribute: 'container'
-                # overrules 'GridRow.properties.gridColumnClassAutoConfiguration'
-                gridColumnClassAutoConfiguration:
-                  gridSize: 12
-                  viewPorts:
-                    xs:
-                      classPattern: 'col-xs-{@numbersOfColumnsToUse}'
-                    sm:
-                      classPattern: 'col-sm-{@numbersOfColumnsToUse}'
-                    md:
-                      classPattern: 'col-md-{@numbersOfColumnsToUse}'
-                    lg:
-                      classPattern: 'col-lg-{@numbersOfColumnsToUse}'
-
             GridRow:
               __inheritances:
                 10: 'TYPO3.CMS.Form.mixins.formElementMixins.FormElementMixin'
index e004e2a..93d192f 100644 (file)
@@ -57,7 +57,6 @@ TYPO3:
               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'
@@ -346,18 +345,6 @@ TYPO3:
                   230: null
                   800: null
 
-            GridContainer:
-              formEditor:
-                label: 'formEditor.elements.GridContainer.label'
-                _isCompositeFormElement: true
-                _isGridContainerFormElement: true
-                iconIdentifier: 'form-gridcontainer'
-                editors:
-                  200:
-                    label: 'formEditor.elements.GridContainer.editor.label.label'
-                  230: null
-                  800: null
-
             GridRow:
               formEditor:
                 label: 'formEditor.elements.GridRow.label'
index 2334e81..23bf9f6 100644 (file)
@@ -7,7 +7,7 @@ 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
+write access to this storage. By default, the filemount ``form_definitions`` is
 used. It is possible to configure a different and/ or an additional
 filemount, which is then utilized for storing and reading forms.
 
index 6d8e940..7022023 100644 (file)
@@ -523,66 +523,6 @@ Full default configuration
               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
-              _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:
@@ -3856,7 +3796,6 @@ Full default configuration
             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
index d90d2f1..0432626 100644 (file)
@@ -452,7 +452,6 @@ formEditorPartials
              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
@@ -648,7 +647,6 @@ formElementGroups
       - :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>`
index 10f9d98..735d3d2 100644 (file)
@@ -77,8 +77,6 @@ Properties
                [...]
              Fieldset:
                [...]
-             GridContainer:
-               [...]
              GridRow:
                [...]
              Text:
@@ -775,7 +773,6 @@ Concrete configurations
     formElementTypes/Fieldset
     formElementTypes/FileUpload
     formElementTypes/Form
-    formElementTypes/GridContainer
     formElementTypes/GridRow
     formElementTypes/Hidden
     formElementTypes/Honeypot
diff --git a/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer.rst
deleted file mode 100644 (file)
index 377e488..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-.. 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/gridColumnClassAutoConf/gridSize.rst
-
-.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.properties.gridcolumnclassautoconfiguration.viewports:
-.. include:: GridContainer/properties/gridColumnClassAutoConf/viewPorts.rst
-
-.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.gridcontainer.properties.gridcolumnclassautoconfiguration.viewports.*.classpattern:
-.. include:: GridContainer/properties/gridColumnClassAutoConf/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/Config/proto/formElements/formElementTypes/GridContainer/formEditor.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor.rst
deleted file mode 100644 (file)
index 62ac5ea..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/_isCompositeFormElement.rst
deleted file mode 100644 (file)
index 280f7fc..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/_isGridContainerFormElement.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/_isGridContainerFormElement.rst
deleted file mode 100644 (file)
index fe5433b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/100.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/100.rst
deleted file mode 100644 (file)
index 6f32af1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/200.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/200.rst
deleted file mode 100644 (file)
index cf8d1e1..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/9999.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/editors/9999.rst
deleted file mode 100644 (file)
index 36a1d1a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/group.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/group.rst
deleted file mode 100644 (file)
index 381ba35..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/groupSorting.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/groupSorting.rst
deleted file mode 100644 (file)
index 1ce362b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/iconIdentifier.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/iconIdentifier.rst
deleted file mode 100644 (file)
index 0faf8bf..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/label.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/label.rst
deleted file mode 100644 (file)
index e2035bf..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/formEditor/predefinedDefaults.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/formEditor/predefinedDefaults.rst
deleted file mode 100644 (file)
index 79183dd..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/implementationClassName.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/implementationClassName.rst
deleted file mode 100644 (file)
index 719854c..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/properties/containerClassAttribute.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/containerClassAttribute.rst
deleted file mode 100644 (file)
index c6ab715..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/properties/elementClassAttribute.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/elementClassAttribute.rst
deleted file mode 100644 (file)
index c7c09cc..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/properties/elementErrorClassAttribute.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/elementErrorClassAttribute.rst
deleted file mode 100644 (file)
index c2c1cfc..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/gridSize.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/gridSize.rst
deleted file mode 100644 (file)
index 712b5b4..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/viewPorts.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/viewPorts.rst
deleted file mode 100644 (file)
index c39a9fa..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/viewPorts/classPattern.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/properties/gridColumnClassAutoConf/viewPorts/classPattern.rst
deleted file mode 100644 (file)
index 1c26ba5..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/renderingOptions/_isCompositeFormElement.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/renderingOptions/_isCompositeFormElement.rst
deleted file mode 100644 (file)
index e8721a9..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-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/Config/proto/formElements/formElementTypes/GridContainer/renderingOptions/_isGridContainerFormElement.rst b/typo3/sysext/form/Documentation/Config/proto/formElements/formElementTypes/GridContainer/renderingOptions/_isGridContainerFormElement.rst
deleted file mode 100644 (file)
index dc4b81e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-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
index 040977a..78b292f 100644 (file)
@@ -2,7 +2,7 @@ formEditor._isGridRowFormElement
 --------------------------------------
 
 :aspect:`Option path`
-      TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridContainer.formEditor._isGridRowFormElement
+      TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor._isGridRowFormElement
 
 :aspect:`Data type`
       bool
@@ -18,7 +18,7 @@ formEditor._isGridRowFormElement
          :linenos:
          :emphasize-lines: 3
 
-         GridContainer:
+         GridRow:
            formEditor:
              _isGridRowFormElement: true
 
index 4cbbfa0..057a911 100644 (file)
                                                                                                </span>
                                                                                        </f:else>
                                                                                        <f:else>
-                                                                                               <f:if condition="{form.deprecatedFileExtension}">
-                                                                                                       <f:then>
-                                                                                                               <span title="{f:translate(key: 'LLL:EXT:form/Resources/Private/Language/Database.xlf:formManager.deprecated_file_extension')} {form.identifier}" data-toggle="tooltip" data-placement="top">
-                                                                                                                       <core:icon identifier="overlay-missing" />
-                                                                                                               </span>
-                                                                                                       </f:then>
-                                                                                                       <f:else>
-                                                                                                               <span title="id={form.identifier}" data-toggle="tooltip" data-placement="right">
-                                                                                                                       <core:icon identifier="content-form" />
-                                                                                                               </span>
-                                                                                                       </f:else>
-                                                                                               </f:if>
+                                                                                               <span title="id={form.identifier}" data-toggle="tooltip" data-placement="right">
+                                                                                                       <core:icon identifier="content-form" />
+                                                                                               </span>
                                                                                        </f:else>
                                                                                </f:if>
                                                                        </td>
index f1afef1..04f4e05 100644 (file)
             <trans-unit id="formManager.duplicate_identifier" xml:space="preserve">
                 <source>Duplicate identifier!</source>
             </trans-unit>
-            <trans-unit id="formManager.deprecated_file_extension" xml:space="preserve">
-                <source>Unsupported file extension!</source>
-            </trans-unit>
 
             <trans-unit id="formManager.selectablePrototypesConfiguration.standard.label" xml:space="preserve">
                 <source>Standard</source>
                 <source>Fieldset name</source>
             </trans-unit>
 
-            <trans-unit id="formEditor.elements.GridContainer.label" xml:space="preserve">
-                <source>Grid: Container</source>
-            </trans-unit>
-            <trans-unit id="formEditor.elements.GridContainer.editor.label.label" xml:space="preserve">
-                <source>Container name (not visible within Frontend)</source>
-            </trans-unit>
-
             <trans-unit id="formEditor.elements.GridRow.label" xml:space="preserve">
                 <source>Grid: Row</source>
             </trans-unit>
index 72866d9..9159322 100644 (file)
@@ -820,18 +820,6 @@ define(['jquery',
        * @param object formElement
        * @return object|null
        */
-      function findEnclosingGridContainerFormElement(formElement) {
-        return _getRepository().findEnclosingGridContainerFormElement(
-          _getRepository().findFormElement(formElement)
-        );
-      };
-
-      /**
-       * @public
-       *
-       * @param object formElement
-       * @return object|null
-       */
       function findEnclosingGridRowFormElement(formElement) {
         return _getRepository().findEnclosingGridRowFormElement(
           _getRepository().findFormElement(formElement)
@@ -1093,7 +1081,6 @@ define(['jquery',
         getCurrentlySelectedPage: getCurrentlySelectedPage,
         getLastTopLevelElementOnCurrentPage: getLastTopLevelElementOnCurrentPage,
         findEnclosingCompositeFormElementWhichIsNotOnTopLevel: findEnclosingCompositeFormElementWhichIsNotOnTopLevel,
-        findEnclosingGridContainerFormElement: findEnclosingGridContainerFormElement,
         findEnclosingGridRowFormElement: findEnclosingGridRowFormElement,
         isRootFormElementSelected: isRootFormElementSelected,
         getLastFormElementWithinParentFormElement: getLastFormElementWithinParentFormElement,
index 2b122a1..b924c3f 100644 (file)
@@ -1088,7 +1088,7 @@ define(['jquery'], function($) {
         formElementTypeDefinition = repository().getFormEditorDefinition('formElements', formElement.get('type'));
         referenceFormElementTypeDefinition = repository().getFormEditorDefinition('formElements', referenceFormElement.get('type'));
 
-        // formElement != Page / SummaryPage && referenceFormElement == Page / Fieldset / GridContainer / GridRow
+        // formElement != Page / SummaryPage && referenceFormElement == Page / Fieldset / GridRow
         if (!formElementTypeDefinition['_isTopLevelFormElement'] && referenceFormElementTypeDefinition['_isCompositeFormElement']) {
           if ('array' !== $.type(referenceFormElement.get('renderables'))) {
             referenceFormElement.set('renderables', [], disablePublishersOnSet);
@@ -1107,11 +1107,11 @@ define(['jquery'], function($) {
           } else if (formElementTypeDefinition['_isTopLevelFormElement'] && !referenceFormElementTypeDefinition['_isTopLevelFormElement']) {
             // referenceFormElement = parent Page
             referenceFormElement = findEnclosingCompositeFormElementWhichIsOnTopLevel(referenceFormElement);
-            // formElement == Page / SummaryPage / Fieldset / GridContainer / GridRow
+            // formElement == Page / SummaryPage / Fieldset / GridRow
           } else if (formElementTypeDefinition['_isCompositeFormElement']) {
             enclosingCompositeFormElement = findEnclosingCompositeFormElementWhichIsNotOnTopLevel(referenceFormElement);
             if (enclosingCompositeFormElement) {
-              // referenceFormElement = parent Fieldset / GridContainer / GridRow
+              // referenceFormElement = parent Fieldset / GridRow
               referenceFormElement = enclosingCompositeFormElement;
             }
           }
@@ -1248,7 +1248,7 @@ define(['jquery'], function($) {
         if (position === 'inside') {
           // formElementToMove == Page / SummaryPage
           utility().assert(!formElementToMoveTypeDefinition['_isTopLevelFormElement'], 'This move is not allowed', 1476993731);
-          // referenceFormElement != Page / Fieldset / GridContainer / GridRow
+          // referenceFormElement != Page / Fieldset / GridRow
           utility().assert(referenceFormElementTypeDefinition['_isCompositeFormElement'], 'This move is not allowed', 1476993732);
 
           formElementToMove.set('__parentRenderable', referenceFormElement, disablePublishersOnSet);
@@ -1358,29 +1358,6 @@ define(['jquery'], function($) {
       /**
        * @param object formElement
        * @return object|null
-       * @throws 1489447996
-       */
-      function findEnclosingGridContainerFormElement(formElement) {
-        var formElementTypeDefinition;
-        utility().assert('object' === $.type(formElement), 'Invalid parameter "formElement"', 1489447996);
-
-        formElementTypeDefinition = repository().getFormEditorDefinition('formElements', formElement.get('type'));
-        while (!formElementTypeDefinition['_isGridContainerFormElement']) {
-          if (formElementTypeDefinition['_isTopLevelFormElement']) {
-            return null;
-          }
-          formElement = formElement.get('__parentRenderable');
-          formElementTypeDefinition = repository().getFormEditorDefinition('formElements', formElement.get('type'));
-        }
-        if (formElementTypeDefinition['_isTopLevelFormElement']) {
-          return null;
-        }
-        return formElement;
-      };
-
-      /**
-       * @param object formElement
-       * @return object|null
        * @throws 1490520271
        */
       function findEnclosingGridRowFormElement(formElement) {
@@ -1754,7 +1731,6 @@ define(['jquery'], function($) {
         findFormElementByIdentifierPath: findFormElementByIdentifierPath,
         findEnclosingCompositeFormElementWhichIsNotOnTopLevel: findEnclosingCompositeFormElementWhichIsNotOnTopLevel,
         findEnclosingCompositeFormElementWhichIsOnTopLevel: findEnclosingCompositeFormElementWhichIsOnTopLevel,
-        findEnclosingGridContainerFormElement: findEnclosingGridContainerFormElement,
         findEnclosingGridRowFormElement: findEnclosingGridRowFormElement,
         getIndexForEnclosingCompositeFormElementWhichIsOnTopLevelForFormElement: getIndexForEnclosingCompositeFormElementWhichIsOnTopLevelForFormElement,
         getNonCompositeNonToplevelFormElements: getNonCompositeNonToplevelFormElements,
index 36f0b90..74cad26 100644 (file)
@@ -66,7 +66,6 @@ define(['jquery',
         'FormElement-ContentElement': 'FormElement-ContentElement',
         'FormElement-DatePicker': 'FormElement-DatePicker',
         'FormElement-Fieldset': 'FormElement-Fieldset',
-        'FormElement-GridContainer': 'FormElement-GridContainer',
         'FormElement-GridRow': 'FormElement-GridRow',
         'FormElement-FileUpload': 'FormElement-FileUpload',
         'FormElement-Hidden': 'FormElement-Hidden',
@@ -269,7 +268,6 @@ define(['jquery',
           renderSimpleTemplateWithValidators(formElement, template);
           break;
         case 'Fieldset':
-        case 'GridContainer':
         case 'GridRow':
         case 'SummaryPage':
         case 'Page':
@@ -378,27 +376,6 @@ define(['jquery',
             targetFormElementIdentifierPath = getFormEditorApp().getCurrentlySelectedPage();
           }
 
-          formElementTypeDefinition = getFormElementDefinition(formElementIdentifierPath);
-          targetFormElementTypeDefinition = getFormElementDefinition(targetFormElementIdentifierPath);
-
-          if (
-            formElementTypeDefinition['_isGridContainerFormElement']
-            && (
-              getFormEditorApp().findEnclosingGridContainerFormElement(targetFormElementIdentifierPath)
-              || getFormEditorApp().findEnclosingGridRowFormElement(targetFormElementIdentifierPath)
-            )
-          ) {
-            return false;
-          }
-
-          if (
-            !formElementTypeDefinition['_isGridContainerFormElement']
-            && !formElementTypeDefinition['_isGridRowFormElement']
-            && targetFormElementTypeDefinition['_isGridContainerFormElement']
-          ) {
-            return false;
-          }
-
           return true;
         },
         start: function(e, o) {
@@ -704,59 +681,22 @@ define(['jquery',
         getViewModel().hideComponent($(getHelper().getDomElementDataIdentifierSelector('abstractViewToolbarNewElement'), template));
 
         $(getHelper().getDomElementDataIdentifierSelector('abstractViewToolbarNewElementSplitButtonAfter'), template).on('click', function(e) {
-          var disableElementTypes, onlyEnableElementTypes;
-
-          disableElementTypes = [];
-          onlyEnableElementTypes = [];
-          if (formElementTypeDefinition['_isGridRowFormElement']) {
-            if (getFormEditorApp().findEnclosingGridContainerFormElement(getCurrentlySelectedFormElement())) {
-              onlyEnableElementTypes = ['GridRow'];
-            } else if (getFormEditorApp().findEnclosingGridRowFormElement(getCurrentlySelectedFormElement().get('__parentRenderable'))) {
-              disableElementTypes = ['GridContainer'];
-            }
-          } else {
-            if (
-              !formElementTypeDefinition['_isGridContainerFormElement']
-              && (
-                getFormEditorApp().findEnclosingGridContainerFormElement(getCurrentlySelectedFormElement())
-                || getFormEditorApp().findEnclosingGridRowFormElement(getCurrentlySelectedFormElement())
-              )
-            ) {
-              disableElementTypes = ['GridContainer'];
-            }
-          }
-
           getPublisherSubscriber().publish('view/stage/abstract/elementToolbar/button/newElement/clicked', [
               'view/insertElements/perform/after',
               {
-                disableElementTypes: disableElementTypes,
-                onlyEnableElementTypes: onlyEnableElementTypes
+                disableElementTypes: [],
+                onlyEnableElementTypes: []
               }
             ]
           );
         });
-        $(getHelper().getDomElementDataIdentifierSelector('abstractViewToolbarNewElementSplitButtonInside'), template).on('click', function(e) {
-          var disableElementTypes, onlyEnableElementTypes;
-
-          disableElementTypes = [];
-          onlyEnableElementTypes = [];
-          if (formElementTypeDefinition['_isGridContainerFormElement']) {
-            onlyEnableElementTypes = ['GridRow'];
-          } else if (
-            formElementTypeDefinition['_isGridRowFormElement']
-            || (
-              getFormEditorApp().findEnclosingGridContainerFormElement(getCurrentlySelectedFormElement())
-              || getFormEditorApp().findEnclosingGridRowFormElement(getCurrentlySelectedFormElement())
-            )
-          ) {
-            disableElementTypes = ['GridContainer'];
-          }
 
+        $(getHelper().getDomElementDataIdentifierSelector('abstractViewToolbarNewElementSplitButtonInside'), template).on('click', function(e) {
           getPublisherSubscriber().publish('view/stage/abstract/elementToolbar/button/newElement/clicked', [
               'view/insertElements/perform/inside',
               {
-                disableElementTypes: disableElementTypes,
-                onlyEnableElementTypes: onlyEnableElementTypes
+                disableElementTypes: [],
+                onlyEnableElementTypes: []
               }
             ]
           );
@@ -765,18 +705,11 @@ define(['jquery',
         getViewModel().hideComponent($(getHelper().getDomElementDataIdentifierSelector('abstractViewToolbarNewElementSplitButton'), template));
 
         $(getHelper().getDomElementDataIdentifierSelector('abstractViewToolbarNewElement'), template).on('click', function(e) {
-          var disableElementTypes;
-
-          disableElementTypes = [];
-          if (getFormEditorApp().findEnclosingGridRowFormElement(formElement)) {
-            disableElementTypes = ['GridContainer'];
-          }
-
           getPublisherSubscriber().publish(
             'view/stage/abstract/elementToolbar/button/newElement/clicked', [
               'view/insertElements/perform/after',
               {
-                disableElementTypes: disableElementTypes
+                disableElementTypes: []
               }
             ]
           );
@@ -890,7 +823,6 @@ define(['jquery',
         if (
           !getFormElementDefinition(formElement, '_isTopLevelFormElement')
           && getFormElementDefinition(formElement, '_isCompositeFormElement')
-          && !getFormElementDefinition(formElement, '_isGridContainerFormElement')
         ) {
           $(this).tooltip({
             title: 'identifier: ' + formElement.get('identifier') + ' (type: ' + formElement.get('type') + ')',
index c72be76..ab68450 100644 (file)
@@ -336,24 +336,6 @@ define(['jquery',
             return false;
           }
 
-          if (
-            formElementTypeDefinition['_isGridContainerFormElement']
-            && (
-              getFormEditorApp().findEnclosingGridContainerFormElement(targetFormElementIdentifierPath)
-              || getFormEditorApp().findEnclosingGridRowFormElement(targetFormElementIdentifierPath)
-            )
-          ) {
-            return false;
-          }
-
-          if (
-            !formElementTypeDefinition['_isGridContainerFormElement']
-            && !formElementTypeDefinition['_isGridRowFormElement']
-            && targetFormElementTypeDefinition['_isGridContainerFormElement']
-          ) {
-            return false;
-          }
-
           return true;
         },
         stop: function(e, o) {
diff --git a/typo3/sysext/form/Tests/Unit/Domain/FormElements/GridContainerTest.php b/typo3/sysext/form/Tests/Unit/Domain/FormElements/GridContainerTest.php
deleted file mode 100644 (file)
index a1d0c01..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-declare(strict_types = 1);
-namespace TYPO3\CMS\Form\Tests\Unit\Domain\FormElements;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Form\Domain\Exception\TypeDefinitionNotValidException;
-use TYPO3\CMS\Form\Domain\Model\FormElements\FormElementInterface;
-use TYPO3\CMS\Form\Domain\Model\FormElements\GridContainer;
-use TYPO3\CMS\Form\Domain\Model\FormElements\GridContainerInterface;
-use TYPO3\CMS\Form\Domain\Model\FormElements\GridRowInterface;
-use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
-
-/**
- * Test case
- */
-class GridContainerTest extends UnitTestCase
-{
-
-    /**
-     * @test
-     */
-    public function registerInFormIfPossibleThrowsTypeDefinitionNotValidExceptionIfAChildIsGridContainerInterface()
-    {
-        /** @var \PHPUnit_Framework_MockObject_MockObject|GridContainerInterface $gridContainerInterfaceMock */
-        $gridContainerInterfaceMock = $this->createMock(GridContainerInterface::class);
-        $gridContainerInterfaceMock
-            ->expects($this->any())
-            ->method('getIdentifier')
-            ->willReturn('bar');
-
-        /** @var \PHPUnit_Framework_MockObject_MockObject|GridContainer $gridContainerMock */
-        $gridContainerMock = $this->getMockBuilder(GridContainer::class)
-            ->setMethods(['getIdentifier', 'getElementsRecursively'])
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $gridContainerMock
-            ->expects($this->any())
-            ->method('getIdentifier')
-            ->willReturn('foo');
-
-        $gridContainerMock
-            ->expects($this->any())
-            ->method('getElementsRecursively')
-            ->willReturn([$gridContainerInterfaceMock]);
-
-        $this->assertSame([$gridContainerInterfaceMock], $gridContainerMock->getElementsRecursively());
-        $this->assertTrue($gridContainerMock->getElementsRecursively()[0] instanceof GridContainerInterface);
-
-        $this->expectException(TypeDefinitionNotValidException::class);
-        $this->expectExceptionCode(1489412790);
-
-        $gridContainerMock->registerInFormIfPossible();
-    }
-
-    /**
-     * @test
-     */
-    public function addElementThrowsTypeDefinitionNotValidExceptionIfNotInstanceOfGridRowInterface()
-    {
-        /** @var \PHPUnit_Framework_MockObject_MockObject|FormElementInterface $element */
-        $element = $this->createMock(FormElementInterface::class);
-
-        /** @var \PHPUnit_Framework_MockObject_MockObject|GridContainer $gridContainer */
-        $gridContainer = $this->getMockBuilder(GridContainer::class)
-            ->setMethods(['getElementsRecursively'])
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $element
-            ->expects($this->any())
-            ->method('getIdentifier')
-            ->willReturn('foobar');
-
-        $element
-            ->expects($this->any())
-            ->method('getType')
-            ->willReturn('FormElementOrSomethingLikeThat');
-
-        $gridContainer
-            ->expects($this->any())
-            ->method('getElementsRecursively')
-            ->willReturn($element);
-
-        $this->expectException(TypeDefinitionNotValidException::class);
-        $this->expectExceptionCode(1489486301);
-
-        $gridContainer->addElement($element);
-    }
-
-    /**
-     * @test
-     */
-    public function addElementExpectedCallAddRenderableIfInstanceOfGridRowInterface()
-    {
-        /** @var \PHPUnit_Framework_MockObject_MockObject|GridRowInterface $element */
-        $element = $this->createMock(GridRowInterface::class);
-
-        /** @var GridContainer|\PHPUnit_Framework_MockObject_MockObject $gridContainer */
-        $gridContainer = $this->getAccessibleMockForAbstractClass(
-            GridContainer::class,
-            [],
-            '',
-            [],
-            true,
-            true,
-            ['addRenderable']
-        );
-
-        $gridContainer->expects($this->once())->method('addRenderable');
-        $gridContainer->addElement($element);
-    }
-}
index 77ca12d..90fe649 100644 (file)
@@ -35,7 +35,6 @@ class LanguagePackCommand extends Command
      */
     protected function configure()
     {
-        $this->setAliases(['lang:language:update']);
         $this->setDescription('Update the language files of all activated extensions')
             ->addArgument(
                 'locales',
@@ -55,12 +54,6 @@ class LanguagePackCommand extends Command
      */
     protected function execute(InputInterface $input, OutputInterface $output)
     {
-        if (substr_count($input->getArgument('command'), ':') === 2) {
-            $message = 'bin/typo3 lang:language:update is deprecated, use bin/typo3 language:update instead';
-            $output->writeln('<error>' . $message . '</error>');
-            trigger_error($message, E_USER_DEPRECATED);
-        }
-
         $languagePackService = GeneralUtility::makeInstance(LanguagePackService::class);
 
         try {