When you have a select field of rendertype selectTree it looses the
selected values of the not rendered checkboxes.
This changes makes sure that also the not rendered values are kept.
Change-Id: I8649e83c56a0265a7de069ef9654ed13b90b3239
Resolves: #75519
Releases: master, 7.6, 6.2
Reviewed-on: https://review.typo3.org/47812
Tested-by: Philipp Gampe <philipp.gampe@typo3.org>
Reviewed-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Tested-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Reviewed-by: Susanne Moog <typo3@susannemoog.de>
Tested-by: Susanne Moog <typo3@susannemoog.de>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Frans Saris <franssaris@gmail.com>
Tested-by: Frans Saris <franssaris@gmail.com>
+ // prepare hidden input field (make sure only comma separated uids are present)
+ var selected = Ext.fly('treeinput' + this.id).dom.value.split(',');
+ for (var i = 0; i < selected.length; i++) {
+ var value = selected[i].split('|');
+ selected[i] = value[0];
+ }
+ Ext.fly('treeinput' + this.id).dom.value = selected.join(',');
+
Ext.apply(this, {
tbar: this.initialConfig.showHeader ? TYPO3.Components.Tree.Toolbar([], this) : null
});
Ext.apply(this, {
tbar: this.initialConfig.showHeader ? TYPO3.Components.Tree.Toolbar([], this) : null
});
TYPO3.Components.Tree.TcaCheckChangeHandler = function(checkedNode, checked) {
var exclusiveKeys = this.tcaExclusiveKeys.split(','),
TYPO3.Components.Tree.TcaCheckChangeHandler = function(checkedNode, checked) {
var exclusiveKeys = this.tcaExclusiveKeys.split(','),
- uid = '' + checkedNode.attributes.uid;
+ uid = '' + checkedNode.attributes.uid,
+ selected = Ext.fly('treeinput' + this.id).dom.value.split(',');
node.ui.toggleCheck(checkedNode.attributes.checked);
})
}
node.ui.toggleCheck(checkedNode.attributes.checked);
})
}
this.root.cascade(function(node) {
if (node.ui.isChecked()) {
this.root.cascade(function(node) {
if (node.ui.isChecked()) {
- selected.push(node.attributes.uid);
+ if (selected.indexOf(node.attributes.uid) < 0) {
+ selected.push(node.attributes.uid)
+ }
+ } else {
+ var index = selected.indexOf(node.attributes.uid);
+ if (index >= 0) {
+ selected.splice(index, 1);
+ }
this.countSelectedNodes = selected.length;
Ext.fly('treeinput' + this.id).dom.value = selected.join(',');
eval(this.onChange);
this.countSelectedNodes = selected.length;
Ext.fly('treeinput' + this.id).dom.value = selected.join(',');
eval(this.onChange);