owner && $this->owner->dataRecord && $this->owner->dataRecord instanceof SiteTree) { //Get SilverStripeNavigator links & stage info (CMS/Stage/Live/Archive) $nav = array(); $viewing = ''; $navigator = new SilverStripeNavigator($this->owner->dataRecord); $items = $navigator->getItems(); foreach($items as $item) { $name = $item->getName(); $active = $item->isActive(); $nav[$name] = array( 'Link' => $item->getLink(), 'Active' => $active ); if ($active) { if ($name == 'LiveLink') $viewing = 'Live'; if ($name == 'StageLink') $viewing = 'Draft'; if ($name == 'ArchiveLink') $viewing = 'Archived'; } } //Is the logged in member nominated as a developer? $member = Member::currentUser(); $devs = Config::inst()->get('BetterNavigator', 'developers'); $isDeveloper = $member && is_array($devs) ? in_array($member->Email, $devs) : false; //Add other data for template $backURL = '?BackURL=' . urlencode($this->owner->Link()); $bNData = array_merge($nav, array( 'Member' => $member, 'Stage' => Versioned::current_stage(), 'Viewing' => $viewing, // What we're viewing doesn't necessarily align with the active Stage 'LoginLink' => Config::inst()->get('Security', 'login_url') . $backURL, 'LogoutLink' => 'Security/logout' . $backURL, 'Mode' => Director::get_environment_type(), 'IsDeveloper' => $isDeveloper )); //Merge with page data, send to template and render $bNData = new ArrayData($bNData); $page = $this->owner->customise(array('BetterNavigator' => $bNData)); return $page->renderWith('BetterNavigator'); } } return false; } }