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}