[!!!][TASK] Remove dependency to FormEngine::insertDefStyle 63/35463/6
authorFrank Nägler <typo3@naegler.net>
Sun, 14 Dec 2014 22:05:40 +0000 (23:05 +0100)
committerAlexander Opitz <opitz.alexander@googlemail.com>
Mon, 15 Dec 2014 00:16:21 +0000 (01:16 +0100)
This patch deprecate FormEngine::insertDefStyle and remove
the dependency from form element classes.

Resolves: #63850
Releases: master
Change-Id: I24f00599068d095a7c810f13e03af3eff7dff939
Reviewed-on: http://review.typo3.org/35463
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Alexander Opitz <opitz.alexander@googlemail.com>
Tested-by: Alexander Opitz <opitz.alexander@googlemail.com>
typo3/sysext/backend/Classes/Form/Element/AbstractFormElement.php
typo3/sysext/backend/Classes/Form/Element/CheckboxElement.php
typo3/sysext/backend/Classes/Form/Element/InlineElement.php
typo3/sysext/backend/Classes/Form/Element/RadioElement.php
typo3/sysext/backend/Classes/Form/Element/SelectElement.php
typo3/sysext/backend/Classes/Form/FormEngine.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-63850-FormEngine-insertDefStyle.rst [new file with mode: 0644]

