diff options
author | Yves Fischer <yvesf-git@xapek.org> | 2011-10-16 22:11:40 +0200 |
---|---|---|
committer | Yves Fischer <yvesf-git@xapek.org> | 2011-10-16 22:14:58 +0200 |
commit | ca0645e63d39c8cb67423ef76f0415fc09d2aca4 (patch) | |
tree | e702ccee04bc6566fc34532f791b7f501a7d4df1 /action.php | |
parent | eb26ead488d64ffd2e9dd02d665450c6489b39b7 (diff) | |
download | dokuwiki-plugin-treenav-ca0645e63d39c8cb67423ef76f0415fc09d2aca4.tar.gz dokuwiki-plugin-treenav-ca0645e63d39c8cb67423ef76f0415fc09d2aca4.zip |
Page Preferences (~~key:val~~), source modelines
Diffstat (limited to 'action.php')
-rw-r--r-- | action.php | 193 |
1 files changed, 100 insertions, 93 deletions
@@ -1,117 +1,124 @@ <?php /** * Simple Tree Navigation Plugin - * * @author Yves Fischer <yvesf-git@xapek.org> - */ - + */ if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once DOKU_PLUGIN.'action.php'; function search_namespaces1(&$data,$base,$file,$type,$lvl,$opts){ - $opts['listdirs'] = true; - $opts['depth'] = 1; - return search_universal($data,$base,$file,$type,$lvl,$opts); + $opts['listdirs'] = true; + $opts['depth'] = 1; + return search_universal($data,$base,$file,$type,$lvl,$opts); } class NamespaceNode { - public $name; - public $level; - public function __construct($name, $level) { - $this->name = $name; - $this->level = $level; - } - - public function getPages() { - global $conf; - $data = array(); - search($data,$conf['datadir'], 'search_list', array(), str_replace(':','/', $this->name)); - return $data; - } - - public function getChildren() { - global $conf; - $data = array(); - $childs = array(); - search($data,$conf['datadir'], 'search_namespaces1', array(), str_replace(':', '/', $this->name)); - foreach ($data as $ns) { - $childs[] = new NamespaceNode($ns['id'], $this->level+1); + public $name; + public $level; + public function __construct($name, $level) { + $this->name = $name; + $this->level = $level; + } + + public function getPages() { + global $conf; + $data = array(); + search($data,$conf['datadir'], 'search_list', array(), str_replace(':','/', $this->name)); + return $data; + } + + public function getChildren() { + global $conf; + $data = array(); + $childs = array(); + search($data,$conf['datadir'], 'search_namespaces1', array(), str_replace(':', '/', $this->name)); + foreach ($data as $ns) { + $childs[] = new NamespaceNode($ns['id'], $this->level+1); + } + return $childs; } - return $childs; - } } class action_plugin_treenav extends DokuWiki_Action_Plugin { - function register(&$controller) { - $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, - '_before_page'); - $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, - '_after_page'); - - } - - function _after_page(&$event, $param) { - echo '</div>' . DOKU_LF; - } - - function _before_page(&$event, $param) { - global $ID; - $root = new NamespaceNode('',0); - $renderer =& p_get_renderer('xhtml'); - $renderer->listu_open(); - $this->_print($root, $renderer); - $renderer->listu_close(); - - echo '<div class="treenav">' . DOKU_LF . $renderer->doc . DOKU_LF . '</div>'; - echo '<div class="page__inner">' . DOKU_LF; - } - - function _print($node, &$renderer) { - global $ID; - foreach ($node->getChildren() as $child) { - foreach ($child->getPages() as $page) { - if (noNS($page['id']) === 'start') { - $renderer->listitem_open(); - $renderer->cdata('>'); - $this->_renderPagelink($page['id'], $renderer); - if (strpos(getNS($ID), $child->name) === 0) { - // Recursive Call with Sub-Namespace that contains - // current Page ($ID) - $renderer->listu_open(); - $this->_print($child, $renderer); - $renderer->listu_close(); - } - $renderer->listitem_close(); - } - } + function register(&$controller) { + $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, + '_before_page'); + $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, + '_after_page'); + } - foreach ($node->getPages() as $page) { - if (noNS($page['id']) == 'start' && getNS($page['id']) != '') - continue; - $renderer->listitem_open(); - $this->_renderPagelink($page['id'], $renderer); - $renderer->listitem_close(); + function _after_page(&$event, $param) { + echo '</div>' . DOKU_LF; } - } - - function _renderPagelink($id, &$renderer) { - $id = ':' . cleanID($id); - $options = p_get_metadata($id, 'treenav', true); - if ($options['icon']) { - $mediaid = resolve_mediaid(getNS($id), $options['icon'], $exists); - if ($exists) { - $renderer->_media($mediaid, NULL, NULL, 32, 32); - } + + function _before_page(&$event, $param) { + global $ID; + $root = new NamespaceNode('',0); + $renderer =& p_get_renderer('xhtml'); + $renderer->listu_open(); + $this->_print($root, $renderer); + $renderer->listu_close(); + + echo '<div class="treenav">' . DOKU_LF . $renderer->doc . DOKU_LF . '</div>'; + echo '<div class="page__inner">' . DOKU_LF; } - if ($options['title']) { - $title = $options['title']; - } else { - $title = p_get_first_heading($id); + + function _print($node, &$renderer) { + global $ID; + foreach ($node->getChildren() as $child) { + foreach ($child->getPages() as $page) { + if (noNS($page['id']) === 'start') { + $renderer->listitem_open(); + $renderer->cdata('>'); + $this->_renderPagelink($page['id'], $renderer); + if (strpos(getNS($ID), $child->name) === 0) { + // Recursive Call with Sub-Namespace that contains + // current Page ($ID) + $renderer->listu_open(); + $this->_print($child, $renderer); + $renderer->listu_close(); + } + $renderer->listitem_close(); + } + } + } + + foreach ($node->getPages() as $page) { + if (noNS($page['id']) == 'start' && getNS($page['id']) != '') + continue; + $renderer->listitem_open(); + $this->_renderPagelink($page['id'], $renderer); + $renderer->listitem_close(); + } } - $renderer->internallink($id, $title); - } + function _renderPagelink($id, &$renderer) { + $id = ':' . cleanID($id); + $options = p_get_metadata($id, 'treenav', true); + if ($options['icon']) { + $iconID = $options['icon']; + resolve_mediaid(getNS($id), $iconID, $exists); + if ($exists) { + $renderer->doc .= $renderer->_media($iconID, NULL, NULL, 16, 16); + } + } + if ($options['title']) { + $title = $options['title']; + } else { + $title = p_get_first_heading($id); + } + + $renderer->internallink($id, $title); + } } + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ +/* Local Variables: */ +/* tab-width: 4 */ +/* indent-tabs-mode: nil */ +/* c-basic-offset: 4 */ +/* End: */
\ No newline at end of file |