mirror of
https://github.com/silverstripe/silverstripe-subsites
synced 2024-10-22 11:05:55 +02:00
FIX apply SubsiteID getVar to CMS Preview fetches
A preview link must be loaded on the same domain the CMS is loaded through, which was previously causing issues when a page (identified via URLSegment) did not exist on the subsite domain. By _always_ prepending the identifier to the preview link, this should never happen.
This commit is contained in:
parent
de0bba0df2
commit
5370bc8af6
@ -28,5 +28,5 @@ This method is called when a pages are being copied between the main site or ano
|
||||
### alternateAbsoluteLink
|
||||
This method modifies the absolute link to contain the valid subsite domain
|
||||
|
||||
### alternatePreviewLink
|
||||
### updatePreviewLink
|
||||
This method modifies the preview link for the CMS.
|
||||
|
@ -101,7 +101,7 @@
|
||||
|
||||
/**
|
||||
* Update links and forms with GET/POST SubsiteID param, so we remaing on the current subsite.
|
||||
* The initial link for the iframe comes from SiteTreeSubsites::alternatePreviewLink.
|
||||
* The initial link for the iframe comes from SiteTreeSubsites::updatePreviewLink.
|
||||
*
|
||||
* This is done so we can use the CMS domain for displaying previews so we prevent single-origin
|
||||
* violations and SSL cert problems that come up when iframing content from a different URL.
|
||||
|
@ -382,17 +382,31 @@ class SiteTreeSubsites extends DataExtension
|
||||
|
||||
/**
|
||||
* Use the CMS domain for iframed CMS previews to prevent single-origin violations
|
||||
* and SSL cert problems.
|
||||
* @param null $action
|
||||
* and SSL cert problems. Always set SubsiteID to avoid errors because a page doesn't
|
||||
* exist on the CMS domain.
|
||||
*
|
||||
* @param string &$link
|
||||
* @param string|null $action
|
||||
* @return string
|
||||
*/
|
||||
public function updatePreviewLink(&$link, $action = null)
|
||||
{
|
||||
$url = Director::absoluteURL($this->owner->Link($action));
|
||||
$link = HTTP::setGetVar('SubsiteID', $this->owner->SubsiteID, $url);
|
||||
return $link;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is marked as deprecated for removal in 5.0.0 in silverstripe/cms
|
||||
* so now simply passes execution to where the functionality exists for backwards compatiblity.
|
||||
*
|
||||
* @param string|null $action
|
||||
* @return string
|
||||
*/
|
||||
public function alternatePreviewLink($action = null)
|
||||
{
|
||||
$url = Director::absoluteURL($this->owner->Link());
|
||||
if ($this->owner->SubsiteID) {
|
||||
$url = HTTP::setGetVar('SubsiteID', $this->owner->SubsiteID, $url);
|
||||
}
|
||||
return $url;
|
||||
$link = '';
|
||||
return $this->updatePreviewLink($link, $action);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user