added support for the sitemapnavi plugin
When installed the navigation can be switched between the default sidebar based navigation and the site tree
This commit is contained in:
parent
44cab59726
commit
c1e0eaa830
8 changed files with 113 additions and 16 deletions
80
Template.php
80
Template.php
|
@ -11,15 +11,19 @@ namespace dokuwiki\template\sprintdoc;
|
|||
*/
|
||||
class Template {
|
||||
|
||||
/**
|
||||
* @var array loaded plugins
|
||||
*/
|
||||
/** @var array loaded plugins */
|
||||
protected $plugins = array(
|
||||
'sqlite' => null,
|
||||
'tagging' => null,
|
||||
'magicmatcher' => null,
|
||||
'tplinc' => null,
|
||||
'sitemapnavi' => null,
|
||||
);
|
||||
|
||||
/** @var string the type of special navigation to use */
|
||||
protected $nav = '';
|
||||
|
||||
|
||||
/**
|
||||
* Get the singleton instance
|
||||
*
|
||||
|
@ -36,12 +40,26 @@ class Template {
|
|||
*/
|
||||
protected function __construct() {
|
||||
$this->initializePlugins();
|
||||
$this->initNavigationCookie();
|
||||
|
||||
/** @var \Doku_Event_Handler */
|
||||
global $EVENT_HANDLER;
|
||||
$EVENT_HANDLER->register_hook('PLUGIN_TPLINC_LOCATIONS_SET', 'BEFORE', $this, 'registerIncludes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Load all the plugins we support directly
|
||||
*/
|
||||
protected function initializePlugins() {
|
||||
$this->plugins['sqlite'] = plugin_load('helper', 'sqlite');
|
||||
if($this->plugins['sqlite']) {
|
||||
$this->plugins['tagging'] = plugin_load('helper', 'tagging');
|
||||
$this->plugins['magicmatcher'] = plugin_load('syntax', 'magicmatcher_issuelist');
|
||||
}
|
||||
$this->plugins['tplinc'] = plugin_load('helper', 'tplinc');
|
||||
$this->plugins['sitemapnavi'] = plugin_load('helper', 'sitemapnavi');
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes include position info available to the tplinc plugin
|
||||
*
|
||||
|
@ -71,15 +89,57 @@ class Template {
|
|||
}
|
||||
|
||||
/**
|
||||
* Load all the plugins we support directly
|
||||
* Sets a cookie to remember the requested special navigation
|
||||
*/
|
||||
protected function initializePlugins() {
|
||||
$this->plugins['sqlite'] = plugin_load('helper', 'sqlite');
|
||||
if($this->plugins['sqlite']) {
|
||||
$this->plugins['tagging'] = plugin_load('helper', 'tagging');
|
||||
$this->plugins['magicmatcher'] = plugin_load('syntax', 'magicmatcher_issuelist');
|
||||
protected function initNavigationCookie() {
|
||||
if ($this->plugins['sitemapnavi'] === null) return;
|
||||
global $INPUT;
|
||||
|
||||
$nav = $INPUT->str('nav');
|
||||
if($nav) {
|
||||
set_doku_pref('nav', $nav);
|
||||
$this->nav = $INPUT->str('nav');
|
||||
} else {
|
||||
$this->nav = get_doku_pref('nav', 'sidebar');
|
||||
}
|
||||
$this->plugins['tplinc'] = plugin_load('helper', 'tplinc');
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the navigation for the sidebar
|
||||
*
|
||||
* Defaults to the standard sidebar mechanism, but supports also the sitemapnavi plugin
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getNavigation() {
|
||||
global $ID;
|
||||
global $conf;
|
||||
|
||||
// add tabs if multiple navigation types available
|
||||
$header = '';
|
||||
if ($this->plugins['sitemapnavi'] !== null) {
|
||||
$header = '<ul class="sidebar-tabs">';
|
||||
$header .= '<li class="' . ($this->nav === 'sidebar' ? 'active' : '') . '">' .
|
||||
'<a href="' . wl($ID, ['nav' => 'sidebar']) . '">'.tpl_getLang('nav_sidebar').'</a></li>';
|
||||
$header .= '<li class="' . ($this->nav === 'sitemap' ? 'active' : '') . '">' .
|
||||
'<a href="' . wl($ID, ['nav' => 'sitemap']) . '">'.tpl_getLang('nav_sitemap').'</a></li>';
|
||||
$header .= '</ul>';
|
||||
}
|
||||
|
||||
// decide what to show
|
||||
if ($this->nav === 'sitetree') {
|
||||
// site tree created by sitemapnavi plugin
|
||||
$nav = '<nav class="nav-sitemapnavi" id="plugin__sitemapnavi">';
|
||||
$nav .= $this->plugins['sitemapnavi']->getSiteMap(':');
|
||||
$nav .= '</nav>';
|
||||
} else {
|
||||
// main navigation, loaded from standard sidebar, fixed up by javascript
|
||||
$nav = '<nav class="nav-main">';
|
||||
$nav .= tpl_include_page($conf['sidebar'], false, true);
|
||||
$nav .= '</nav>';
|
||||
}
|
||||
|
||||
return $header . $nav;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
19
css/area_main-sidebar-tabs.less
Normal file
19
css/area_main-sidebar-tabs.less
Normal file
|
@ -0,0 +1,19 @@
|
|||
#dokuwiki__aside ul.sidebar-tabs {
|
||||
margin-top: 0;
|
||||
margin-bottom: @nav-margin;
|
||||
|
||||
border-bottom: 1px solid @ini_nav_menu_color;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
border: 1px solid @ini_nav_menu_color;
|
||||
padding: 0.25em 0.5em;
|
||||
margin-bottom: -1px;
|
||||
border-top-right-radius: @fix_border-radius;
|
||||
border-top-left-radius: @fix_border-radius;
|
||||
|
||||
&.active {
|
||||
border-bottom: 1px solid @ini_background_site;
|
||||
}
|
||||
}
|
||||
}
|
10
css/plugins/sitemapnavi.less
Normal file
10
css/plugins/sitemapnavi.less
Normal file
|
@ -0,0 +1,10 @@
|
|||
#plugin__sitemapnavi {
|
||||
padding-left: @nav-margin*2.5;
|
||||
padding-bottom: @nav-margin;
|
||||
margin-bottom: @nav-margin;
|
||||
border-bottom: 1px solid @ini_nav_menu_color;
|
||||
|
||||
li {
|
||||
line-height: @line-height-bigger;
|
||||
}
|
||||
}
|
|
@ -59,6 +59,10 @@ $lang['image_detail'] = 'Detailinformationen zum Bild';
|
|||
$lang['mode_edit'] = 'Seite bearbeiten';
|
||||
|
||||
|
||||
$lang['nav_sidebar'] = 'Navigation';
|
||||
$lang['nav_sitemap'] = 'Seitenbaum';
|
||||
|
||||
|
||||
/**
|
||||
* preferences colors
|
||||
*/
|
||||
|
|
|
@ -59,6 +59,9 @@ $lang['image_detail'] = 'image details';
|
|||
$lang['mode_edit'] = 'Editing Page';
|
||||
|
||||
|
||||
$lang['nav_sidebar'] = 'Navigation';
|
||||
$lang['nav_sitemap'] = 'Site Tree';
|
||||
|
||||
/**
|
||||
* preferences colors
|
||||
*/
|
||||
|
|
1
main.php
1
main.php
|
@ -9,6 +9,7 @@
|
|||
*/
|
||||
|
||||
use dokuwiki\template\sprintdoc\Template;
|
||||
Template::getInstance();
|
||||
|
||||
if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
|
||||
header('X-UA-Compatible: IE=edge,chrome=1');
|
||||
|
|
|
@ -70,6 +70,7 @@ css/area_nav-usertools.less = all
|
|||
css/area_nav-pagetools.less = all
|
||||
css/area_nav-metabox.less = all
|
||||
css/area_main-sidebar-nav.less = all
|
||||
css/area_main-sidebar-tabs.less = all
|
||||
css/area_main-sidebar-search.less = all
|
||||
css/area_main-content.less = all
|
||||
css/area_main-content-secedit.less = all
|
||||
|
@ -109,7 +110,7 @@ css/plugins/folded.less = all
|
|||
css/plugins/configmanager.less = all
|
||||
css/plugins/starred.less = all
|
||||
css/plugins/quicksubscribe.less = all
|
||||
|
||||
css/plugins/sitemapnavi.less = all
|
||||
css/plugins/data.less = all
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<nav class="nav-main">
|
||||
<?php /* main navigation, loaded from sidebar, fixed up by javascript */
|
||||
tpl_include_page($conf['sidebar'], 1, 1);
|
||||
?>
|
||||
</nav>
|
||||
|
||||
<?php
|
||||
echo \dokuwiki\template\sprintdoc\Template::getInstance()->getNavigation();
|
||||
?>
|
||||
|
||||
<nav class="nav-sitetools">
|
||||
<div class="nav"><a href="#sidebar-site-tools" role="heading" aria-level="2">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue