diff --git a/_config/extensions.yml b/_config/extensions.yml index 8d4b0a57..36ece43c 100644 --- a/_config/extensions.yml +++ b/_config/extensions.yml @@ -51,10 +51,6 @@ SilverStripe\CMS\Controllers\CMSMain: - SilverStripe\Subsites\Extensions\HintsCacheKeyExtension - SilverStripe\Subsites\Extensions\SubsiteMenuExtension -SilverStripe\CMS\Controllers\CMSPagesController: - extensions: - - SilverStripe\Subsites\Extensions\SubsiteMenuExtension - SilverStripe\Subsites\Admin\SubsiteAdmin: extensions: - SilverStripe\Subsites\Extensions\SubsiteMenuExtension diff --git a/lang/en.yml b/lang/en.yml index 418d8918..461461e7 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -81,6 +81,7 @@ en: db_Protocol: Protocol has_one_Subsite: Subsite SilverStripe\Subsites\Pages\SubsitesVirtualPage: + CLASS_DESCRIPTION: 'Displays the content of a page on another subsite' DESCRIPTION: 'Displays the content of a page on another subsite' OverrideNote: 'Overrides inherited value from the source' PLURALNAME: 'Subsites Virtual Pages' diff --git a/src/Extensions/LeftAndMainSubsites.php b/src/Extensions/LeftAndMainSubsites.php index c6a1b74a..8e2b8607 100644 --- a/src/Extensions/LeftAndMainSubsites.php +++ b/src/Extensions/LeftAndMainSubsites.php @@ -6,7 +6,7 @@ use SilverStripe\Admin\CMSMenu; use SilverStripe\Admin\CMSProfileController; use SilverStripe\Admin\LeftAndMain; -use SilverStripe\CMS\Controllers\CMSPagesController; +use SilverStripe\CMS\Controllers\CMSMain; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Controllers\CMSPageEditController; use SilverStripe\Control\Controller; @@ -280,7 +280,7 @@ protected function onBeforeInit() // sessionNamespace() is protected - see for info $override = $this->owner->config()->get('session_namespace'); $sessionNamespace = $override ? $override : get_class($this->owner); - $session->clear($sessionNamespace . '.currentPage'); + $session->clear($sessionNamespace . '.currentRecord'); } // Context: Subsite ID has already been set to the state via InitStateMiddleware @@ -293,13 +293,13 @@ protected function onBeforeInit() $currentController = Controller::curr(); if ($currentController instanceof CMSPageEditController) { /** @var SiteTree $page */ - $page = $currentController->currentPage(); + $page = $currentController->currentRecord(); // If the page exists but doesn't belong to the requested subsite, redirect to admin/pages which // will show a list of the requested subsite's pages $currentSubsiteId = $request->getVar('SubsiteID'); if ($page && (int) $page->SubsiteID !== (int) $currentSubsiteId) { - return $this->owner->redirect(CMSPagesController::singleton()->Link()); + return $this->owner->redirect(CMSMain::singleton()->Link()); } // Page does belong to the current subsite, so remove the query string parameter and refresh the page @@ -314,7 +314,7 @@ protected function onBeforeInit() // Automatically redirect the session to appropriate subsite when requesting a record. // This is needed to properly initialise the session in situations where someone opens the CMS via a link. - $record = $this->owner->currentPage(); + $record = $this->owner->currentRecord(); if ($record && isset($record->SubsiteID, $this->owner->urlParams['ID']) && is_numeric($record->SubsiteID) @@ -379,7 +379,7 @@ protected function onBeforeInit() return; } - protected function augmentNewSiteTreeItem(&$item) + protected function updateNewItem(&$item) { $request = Controller::curr()->getRequest(); $item->SubsiteID = $request->postVar('SubsiteID') ?: SubsiteState::singleton()->getSubsiteId(); diff --git a/src/Model/Subsite.php b/src/Model/Subsite.php index 8ac132fe..a185a110 100644 --- a/src/Model/Subsite.php +++ b/src/Model/Subsite.php @@ -728,7 +728,8 @@ public function getPageTypeMap() { $pageTypeMap = []; - $pageTypes = SiteTree::page_type_classes(); + $pageTypes = ClassInfo::getValidSubClasses(SiteTree::class); + SiteTree::singleton()->updateAllowedSubClasses($pageTypes); foreach ($pageTypes as $pageType) { $pageTypeMap[$pageType] = singleton($pageType)->i18n_singular_name(); } diff --git a/src/Pages/SubsitesVirtualPage.php b/src/Pages/SubsitesVirtualPage.php index 8f9ff22a..a9198198 100644 --- a/src/Pages/SubsitesVirtualPage.php +++ b/src/Pages/SubsitesVirtualPage.php @@ -21,7 +21,7 @@ class SubsitesVirtualPage extends VirtualPage { private static $table_name = 'SubsitesVirtualPage'; - private static $description = 'Displays the content of a page on another subsite'; + private static $class_description = 'Displays the content of a page on another subsite'; private static $non_virtual_fields = [ 'SubsiteID' diff --git a/tests/php/SiteTreeSubsitesTest.php b/tests/php/SiteTreeSubsitesTest.php index adb65115..b0adca56 100644 --- a/tests/php/SiteTreeSubsitesTest.php +++ b/tests/php/SiteTreeSubsitesTest.php @@ -287,7 +287,7 @@ public function testPageTypesBlacklistInCMSMain() Subsite::changeSubsite($s1); $cmsmain = CMSMain::create(); - $hints = json_decode($cmsmain->SiteTreeHints() ?? '', true); + $hints = json_decode($cmsmain->TreeHints() ?? '', true); $classes = $hints['Root']['disallowedChildren']; $this->assertContains(ErrorPage::class, $classes); $this->assertContains(TestClassA::class, $classes); @@ -298,7 +298,7 @@ public function testPageTypesBlacklistInCMSMain() if ($cmsmain->hasMethod('getHintsCache')) { $cmsmain->getHintsCache()->clear(); } - $hints = json_decode($cmsmain->SiteTreeHints() ?? '', true); + $hints = json_decode($cmsmain->TreeHints() ?? '', true); $classes = $hints['Root']['disallowedChildren']; $this->assertNotContains(ErrorPage::class, $classes);