Merge pull request #1840 from open-sausages/pulls/4.0/view-add-perms-clarification

List "view/edit all" groups in group permission field
This commit is contained in:
Damian Mooyman 2017-06-28 12:22:34 +12:00 committed by GitHub
commit 29bb49105f

View File

@ -1915,12 +1915,18 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
*/ */
public function getSettingsFields() public function getSettingsFields()
{ {
$groupsMap = array(); $mapFn = function ($groups = []) {
foreach (Group::get() as $group) { $map = [];
// Listboxfield values are escaped, use ASCII char instead of » foreach ($groups as $group) {
$groupsMap[$group->ID] = $group->getBreadcrumbs(' > '); // Listboxfield values are escaped, use ASCII char instead of »
} $map[$group->ID] = $group->getBreadcrumbs(' > ');
asort($groupsMap); }
asort($map);
return $map;
};
$groupsMap = $mapFn(Group::get());
$viewAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_VIEW_ALL', 'ADMIN']));
$editAllGroupsMap = $mapFn(Permission::get_groups_by_permission(['SITETREE_EDIT_ALL', 'ADMIN']));
$fields = new FieldList( $fields = new FieldList(
$rootTab = new TabSet( $rootTab = new TabSet(
@ -2006,6 +2012,22 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
unset($editorsOptionsSource[InheritedPermissions::ANYONE]); unset($editorsOptionsSource[InheritedPermissions::ANYONE]);
$editorsOptionsField->setSource($editorsOptionsSource); $editorsOptionsField->setSource($editorsOptionsSource);
if ($viewAllGroupsMap) {
$viewerGroupsField->setDescription(_t(
'SilverStripe\\CMS\\Model\\SiteTree.VIEWER_GROUPS_FIELD_DESC',
'Groups with global view permissions: {groupList}',
['groupList' => implode(', ', array_values($viewAllGroupsMap))]
));
}
if ($editAllGroupsMap) {
$editorGroupsField->setDescription(_t(
'SilverStripe\\CMS\\Model\\SiteTree.EDITOR_GROUPS_FIELD_DESC',
'Groups with global edit permissions: {groupList}',
['groupList' => implode(', ', array_values($editAllGroupsMap))]
));
}
if (!Permission::check('SITETREE_GRANT_ACCESS')) { if (!Permission::check('SITETREE_GRANT_ACCESS')) {
$fields->makeFieldReadonly($viewersOptionsField); $fields->makeFieldReadonly($viewersOptionsField);
if ($this->CanEditType === InheritedPermissions::ONLY_THESE_USERS) { if ($this->CanEditType === InheritedPermissions::ONLY_THESE_USERS) {