[BUGFIX] FormEngine: Pass correct selected node count to ExtJS Tree 56/44356/2
authorMorton Jonuschat <m.jonuschat@mojocode.de>
Thu, 29 Oct 2015 14:08:14 +0000 (15:08 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Thu, 29 Oct 2015 15:53:31 +0000 (16:53 +0100)
The selected node count for the ExtJS Tree wasn't calculated using the
raw database field value instead of the parsed tree configuration. In
case of empty database values this resulted in a wrong count of selected
nodes, disabling the selection of nodes in the case of maxitems=1 in the
tree configuration.

Resolves: #70306
Resolves: #70630
Related: #69836
Releases: master
Change-Id: Ib04207c60b7a3473eaac619b6f2f4091aa5b938f
Reviewed-on: https://review.typo3.org/44356
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php

index 2708c50..9594043 100644 (file)
@@ -103,8 +103,6 @@ class SelectTreeElement extends AbstractFormElement
         $parameterArray = $this->data['parameterArray'];
         $config = $parameterArray['fieldConf']['config'];
 
-        $selectedNodes = $this->data['databaseRow'][$this->data['fieldName']];
-
         $disabled = !empty($config['readOnly']) ? 'true' : 'false';
         $maxItems = $config['maxitems'] ? (int)$config['maxitems'] : 99999;
         $exclusiveKeys = !empty($config['exclusiveKeys']) ? $config['exclusiveKeys'] : '';
@@ -153,7 +151,7 @@ class SelectTreeElement extends AbstractFormElement
         $javascript[] = '        stateEvents: [],';
         $javascript[] = '        showHeader: ' . (int)$showHeader . ',';
         $javascript[] = '        onChange: ' . GeneralUtility::quoteJSvalue($onChange) . ',';
-        $javascript[] = '        countSelectedNodes: ' . count($selectedNodes) . ',';
+        $javascript[] = '        countSelectedNodes: ' . count($config['treeData']['selectedNodes']) . ',';
         $javascript[] = '        width: ' . $width . ',';
         $javascript[] = '        rendering: false,';
         $javascript[] = '        listeners: {';