Front-end utility menu for SilverStripe websites featuring administration and development tools
Go to file
Michael Nowina-Krowicki 92f3fca5f8 Update demo image
2020-11-27 12:30:28 +10:30
_config Conversion to a Vendor Module (#40) 2018-03-20 12:24:06 -07:00
css Update login functions for SS4 2017-11-20 11:30:11 -08:00
images Update demo image 2020-11-27 12:30:28 +10:30
javascript Don't upgrade logout link if form doesn't exist (#39) 2018-03-19 15:15:46 -07:00
lang Added i18n support (#48) 2020-11-20 15:10:34 -08:00
scss Update login functions for SS4 2017-11-20 11:30:11 -08:00
src/Extension Added i18n support (#48) 2020-11-20 15:10:34 -08:00
templates/BetterNavigator Added i18n support (#48) 2020-11-20 15:10:34 -08:00
.editorconfig Added standard .editorconfig file 2015-12-18 07:15:21 +13:00
composer.json Conversion to a Vendor Module (#40) 2018-03-20 12:24:06 -07:00
config.rb PSR-2 conversion 2015-12-17 15:58:50 -08:00
README.md Update readme 2020-11-27 12:29:56 +10:30

BetterNavigator for Silverstripe

Diagram of module

This module is intended to replicate and expand upon the functionality provided by Silverstripe's built-in SilverStripeNavigator class. It provides a handy front-end menu for CMS users which offers these features:

For Content Authors

  • Indicates to a user that they are logged in
  • Indicates whether they are viewing draft or live content
  • Quickly edit the page you're viewing

For Developers

  • When in Dev Mode links are included for accessing most of Silverstripe's URL Variable Tools
  • Developers can access these tools on a live website by nominating themselves as a developer in the site config

Requirements

Silverstripe 4.0 (3.1+ through previous releases)

Installation

Composer / Packagist (best practice) Add "jonom/silverstripe-betternavigator" to your requirements.

Manually Download, place the folder in your project root, rename it to 'betternavigator' (if applicable) and run a dev/build?flush=1.

How to use

The navigator is auto-injected into your template, and no code changes are needed.

If your website uses caching, make sure BetterNavigator's output is excluded.

Disabling the navigator

You can disable the navigator using your own custom logic by defining a showBetterNavigator(): bool method in any controller with the extension applied.

public function showBetterNavigator()
{
    // A user-defined setting
    return $this->ShowDebugTools;
}

Access developer tools on a live website You can mark certain CMS users as developers in your site's config, so they can access developer tools when logged in. Example YAML:

  BetterNavigator:
    developers:
      - 'dev@yoursite.com'
      - 'otherdev@yoursite.com'

Customisation

BetterNavigator's output is controlled by templates so it can be easily overridden.

Some empty <% include %> placeholders are included to let you easily add more content (new buttons for instance). Just create any of these templates in your theme or app directory and add your content:

  • templates/JonoM/BetterNavigator/Includes/ BetterNavigatorExtraContent.ss
  • templates/JonoM/BetterNavigator/Includes/ BetterNavigatorExtraDebugging.ss
  • templates/JonoM/BetterNavigator/Includes/ BetterNavigatorExtraDevTools.ss

The BetterNavigator.ss template's scope is set to the page that is being viewed, so any methods available in your page controller will be available in the BetterNavigator.ss template. This should allow you to add custom links by page type and introduce complex logic if you want to.

Bonus: better debugging tools

This module provide quick access to Silverstripe's built in URL Variable Tools but reading their output isn't much fun. You can peek under Silverstripe's hood much more conveniently using lekoala's Silverstripe DebugBar

Maintainer contact

Jono Menz

Sponsorship

If you want to boost morale of the maintainer you're welcome to make a small monthly donation through GitHub, or a one time donation through PayPal. ❤️ Thank you!

Please also feel free to get in touch if you want to hire the maintainer to develop a new feature, or discuss another opportunity.