Mercurial > hg > isophonics-drupal-site
diff core/modules/toolbar/js/escapeAdmin.es6.js @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/toolbar/js/escapeAdmin.es6.js Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,43 @@ +/** + * @file + * Replaces the home link in toolbar with a back to site link. + */ + +(function ($, Drupal, drupalSettings) { + const pathInfo = drupalSettings.path; + const escapeAdminPath = sessionStorage.getItem('escapeAdminPath'); + const windowLocation = window.location; + + // Saves the last non-administrative page in the browser to be able to link + // back to it when browsing administrative pages. If there is a destination + // parameter there is not need to save the current path because the page is + // loaded within an existing "workflow". + if (!pathInfo.currentPathIsAdmin && !/destination=/.test(windowLocation.search)) { + sessionStorage.setItem('escapeAdminPath', windowLocation); + } + + /** + * Replaces the "Home" link with "Back to site" link. + * + * Back to site link points to the last non-administrative page the user + * visited within the same browser tab. + * + * @type {Drupal~behavior} + * + * @prop {Drupal~behaviorAttach} attach + * Attaches the replacement functionality to the toolbar-escape-admin element. + */ + Drupal.behaviors.escapeAdmin = { + attach() { + const $toolbarEscape = $('[data-toolbar-escape-admin]').once('escapeAdmin'); + if ($toolbarEscape.length && pathInfo.currentPathIsAdmin) { + if (escapeAdminPath !== null) { + $toolbarEscape.attr('href', escapeAdminPath); + } + else { + $toolbarEscape.text(Drupal.t('Home')); + } + } + }, + }; +}(jQuery, Drupal, drupalSettings));