[BUGFIX] Allow maxitem=1 in TCA treeSelect again 40/47940/2
authorAlexander Bigga <alexander.bigga@slub-dresden.de>
Wed, 27 Apr 2016 13:50:31 +0000 (15:50 +0200)
committerFrans Saris <franssaris@gmail.com>
Fri, 29 Apr 2016 12:13:47 +0000 (14:13 +0200)
Introduced with ec7b229 #75519, it was not possible to set maxitem=1 to
TCA treeSelect. This occures e.g. on setting the parent of a
sys_category.

The reason is the "selected" array which gets initialized with all
selected items. If there is no item selected, it is initialized with an
empty value and "selected.lenght" is 1 but should be 0. Selecting a new
value is impossible now.

The proposed path checks if items are selected or not on
initialization.

Change-Id: I0c8d21ad753dccb2d993febde404afc83a39b9b3
Resolves: #75947
Releases: master, 7.6, 6.2
Reviewed-on: https://review.typo3.org/47940
Reviewed-by: Markus Sommer <markussom@posteo.de>
Tested-by: Markus Sommer <markussom@posteo.de>
Tested-by: Philipp Wrann <philippwrann@gmail.com>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Frans Saris <franssaris@gmail.com>
Tested-by: Frans Saris <franssaris@gmail.com>
typo3/sysext/backend/Resources/Public/JavaScript/tree.js

index a139e69..9dc34a5 100644 (file)
@@ -197,7 +197,7 @@ TYPO3.Components.Tree.EmptySelectionModel = new Ext.tree.DefaultSelectionModel({
 TYPO3.Components.Tree.TcaCheckChangeHandler = function(checkedNode, checked) {
        var exclusiveKeys = this.tcaExclusiveKeys.split(','),
                uid = '' + checkedNode.attributes.uid,
-               selected = Ext.fly('treeinput' + this.id).dom.value.split(',');
+               selected = Ext.fly('treeinput' + this.id).dom.value.length ? Ext.fly('treeinput' + this.id).dom.value.split(',') : [];
 
        this.suspendEvents();