mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
FIX Disallow group removal when member is edited in groups view
It would invalidate this view. Only allow group editing for new members added to this group (with a group default), and for members edited through the "root" view.
This commit is contained in:
parent
ceb7e3c8a8
commit
cfafa19cc3
@ -102,12 +102,18 @@ class Group extends DataObject {
|
|||||||
$config->getComponentByType('GridFieldDetailForm')
|
$config->getComponentByType('GridFieldDetailForm')
|
||||||
->setValidator(new Member_Validator())
|
->setValidator(new Member_Validator())
|
||||||
->setItemEditFormCallback(function($form, $component) use($group) {
|
->setItemEditFormCallback(function($form, $component) use($group) {
|
||||||
|
$record = $form->getRecord();
|
||||||
|
$groupsField = $form->Fields()->dataFieldByName('DirectGroups');
|
||||||
|
if($groupsField) {
|
||||||
// If new records are created in a group context,
|
// If new records are created in a group context,
|
||||||
// set this group by default.
|
// set this group by default.
|
||||||
$record = $form->getRecord();
|
|
||||||
if($record && !$record->ID) {
|
if($record && !$record->ID) {
|
||||||
$groupsField = $form->Fields()->dataFieldByName('DirectGroups');
|
$groupsField->setValue($group->ID);
|
||||||
if($groupsField) $groupsField->setValue($group->ID);
|
} elseif($record && $record->ID) {
|
||||||
|
// TODO Mark disabled once chosen.js supports it
|
||||||
|
// $groupsField->setDisabledItems(array($group->ID));
|
||||||
|
$form->Fields()->replaceField('DirectGroups', $groupsField->performReadonlyTransformation());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$memberList = GridField::create('Members',false, $this->Members(), $config)->addExtraClass('members_grid');
|
$memberList = GridField::create('Members',false, $this->Members(), $config)->addExtraClass('members_grid');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user