[BUGFIX] TCA:Suggest wizard doesn't work for select with maxitems=1 13/20513/2
authorStanislas Rolland <typo3@sjbr.ca>
Mon, 25 Feb 2013 07:39:07 +0000 (02:39 -0500)
committerStanislas Rolland <typo3@sjbr.ca>
Wed, 8 May 2013 13:00:06 +0000 (15:00 +0200)
For select fields with maxitems = 1, the suggest wizard does
display, but you cannot select an item and transfer it to the
selected list. Once you change it to maxitems > 1 everything
works as expected.

Solution: Avoid maxitems = 1 (unique) select fields being rendered as
multiple selector boxes and add JS that is required whenever a suggest
wizard is rendered.

Fixes: #23789
Releases: 4.5, 4.7, 6.0, 6.1, 6.2
Change-Id: I1847c9dbf2fe3b4072743857bb84b8e6b112598b
Reviewed-on: https://review.typo3.org/4270
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
Reviewed-on: https://review.typo3.org/20513
Reviewed-by: Stanislas Rolland
Tested-by: Stanislas Rolland
typo3/sysext/backend/Classes/Form/FormEngine.php

index f0307df..ed40b39 100644 (file)
@@ -3656,7 +3656,7 @@ function ' . $evalData . '(value) {
                // Create selector box of the options
                $sSize = $params['autoSizeMax'] ? \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($itemArrayC + 1, \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($params['size'], 1), $params['autoSizeMax']) : $params['size'];
                if (!$selector) {
-                       $isMultiple = $params['size'] != 1;
+                       $isMultiple = $params['maxitems'] != 1 && $params['size'] != 1;
                        $selector = '<select id="' . uniqid('tceforms-multiselect-') . '" ' . ($params['noList'] ? 'style="display: none"' : 'size="' . $sSize . '"' . $this->insertDefStyle('group', 'tceforms-multiselect')) . ($isMultiple ? ' multiple="multiple"' : '') . ' name="' . $fName . '_list" ' . $onFocus . $params['style'] . $disabled . '>' . implode('', $opt) . '</select>';
                }
                $icons = array(
@@ -5750,8 +5750,8 @@ function ' . $evalData . '(value) {
        public function printNeededJSFunctions() {
                // JS evaluation:
                $out = $this->JSbottom($this->formName);
-               // Integrate JS functions for the element browser if such fields or IRRE fields were processed:
-               if ($this->printNeededJS['dbFileIcons'] || $this->inline->inlineCount) {
+               // Integrate JS functions for the element browser if such fields or IRRE fields or suggest wizard were processed:
+               if ($this->printNeededJS['dbFileIcons'] > 0 || $this->inline->inlineCount > 0 || $this->suggest->suggestCount > 0) {
                        $out .= '
 
 
@@ -5762,7 +5762,7 @@ function ' . $evalData . '(value) {
 
                        <script type="text/javascript">
                                /*<![CDATA[*/
-                       ' . $this->dbFileCon(('document.' . $this->formName)) . '
+                       ' . $this->dbFileCon('document.' . $this->formName) . '
                                /*]]>*/
                        </script>';
                }
@@ -6400,4 +6400,4 @@ function ' . $evalData . '(value) {
 }
 
 
-?>
\ No newline at end of file
+?>