diff --git a/code/controllers/SilverStripeNavigator.php b/code/controllers/SilverStripeNavigator.php index f9eb30bb..728bf86f 100644 --- a/code/controllers/SilverStripeNavigator.php +++ b/code/controllers/SilverStripeNavigator.php @@ -246,7 +246,7 @@ class SilverStripeNavigatorItem_StageLink extends SilverStripeNavigatorItem { } public function getLink() { - return Controller::join_links($this->record->AbsoluteLink(), '?stage=Stage'); + return Controller::join_links($this->record->PreviewLink(), '?stage=Stage'); } public function canView($member = null) { @@ -299,7 +299,7 @@ class SilverStripeNavigatorItem_LiveLink extends SilverStripeNavigatorItem { } public function getLink() { - return Controller::join_links($this->record->AbsoluteLink(), '?stage=Live'); + return Controller::join_links($this->record->PreviewLink(), '?stage=Live'); } public function canView($member = null) { @@ -333,7 +333,7 @@ class SilverStripeNavigatorItem_ArchiveLink extends SilverStripeNavigatorItem { static $priority = 40; public function getHTML() { - $this->recordLink = $this->record->AbsoluteLink(); + $this->recordLink = $this->record->PreviewLink(); return "recordLink?archiveDate={$this->record->LastEdited}\" target=\"_blank\">". _t('ContentController.ARCHIVEDSITE', 'Preview version') .""; } @@ -350,7 +350,7 @@ class SilverStripeNavigatorItem_ArchiveLink extends SilverStripeNavigatorItem { } public function getLink() { - return $this->record->AbsoluteLink() . '?archiveDate=' . $this->record->LastEdited; + return $this->record->PreviewLink() . '?archiveDate=' . $this->record->LastEdited; } public function canView($member = null) { diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index 177b1945..c73f05d3 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -412,6 +412,18 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid return Director::absoluteURL($this->Link($action)); } } + + /** + * Base link used for previewing. Defaults to absolute URL, + * in order to account for domain changes, e.g. on multi site setups. + * Does not contain hints about the stage, see {@link SilverStripeNavigator} for details. + * + * @param string $action See {@link Link()} + * @return string + */ + public function PreviewLink($action = null) { + return $this->AbsoluteLink($action); + } /** * Return the link for this {@link SiteTree} object relative to the SilverStripe root.