fromholdio/silverstripe-systemlinks

A SilverStripe module that allows developers to define a static list of "system links" - login, logout, lostpassword, etc - and expose these for use in both back-end and templates.

Installs: 1 023

Dependents: 0

Suggesters: 1

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0

Type:silverstripe-vendormodule

1.4.0 2023-09-03 14:52 UTC

This package is auto-updated.

Last update: 2024-02-03 00:11:21 UTC


README

A SilverStripe module that allows developers to define a static list of "system links" - login, logout, lostpassword, etc - and expose these for use in both back-end and templates.

Integrate this with functionality that already allows users to build links, like Linkable/etc, to also let users build links to these outside-of-site-tree targets.

Requirements

SilverStripe 4 or 5

Installation

composer require fromholdio/silverstripe-systemlinks

No links are setup by default - to complete the install, you need to setup your links config:

Fromholdio\SystemLinks\SystemLinks:
  links:
    login:
      url: /Security/login
      title: Login
    logout:
      url: /Security/logout
      title: Logout
    lostpassword:
      url: /Security/lostpassword
      title: Lost Password
    cmsadmin:
      url: /admin
      title: 'CMS Admin'
    someotherroute:
      url: /could-also-be-absolute-url
      title: 'Some other route'

Usage example

Documentation will be forthcoming, but also, it's just one class and pretty lean. Check the class itself to see all options at the moment.

Key uses are below:

Use to fuel values in a dropdown

DropdownField::create(
    'SystemLinkKey',
    'System Link',
    SystemLinks::get_map()
);

Get link value from saved key

$key = $this->SystemLinkKey;

// This returns an ArrayData object
$link = SystemLinks::get_link($key);  
$linkTitle = $link->Title;
$linkURL = $link->URL;

// Alternatively, get link as simple array
$linkArr = SystemLinks::get_raw_link($key);
$linkTitle = $linkArr['title'];
$linkURL = $linkArr['url'];

Get link for use in template .ss file

// $SystemLink is available in templates globally
// It requires a link key to be supplied
<h2>$SystemLink('login').URL</h2>
<h2>$SystemLink('lostpassword').Title</h2>