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_inseecity 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 ('\{\{inseecity[^}]*\}\}', $mode, 'plugin_inseecity'); 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, 11, -2))); // "{{inseecity" => 11 "}}" => 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->inseeHelp (); 48 return true; 49 } 50 if (preg_match_all ("#(\"[^\"]*\")* test (\"[^\"]*\")*#", strtolower ($args), $dumy) > 0) { 51 $renderer->doc .= $this->inseeTest (); 52 return true; 53 } 54 // XXX ??? 55 } 56 return true; 57 } 58 59 // ============================================================ 60 function inseeHelp () { 61 $url = "http://admin.parlenet.org/plugins/insee/"; 62 return 63 '<h1>Help INSEE</h1>'.NL. 64 '<ul>'.NL. 65 ' <li><b>{{inseecity</b> help <b>}}</b></li>'.NL. 66 ' <li><b>{{inseecity</b> test <b>}}</b></li>'.NL. 67 '</ul>'.NL. 68 '<p><a class="urlextern" rel="nofollow" title="'.$url.'" href="'.$url.'">'.$url.'</a></p>'.NL; 69 } 70 71 // ============================================================ 72 function inseeTest () { 73 return 74 '<div>'.NL. 75 ' test <form class="insee">'.NL. 76 ' <input type="text" name="city" />'.NL. 77 ' </form>'.NL. 78 '</div>'.NL; 79 } 80 81 // ============================================================ 82} 83