*/ if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once DOKU_PLUGIN.'syntax.php'; class syntax_plugin_treenav extends DokuWiki_Syntax_Plugin { private $keys = array("icon", "title"); function getType() { return 'baseonly'; } function getSort() { return 32; } function connectTo($mode) { foreach ($this->keys as $key) { $this->Lexer->addSpecialPattern('~~'.$key.':.*?~~',$mode,'plugin_treenav'); } } function handle($match, $state, $pos, &$handler) { switch ($state) { case DOKU_LEXER_SPECIAL: $match = substr($match, 2, -2); @list($key, $value) = explode(':', $match, 2); if (in_array($key, $this->keys)) { $this->setMetadata($key, $value); } } } function setMetadata($key, $value) { global $ID; $data = p_get_metadata($ID, "treenav", false) or array(); $data[$key] = $value; return p_set_metadata($ID, array("treenav" => $data)); } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* Local Variables: */ /* tab-width: 4 */ /* indent-tabs-mode: nil */ /* c-basic-offset: 4 */ /* End: */