1<?php 2/** 3 * Plugin Marked: Zobrazí seznam označeného textu 4 * 5 * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6 * @author Your Name <your@email.com> 7 */ 8 9if(!defined('DOKU_INC')) die(); 10require_once(DOKU_PLUGIN.'/syntax.php'); 11 12class syntax_plugin_marked extends DokuWiki_Syntax_Plugin { 13 14 public function getType() { 15 return 'substition'; 16 } 17 18 public function getPType() { 19 return 'block'; 20 } 21 22 public function getSort() { 23 return 155; 24 } 25 26 public function connectTo($mode) { 27 $this->Lexer->addSpecialPattern('\{\{marked\}\}', $mode, 'plugin_marked'); 28 } 29 30 public function handle($match, $state, $pos, Doku_Handler $handler) { 31 return array(); 32 } 33 34 public function render($mode, Doku_Renderer $renderer, $data) { 35 if($mode != 'xhtml') return false; 36 37 // Získat obsah celé stránky 38 global $ID; 39 $pageContent = rawWiki($ID); 40 41 // Najít všechny označené texty pomocí regulárního výrazu 42 preg_match_all('/<mark>(.*?)<\/mark>/s', $pageContent, $matches); 43 44 if(!empty($matches[1])) { 45 $renderer->doc .= '<div class="marked-list">'; 46 $renderer->doc .= '<ul>'; 47 48 foreach($matches[1] as $markedText) { 49 $renderer->doc .= '<li>' . hsc($markedText) . '</li>'; 50 } 51 52 $renderer->doc .= '</ul>'; 53 $renderer->doc .= '</div>'; 54 } 55 56 return true; 57 } 58}