From 0ae8cbf5c0b1a198b963490985b7738392ebcb97 Mon Sep 17 00:00:00 2001 From: ahriman Date: Mon, 3 Dec 2018 19:22:25 -0500 Subject: installed dokuwiki, added to navbar, updated news --- wiki/lib/plugins/info/plugin.info.txt | 7 + wiki/lib/plugins/info/syntax.php | 294 ++++++++++++++++++++++++++++++++++ 2 files changed, 301 insertions(+) create mode 100644 wiki/lib/plugins/info/plugin.info.txt create mode 100644 wiki/lib/plugins/info/syntax.php (limited to 'wiki/lib/plugins/info') diff --git a/wiki/lib/plugins/info/plugin.info.txt b/wiki/lib/plugins/info/plugin.info.txt new file mode 100644 index 0000000..3f05391 --- /dev/null +++ b/wiki/lib/plugins/info/plugin.info.txt @@ -0,0 +1,7 @@ +base info +author Andreas Gohr +email andi@splitbrain.org +date 2014-10-01 +name Info Plugin +desc Displays information about various DokuWiki internals +url http://dokuwiki.org/plugin:info diff --git a/wiki/lib/plugins/info/syntax.php b/wiki/lib/plugins/info/syntax.php new file mode 100644 index 0000000..773256f --- /dev/null +++ b/wiki/lib/plugins/info/syntax.php @@ -0,0 +1,294 @@ + + * @author Esther Brunner + */ +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +/** + * All DokuWiki plugins to extend the parser/rendering mechanism + * need to inherit from this class + */ +class syntax_plugin_info extends DokuWiki_Syntax_Plugin { + + /** + * What kind of syntax are we? + */ + function getType(){ + return 'substition'; + } + + /** + * What about paragraphs? + */ + function getPType(){ + return 'block'; + } + + /** + * Where to sort in? + */ + function getSort(){ + return 155; + } + + + /** + * Connect pattern to lexer + */ + function connectTo($mode) { + $this->Lexer->addSpecialPattern('~~INFO:\w+~~',$mode,'plugin_info'); + } + + /** + * Handle the match + * + * @param string $match The text matched by the patterns + * @param int $state The lexer state for the match + * @param int $pos The character position of the matched text + * @param Doku_Handler $handler The Doku_Handler object + * @return array Return an array with all data you want to use in render + */ + function handle($match, $state, $pos, Doku_Handler $handler){ + $match = substr($match,7,-2); //strip ~~INFO: from start and ~~ from end + return array(strtolower($match)); + } + + /** + * Create output + * + * @param string $format string output format being rendered + * @param Doku_Renderer $renderer the current renderer object + * @param array $data data created by handler() + * @return boolean rendered correctly? + */ + function render($format, Doku_Renderer $renderer, $data) { + if($format == 'xhtml'){ + /** @var Doku_Renderer_xhtml $renderer */ + //handle various info stuff + switch ($data[0]){ + case 'syntaxmodes': + $renderer->doc .= $this->_syntaxmodes_xhtml(); + break; + case 'syntaxtypes': + $renderer->doc .= $this->_syntaxtypes_xhtml(); + break; + case 'syntaxplugins': + $this->_plugins_xhtml('syntax', $renderer); + break; + case 'adminplugins': + $this->_plugins_xhtml('admin', $renderer); + break; + case 'actionplugins': + $this->_plugins_xhtml('action', $renderer); + break; + case 'rendererplugins': + $this->_plugins_xhtml('renderer', $renderer); + break; + case 'helperplugins': + $this->_plugins_xhtml('helper', $renderer); + break; + case 'authplugins': + $this->_plugins_xhtml('auth', $renderer); + break; + case 'remoteplugins': + $this->_plugins_xhtml('remote', $renderer); + break; + case 'helpermethods': + $this->_helpermethods_xhtml($renderer); + break; + default: + $renderer->doc .= "no info about ".htmlspecialchars($data[0]); + } + return true; + } + return false; + } + + /** + * list all installed plugins + * + * uses some of the original renderer methods + * + * @param string $type + * @param Doku_Renderer_xhtml $renderer + */ + function _plugins_xhtml($type, Doku_Renderer_xhtml $renderer){ + global $lang; + $renderer->doc .= ''; + } + + /** + * list all installed plugins + * + * uses some of the original renderer methods + * + * @param Doku_Renderer_xhtml $renderer + */ + function _helpermethods_xhtml(Doku_Renderer_xhtml $renderer){ + $plugins = plugin_list('helper'); + foreach($plugins as $p){ + if (!$po = plugin_load('helper',$p)) continue; + + if (!method_exists($po, 'getMethods')) continue; + $methods = $po->getMethods(); + $info = $po->getInfo(); + + $hid = $this->_addToTOC($info['name'], 2, $renderer); + $doc = '

