From e26158c522c9213c9a034f959a76026aa6765972 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 12 Feb 2010 04:01:41 +0000 Subject: [PATCH] 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 --- forms/TreeMultiselectField.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/forms/TreeMultiselectField.php b/forms/TreeMultiselectField.php index a6b15aa97..429f74bfe 100755 --- a/forms/TreeMultiselectField.php +++ b/forms/TreeMultiselectField.php @@ -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); } }