1<?php 2 3/** 4 * DokuWiki Plugin doxycode (Taglist Syntax Component) 5 * 6 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 7 * @author Lukas Probsthain <lukas.probsthain@gmail.com> 8 */ 9 10use dokuwiki\Extension\SyntaxPlugin; 11 12/** 13 * Class syntax_plugin_doxycode_taglist 14 * 15 * This syntax plugin renders a table with all available tag files. 16 * It can be used to inform users which tag files can be used by which names in the snippet syntax. 17 */ 18class syntax_plugin_doxycode_taglist extends SyntaxPlugin 19{ 20 public function getType() 21 { 22 return 'substition'; 23 } 24 25 public function getSort() 26 { 27 // TODO: which sort number? 28 return 159; 29 } 30 31 public function connectTo($mode) 32 { 33 $this->Lexer->addSpecialPattern('<listtagfiles.*?/>', $mode, 'plugin_doxycode_taglist'); 34 } 35 36 public function handle($match, $state, $pos, Doku_Handler $handler) 37 { 38 static $args; 39 switch ($state) { 40 case DOKU_LEXER_SPECIAL: 41 // TODO: do we expect parameters here? 42 // add columns like reload period, file state? 43 // TODO: implement option for only displaying enabled configurations! 44 45 // Parse the attributes and content here 46 // $args = $this->_parseAttributes($match); 47 return [$state, ]; 48 } 49 return []; 50 } 51 52 /** 53 * 54 */ 55 public function render($mode, Doku_Renderer $renderer, $data) 56 { 57 if ($mode != 'xhtml') return; 58 59 60 /** @var helper_plugin_doxycode_tagmanager $tagmanager */ 61 $tagmanager = plugin_load('helper', 'doxycode_tagmanager'); 62 63 $config = $tagmanager->loadTagFileConfig(); 64 65 $renderer->doc .= '<div class="table">'; 66 $renderer->doc .= '<table class="inline">'; 67 68 $renderer->doc .= '<thead>'; 69 $renderer->doc .= '<tr>'; 70 $renderer->doc .= '<th>' . $this->getLang('tag_conf_enabled') . '</th>'; 71 $renderer->doc .= '<th>' . $this->getLang('tag_conf_local_name') . '</th>'; 72 $renderer->doc .= '<th>' . $this->getLang('tag_conf_docu_url') . '</th>'; 73 $renderer->doc .= '<th>' . $this->getLang('tag_conf_remote_url') . '</th>'; 74 $renderer->doc .= '</tr>'; 75 $renderer->doc .= '</thead>'; 76 77 $renderer->doc .= '<tbody>'; 78 foreach ($config as $key => $conf) { 79 $renderer->doc .= '<tr>'; 80 // TODO: display enabled state as locked checkbox 81 $renderer->doc .= '<td>' . $conf['enabled'] . '</td>'; 82 $renderer->doc .= '<td>' . $key . '</td>'; 83 $renderer->doc .= '<td><a href="' . $conf['docu_url'] . '">' . $conf['docu_url'] . '</a></td>'; 84 $renderer->doc .= '<td><a href="' . $conf['remote_url'] . '">' . $conf['remote_url'] . '</a></td>'; 85 // TODO: should we enable more information? last updated, reason for disabled state, ...? 86 $renderer->doc .= '</tr>'; 87 } 88 $renderer->doc .= '</tbody>'; 89 90 $renderer->doc .= '</table>'; 91 $renderer->doc .= '</div>'; 92 } 93} 94