Source of file BoilerplatePageExtension.php
Size: 3,674 Bytes - Last Modified: 2021-12-23T10:19:24+00:00
/var/www/docs.ssmods.com/process/src/code/extensions/BoilerplatePageExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | <?php /** * Class BoilerplatePageExtension * * @property boolean HideSidebar */ class BoilerplatePageExtension extends DataExtension { /** * @var string */ private static $theme_color = ''; /** * @var array */ private static $db = array( 'HideSidebar' => 'Boolean' ); /** * @param FieldList $fields * @return FieldList */ public function updateCMSFields(FieldList $fields) { $fields->removeByName('Content'); /** @var HtmlEditorField $content */ $fields->addFieldToTab('Root.Main', $content = HtmlEditorField::create('Content', _t('BoilerplatePageExtension.Content', 'Content')), 'Metadata'); $content->setRows(20); } /** * @param FieldList $fields * @return FieldList */ public function updateSettingsFields(FieldList $fields) { /** Use FieldGroups to set left titles for the checkboxes. * * @var FieldGroup $hideSidebar */ $fields->addFieldToTab('Root.Settings', $hideSidebar = FieldGroup::create( CheckboxField::create('HideSidebar', _t('BoilerplatePageExtension.HideSidebar', 'Hide the sidebar from this page')) )); $hideSidebar->setTitle(_t('BoilerplatePageExtension.HideSidebarTitle', 'Sidebar')); } /** * @param string $direction * @return ArrayData|bool */ public function DirectionLink($direction = 'next') { switch ($direction) { case 'previous': $sortDirection = 'Sort:LessThan'; $sort = 'Sort DESC'; break; default: $sortDirection = 'Sort:GreaterThan'; $sort = 'Sort ASC'; } /** @var Page $page */ $page = Page::get()->filter(array( 'ParentID' => $this->owner->ParentID, $sortDirection => $this->owner->Sort ))->sort($sort)->first(); if (isset($page)) { return new ArrayData(array( 'Title' => $page->Title, 'MenuTitle' => $page->MenuTitle, 'Link' => $page->Link() )); } return false; } /** * Set a colour to to display in the header of mobile browsers. * * @return string|bool */ public function getThemeColor() { $color = $this->owner->config()->theme_color; if ($color) { return '<meta name="mobile-web-app-capable" content="yes"/><meta name="theme-color" content="' . $color . '">'; } return false; } /** * @return ArrayData|bool */ public function getPreviousLink() { return $this->DirectionLink('previous'); } /** * @return ArrayData|bool */ public function getNextLink() { return $this->DirectionLink('next'); } /** * If the Tracking Code contains Google Tag Manager then * return the tracking code directly after the <body> tag. * * @return bool|mixed */ public function getTrackingCodeTop() { $siteConfig = SiteConfig::current_site_config(); if ($siteConfig->TagManager) { return $siteConfig->TrackingCode; } return false; } /** * If there's no Google Tag Manager in the tracking code * return in the footer. * * @return bool|mixed */ public function getTrackingCodeBottom() { $siteConfig = SiteConfig::current_site_config(); if (!$siteConfig->TagManager) { return $siteConfig->TrackingCode; } return false; } } |