From cb7cc643bf8e0ff0a632314222134a32ded8ae21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gro=C3=9Fe?= Date: Wed, 12 Apr 2017 13:35:33 +0200 Subject: [PATCH 1/4] Make sidebar toggle elements configurable Current options are h1, h1 and h2, h1-h5, top-level list items SPR-754 --- conf/default.php | 10 +--------- conf/metadata.php | 21 +++++++++------------ css/area_main-sidebar-nav.less | 5 +++++ js/sidebar.js | 6 +++++- lang/de/settings.php | 4 ---- lang/en/settings.php | 9 +++++---- main.php | 6 ++++++ 7 files changed, 31 insertions(+), 30 deletions(-) diff --git a/conf/default.php b/conf/default.php index 108f53a..9f1418e 100755 --- a/conf/default.php +++ b/conf/default.php @@ -4,13 +4,5 @@ * */ -$conf['logo'] = 'wiki:logo.png'; -$conf['mobile_logo'] = 'images/fav/favicon-32x32.png'; +$conf['sidebar_sections'] = 'h1,h2,h3,h4,h5'; -$conf['logo_spacer'] = 'logo_spacer.png'; - -$conf['discussionPage'] = 'discussion:@ID@'; -$conf['userPage'] = 'user:@USER@:'; -$conf['user_ns'] = 'user'; -$conf['hideTools'] = 0; -$conf['tasks_page'] = 'dashboard'; diff --git a/conf/metadata.php b/conf/metadata.php index f0f0808..274f7c5 100755 --- a/conf/metadata.php +++ b/conf/metadata.php @@ -1,14 +1,11 @@ array( + 'h1', + 'h1,h2', + 'h1,h2,h3,h4,h5', + 'li.level1 > .li', + ), + ); diff --git a/css/area_main-sidebar-nav.less b/css/area_main-sidebar-nav.less index 681dd4d..b7e9984 100755 --- a/css/area_main-sidebar-nav.less +++ b/css/area_main-sidebar-nav.less @@ -31,6 +31,11 @@ > div { color: @ini_text_webframe; } + + &.toggler { + list-style: none; + margin-left: 0; + } } } diff --git a/js/sidebar.js b/js/sidebar.js index c7d1104..66f1015 100644 --- a/js/sidebar.js +++ b/js/sidebar.js @@ -57,7 +57,7 @@ jQuery(function () { var $main = $nav.find('nav.nav-main'); if (!$main.length) return; - var ELEMENT = 'h1,h2,h3,h4,h5'; // FIXME move to config + var ELEMENT = JSINFO.template.sprintdoc.sidebar_toggle_elements; var $elements = $main.find(ELEMENT); $elements.each(function () { var $me = jQuery(this), @@ -98,6 +98,10 @@ jQuery(function () { // replace element with toggler $me.replaceWith($toggler); + + if ($toggler.parent('li').length) { + $toggler.parent('li').addClass('toggler'); + } }); }, diff --git a/lang/de/settings.php b/lang/de/settings.php index e6430be..3b4981c 100755 --- a/lang/de/settings.php +++ b/lang/de/settings.php @@ -4,7 +4,3 @@ * */ -$lang['discussionPage'] = 'Diskussion-Seite (leer lassen, um Funktion zu deaktivieren)'; -$lang['userPage'] = 'Benutzer seite (leer lassen, um Funktion zu deaktivieren)'; -$lang['hideTools'] = 'Tools abschalten, wenn der Benutzer nicht angemeldet ist?'; -$lang['user_ns'] = 'Ort an dem Nutzerseiten gespeichert werden'; diff --git a/lang/en/settings.php b/lang/en/settings.php index 4e9d810..ebd2e4f 100755 --- a/lang/en/settings.php +++ b/lang/en/settings.php @@ -4,7 +4,8 @@ * */ -$lang['discussionPage'] = 'Discussion page (leave empty to disable discussions)'; -$lang['userPage'] = 'User page (leave empty to disable user pages)'; -$lang['hideTools'] = 'Hide tools when not logged in?'; -$lang['user_ns'] = 'Where to store user pages.'; +$lang['sidebar_sections'] = 'Auto-toggle the sidebar into sections on these elements:'; +$lang['sidebar_sections_o_h1'] = '1st order headings'; +$lang['sidebar_sections_o_h1,h2'] = '1st and 2nd order headings'; +$lang['sidebar_sections_o_h1,h2,h3,h4,h5'] = 'All headings'; +$lang['sidebar_sections_o_li.level1 > .li'] = 'Top-level list items'; diff --git a/main.php b/main.php index ee84e6e..f4d2ee8 100755 --- a/main.php +++ b/main.php @@ -14,6 +14,12 @@ use dokuwiki\template\sprintdoc\Template; if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */ header('X-UA-Compatible: IE=edge,chrome=1'); +global $JSINFO; +if (empty($JSINFO['template'])) { + $JSINFO['template'] = array(); +} +$JSINFO['template']['sprintdoc'] = array('sidebar_toggle_elements' => tpl_getConf('sidebar_sections')); + $showTools = !tpl_getConf('hideTools') || ( tpl_getConf('hideTools') && !empty($_SERVER['REMOTE_USER']) ); $showSidebar = true; /* */ ?> From 2bd7f884e5ee5bd5b1549e54dc052d1eb00437cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gro=C3=9Fe?= Date: Wed, 12 Apr 2017 17:13:56 +0200 Subject: [PATCH 2/4] Remember sidebar section state when browsing the wiki So we do not have to open the same section of the sidebar every time, we click a link to a new page. It forgets the toggle-state if the content is manually or automatically widened, for example by clicking on an edit-button. SPR-883 --- js/sidebar.js | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/js/sidebar.js b/js/sidebar.js index 66f1015..56bd928 100644 --- a/js/sidebar.js +++ b/js/sidebar.js @@ -11,6 +11,20 @@ jQuery(function () { var setWideContent = function () { $nav.find('div.nav-panel').hide(); // close all panels jQuery('body').addClass('wide-content'); + removeToggleStorage(); + }, + + /** + * removes information about the toggle-state + */ + removeToggleStorage = function () { + for (var index=0; index <= sessionStorage.length; index += 1) { + var item = sessionStorage.getItem('sidebar-section-' + index + '-open'); + if (!item) { + break; + } + sessionStorage.removeItem('sidebar-section-' + index + '-open'); + } }, /** @@ -46,6 +60,7 @@ jQuery(function () { focusFirstSubLink($panel); } }); + sessionStorage.setItem('sidebar-section-' + $toggler.data('index') + '-open', !isOpen); }, /** @@ -57,9 +72,13 @@ jQuery(function () { var $main = $nav.find('nav.nav-main'); if (!$main.length) return; + if(jQuery('body').hasClass('wide-content')) { + removeToggleStorage(); + } + var ELEMENT = JSINFO.template.sprintdoc.sidebar_toggle_elements; var $elements = $main.find(ELEMENT); - $elements.each(function () { + $elements.each(function (index) { var $me = jQuery(this), // prepare text and the optional icon @@ -83,6 +102,7 @@ jQuery(function () { .text(text) .wrapInner('') .prepend($icon) + .data('index', index) ; // wrap all following siblings til the next element in a wrapper @@ -102,6 +122,11 @@ jQuery(function () { if ($toggler.parent('li').length) { $toggler.parent('li').addClass('toggler'); } + + if (sessionStorage.getItem('sidebar-section-' + index + '-open') === 'true') { + $wrap.css('display', 'block'); + } + }); }, From e302d67fb601311046a86f685e4d745f7d8a7e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gro=C3=9Fe?= Date: Tue, 18 Apr 2017 13:24:33 +0200 Subject: [PATCH 3/4] Remove references to removed options In commit cb7cc643bf8e0ff0a632314222134a32ded8ae21 the other options were removed, as discussed. This commit now removes references to these options from the codebase. SPR-754 --- Template.php | 4 ++-- main.php | 6 +++--- tpl/favicon_tiles.php | 10 +++++----- tpl/nav-usertools-buttons.php | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Template.php b/Template.php index 7eae3ae..df7ef52 100644 --- a/Template.php +++ b/Template.php @@ -181,7 +181,7 @@ class Template { 'img', array( 'class' => 'mobile-hide', - 'src' => array(tpl_getConf('logo'), 'wiki:logo-wide.png', 'wiki:logo.png'), + 'src' => array('wiki:logo-wide.png', 'wiki:logo.png'), 'alt' => $title, ), 0, 0 @@ -190,7 +190,7 @@ class Template { 'img', array( 'class' => 'mobile-only', - 'src' => array('wiki:logo-32x32.png', 'wiki:favicon.png', 'wiki:logo-square.png', 'wiki:logo.png', tpl_getConf('logo')), + 'src' => array('wiki:logo-32x32.png', 'wiki:favicon.png', 'wiki:logo-square.png', 'wiki:logo.png'), 'alt' => $title, ), 32, 32 diff --git a/main.php b/main.php index 25e0d4d..ea4794e 100755 --- a/main.php +++ b/main.php @@ -20,7 +20,7 @@ if (empty($JSINFO['template'])) { } $JSINFO['template']['sprintdoc'] = array('sidebar_toggle_elements' => tpl_getConf('sidebar_sections')); -$showTools = !tpl_getConf('hideTools') || ( tpl_getConf('hideTools') && !empty($_SERVER['REMOTE_USER']) ); +$showTools = true; $showSidebar = true; /* */ ?> @@ -118,7 +118,7 @@ $classWideContent = ($ACT === "show") ? "": "wide-content "; - + ?>
'shortcut icon', - 'href' => array('wiki:favicon.ico', 'wiki:favicon.png', tpl_getConf('logo')) + 'href' => array('wiki:favicon.ico', 'wiki:favicon.png') ), 0, 0 // no scaling ); @@ -29,7 +29,7 @@ foreach(array(57, 60, 72, 76, 114, 120, 144, 152, 180) as $size) { array( 'rel' => 'apple-touch-icon', 'sizes' => $size . 'x' . $size, - 'href' => array('wiki:logo-' . $size . 'x' . $size . '.png', 'wiki:logo-square.png', 'wiki:logo.png', tpl_getConf('logo')) + 'href' => array('wiki:logo-' . $size . 'x' . $size . '.png', 'wiki:logo-square.png', 'wiki:logo.png') ), $size, $size ); @@ -42,7 +42,7 @@ foreach(array(32, 96, 192) as $size) { array( 'rel' => 'icon', 'sizes' => $size . 'x' . $size, - 'href' => array('wiki:logo-' . $size . 'x' . $size . '.png', 'wiki:logo-square.png', 'wiki:logo.png', tpl_getConf('logo')) + 'href' => array('wiki:logo-' . $size . 'x' . $size . '.png', 'wiki:logo-square.png', 'wiki:logo.png') ), $size, $size ); @@ -54,7 +54,7 @@ foreach(array(70, 310) as $size) { 'meta', array( 'name' => 'msapplication-square' . $size . 'x' . $size . 'logo', - 'content' => array('wiki:logo-' . $size . 'x' . $size . '.png', 'wiki:logo-square.png', 'wiki:logo.png', tpl_getConf('logo')) + 'content' => array('wiki:logo-' . $size . 'x' . $size . '.png', 'wiki:logo-square.png', 'wiki:logo.png') ), $size, $size ); @@ -66,7 +66,7 @@ foreach(array(array(310, 150)) as $size) { 'meta', array( 'name' => 'msapplication-wide' . $size[0] . 'x' . $size[1] . 'logo', - 'content' => array('wiki:logo-' . $size[0] . 'x' . $size[1] . '.png', 'wiki:logo-wide.png', 'wiki:logo.png', tpl_getConf('logo')) + 'content' => array('wiki:logo-' . $size[0] . 'x' . $size[1] . '.png', 'wiki:logo-wide.png', 'wiki:logo.png') ), $size[0], $size[1] ); diff --git a/tpl/nav-usertools-buttons.php b/tpl/nav-usertools-buttons.php index 1caff4c..c780267 100755 --- a/tpl/nav-usertools-buttons.php +++ b/tpl/nav-usertools-buttons.php @@ -32,11 +32,11 @@ $class = 'opentask opentasks'; break; } - $linktarget = tpl_getConf('tasks_page'); + $doInner = "".tpl_getLang('prefix_tasks_user')." ".count($tasks).""; if($linktarget){ if (substr($linktarget, 0, 1) !== ':') { - $linktarget = tpl_getConf('user_ns'). $_SERVER['REMOTE_USER'] .':' . $linktarget; + $linktarget = 'user:' . $_SERVER['REMOTE_USER'] .':' . 'dashboard'; } if($num == 0){ echo '
  • '.$doInner.'
  • '; From 270380eb001a10e985baf59e370be64dabfed1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gro=C3=9Fe?= Date: Tue, 18 Apr 2017 13:48:52 +0200 Subject: [PATCH 4/4] Remove $showTools, because it is set to true Since the config-option for hide-tools no longer exists, this variable has become superflous. --- tpl/nav-page-tools.php | 33 ++++++++++++++++----------------- tpl/nav-usertools-buttons.php | 2 +- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/tpl/nav-page-tools.php b/tpl/nav-page-tools.php index 1cd38a8..c261be0 100755 --- a/tpl/nav-page-tools.php +++ b/tpl/nav-page-tools.php @@ -1,24 +1,23 @@ - - - + ?> + +
    + diff --git a/tpl/nav-usertools-buttons.php b/tpl/nav-usertools-buttons.php index c780267..7c99099 100755 --- a/tpl/nav-usertools-buttons.php +++ b/tpl/nav-usertools-buttons.php @@ -1,7 +1,7 @@ + if ($conf['useacl']): ?>