From 4892eabb47dbddaf950215bdbdeeed5b939c91ec Mon Sep 17 00:00:00 2001 From: Robert van Lienden Date: Thu, 16 Mar 2023 20:58:42 +0100 Subject: [PATCH] Fixed #2 by implemented Lumberjack the right way --- _config/app.yml | 6 +++ src/Pages/ItemDetailPage.php | 6 ++- src/Pages/ItemOverviewPage.php | 67 ++++++++++++++++++++-------------- 3 files changed, 50 insertions(+), 29 deletions(-) diff --git a/_config/app.yml b/_config/app.yml index 023ff52..4f9ba9b 100644 --- a/_config/app.yml +++ b/_config/app.yml @@ -1,12 +1,18 @@ --- Name: silverstripeaddons --- +RobertVanLienden\SilverStripeAddons\Pages\ItemOverviewPage: + extensions: + - SilverStripe\Lumberjack\Model\LumberJack + Page: extensions: - RobertVanLienden\SilverStripeAddons\Extensions\PageExtension + PageController: extensions: - RobertVanLienden\SilverStripeAddons\Extensions\PageControllerExtension + Silverstripe\SiteConfig\SiteConfig: extensions: - RobertVanLienden\SilverStripeAddons\Extensions\SiteConfigExtension diff --git a/src/Pages/ItemDetailPage.php b/src/Pages/ItemDetailPage.php index eae0151..13fce19 100644 --- a/src/Pages/ItemDetailPage.php +++ b/src/Pages/ItemDetailPage.php @@ -16,7 +16,11 @@ class ItemDetailPage extends \Page private static string $icon_class = 'font-icon-p-article'; private static string $description = 'A portfolio item page'; - private static bool $can_be_root = false; + private static $show_in_sitetree = false; + + private static $can_be_root = false; + + private static $allowed_children = []; private static array $db = [ 'ProjectSummary' => 'HTMLText', diff --git a/src/Pages/ItemOverviewPage.php b/src/Pages/ItemOverviewPage.php index 93bf6cf..d9bc8df 100644 --- a/src/Pages/ItemOverviewPage.php +++ b/src/Pages/ItemOverviewPage.php @@ -2,11 +2,13 @@ namespace RobertVanLienden\SilverStripeAddons\Pages; +use Restruct\GridFieldSiteTreeButtons\GridFieldAddNewSiteTreeItemButton; use SilverStripe\Forms\CheckboxField; +use SilverStripe\Forms\FieldList; use SilverStripe\Forms\GridField\GridField; -use SilverStripe\Forms\GridField\GridFieldAddNewButton; -use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor; +use SilverStripe\Lumberjack\Forms\GridFieldSiteTreeAddNewButton; use SilverStripe\ORM\DataList; +use SilverStripe\Lumberjack\Forms\GridFieldConfig_Lumberjack; /** * @@ -18,6 +20,10 @@ class ItemOverviewPage extends \Page private static string $icon_class = 'font-icon-p-articles'; private static string $description = 'A page with an overview with your portfolio items.'; + private static array $allowed_children = [ + ItemDetailPage::class + ]; + private static array $db = [ 'AllItemDetailPages' => 'Boolean', ]; @@ -28,38 +34,43 @@ class ItemOverviewPage extends \Page public function getCMSFields() { - $fields = parent::getCMSFields(); - - $fields->addFieldsToTab('Root.Main', [ - CheckboxField::create('AllItemDetailPages', 'Display all item detail pages on this page') - ->setDescription('By default a overview page only shows pages under THIS overview page. '), - ], 'Title'); - - $itemGridConfig = GridFieldConfig_RecordEditor::create(); + $this->beforeUpdateCMSFields( + function (FieldList $fields) { + $fields->addFieldsToTab('Root.Main', [ + CheckboxField::create('AllItemDetailPages', 'Display all item detail pages on this page') + ->setDescription('By default a overview page only shows pages under THIS overview page. '), + ], 'Title'); + + //$itemGridConfig = GridFieldConfig_Lumberjack::create(); + + //if ($this->AllItemDetailPages === 0) { + // $fields->addFieldsToTab('Root.Items', [ + // $this->createGridField('Items', ItemDetailPage::get()->where(['ParentID' => $this->ID])), + // ]); + //} else { + // $fields->addFieldsToTab('Root.Items', [ + // $this->createGridField('Items', ItemDetailPage::get()) + // ]); + //} + } + ); + + return parent::getCMSFields(); + } + public function getLumberjackPagesForGridfield(): DataList + { if ($this->AllItemDetailPages === 0) { - $fields->addFieldsToTab('Root.Items', [ - GridField::create('ItemPages', - 'Item detail pages', - ItemDetailPage::get()->where(['ParentID' => $this->ID]), - $itemGridConfig) - ]); - } else { - $fields->addFieldsToTab('Root.Items', [ - GridField::create('ItemPages', - 'Item pages', - ItemDetailPage::get(), - $itemGridConfig) - ]); + return ItemDetailPage::get()->where(['ParentID' => $this->ID]); } - - return $fields; + return ItemDetailPage::get(); } - private static array $allowed_children = [ - ItemDetailPage::class - ]; + public function getLumberjackTitle(): string + { + return 'Items'; + } public function getItemPages(?string $limit = null, ?string $all = null): DataList {