Update to be compatible with SS4

This commit is contained in:
Andrew Aitken-Fincham 2017-01-13 17:21:05 +00:00
parent 63f16e4054
commit cd204de28b
8 changed files with 51 additions and 27 deletions

View File

@ -17,7 +17,7 @@ This module is intended to replicate and expand upon the functionality provided
## Requirements
SilverStripe 3.1
SilverStripe 4.0
## Installation

View File

@ -1,10 +1,10 @@
---
Name: betternavigator
After: 'framework/*','cms/*'
After: 'framework/*, cms/*'
---
LeftAndMain:
SilverStripe\Admin\LeftAndMain:
extra_requirements_javascript:
- 'betternavigator/javascript/BN.LeftAndMain.Preview.js'
ContentController:
SilverStripe\CMS\Controllers\ContentController:
extensions:
- BetterNavigatorExtension
- JonoM\BetterNavigator\Extension\BetterNavigatorExtension

View File

@ -1,17 +1,27 @@
{
"name": "jonom/silverstripe-betternavigator",
"description": "Front-end utility menu for SilverStripe websites featuring administration and development tools",
"type": "silverstripe-module",
"keywords": ["silverstripe", "navigator", "SilverStripeNavigator", "BetterNavigator"],
"license": "BSD-3-Clause",
"authors": [{
"name": "Jonathon Menz",
"homepage": "http://jonathonmenz.com"
}],
"require": {
"silverstripe/framework": "~3.1"
},
"extra": {
"installer-name": "betternavigator"
}
"name": "jonom/silverstripe-betternavigator",
"description": "Front-end utility menu for SilverStripe websites featuring administration and development tools",
"type": "silverstripe-module",
"keywords": [
"silverstripe",
"navigator",
"SilverStripeNavigator",
"BetterNavigator"
],
"license": "BSD-3-Clause",
"authors": [
{
"name": "Jonathon Menz",
"homepage": "http://jonathonmenz.com"
}
],
"require": {
"silverstripe/framework": "^4.0"
},
"extra": {
"installer-name": "betternavigator"
},
"autoload": {
"Jonom\\BetterNavigator\\": "src/"
}
}

View File

@ -1,5 +1,18 @@
<?php
namespace JonoM\BetterNavigator\Extension;
use SilverStripe\ORM\DataExtension;
use SilverStripe\Security\Permission;
use SilverStripe\CMS\Controllers\SilverStripeNavigator;
use SilverStripe\Control\Director;
use SilverStripe\Security\Member;
use SilverStripe\Core\Config\Config;
use SilverStripe\Control\Controller;
use SilverStripe\View\ArrayData;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\CMS\Model\SiteTree;
class BetterNavigatorExtension extends DataExtension {
/**
@ -9,19 +22,20 @@ class BetterNavigatorExtension extends DataExtension {
* @return string
*/
public function BetterNavigator() {
// Make sure this is a page
if (!($this->owner && $this->owner->dataRecord && $this->owner->dataRecord instanceof SiteTree && $this->owner->dataRecord->ID > 0)) return false;
// Only show navigator to appropriate users
$isDev = Director::isDev();
$canViewDraft = (Permission::check('VIEW_DRAFT_CONTENT') || Permission::check('CMS_ACCESS_CMSMain'));
if($isDev || $canViewDraft) {
if ($isDev || $canViewDraft) {
// 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) {
foreach ($items as $item) {
$name = $item->getName();
$active = $item->isActive();
$nav[$name] = array(
@ -47,7 +61,7 @@ class BetterNavigatorExtension extends DataExtension {
$backURL = '?BackURL=' . urlencode($this->owner->Link());
$bNData = array_merge($nav, array(
'Member' => $member,
'Stage' => Versioned::current_stage(),
'Stage' => Versioned::get_stage(),
'Viewing' => $viewing, // What we're viewing doesn't necessarily align with the active Stage
'LoginLink' => Controller::join_links(Director::absoluteBaseURL(), Config::inst()->get('Security', 'login_url'), $backURL),
'LogoutLink' => Controller::join_links(Director::absoluteBaseURL() . 'Security/logout', $backURL),
@ -59,7 +73,7 @@ class BetterNavigatorExtension extends DataExtension {
// 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 $page->renderWith('BetterNavigator\\BetterNavigator');
}
return false;
}

View File

@ -45,7 +45,7 @@
</div>
<% include BetterNavigatorExtraContent %>
<% include BetterNavigator\BetterNavigatorExtraContent %>
<% if $BetterNavigator.Mode=='dev' || $BetterNavigator.IsDeveloper %>
@ -65,7 +65,7 @@
</div>
<% include BetterNavigatorExtraDevTools %>
<% include BetterNavigator\BetterNavigatorExtraDevTools %>
<div class="bn-heading">Debugging</div>
@ -81,7 +81,7 @@
</div>
<% include BetterNavigatorExtraDebugging %>
<% include BetterNavigator\BetterNavigatorExtraDebugging %>
<% end_if %>