Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENH Use SearchableMultiDropdownField #149

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions code/SiteConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
use SilverStripe\Security\Security;
use SilverStripe\View\TemplateGlobalProvider;
use SilverStripe\CMS\Controllers\CMSMain;
use SilverStripe\Forms\SearchableMultiDropdownField;
use SilverStripe\Security\InheritedPermissions;

/**
Expand Down Expand Up @@ -104,7 +105,6 @@ public function getCMSFields()
$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']));
$membersMap = Member::get()->map('ID', 'Name');

$fields = FieldList::create(
TabSet::create(
Expand Down Expand Up @@ -132,11 +132,13 @@ public function getCMSFields()
'data-placeholder',
_t('SilverStripe\\CMS\\Model\\SiteTree.GroupPlaceholder', 'Click to select group')
),
$viewerMembersField = ListboxField::create(
$viewerMembersField = SearchableMultiDropdownField::create(
"ViewerMembers",
_t(self::class . '.VIEWERMEMBERS', "Viewer Users"),
$membersMap,
),
Member::get()
)
->setIsLazyLoaded(true)
->setUseSearchContext(true),
$editorsOptionsField = OptionsetField::create(
"CanEditType",
_t(self::class . '.EDITHEADER', "Who can edit pages on this site?")
Expand All @@ -150,11 +152,13 @@ public function getCMSFields()
'data-placeholder',
_t('SilverStripe\\CMS\\Model\\SiteTree.GroupPlaceholder', 'Click to select group')
),
$editorMembersField = ListboxField::create(
$editorMembersField = SearchableMultiDropdownField::create(
"EditorMembers",
_t(self::class . '.EDITORMEMBERS', "Editor Users"),
$membersMap,
),
Member::get(),
)
->setIsLazyLoaded(true)
->setUseSearchContext(true),
$topLevelCreatorsOptionsField = OptionsetField::create(
"CanCreateTopLevelType",
_t(self::class . '.TOPLEVELCREATE', "Who can create pages in the root of the site?")
Expand All @@ -168,11 +172,13 @@ public function getCMSFields()
'data-placeholder',
_t('SilverStripe\\CMS\\Model\\SiteTree.GroupPlaceholder', 'Click to select group')
),
$topLevelCreatorsMembersField = ListboxField::create(
$topLevelCreatorsMembersField = SearchableMultiDropdownField::create(
"CreateTopLevelMembers",
_t(self::class . '.TOPLEVELCREATORUSERS', "Top level creator users"),
$membersMap,
Member::get()
)
->setIsLazyLoaded(true)
->setUseSearchContext(true)
)
),
HiddenField::create('ID')
Expand Down
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
],
"require": {
"php": "^8.1",
"silverstripe/framework": "^5",
"silverstripe/admin": "^2",
"silverstripe/framework": "^5.2",
"silverstripe/admin": "^2.2",
"silverstripe/vendor-plugin": "^2"
},
"require-dev": {
Expand Down
8 changes: 6 additions & 2 deletions tests/behat/features/manage-page-permissions.feature
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ Feature: Manage global page permissions

Scenario: I can limit global view permissions to certain members
Given I select "Only these users (choose from list)" from "Who can view pages on this site?" input group
And I select "AUTHOR" from "Viewer Users" with javascript
And I fill in "Form_EditForm_ViewerMembers__input" with "author"
And I wait for 3 seconds
And I press the "Enter" key globally
And I press the "Save" button
When I am not logged in
And I go to the homepage
Expand Down Expand Up @@ -92,7 +94,9 @@ Feature: Manage global page permissions

Scenario: I can limit global edit permissions to certain members
Given I select "Only these users (choose from list)" from "Who can edit pages on this site?" input group
And I select "ADMIN" from "Editor Users" with javascript
And I fill in "Form_EditForm_EditorMembers__input" with "admin"
And I wait for 3 seconds
And I press the "Enter" key globally
And I press the "Save" button
Then pages should not be editable by "AUTHOR"
And pages should not be editable by "SECURITY"
Expand Down