index bf89b63..67650f1 100644 (file)
@@ -26,6 +26,11 @@ use TYPO3\CMS\Lang\LanguageService;
 abstract class AbstractFormElement {
 
        /**
+        * @var string A CSS class name prefix for all element types, single elements add their type to this string
+        */
+       protected $cssClassTypeElementPrefix = 't3-formengine-field-';
+
+       /**
         * @var FormEngine
         */
        protected $formEngine;
index 3acebb1..517686f 100644 (file)
@@ -115,7 +115,7 @@ class CheckboxElement extends AbstractFormElement {
                        . '<input '
                        . 'type="checkbox" '
                        . 'value="1" '
-                       . $this->formEngine->insertDefStyle('check') . ' '
+                       . 'class="' . $this->cssClassTypeElementPrefix . 'check" '
                        . 'name="' . $checkboxName . '" '
                        . $checkboxParameters . ' '
                        . $additionalInformation['onFocus'] . ' '
index 96f21e7..352e2a0 100644 (file)
@@ -843,7 +843,7 @@ class InlineElement {
                        $size = $conf['autoSizeMax'] ? MathUtility::forceIntegerInRange(count($selItems) + 1, MathUtility::forceIntegerInRange($size, 1), $conf['autoSizeMax']) : $size;
                        $onChange = 'return inline.importNewRecord(\'' . $this->inlineNames['object'] . self::Structure_Separator . $conf['foreign_table'] . '\')';
                        $item = '
-                               <select id="' . $this->inlineNames['object'] . self::Structure_Separator . $conf['foreign_table'] . '_selector" ' . $this->fObj->insertDefStyle('select') . ($size ? ' size="' . $size . '"' : '') . ' onchange="' . htmlspecialchars($onChange) . '"' . $PA['onFocus'] . $selector_itemListStyle . ($conf['foreign_unique'] ? ' isunique="isunique"' : '') . '>
+                               <select id="' . $this->inlineNames['object'] . self::Structure_Separator . $conf['foreign_table'] . '_selector" class="t3-formengine-field-select"' . ($size ? ' size="' . $size . '"' : '') . ' onchange="' . htmlspecialchars($onChange) . '"' . $PA['onFocus'] . $selector_itemListStyle . ($conf['foreign_unique'] ? ' isunique="isunique"' : '') . '>
                                        ' . implode('
                                        ', $opt) . '
                                </select>';
index c1a719b..39a22a0 100644 (file)
@@ -58,7 +58,7 @@ class RadioElement extends AbstractFormElement {
                                . '<label for="' . $radioId . '">'
                                . '<input '
                                . 'type="radio" '
-                               . $this->formEngine->insertDefStyle('radio') . ' '
+                               . 'class="' . $this->cssClassTypeElementPrefix . 'radio" '
                                . 'name="' . htmlspecialchars($additionalInformation['itemFormElName']) . '" '
                                . 'id="' . $radioId . '" '
                                . 'value="' . htmlspecialchars($selectedItem[1]) . '" '
index eccc9fe..8bf29a5 100644 (file)
@@ -215,7 +215,7 @@ class SelectElement extends AbstractFormElement {
                        $itemsToSelect = '
                                <select data-relatedfieldname="' . htmlspecialchars($PA['itemFormElName']) . '" data-exclusivevalues="'
                                . htmlspecialchars($config['exclusiveKeys']) . '" id="' . $multiSelectId . '" name="' . $PA['itemFormElName'] . '_sel" '
-                               . $this->formEngine->insertDefStyle('select', 'tceforms-multiselect tceforms-itemstoselect t3-form-select-itemstoselect')
+                               . ' class="' . $this->cssClassTypeElementPrefix . 'select tceforms-multiselect tceforms-itemstoselect t3-form-select-itemstoselect" '
                                . ($size ? ' size="' . $size . '"' : '') . ' onchange="' . htmlspecialchars($sOnChange) . '"'
                                . $PA['onFocus'] . $selector_itemListStyle . '>
                                        ' . implode('
@@ -505,7 +505,7 @@ class SelectElement extends AbstractFormElement {
                if ($config['iconsInOptionTags']) {
                        $classesForSelectTag[] = 'icon-select';
                }
-               $item .= '<select' . $selectedStyle . ' id="' . str_replace('.', '', uniqid('tceforms-select-', TRUE)) . '" name="' . $PA['itemFormElName'] . '" ' . $this->formEngine->insertDefStyle('select', implode(' ', $classesForSelectTag)) . ($size ? ' size="' . $size . '"' : '') . ' onchange="' . htmlspecialchars($sOnChange) . '"' . $PA['onFocus'] . $disabled . '>';
+               $item .= '<select' . $selectedStyle . ' id="' . str_replace('.', '', uniqid('tceforms-select-', TRUE)) . '" name="' . $PA['itemFormElName'] . '" class="' . $this->cssClassTypeElementPrefix . 'select ' . implode(' ', $classesForSelectTag) . '"' . ($size ? ' size="' . $size . '"' : '') . ' onchange="' . htmlspecialchars($sOnChange) . '"' . $PA['onFocus'] . $disabled . '>';
                $item .= implode('', $opt);
                $item .= '</select>';
                // Create icon table:
@@ -625,7 +625,7 @@ class SelectElement extends AbstractFormElement {
                                        $tRows[] = '
                                                <tr id="' . $rowId . '" class="' . ($sM ? 'c-selectedItem' : 'c-unselectedItem')
                                                . '" onclick="' . htmlspecialchars($onClick) . '" style="cursor: pointer;">
-                                                       <td class="c-checkbox"><input type="checkbox" ' . $this->formEngine->insertDefStyle('check')
+                                                       <td class="c-checkbox"><input type="checkbox" class="' . $this->cssClassTypeElementPrefix . 'check"'
                                                . ' name="' . htmlspecialchars(($PA['itemFormElName'] . '[' . $c . ']'))
                                                . '" value="' . htmlspecialchars($p[1]) . '"' . $sM . ' onclick="' . htmlspecialchars($sOnChange)
                                                . '"' . $PA['onFocus'] . ' /></td>
@@ -642,7 +642,7 @@ class SelectElement extends AbstractFormElement {
                                // Compile <checkboxes> tag:
                                array_unshift($tRows, '
                                                <tr class="c-invalidItem">
-                                                       <td class="c-checkbox"><input type="checkbox" ' . $this->formEngine->insertDefStyle('check')
+                                                       <td class="c-checkbox"><input type="checkbox" class="' . $this->cssClassTypeElementPrefix . 'check"'
                                        . ' name="' . htmlspecialchars(($PA['itemFormElName'] . '[' . $c . ']'))
                                        . '" value="' . htmlspecialchars($theNoMatchValue) . '" checked="checked" onclick="' . htmlspecialchars($sOnChange) . '"'
                                        . $PA['onFocus'] . $disabled . ' /></td>
@@ -748,7 +748,7 @@ class SelectElement extends AbstractFormElement {
                        ? MathUtility::forceIntegerInRange(count($selItems) + 1, MathUtility::forceIntegerInRange($size, 1), $config['autoSizeMax'])
                        : $size;
                $selectBox = '<select id="' . str_replace('.', '', uniqid($cssPrefix, TRUE)) . '" name="' . $PA['itemFormElName'] . '[]" '
-                       . $this->formEngine->insertDefStyle('select', $cssPrefix) . ($size ? ' size="' . $size . '" ' : '')
+                       . 'class="' . $this->cssClassTypeElementPrefix . 'select ' . $cssPrefix . '"' . ($size ? ' size="' . $size . '" ' : '')
                        . ' multiple="multiple" onchange="' . htmlspecialchars($sOnChange) . '"' . $PA['onFocus']
                        . ' ' . $selector_itemListStyle . $disabled . '>
                                                ' . implode('
index 75183db..65a06f3 100644 (file)
@@ -40,6 +40,11 @@ use TYPO3\CMS\Lang\LanguageService;
 class FormEngine {
 
        /**
+        * @var string A CSS class name prefix for all element types, single elements add their type to this string
+        */
+       protected $cssClassTypeElementPrefix = 't3-formengine-field-';
+
+       /**
         * @var array
         */
        public $palFieldArr = array();
@@ -2270,7 +2275,7 @@ class FormEngine {
                if (!$selector) {
                        $isMultiple = $params['maxitems'] != 1 && $params['size'] != 1;
                        $selector = '<select id="' . str_replace('.', '', uniqid('tceforms-multiselect-', TRUE)) . '" '
-                               . ($params['noList'] ? 'style="display: none"' : 'size="' . $sSize . '" ' . $this->insertDefStyle('group', 'tceforms-multiselect'))
+                               . ($params['noList'] ? 'style="display: none"' : 'size="' . $sSize . '" class="' . $this->cssClassTypeElementPrefix . 'group tceforms-multiselect"')
                                . ($isMultiple ? ' multiple="multiple"' : '')
                                . ' name="' . $fName . '_list" ' . $onFocus . $params['style'] . $disabled . '>' . implode('', $opt)
                                . '</select>';
@@ -3045,8 +3050,10 @@ class FormEngine {
         * @param string $type Field type (eg. "check", "radio", "select")
         * @param string $additionalClass Additional class(es) to be added
         * @return string CSS attributes
+        * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
         */
        public function insertDefStyle($type, $additionalClass = '') {
+               GeneralUtility::logDeprecatedFunction();
                $cssClasses = trim('t3-formengine-field-' . $type . ' ' . $additionalClass);
                return 'class="' . htmlspecialchars($cssClasses) . '"';
        }
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-63850-FormEngine-insertDefStyle.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-63850-FormEngine-insertDefStyle.rst
new file mode 100644 (file)
index 0000000..75b8fdb
--- /dev/null
@@ -0,0 +1,24 @@
+==========================================================
+Deprecation: #63850 - Deprecate FormEngine::insertDefStyle
+==========================================================
+
+Description
+===========
+
+FormEngine::insertDefStyle is deprecated.
+
+
+Impact
+======
+
+Using ``insertDefStyle`` of FormEngine class will trigger a deprecation log message.
+
+Affected installations
+======================
+
+Instances which use custom form elements, which make use of ``FormEngine::insertDefStyle``.
+
+Migration
+=========
+
+All form fields should extend the ``AbstractFormElement`` class and make use of the new property ``AbstractFormElement::$cssClassTypeElementPrefix``