From 71df63cc6e1b6ed1e9a09796e84b8fdc4e809d22 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Mon, 27 Nov 2023 15:40:40 +1300 Subject: [PATCH] ENH Use SearchableMultiDropdownField --- code/Forms/AssetFormFactory.php | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/code/Forms/AssetFormFactory.php b/code/Forms/AssetFormFactory.php index 59ee17cc8..c9ae8591e 100644 --- a/code/Forms/AssetFormFactory.php +++ b/code/Forms/AssetFormFactory.php @@ -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 { @@ -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( @@ -402,11 +393,12 @@ 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), OptionsetField::create( "CanEditType", _t(__CLASS__ . '.EDITHEADER', 'Who can edit this file?') @@ -416,11 +408,12 @@ 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) ); return $tab;