Format the code
This commit is contained in:
parent
ac753695e9
commit
fb1ed3d78e
1 changed files with 115 additions and 107 deletions
58
syntax.php
58
syntax.php
|
@ -7,26 +7,28 @@
|
|||
*/
|
||||
|
||||
// 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;
|
||||
|
||||
function getInfo () {
|
||||
return array ('author' => 'Tim Schumacher',
|
||||
function getInfo()
|
||||
{
|
||||
return array('author' => 'Tim Schumacher',
|
||||
'email' => 'tim@bandenkrieg.hacked.jp',
|
||||
'date' => '2013-11-12',
|
||||
'name' => 'Navigation',
|
||||
|
@ -34,46 +36,51 @@ class syntax_plugin_navigation extends DokuWiki_Syntax_Plugin {
|
|||
'url' => 'https://bk-dev.hacked.jp/project/view/3/');
|
||||
}
|
||||
|
||||
function getType () {
|
||||
function getType()
|
||||
{
|
||||
return 'substition';
|
||||
}
|
||||
|
||||
function getSort () {
|
||||
function getSort()
|
||||
{
|
||||
return 32;
|
||||
}
|
||||
|
||||
function connectTo ($mode) {
|
||||
$this->Lexer->addSpecialPattern('{{indexmenu_n>.+?}}',$mode,'plugin_navigation');
|
||||
$this->Lexer->addSpecialPattern ('\[Navigation\]', $mode, 'plugin_navigation');
|
||||
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 handle($match, $state, $pos, &$handler)
|
||||
{
|
||||
return array($match, $state, $pos);
|
||||
}
|
||||
|
||||
function render ($mode, &$renderer, $data) {
|
||||
if (preg_match('/{{indexmenu_n>(\d+)}}/',$data[0],$matches)) {
|
||||
function render($mode, &$renderer, $data)
|
||||
{
|
||||
if (preg_match('/{{indexmenu_n>(\d+)}}/', $data[0], $matches)) {
|
||||
global $ACT, $INFO;
|
||||
if($INFO['isadmin'] && $ACT == 'show') {
|
||||
if ($INFO['isadmin'] && $ACT == 'show') {
|
||||
ptln('<div class="info">');
|
||||
ptln('Sortorder for this node: '.$matches[1]);
|
||||
ptln('Sortorder for this node: ' . $matches[1]);
|
||||
ptln('</div>');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
$iter = new DokuWikiIterator();
|
||||
|
||||
$iter->all(function(DokuWikiNode $node) {
|
||||
if (preg_match('/{{indexmenu_n>(\d+)}}/',$node->getContent(),$matches)) {
|
||||
$node->setMetaData('sortorder',$matches[1]);
|
||||
$iter->all(function (DokuWikiNode $node) {
|
||||
if (preg_match('/{{indexmenu_n>(\d+)}}/', $node->getContent(), $matches)) {
|
||||
$node->setMetaData('sortorder', $matches[1]);
|
||||
} else {
|
||||
$node->setMetaData('sortorder',9999999);
|
||||
$node->setMetaData('sortorder', 9999999);
|
||||
}
|
||||
});
|
||||
|
||||
$iter->all(function(DokuWikiNode $node){
|
||||
$iter->all(function (DokuWikiNode $node) {
|
||||
if ($node instanceof DokuWikiNameSpace) {
|
||||
$node->nodes->uasort(function(DokuWikiNode $a,DokuWikiNode $b){
|
||||
$node->nodes->uasort(function (DokuWikiNode $a, DokuWikiNode $b) {
|
||||
if ($a->getMetaData('sortorder') == $b->getMetaData('sortorder')) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -101,7 +108,8 @@ class syntax_plugin_navigation extends DokuWiki_Syntax_Plugin {
|
|||
return false;
|
||||
}
|
||||
|
||||
private function RenderNodes(DokuWikiNameSpace $node) {
|
||||
private function RenderNodes(DokuWikiNameSpace $node)
|
||||
{
|
||||
$this->depth++;
|
||||
$output = '';
|
||||
foreach ($node->getNodes() as $node) {
|
||||
|
@ -115,7 +123,7 @@ class syntax_plugin_navigation extends DokuWiki_Syntax_Plugin {
|
|||
$output .= '<li><a href="' . wl($node->getFullID()) . '">' . $title . '</a></li>' . PHP_EOL;
|
||||
}
|
||||
|
||||
} else if($node instanceof DokuWikiNameSpace) {
|
||||
} else if ($node instanceof DokuWikiNameSpace) {
|
||||
/** @var DokuWikiNameSpace $node */
|
||||
if ($this->depth <= $this->maxDepth) {
|
||||
if ($access > 0) {
|
||||
|
|
Reference in a new issue