From 1dd1f2ce6c1361c197caf3ba08f534f10bbf0473 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Thu, 18 Jan 2018 16:03:58 +1300 Subject: [PATCH] API Move subsite dropdown logic for folders into FolderFormFactoryExtension --- _config/extensions.yml | 4 ++ css/LeftAndMain_Subsites.css | 4 +- src/Extension/FileSubsites.php | 44 +----------------- src/Extension/FolderFormFactoryExtension.php | 47 ++++++++++++++++++++ 4 files changed, 55 insertions(+), 44 deletions(-) create mode 100644 src/Extension/FolderFormFactoryExtension.php diff --git a/_config/extensions.yml b/_config/extensions.yml index 506b59e..960b1d3 100644 --- a/_config/extensions.yml +++ b/_config/extensions.yml @@ -28,6 +28,10 @@ SilverStripe\Assets\File: extensions: - SilverStripe\Subsites\Extensions\FileSubsites +SilverStripe\AssetAdmin\Forms\FolderFormFactory: + extensions: + - SilverStripe\Subsites\Extensions\FolderFormFactoryExtension + SilverStripe\ErrorPage\ErrorPage: extensions: - SilverStripe\Subsites\Extensions\ErrorPageSubsite diff --git a/css/LeftAndMain_Subsites.css b/css/LeftAndMain_Subsites.css index d123ff2..7b66c2a 100644 --- a/css/LeftAndMain_Subsites.css +++ b/css/LeftAndMain_Subsites.css @@ -76,7 +76,7 @@ body.SubsiteAdmin .right form #URL .fieldgroup * { display: none; } -#Root_DetailsView .subsites-move-dropdown, -#Form_ItemEditForm .subsites-move-dropdown { +.editor__details .subsites-move-dropdown, +#Form_fileEditorForm.subsites-move-dropdown { display: block; } diff --git a/src/Extension/FileSubsites.php b/src/Extension/FileSubsites.php index fbaa5f7..2ca796a 100644 --- a/src/Extension/FileSubsites.php +++ b/src/Extension/FileSubsites.php @@ -2,10 +2,6 @@ namespace SilverStripe\Subsites\Extensions; -use SilverStripe\Assets\Folder; -use SilverStripe\Forms\DropdownField; -use SilverStripe\Forms\FieldList; -use SilverStripe\Forms\LiteralField; use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\DataQuery; use SilverStripe\ORM\Queries\SQLSelect; @@ -41,43 +37,6 @@ class FileSubsites extends DataExtension return $this->owner->Title; } - /** - * Add subsites-specific fields to the folder editor. - * @param FieldList $fields - */ - public function updateCMSFields(FieldList $fields) - { - if ($this->owner instanceof Folder) { - $sites = Subsite::accessible_sites('CMS_ACCESS_AssetAdmin'); - $values = []; - $values[0] = _t(__CLASS__ . '.AllSitesDropdownOpt', 'All sites'); - foreach ($sites as $site) { - $values[$site->ID] = $site->Title; - } - ksort($values); - if ($sites) { - //Dropdown needed to move folders between subsites - /** @var @skipUpgrade */ - $dropdown = new DropdownField( - 'SubsiteID', - _t(__CLASS__ . '.SubsiteFieldLabel', 'Subsite'), - $values - ); - $dropdown->addExtraClass('subsites-move-dropdown'); - $fields->push($dropdown); - $fields->push(new LiteralField( - 'Message', - '

' . - _t( - 'ASSETADMIN.SUBSITENOTICE', - 'Folders and files created in the main site are accessible by all subsites.' - ) - . '

' - )); - } - } - } - /** * Update any requests to limit the results to the current site * @param SQLSelect $query @@ -90,7 +49,8 @@ class FileSubsites extends DataExtension } // If you're querying by ID, ignore the sub-site - this is a bit ugly... (but it was WAYYYYYYYYY worse) - //@TODO I don't think excluding if SiteTree_ImageTracking is a good idea however because of the SS 3.0 api and ManyManyList::removeAll() changing the from table after this function is called there isn't much of a choice + // @TODO I don't think excluding if SiteTree_ImageTracking is a good idea however because of the SS 3.0 api and + // ManyManyList::removeAll() changing the from table after this function is called there isn't much of a choice $from = $query->getFrom(); if (isset($from['SiteTree_ImageTracking']) || $query->filtersOnID()) { diff --git a/src/Extension/FolderFormFactoryExtension.php b/src/Extension/FolderFormFactoryExtension.php new file mode 100644 index 0000000..4fcb03a --- /dev/null +++ b/src/Extension/FolderFormFactoryExtension.php @@ -0,0 +1,47 @@ +ID] = $site->Title; + } + ksort($values); + if ($sites) { + // Dropdown needed to move folders between subsites + /** @var @skipUpgrade */ + $dropdown = DropdownField::create( + 'SubsiteID', + _t(__CLASS__ . '.SubsiteFieldLabel', 'Subsite'), + $values + ); + $dropdown->addExtraClass('subsites-move-dropdown'); + $fields->push($dropdown); + $fields->push(LiteralField::create( + 'Message', + '

' . + _t( + __CLASS__ . '.SUBSITENOTICE', + 'Folders and files created in the main site are accessible by all subsites.' + ) + . '

' + )); + } + } +}