1<?php
2/**
3 * @license    http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
4 * @author     Francois Merciol <dokuplugin@merciol.fr>
5 *
6 * INSEE city: code database
7 */
8
9if (!defined ('DOKU_INC'))
10    define ('DOKU_INC', realpath (__DIR__.'/../../../').'/');
11if (!defined ('DOKU_PLUGIN'))
12    define ('DOKU_PLUGIN', DOKU_INC.'lib/plugins/');
13require_once(DOKU_PLUGIN.'syntax.php');
14
15// ============================================================
16class syntax_plugin_ol3 extends DokuWiki_Syntax_Plugin {
17
18    // ============================================================
19    function getType () { return 'substition'; }
20    function getPType () { return 'block'; }
21    function getSort () { return 299; }
22    function connectTo ($mode) {
23        $this->Lexer->addSpecialPattern ('\{\{ol3[^}]*\}\}', $mode, 'plugin_ol3');
24    }
25
26    // ============================================================
27    function handle ($match, $state, $pos, Doku_Handler $handler) {
28        switch ($state) {
29        case DOKU_LEXER_SPECIAL :
30            return array ($state, trim (substr ($match, 5, -2))); // "{{ol3" => 5 "}}" => 2
31        }
32        return false;
33    }
34
35    // ============================================================
36    function render ($mode, Doku_Renderer $renderer, $indata) {
37        $dumy = "";
38        if (empty($indata))
39            return false;
40        if ($mode != 'xhtml')
41            return false;
42        list ($instr, $data) = $indata;
43        switch ($instr) {
44        case DOKU_LEXER_SPECIAL :
45            $args = " ".$data." ";
46            if (preg_match_all ("#(\"[^\"]*\")* help (\"[^\"]*\")*#", strtolower ($args), $dumy) > 0) {
47                $renderer->doc .= $this->ol3Help ();
48                return true;
49            }
50            if (preg_match_all ("#(\"[^\"]*\")* test (\"[^\"]*\")*#", strtolower ($args), $dumy) > 0) {
51                $renderer->doc .= $this->ol3Test ();
52                return true;
53            }
54        }
55        return true;
56    }
57
58    // ============================================================
59    function ol3Help () {
60        $url = "http://admin.parlenet.org/plugins/ol3/";
61        return
62            '<h1>Help OL3</h1>'.NL.
63            '<ul>'.NL.
64            ' <li><b>{{ol3</b> help <b>}}</b></li>'.NL.
65            ' <li><b>{{ol3</b> test <b>}}</b></li>'.NL.
66            '</ul>'.NL.
67            '<p><a class="urlextern" rel="nofollow" title="'.$url.'" href="'.$url.'">'.$url.'</a></p>'.NL;
68    }
69
70    // ============================================================
71    function ol3Test () {
72        return
73            '<script type="text/javascript" src="/lib/plugins/ol3/test.js" defer="defer" charset="utf-8"></script>'.NL.
74            '<div id="map" class="map" style="width:200px;height:200px;"></div>'.NL;
75    }
76
77    // ============================================================
78}
79