mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
BUGFIX: Update hidden field of TreeMultiselectField as soon as checkboxes are clicked. Related to http://mingle.silverstripe.com/projects/air_nz_cms_enhancements/cards/139 (from r88935)
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@89202 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
e36798bc9b
commit
9809c0164f
@ -263,6 +263,7 @@ TreeMultiselectField.prototype = {
|
|||||||
newTreeReady: function (response) {
|
newTreeReady: function (response) {
|
||||||
this.TreeDropdownField.newTreeReady(response);
|
this.TreeDropdownField.newTreeReady(response);
|
||||||
MultiselectTree.create(this.tree);
|
MultiselectTree.create(this.tree);
|
||||||
|
this.tree.options.onselect = this.updateVal.bind(this);
|
||||||
|
|
||||||
// Select the appropriate items
|
// Select the appropriate items
|
||||||
var selectedItems = this.inputTag.value.split(/ *, */);
|
var selectedItems = this.inputTag.value.split(/ *, */);
|
||||||
@ -272,16 +273,22 @@ TreeMultiselectField.prototype = {
|
|||||||
var allNodes = this.tree.getElementsByTagName('li');
|
var allNodes = this.tree.getElementsByTagName('li');
|
||||||
for(i=0;i<allNodes.length;i++) {
|
for(i=0;i<allNodes.length;i++) {
|
||||||
if(isSelected[allNodes[i].getIdx()]) {
|
if(isSelected[allNodes[i].getIdx()]) {
|
||||||
this.tree.multiselect_handleSelectionChange(allNodes[i]);
|
this.tree.selectNode(allNodes[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
hideTree: function() {
|
hideTree: function() {
|
||||||
this.TreeDropdownField.hideTree();
|
this.TreeDropdownField.hideTree();
|
||||||
|
if(this.tree) this.updateVal();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the inputTag and humanItems from the currently selected nodes.
|
||||||
|
*/
|
||||||
|
updateVal: function() {
|
||||||
var internalVal = humanVal = "";
|
var internalVal = humanVal = "";
|
||||||
|
|
||||||
for(i in this.tree.selectedNodes) {
|
for(i in this.tree.selectedNodes) {
|
||||||
internalVal += (internalVal?',':'') + i;
|
internalVal += (internalVal?',':'') + i;
|
||||||
humanVal += (humanVal?', ':'') + this.tree.selectedNodes[i];
|
humanVal += (humanVal?', ':'') + this.tree.selectedNodes[i];
|
||||||
@ -289,9 +296,27 @@ TreeMultiselectField.prototype = {
|
|||||||
|
|
||||||
this.inputTag.value = internalVal;
|
this.inputTag.value = internalVal;
|
||||||
this.humanItems.innerHTML = humanVal;
|
this.humanItems.innerHTML = humanVal;
|
||||||
}
|
},
|
||||||
|
|
||||||
|
updateTreeLabel: function() {
|
||||||
|
var treeNode;
|
||||||
|
|
||||||
|
if(this.inputTag.value) {
|
||||||
|
var innerHTML = '';
|
||||||
|
var selectedItems = this.inputTag.value.split(/ *, */);
|
||||||
|
for(i=0;i<selectedItems.length;i++) {
|
||||||
|
if(treeNode = $('selector-' + this.inputTag.name + '-' + selectedItems[i])) {
|
||||||
|
innerHTML += (innerHTML?', ':'') + treeNode.getTitle();
|
||||||
|
} else {
|
||||||
|
innerHTML += selectedItems[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.humanItems.innerHTML = innerHTML;
|
||||||
|
} else {
|
||||||
|
this.humanItems.innerHTML = '(Choose)';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TreeMultiselectField.applyTo('div.TreeDropdownField.multiple');
|
TreeMultiselectField.applyTo('div.TreeDropdownField.multiple');
|
||||||
|
Loading…
Reference in New Issue
Block a user