From 96ce0927458d3ae2961f1e266e4e91b2bbbc1592 Mon Sep 17 00:00:00 2001 From: Guy Sartorelli <36352093+GuySartorelli@users.noreply.github.com> Date: Thu, 15 Aug 2024 13:59:25 +1200 Subject: [PATCH] ENH Don't emit deprecation warnings for unavoidable API calls (#2985) --- code/BatchActions/CMSBatchAction_Archive.php | 4 ++- code/Controllers/CMSMain.php | 8 +++--- code/Model/SiteTree.php | 28 +++++++++++--------- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/code/BatchActions/CMSBatchAction_Archive.php b/code/BatchActions/CMSBatchAction_Archive.php index 7520ffac6d..c0f8412c61 100644 --- a/code/BatchActions/CMSBatchAction_Archive.php +++ b/code/BatchActions/CMSBatchAction_Archive.php @@ -5,6 +5,7 @@ use SilverStripe\ORM\SS_List; use SilverStripe\Admin\CMSBatchAction; use SilverStripe\Control\HTTPResponse; +use SilverStripe\Dev\Deprecation; /** * Delete items batch action. @@ -27,6 +28,7 @@ public function run(SS_List $pages): HTTPResponse public function applicablePages($ids) { - return $this->applicablePagesHelper($ids, 'canArchive'); + // canArchive() is deprecated, not $this->applicablePagesHelper() + return Deprecation::withNoReplacement(fn() => $this->applicablePagesHelper($ids, 'canArchive')); } } diff --git a/code/Controllers/CMSMain.php b/code/Controllers/CMSMain.php index bbd3ada8cd..4c559bf765 100644 --- a/code/Controllers/CMSMain.php +++ b/code/Controllers/CMSMain.php @@ -29,6 +29,7 @@ use SilverStripe\Core\Environment; use SilverStripe\Core\Flushable; use SilverStripe\Core\Injector\Injector; +use SilverStripe\Dev\Deprecation; use SilverStripe\Forms\DateField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldGroup; @@ -1109,13 +1110,13 @@ private function buildListViewBreadcrumb(ArrayList $items, SiteTree $page): void // Find all ancestors of the provided page $ancestors = $page->getAncestors(true); $ancestors = array_reverse($ancestors->toArray() ?? []); - + //turns the title and link of the breadcrumbs into template-friendly variables $params = array_filter([ 'view' => $this->getRequest()->getVar('view'), 'q' => $this->getRequest()->getVar('q') ]); - + foreach ($ancestors as $ancestor) { // Link back to the list view for the current ancestor $params['ParentID'] = $ancestor->ID; @@ -1997,7 +1998,8 @@ public function archive(array $data, Form $form): HTTPResponse if (!$record || !$record->exists()) { throw new HTTPResponse_Exception("Bad record ID #$id", 404); } - if (!$record->canArchive()) { + $canArchive = Deprecation::withNoReplacement(fn() => $record->canArchive()); + if (!$canArchive) { return Security::permissionFailure(); } diff --git a/code/Model/SiteTree.php b/code/Model/SiteTree.php index 5f7556d61d..8838e49c1a 100755 --- a/code/Model/SiteTree.php +++ b/code/Model/SiteTree.php @@ -25,6 +25,7 @@ use SilverStripe\Core\Manifest\ModuleResourceLoader; use SilverStripe\Core\Manifest\VersionProvider; use SilverStripe\Core\Resettable; +use SilverStripe\Dev\Deprecation; use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\DropdownField; @@ -2567,18 +2568,21 @@ public function getCMSActions() } // If a page is on any stage it can be archived - if (($isOnDraft || $isPublished) && $this->canArchive()) { - $title = $isPublished - ? _t('SilverStripe\\CMS\\Controllers\\CMSMain.UNPUBLISH_AND_ARCHIVE', 'Unpublish and archive') - : _t('SilverStripe\\CMS\\Controllers\\CMSMain.ARCHIVE', 'Archive'); - $moreOptions->push( - FormAction::create('archive', $title) - ->addExtraClass('delete btn btn-secondary' . ($this->isHomePage() ? ' homepage-warning' : '')) - ->setDescription(_t( - 'SilverStripe\\CMS\\Model\\SiteTree.BUTTONDELETEDESC', - 'Remove from draft/live and send to archive' - )) - ); + if (($isOnDraft || $isPublished)) { + $canArchive = Deprecation::withNoReplacement(fn() => $this->canArchive()); + if ($canArchive) { + $title = $isPublished + ? _t('SilverStripe\\CMS\\Controllers\\CMSMain.UNPUBLISH_AND_ARCHIVE', 'Unpublish and archive') + : _t('SilverStripe\\CMS\\Controllers\\CMSMain.ARCHIVE', 'Archive'); + $moreOptions->push( + FormAction::create('archive', $title) + ->addExtraClass('delete btn btn-secondary' . ($this->isHomePage() ? ' homepage-warning' : '')) + ->setDescription(_t( + 'SilverStripe\\CMS\\Model\\SiteTree.BUTTONDELETEDESC', + 'Remove from draft/live and send to archive' + )) + ); + } } // "save", supports an alternate state that is still clickable, but notifies the user that the action is not needed.