mirror of
https://github.com/silverstripe/silverstripe-subsites
synced 2024-10-22 11:05:55 +02:00
Merge branch '2.0' into 2.1
This commit is contained in:
commit
75b851326d
@ -28,5 +28,5 @@ This method is called when a pages are being copied between the main site or ano
|
|||||||
### alternateAbsoluteLink
|
### alternateAbsoluteLink
|
||||||
This method modifies the absolute link to contain the valid subsite domain
|
This method modifies the absolute link to contain the valid subsite domain
|
||||||
|
|
||||||
### alternatePreviewLink
|
### updatePreviewLink
|
||||||
This method modifies the preview link for the CMS.
|
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.
|
* 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
|
* 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.
|
* violations and SSL cert problems that come up when iframing content from a different URL.
|
||||||
|
@ -160,7 +160,7 @@ class LeftAndMainSubsites extends LeftAndMainExtension
|
|||||||
$output->push(ArrayData::create([
|
$output->push(ArrayData::create([
|
||||||
'CurrentState' => $currentState,
|
'CurrentState' => $currentState,
|
||||||
'ID' => $subsite->ID,
|
'ID' => $subsite->ID,
|
||||||
'Title' => Convert::raw2xml($subsite->Title)
|
'Title' => $subsite->Title,
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -273,8 +273,10 @@ class SiteTreeSubsites extends DataExtension
|
|||||||
* - Is in a group which has access to the subsite this page belongs to
|
* - Is in a group which has access to the subsite this page belongs to
|
||||||
* - Is in a group with edit permissions on the "main site"
|
* - Is in a group with edit permissions on the "main site"
|
||||||
*
|
*
|
||||||
* @param null $member
|
* If there are no subsites configured yet, this logic is skipped.
|
||||||
* @return bool
|
*
|
||||||
|
* @param Member|null $member
|
||||||
|
* @return bool|null
|
||||||
*/
|
*/
|
||||||
public function canEdit($member = null)
|
public function canEdit($member = null)
|
||||||
{
|
{
|
||||||
@ -282,6 +284,11 @@ class SiteTreeSubsites extends DataExtension
|
|||||||
$member = Security::getCurrentUser();
|
$member = Security::getCurrentUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Do not provide any input if there are no subsites configured
|
||||||
|
if (!Subsite::get()->exists()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Find the sites that this user has access to
|
// Find the sites that this user has access to
|
||||||
$goodSites = Subsite::accessible_sites('CMS_ACCESS_CMSMain', true, 'all', $member)->column('ID');
|
$goodSites = Subsite::accessible_sites('CMS_ACCESS_CMSMain', true, 'all', $member)->column('ID');
|
||||||
|
|
||||||
@ -329,8 +336,8 @@ class SiteTreeSubsites extends DataExtension
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param null $member
|
* @param Member|null $member
|
||||||
* @return bool
|
* @return bool|null
|
||||||
*/
|
*/
|
||||||
public function canPublish($member = null)
|
public function canPublish($member = null)
|
||||||
{
|
{
|
||||||
@ -375,17 +382,31 @@ class SiteTreeSubsites extends DataExtension
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Use the CMS domain for iframed CMS previews to prevent single-origin violations
|
* Use the CMS domain for iframed CMS previews to prevent single-origin violations
|
||||||
* and SSL cert problems.
|
* and SSL cert problems. Always set SubsiteID to avoid errors because a page doesn't
|
||||||
* @param null $action
|
* 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
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function alternatePreviewLink($action = null)
|
public function alternatePreviewLink($action = null)
|
||||||
{
|
{
|
||||||
$url = Director::absoluteURL($this->owner->Link());
|
$link = '';
|
||||||
if ($this->owner->SubsiteID) {
|
return $this->updatePreviewLink($link, $action);
|
||||||
$url = HTTP::setGetVar('SubsiteID', $this->owner->SubsiteID, $url);
|
|
||||||
}
|
|
||||||
return $url;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user