BUGFIX Fixed TreeMultiselectField->Field() to respect settings, and give them priority over existing relations through getItems(). This is used in MemberTableField to set default groups for 'add member' popups.

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@98879 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2010-02-12 04:01:41 +00:00
parent e6aa5b8ee5
commit e26158c522

View File

@ -40,8 +40,19 @@ class TreeMultiselectField extends TreeDropdownField {
Requirements::javascript(SAPPHIRE_DIR . '/javascript/LeftAndMain.js');
Requirements::javascript(SAPPHIRE_DIR . "/javascript/TreeSelectorField.js");
$items = $this->getItems();
if($items) {
// Any field values have priority over the relation getters
if($this->value) {
$items = new DataObjectSet();
$ids = explode(',', $this->value);
foreach($ids as $id) {
$item = DataObject::get_by_id($this->sourceObject, $id);
if($item) $items->push($item);
}
} else {
$items = $this->getItems();
}
if($items && $items->Count()) {
foreach($items as $item) {
$titleArray[] =$item->Title;
$idArray[] = $item->ID;
@ -50,7 +61,7 @@ class TreeMultiselectField extends TreeDropdownField {
$itemList = implode(", ", $titleArray);
$value = implode(",", $idArray);
}
}
}
$id = $this->id();
@ -85,6 +96,7 @@ HTML;
return;
}
}
$saveDest->setByIDList($items);
}
}