getLivePage(); if (!$livePage) { return null; } $linkClass = $this->isActive() ? 'class="current" ' : ''; $linkTitle = _t('SilverStripe\\CMS\\Controllers\\ContentController.PUBLISHEDSITE', 'Published Site'); $recordLink = Convert::raw2att(Controller::join_links($livePage->AbsoluteLink(), "?stage=Live")); return "$linkTitle"; } public function getTitle() { return _t( 'SilverStripe\\CMS\\Controllers\\ContentController.PUBLISHED', 'Published', 'Used for the Switch between draft and published view mode. Needs to be a short label' ); } public function getMessage() { return "
"; } public function getLink() { $link = $this->getLivePage()->PreviewLink(); return $link ? Controller::join_links($link, '?stage=Live') : ''; } public function canView($member = null) { /** @var Versioned|DataObject $record */ $record = $this->record; return ( $record->hasExtension(Versioned::class) && $this->showLiveLink() && $record->hasStages() && $this->getLivePage() && $this->getLink() ); } /** * @return bool */ public function showLiveLink() { return (bool)Config::inst()->get(get_class($this->record), 'show_live_link'); } public function isActive() { return ( (!Versioned::get_stage() || Versioned::get_stage() == 'Live') && !$this->isArchived() ); } protected function getLivePage() { $baseClass = $this->record->baseClass(); return Versioned::get_by_stage($baseClass, Versioned::LIVE)->byID($this->record->ID); } }