Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENH Top page configuration improvements. #1259

Open
wants to merge 1 commit into
base: 5
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 32 additions & 4 deletions _config/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,6 @@ SilverStripe\CMS\Controllers\CMSMain:
extensions:
- DNADesign\Elemental\Extensions\ElementalCMSMainExtension

SilverStripe\CMS\Model\SiteTree:
extensions:
topPageSiteTreeExtension: DNADesign\Elemental\TopPage\SiteTreeExtension

SilverStripe\Versioned\VersionedGridFieldItemRequest:
extensions:
- 'DNADesign\Elemental\Extensions\GridFieldDetailFormItemRequestExtension'
Expand All @@ -39,3 +35,35 @@ Symbiote\GridFieldExtensions\GridFieldAddNewMultiClassHandler:
SilverStripe\Core\Injector\Injector:
SilverStripe\CMS\Controllers\CMSSiteTreeFilter_Search:
class: DNADesign\Elemental\Controllers\ElementSiteTreeFilterSearch

---
Name: elemental-top-page-default
---

DNADesign\Elemental\Models\BaseElement:
extensions:
topPageDataExtension: DNADesign\Elemental\TopPage\DataExtension

DNADesign\Elemental\Models\ElementalArea:
extensions:
topPageDataExtension: DNADesign\Elemental\TopPage\DataExtension

SilverStripe\CMS\Model\SiteTree:
extensions:
topPageSiteTreeExtension: DNADesign\Elemental\TopPage\SiteTreeExtension

---
Name: elemental-top-page-fluent
After:
- elemental-top-page-default
Only:
moduleexists: 'tractorcow/silverstripe-fluent'
---

DNADesign\Elemental\Models\BaseElement:
extensions:
topPageDataExtension: DNADesign\Elemental\TopPage\FluentExtension

DNADesign\Elemental\Models\ElementalArea:
extensions:
topPageDataExtension: DNADesign\Elemental\TopPage\FluentExtension
27 changes: 17 additions & 10 deletions docs/en/02_advanced_setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -444,21 +444,28 @@ directly on the block as a performance enhancement for this query. A set of exte
of the box for elements on pages. You can use `$TopPage` in your template to get access to the page, which is more performant
than using `$Page`.

If your project makes use of the Fluent module, it is recommended to use the following extensions in place of the ones
above:
If your project makes use of the Fluent module, this feature will automatically replace `DNADesign\Elemental\TopPage\DataExtension` with `DNADesign\Elemental\TopPage\FluentExtension`.

These variants will also store the locale of the top page on blocks, which simplifies top page lookup in case the locale
is unknown at the time of page lookup from block context.

The page reference on the blocks can also be useful for maintenance dev tasks, as it's easy to identify which blocks
belong to which pages in which locale.

In case you need to further customise this setup with your own extension override, one way how to do this is shown below:

```yml
---
Name: my-elemental-config
After:
- elemental-top-page-fluent
---

DNADesign\Elemental\Models\BaseElement:
extensions:
topPageDataExtension: DNADesign\Elemental\TopPage\FluentExtension
topPageDataExtension: App\MyExtension

DNADesign\Elemental\Models\ElementalArea:
extensions:
topPageDataExtension: DNADesign\Elemental\TopPage\FluentExtension
topPageDataExtension: App\MyExtension
```

These variants will also store the locale of the top page on blocks, which simplifies top page lookup in case the locale
is unknown at the time of page lookup from block context.

The page reference on the blocks can also be useful for maintenance dev tasks, as it's easy to identify which blocks
belong to which pages in which locale.
2 changes: 0 additions & 2 deletions src/Models/BaseElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
use DNADesign\Elemental\Forms\TextCheckboxGroupField;
use DNADesign\Elemental\ORM\FieldType\DBObjectType;
use DNADesign\Elemental\Services\ReorderElements;
use DNADesign\Elemental\TopPage\DataExtension;
use Exception;
use SilverStripe\CMS\Controllers\CMSPageEditController;
use SilverStripe\CMS\Model\SiteTree;
Expand Down Expand Up @@ -91,7 +90,6 @@ class BaseElement extends DataObject implements CMSPreviewable

private static $extensions = [
Versioned::class,
DataExtension::class,
];

private static $casting = [
Expand Down
2 changes: 0 additions & 2 deletions src/Models/ElementalArea.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

use DNADesign\Elemental\Controllers\ElementController;
use DNADesign\Elemental\Extensions\ElementalAreasExtension;
use DNADesign\Elemental\TopPage\DataExtension;
use SilverStripe\Core\ClassInfo;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Dev\TestOnly;
Expand Down Expand Up @@ -37,7 +36,6 @@ class ElementalArea extends DataObject

private static $extensions = [
Versioned::class,
DataExtension::class,
];

private static $owns = [
Expand Down
Loading