From fc8f4130c23734bf547320eaa6e73251b981cc8d Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 12 Feb 2010 04:01:48 +0000 Subject: [PATCH] ENHANCEMENT Saving MemberTableField through new 'Groups' field added in Member->getCMSFields(). git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@98882 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- code/MemberTableField.php | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/code/MemberTableField.php b/code/MemberTableField.php index 8bfbd052..8f150a9d 100755 --- a/code/MemberTableField.php +++ b/code/MemberTableField.php @@ -305,13 +305,18 @@ class MemberTableField extends ComplexTableField { * * @return string */ - function saveComplexTableField($data, $form, $params) { + function saveComplexTableField($data, $form, $params) { $className = $this->sourceClass(); $childData = new $className(); $form->saveInto($childData); $childData->write(); - $childData->Groups()->add($data['GroupID']); + // Only write group if no specific assignments have been set + if(isset($data['Groups']) && $data['Groups']) { + $childData->Groups()->setByIDList(explode(',', $data['Groups'])); + } else { + $childData->Groups()->add($data['GroupID']); + } $closeLink = sprintf( '(%s)', @@ -395,6 +400,16 @@ class MemberTableField extends ComplexTableField { * @subpackage security */ class MemberTableField_Popup extends ComplexTableField_Popup { + + function __construct($controller, $name, $fields, $validator, $readonly, $dataObject) { + $group = ($controller instanceof MemberTableField) ? $controller->getGroup() : $controller->getParent()->getGroup(); + if($group) { + $groupsField = $fields->dataFieldByName('Groups'); + if($groupsField) $groupsField->setValue($group->ID); + } + + parent::__construct($controller, $name, $fields, $validator, $readonly, $dataObject); + } function forTemplate() { $ret = parent::forTemplate(); @@ -435,6 +450,20 @@ class MemberTableField_Item extends ComplexTableField_Item { } class MemberTableField_ItemRequest extends ComplexTableField_ItemRequest { + + function saveComplexTableField($data, $form, $request) { + parent::saveComplexTableField($data, $form, $request); + + $childData = $this->dataObj(); + + // Only write group if no specific assignments have been set + if(isset($data['Groups']) && $data['Groups']) { + $childData->Groups()->setByIDList(explode(',', $data['Groups'])); + } else { + $childData->Groups()->add($data['GroupID']); + } + } + /** * Deleting an item from a member table field should just remove that member from the group */ @@ -452,6 +481,10 @@ class MemberTableField_ItemRequest extends ComplexTableField_ItemRequest { $this->dataObj()->delete(); } } + + function getParent() { + return $this->ctf; + } } ?> \ No newline at end of file