Merge branch 'toggleConf' into 'master'

Make toggle elements configurable and remember toggle state

See merge request !31
This commit is contained in:
Jana Deutschländer 2017-04-19 10:51:10 +02:00
commit 58370f0332
11 changed files with 86 additions and 61 deletions

View file

@ -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

View file

@ -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';

View file

@ -1,14 +1,11 @@
<?php
/*
* configuration metadata
*
*/
$meta['logo'] = array('string');
$conf['logo_spacer'] = array('string');
$meta['discussionPage'] = array('string');
$meta['userPage'] = array('string');
$conf['user_ns'] = array('string');
$meta['hideTools'] = array('onoff');
$meta['tasks_page'] = array('string');
$meta['sidebar_sections'] = array(
'multichoice',
'_choices' => array(
'h1',
'h1,h2',
'h1,h2,h3,h4,h5',
'li.level1 > .li',
),
);

View file

@ -31,6 +31,11 @@
> div {
color: @ini_text_webframe;
}
&.toggler {
list-style: none;
margin-left: 0;
}
}
}

View file

@ -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;
var ELEMENT = 'h1,h2,h3,h4,h5'; // FIXME move to config
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('<span class="lbl">')
.prepend($icon)
.data('index', index)
;
// wrap all following siblings til the next element in a wrapper
@ -98,6 +118,15 @@ jQuery(function () {
// replace element with toggler
$me.replaceWith($toggler);
if ($toggler.parent('li').length) {
$toggler.parent('li').addClass('toggler');
}
if (sessionStorage.getItem('sidebar-section-' + index + '-open') === 'true') {
$wrap.css('display', 'block');
}
});
},

View file

@ -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';

View file

@ -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';

View file

@ -14,7 +14,13 @@ use dokuwiki\template\sprintdoc\Template;
if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
header('X-UA-Compatible: IE=edge,chrome=1');
$showTools = !tpl_getConf('hideTools') || ( tpl_getConf('hideTools') && !empty($_SERVER['REMOTE_USER']) );
global $JSINFO;
if (empty($JSINFO['template'])) {
$JSINFO['template'] = array();
}
$JSINFO['template']['sprintdoc'] = array('sidebar_toggle_elements' => tpl_getConf('sidebar_sections'));
$showTools = true;
$showSidebar = true; /* */
?>
<html class="edge no-js" lang="<?php echo $conf['lang'] ?>" dir="<?php echo $lang['direction'] ?>">
@ -112,7 +118,7 @@ $classWideContent = ($ACT === "show") ? "": "wide-content ";
</a>
</div>
<?php if (tpl_getConf('logo') && file_exists(mediaFN(tpl_getConf('logo')))){
<?php
/* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + */
@ -120,7 +126,7 @@ $classWideContent = ($ACT === "show") ? "": "wide-content ";
/* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + */
/* upload your logo into the data/media folder (root of the media manager) and replace 'logo.png' in der template config accordingly: */
include('tpl/main-sidebar-logo.php');
} ?>
?>
<div class="main-title">
<?php if ($conf['title']):

View file

@ -17,7 +17,7 @@ echo Template::getResizedImgTag(
'link',
array(
'rel' => '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]
);

View file

@ -1,24 +1,23 @@
<?php
if (!defined('DOKU_INC')) die();
if (!defined('DOKU_INC')) {
die();
}
?>
<?php if ($showTools): ?>
<nav id="dokuwiki__pagetools">
<div class="tools">
<?php include('nav-status.php');?>
<ul>
<?php
$data = dokuwiki\template\sprintdoc\tpl::assemblePageTools();
<nav id="dokuwiki__pagetools">
<div class="tools">
foreach ($data['items'] as $k => $html) {
echo $html;
}
<?php include('nav-status.php'); ?>
<ul>
<?php
$data = dokuwiki\template\sprintdoc\tpl::assemblePageTools();
foreach ($data['items'] as $k => $html) {
echo $html;
}
?>
</ul>
</div>
</nav>
<?php endif; ?>
?>
</ul>
</div>
</nav>

View file

@ -1,7 +1,7 @@
<?php
if (!defined('DOKU_INC')) die();
if ($conf['useacl'] && $showTools): ?>
if ($conf['useacl']): ?>
<nav id="dokuwiki__usertools" class="nav-usertools <?php echo $navClass?>">
<h6 class="sr-only" role="heading" aria-level="2"><?php echo $lang['user_tools']; ?></h6>
@ -32,11 +32,11 @@
$class = 'opentask opentasks';
break;
}
$linktarget = tpl_getConf('tasks_page');
$doInner = "<span class=\"prefix\">".tpl_getLang('prefix_tasks_user')." </span><span class=\"num\">".count($tasks)."</span>";
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 '<li class="user-task '.$class.'"><strong>'.$doInner.'</strong></li>';