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() { return Controller::join_links($this->getLivePage()->PreviewLink(), '?stage=Live'); } public function canView($member = null) { /** @var Versioned|DataObject $record */ $record = $this->record; return ( $record->hasExtension(Versioned::class) && $record->hasStages() && $this->getLivePage() && $this->showLiveLink() ); } public function showLiveLink() { try { return $this->record->config()->get('show_live_link'); } catch (\BadMethodCallException $e) { // Not using `config()` or similar return false; } } 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); } }