[BUGFIX] backend formfields: Make boolean fields UI working in Edge/IE 21/54721/2
authorStefan Neufeind <typo3.neufeind@speedpartner.de>
Wed, 22 Nov 2017 08:40:37 +0000 (09:40 +0100)
committerJigal van Hemert <jigal.van.hemert@typo3.org>
Wed, 22 Nov 2017 19:45:35 +0000 (20:45 +0100)
Add for/id so clicking the label toggles the checkbox.

Resolves: #83040
Releases: master, 8.7, 7.6
Change-Id: I3dc08706556e1a95ddc8d96cae705ee968c48326
Reviewed-on: https://review.typo3.org/54721
Tested-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Tested-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
typo3/sysext/backend/Classes/Form/Container/SingleFieldContainer.php

index c264f86..518a39f 100644 (file)
@@ -216,7 +216,7 @@ class SingleFieldContainer extends AbstractContainer
         ];
 
         // NULL value and placeholder handling
-        $nullControlNameAttribute = ' name="' . htmlspecialchars('control[active][' . $table . '][' . $row['uid'] . '][' . $fieldName . ']') . '"';
+        $nullControlNameEscaped = htmlspecialchars('control[active][' . $table . '][' . $row['uid'] . '][' . $fieldName . ']');
         if (!empty($parameterArray['fieldConf']['config']['eval']) && GeneralUtility::inList($parameterArray['fieldConf']['config']['eval'], 'null')
             && (empty($parameterArray['fieldConf']['config']['mode']) || $parameterArray['fieldConf']['config']['mode'] !== 'useOrOverridePlaceholder')
         ) {
@@ -245,9 +245,9 @@ class SingleFieldContainer extends AbstractContainer
             $nullValueWrap[] = '<div class="' . implode(' ', $fieldItemClasses) . '">';
             $nullValueWrap[] =    '<div class="t3-form-field-disable"></div>';
             $nullValueWrap[] =    '<div class="checkbox t3-form-field-eval-null-checkbox">';
-            $nullValueWrap[] =        '<label>';
-            $nullValueWrap[] =            '<input type="hidden"' . $nullControlNameAttribute . ' value="0" />';
-            $nullValueWrap[] =            '<input type="checkbox"' . $nullControlNameAttribute . ' value="1" onchange="' . $onChange . '"' . $checked . ' /> &nbsp;';
+            $nullValueWrap[] =        '<label for="' . $nullControlNameEscaped . '">';
+            $nullValueWrap[] =            '<input type="hidden"name="' . $nullControlNameEscaped . '" value="0" />';
+            $nullValueWrap[] =            '<input type="checkbox"name="' . $nullControlNameEscaped . '" id="' . $nullControlNameEscaped . '" value="1" onchange="' . $onChange . '"' . $checked . ' /> &nbsp;';
             $nullValueWrap[] =        '</label>';
             $nullValueWrap[] =    '</div>';
             $nullValueWrap[] =    $html;
@@ -289,9 +289,9 @@ class SingleFieldContainer extends AbstractContainer
             $placeholderWrap[] = '<div class="' . implode(' ', $fieldItemClasses) . '">';
             $placeholderWrap[] =    '<div class="t3-form-field-disable"></div>';
             $placeholderWrap[] =    '<div class="checkbox">';
-            $placeholderWrap[] =        '<label>';
-            $placeholderWrap[] =            '<input type="hidden"' . $nullControlNameAttribute . ' value="0" />';
-            $placeholderWrap[] =            '<input type="checkbox"' . $nullControlNameAttribute . ' value="1" id="tce-forms-textfield-use-override-' . $fieldName . '-' . $row['uid'] . '" onchange="' . htmlspecialchars($onChange) . '"' . $checked . ' />';
+            $placeholderWrap[] =        '<label for="' . $nullControlNameEscaped . '">';
+            $placeholderWrap[] =            '<input type="hidden"name="' . $nullControlNameEscaped . '" value="0" />';
+            $placeholderWrap[] =            '<input type="checkbox"name="' . $nullControlNameEscaped . '" id="' . $nullControlNameEscaped . '" value="1" id="tce-forms-textfield-use-override-' . $fieldName . '-' . $row['uid'] . '" onchange="' . htmlspecialchars($onChange) . '"' . $checked . ' />';
             $placeholderWrap[] =            sprintf($languageService->sL('LLL:EXT:lang/locallang_core.xlf:labels.placeholder.override'), BackendUtility::getRecordTitlePrep($placeholder, 20));
             $placeholderWrap[] =        '</label>';
             $placeholderWrap[] =    '</div>';