From c6b1e0ce02fcd94d609e52d461b24df1539403cf Mon Sep 17 00:00:00 2001 From: Guy Sartorelli Date: Thu, 17 Oct 2024 13:13:17 +1300 Subject: [PATCH] API Update code to reflect changes to LeftAndMain --- _config/extensions.yml | 4 ---- src/Extensions/LeftAndMainSubsites.php | 12 ++++++------ src/Model/Subsite.php | 3 ++- tests/php/SiteTreeSubsitesTest.php | 4 ++-- 4 files changed, 10 insertions(+), 13 deletions(-) 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/src/Extensions/LeftAndMainSubsites.php b/src/Extensions/LeftAndMainSubsites.php index a42cd8cc..982478fd 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; @@ -287,7 +287,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 @@ -300,13 +300,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 @@ -321,7 +321,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) @@ -386,7 +386,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/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);