Skip to content

Commit

Permalink
Add extension to correctly support element preview
Browse files Browse the repository at this point in the history
  • Loading branch information
Michal Kleiner committed Jun 21, 2023
1 parent b855a55 commit a052bfd
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
9 changes: 9 additions & 0 deletions _config/extensions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,12 @@ SilverStripe\Subsites\Admin\SubsiteAdmin:
SilverStripe\SiteConfig\SiteConfigLeftAndMain:
extensions:
- SilverStripe\Subsites\Extensions\SubsiteMenuExtension

---
Name: subsite-preview-elemental
Only:
classexists: DNADesign\Elemental\Models\BaseElement
---
DNADesign\Elemental\Models\BaseElement:
extensions:
- SilverStripe\Subsites\Extensions\BaseElementSubsites
33 changes: 33 additions & 0 deletions src/Extensions/BaseElementSubsites.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace SilverStripe\Subsites\Extensions;

use SilverStripe\Control\HTTP;
use SilverStripe\ORM\DataExtension;

/**
* Extension for the BaseElement object to add subsites support for CMS previews
*/
class BaseElementSubsites extends DataExtension
{
/**
* Set SubsiteID to avoid errors when a page doesn't exist on the CMS domain.
*
* @param string &$link
* @param string|null $action
* @return string
*/
public function updatePreviewLink(&$link)
{
// Get subsite ID from the element or from its page. Defaults to 0 automatically.
$subsiteID = $this->owner->SubsiteID;
if (is_null($subsiteID)) {
$page = $this->owner->getPage();
if ($page) {
$subsiteID = $page->SubsiteID;
}
}

$link = HTTP::setGetVar('SubsiteID', intval($subsiteID), $link);
}
}

0 comments on commit a052bfd

Please sign in to comment.