83 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * @license    http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
 | |
|  * @author     Francois Merciol <dokuplugin@merciol.fr>
 | |
|  *
 | |
|  * INSEE city: code database
 | |
|  */
 | |
| 
 | |
| if (!defined ('DOKU_INC'))
 | |
|     define ('DOKU_INC', realpath (__DIR__.'/../../../').'/');
 | |
| if (!defined ('DOKU_PLUGIN'))
 | |
|     define ('DOKU_PLUGIN', DOKU_INC.'lib/plugins/');
 | |
| require_once(DOKU_PLUGIN.'syntax.php');
 | |
| 
 | |
| // ============================================================
 | |
| class syntax_plugin_inseecity extends DokuWiki_Syntax_Plugin {
 | |
|  
 | |
|     // ============================================================
 | |
|     function getType () { return 'substition'; }
 | |
|     function getPType () { return 'block'; }
 | |
|     function getSort () { return 299; }
 | |
|     function connectTo ($mode) {
 | |
|         $this->Lexer->addSpecialPattern ('\{\{inseecity[^}]*\}\}', $mode, 'plugin_inseecity');
 | |
|     }
 | |
| 
 | |
|     // ============================================================
 | |
|     function handle ($match, $state, $pos, Doku_Handler $handler) {
 | |
|         switch ($state) {
 | |
|         case DOKU_LEXER_SPECIAL :
 | |
|             return array ($state, trim (substr ($match, 11, -2))); // "{{inseecity" => 11 "}}" => 2
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     // ============================================================
 | |
|     function render ($mode, Doku_Renderer $renderer, $indata) {
 | |
|         $dumy = "";
 | |
|         if (empty($indata))
 | |
|             return false;
 | |
|         if ($mode != 'xhtml')
 | |
|             return false;
 | |
|         list ($instr, $data) = $indata;
 | |
|         switch ($instr) {
 | |
|         case DOKU_LEXER_SPECIAL :
 | |
|             $args = " ".$data." ";
 | |
|             if (preg_match_all ("#(\"[^\"]*\")* help (\"[^\"]*\")*#", strtolower ($args), $dumy) > 0) {
 | |
|                 $renderer->doc .= $this->inseeHelp ();
 | |
|                 return true;
 | |
|             }
 | |
|             if (preg_match_all ("#(\"[^\"]*\")* test (\"[^\"]*\")*#", strtolower ($args), $dumy) > 0) {
 | |
|                 $renderer->doc .= $this->inseeTest ();
 | |
|                 return true;
 | |
|             }
 | |
|             // XXX ???
 | |
|         }
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     // ============================================================
 | |
|     function inseeHelp () {
 | |
|         $url = "http://admin.parlenet.org/plugins/insee/";
 | |
|         return
 | |
|             '<h1>Help INSEE</h1>'.NL.
 | |
|             '<ul>'.NL.
 | |
|             ' <li><b>{{inseecity</b> help <b>}}</b></li>'.NL.
 | |
|             ' <li><b>{{inseecity</b> test <b>}}</b></li>'.NL.
 | |
|             '</ul>'.NL.
 | |
|             '<p><a class="urlextern" rel="nofollow" title="'.$url.'" href="'.$url.'">'.$url.'</a></p>'.NL;
 | |
|     }
 | |
| 
 | |
|     // ============================================================
 | |
|     function inseeTest () {
 | |
|         return
 | |
|             '<div>'.NL.
 | |
|             ' test <form class="insee">'.NL.
 | |
|             '  <input type="text" name="city" />'.NL.
 | |
|             ' </form>'.NL.
 | |
|             '</div>'.NL;
 | |
|     }
 | |
| 
 | |
|     // ============================================================
 | |
| }
 |