'.hsc($info['name']).'

'; + $doc .= '
'; + $doc .= '

'.strtr(hsc($info['desc']), array("\n"=>"
")).'

'; + $doc .= '
$'.$p." = plugin_load('helper', '".$p."');
"; + $doc .= '
'; + foreach ($methods as $method){ + $title = '$'.$p.'->'.$method['name'].'()'; + $hid = $this->_addToTOC($title, 3, $renderer); + $doc .= '

'.hsc($title).'

'; + $doc .= '
'; + $doc .= '
'; + $doc .= ''; + if ($method['params']){ + $c = count($method['params']); + $doc .= ''; + } + if ($method['return']){ + $doc .= ''; + } + $doc .= '
Description'.$method['desc']. + '
Parameters'; + $params = array(); + foreach ($method['params'] as $desc => $type){ + $params[] = hsc($desc).''.hsc($type); + } + $doc .= join($params, '
').'
Return value'.hsc(key($method['return'])). + ''.hsc(current($method['return'])).'
'; + $doc .= '
'; + } + unset($po); + + $renderer->doc .= $doc; + } + } + + /** + * lists all known syntax types and their registered modes + * + * @return string + */ + function _syntaxtypes_xhtml(){ + global $PARSER_MODES; + $doc = ''; + + $doc .= '
'; + foreach($PARSER_MODES as $mode => $modes){ + $doc .= ''; + $doc .= ''; + $doc .= ''; + $doc .= ''; + } + $doc .= '
'; + $doc .= $mode; + $doc .= ''; + $doc .= join(', ',$modes); + $doc .= '
'; + return $doc; + } + + /** + * lists all known syntax modes and their sorting value + * + * @return string + */ + function _syntaxmodes_xhtml(){ + $modes = p_get_parsermodes(); + + $compactmodes = array(); + foreach($modes as $mode){ + $compactmodes[$mode['sort']][] = $mode['mode']; + } + $doc = ''; + $doc .= '
'; + + foreach($compactmodes as $sort => $modes){ + $rowspan = ''; + if(count($modes) > 1) { + $rowspan = ' rowspan="'.count($modes).'"'; + } + + foreach($modes as $index => $mode) { + $doc .= ''; + $doc .= ''; + + if($index === 0) { + $doc .= ''; + } + $doc .= ''; + } + } + + $doc .= '
'; + $doc .= $mode; + $doc .= ''; + $doc .= $sort; + $doc .= '
'; + return $doc; + } + + /** + * Adds a TOC item + * + * @param string $text + * @param int $level + * @param Doku_Renderer_xhtml $renderer + * @return string + */ + protected function _addToTOC($text, $level, Doku_Renderer_xhtml $renderer){ + global $conf; + + $hid = ''; + if (($level >= $conf['toptoclevel']) && ($level <= $conf['maxtoclevel'])){ + $hid = $renderer->_headerToLink($text, true); + $renderer->toc[] = array( + 'hid' => $hid, + 'title' => $text, + 'type' => 'ul', + 'level' => $level - $conf['toptoclevel'] + 1 + ); + } + return $hid; + } +} + +//Setup VIM: ex: et ts=4 : -- cgit 1.4.1-2-gfad0