Skip to content

Commit

Permalink
ENH Use SearchableMultiDropdownField
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Nov 28, 2023
1 parent fdeacbe commit 4525461
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions code/Forms/AssetFormFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
use SilverStripe\Security\InheritedPermissions;
use SilverStripe\Security\Member;
use SilverStripe\VersionedAdmin\Extensions\FileArchiveExtension;
use SilverStripe\Forms\SearchableMultiDropdownField;

abstract class AssetFormFactory implements FormFactory
{
Expand Down Expand Up @@ -381,16 +382,6 @@ protected function getFormFieldSecurityTab($record, $context = [])
$editorsOptionsField = $viewersOptionsField;
unset($editorsOptionsField[InheritedPermissions::ANYONE]);

// $membersMap is limited to 100 records specifically so that it does not crash the front-end
// if the website has a large number of Members, which is likely to happen if the website also
// uses the Member table for non-cms public users
// This limit should be removed if the ListboxField front-end component is switched out or
// modified so that it does not load all users at once and instead uses XHR to fetch a subset
// of users based on what the user types in
$membersMap = Member::get()
->limit(100)
->map('ID', 'Name');

$tab = Tab::create(
'Permissions',
OptionsetField::create(
Expand All @@ -402,11 +393,13 @@ protected function getFormFieldSecurityTab($record, $context = [])
'ViewerGroups',
_t(__CLASS__ . '.VIEWERGROUPS', 'Viewer Groups')
),
ListboxField::create(
SearchableMultiDropdownField::create(
'ViewerMembers',
_t(__CLASS__ . '.VIEWERMEMBERS', 'Viewer Users'),
$membersMap
),
Member::get()
)
->setIsLazyLoaded(true)
->setUseSearchContext(true),
OptionsetField::create(
"CanEditType",
_t(__CLASS__ . '.EDITHEADER', 'Who can edit this file?')
Expand All @@ -416,11 +409,13 @@ protected function getFormFieldSecurityTab($record, $context = [])
'EditorGroups',
_t(__CLASS__ . '.EDITORGROUPS', 'Editor Groups')
),
ListboxField::create(
SearchableMultiDropdownField::create(
'EditorMembers',
_t(__CLASS__ . '.EDITORMEMBERS', 'Editor Users'),
$membersMap
Member::get()
)
->setIsLazyLoaded(true)
->setUseSearchContext(true)
);

return $tab;
Expand Down

0 comments on commit 4525461

Please sign in to comment.