diff --git a/syntax.php b/syntax.php
index 851d4a3..9554bc1 100644
--- a/syntax.php
+++ b/syntax.php
@@ -7,130 +7,138 @@
*/
// must be run within DokuWiki
-if (!defined ('DOKU_INC')) die();
+if (!defined('DOKU_INC')) die();
-if (!defined ('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
+if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
require_once DOKU_PLUGIN . 'syntax.php';
// TODO migrate this to composer
-require_once dirname (__FILE__) . DIRECTORY_SEPARATOR . 'objectrepresentation' . DIRECTORY_SEPARATOR . 'DokuWikiObjectRepresentation.class.php';
+require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'objectrepresentation' . DIRECTORY_SEPARATOR . 'DokuWikiObjectRepresentation.class.php';
/**
* All DokuWiki plugins to extend the parser/rendering mechanism
* need to inherit from this class
*/
-class syntax_plugin_navigation extends DokuWiki_Syntax_Plugin {
+class syntax_plugin_navigation extends DokuWiki_Syntax_Plugin
+{
- // TODO add a config option for this
- private $maxDepth = 3;
- private $depth = 0;
+ // TODO add a config option for this
+ private $maxDepth = 3;
+ private $depth = 0;
- function getInfo () {
- return array ('author' => 'Tim Schumacher',
- 'email' => 'tim@bandenkrieg.hacked.jp',
- 'date' => '2013-11-12',
- 'name' => 'Navigation',
- 'desc' => 'A Navigation that uses the object representation class',
- 'url' => 'https://bk-dev.hacked.jp/project/view/3/');
- }
-
- function getType () {
- return 'substition';
- }
-
- function getSort () {
- return 32;
- }
-
- function connectTo ($mode) {
- $this->Lexer->addSpecialPattern('{{indexmenu_n>.+?}}',$mode,'plugin_navigation');
- $this->Lexer->addSpecialPattern ('\[Navigation\]', $mode, 'plugin_navigation');
- }
-
- function handle ($match, $state, $pos, &$handler) {
- return array ($match, $state, $pos);
- }
-
- function render ($mode, &$renderer, $data) {
- if (preg_match('/{{indexmenu_n>(\d+)}}/',$data[0],$matches)) {
- global $ACT, $INFO;
- if($INFO['isadmin'] && $ACT == 'show') {
- ptln('
');
- ptln('Sortorder for this node: '.$matches[1]);
- ptln('
');
- }
- return false;
- }
- $iter = new DokuWikiIterator();
-
- $iter->all(function(DokuWikiNode $node) {
- if (preg_match('/{{indexmenu_n>(\d+)}}/',$node->getContent(),$matches)) {
- $node->setMetaData('sortorder',$matches[1]);
- } else {
- $node->setMetaData('sortorder',9999999);
- }
- });
-
- $iter->all(function(DokuWikiNode $node){
- if ($node instanceof DokuWikiNameSpace) {
- $node->nodes->uasort(function(DokuWikiNode $a,DokuWikiNode $b){
- if ($a->getMetaData('sortorder') == $b->getMetaData('sortorder')) {
- return 0;
- }
- return ($a->getMetaData('sortorder') < $b->getMetaData('sortorder')) ? -1 : 1;
- });
- }
- });
-
- $root = $iter->getRoot();
- $content = '';
- if ($root instanceof DokuWikiNameSpace) {
- $nodes = $root->getNodes();
- if ($nodes->count() > 0) {
- $content .= '';
- $content .= $this->RenderNodes($root);
- $content .= '
';
- }
+ function getInfo()
+ {
+ return array('author' => 'Tim Schumacher',
+ 'email' => 'tim@bandenkrieg.hacked.jp',
+ 'date' => '2013-11-12',
+ 'name' => 'Navigation',
+ 'desc' => 'A Navigation that uses the object representation class',
+ 'url' => 'https://bk-dev.hacked.jp/project/view/3/');
}
- // $data is what the function handle return'ed.
- if ($mode == 'xhtml') {
- $renderer->doc .= $content;
- return true;
+ function getType()
+ {
+ return 'substition';
}
- return false;
- }
- private function RenderNodes(DokuWikiNameSpace $node) {
- $this->depth++;
- $output = '';
- foreach ($node->getNodes() as $node) {
- /** @var DokuWikiNode $node */
- if ($node->getName() == 'start')
- continue;
- $title = (strlen($node->getMetaData('title')) > 0 ? $node->getMetaData('title') : $node->getName());
- $access = auth_quickaclcheck($node->getFullID());
- if ($node instanceof DokuWikiPage) {
- if ($access > 0) {
- $output .= '' . $title . '' . PHP_EOL;
- }
+ function getSort()
+ {
+ return 32;
+ }
- } else if($node instanceof DokuWikiNameSpace) {
- /** @var DokuWikiNameSpace $node */
- if ($this->depth <= $this->maxDepth) {
- if ($access > 0) {
- // lets check if the the namespace has a startpage and if yes link to it
- if ($start = $node->hasChild('start')) {
- $access = auth_quickaclcheck($start->getFullID());
- if ($access > 0) {
- $title = '' . (strlen($node->getMetaData('title')) > 0 ? $node->getMetaData('title') : $node->getName()) . '';
- }
+ function connectTo($mode)
+ {
+ $this->Lexer->addSpecialPattern('{{indexmenu_n>.+?}}', $mode, 'plugin_navigation');
+ $this->Lexer->addSpecialPattern('\[Navigation\]', $mode, 'plugin_navigation');
+ }
+
+ function handle($match, $state, $pos, &$handler)
+ {
+ return array($match, $state, $pos);
+ }
+
+ function render($mode, &$renderer, $data)
+ {
+ if (preg_match('/{{indexmenu_n>(\d+)}}/', $data[0], $matches)) {
+ global $ACT, $INFO;
+ if ($INFO['isadmin'] && $ACT == 'show') {
+ ptln('');
+ ptln('Sortorder for this node: ' . $matches[1]);
+ ptln('
');
}
- $output .= '' . $title . '' . $this->RenderNodes($node) . '
' . PHP_EOL;
- }
+ return false;
}
- }
+ $iter = new DokuWikiIterator();
+
+ $iter->all(function (DokuWikiNode $node) {
+ if (preg_match('/{{indexmenu_n>(\d+)}}/', $node->getContent(), $matches)) {
+ $node->setMetaData('sortorder', $matches[1]);
+ } else {
+ $node->setMetaData('sortorder', 9999999);
+ }
+ });
+
+ $iter->all(function (DokuWikiNode $node) {
+ if ($node instanceof DokuWikiNameSpace) {
+ $node->nodes->uasort(function (DokuWikiNode $a, DokuWikiNode $b) {
+ if ($a->getMetaData('sortorder') == $b->getMetaData('sortorder')) {
+ return 0;
+ }
+ return ($a->getMetaData('sortorder') < $b->getMetaData('sortorder')) ? -1 : 1;
+ });
+ }
+ });
+
+ $root = $iter->getRoot();
+ $content = '';
+ if ($root instanceof DokuWikiNameSpace) {
+ $nodes = $root->getNodes();
+ if ($nodes->count() > 0) {
+ $content .= '';
+ $content .= $this->RenderNodes($root);
+ $content .= '
';
+ }
+ }
+
+ // $data is what the function handle return'ed.
+ if ($mode == 'xhtml') {
+ $renderer->doc .= $content;
+ return true;
+ }
+ return false;
+ }
+
+ private function RenderNodes(DokuWikiNameSpace $node)
+ {
+ $this->depth++;
+ $output = '';
+ foreach ($node->getNodes() as $node) {
+ /** @var DokuWikiNode $node */
+ if ($node->getName() == 'start')
+ continue;
+ $title = (strlen($node->getMetaData('title')) > 0 ? $node->getMetaData('title') : $node->getName());
+ $access = auth_quickaclcheck($node->getFullID());
+ if ($node instanceof DokuWikiPage) {
+ if ($access > 0) {
+ $output .= '' . $title . '' . PHP_EOL;
+ }
+
+ } else if ($node instanceof DokuWikiNameSpace) {
+ /** @var DokuWikiNameSpace $node */
+ if ($this->depth <= $this->maxDepth) {
+ if ($access > 0) {
+ // lets check if the the namespace has a startpage and if yes link to it
+ if ($start = $node->hasChild('start')) {
+ $access = auth_quickaclcheck($start->getFullID());
+ if ($access > 0) {
+ $title = '' . (strlen($node->getMetaData('title')) > 0 ? $node->getMetaData('title') : $node->getName()) . '';
+ }
+ }
+ $output .= '' . $title . '' . $this->RenderNodes($node) . '
' . PHP_EOL;
+ }
+ }
+ }
+ }
+ return $output;
}
- return $output;
- }
}
\ No newline at end of file