*/ // must be run within Dokuwiki if (!defined('DOKU_INC')) die(); if (!defined('DOKU_LF')) define('DOKU_LF', "\n"); if (!defined('DOKU_TAB')) define('DOKU_TAB', "\t"); if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/'); require_once DOKU_PLUGIN . 'syntax.php'; class syntax_plugin_signavio extends DokuWiki_Syntax_Plugin { public function getType() { return 'substition'; } /** public function getPType() { return 'block'; } **/ public function getSort() { return 999; } function connectTo($mode) { $this->Lexer->addEntryPattern('(?=.*?)', $mode, 'plugin_signavio'); } function postConnect() { $this->Lexer->addExitPattern('', 'plugin_signavio'); } function handle($match, $state, $pos, &$handler){ switch ($state) { case DOKU_LEXER_ENTER : break; case DOKU_LEXER_MATCHED : break; case DOKU_LEXER_UNMATCHED : $span = ' */ if(trim($match) != ""){ $begin = $span; $end = ' } '; $sigData = explode(':',$match); if(empty($sigData[1])){ return array($state, 'Parameter do not match, expacted someURLId:SomeAuthTokenId'); } return array($state, array($begin, $sigData[0], $sigData[1], $end)); } break; case DOKU_LEXER_EXIT : break; case DOKU_LEXER_SPECIAL : break; } return array(); } /* * @public * @see handle() */ function render($mode, &$renderer, $data) { if($mode == 'xhtml'){ if($data[0] == DOKU_LEXER_UNMATCHED){ if(!is_array($data[1])){ $renderer->doc .= $data[1]; return true; } $text = $data[1][0]; $text .= ' url: "http://academic.signavio.com/p/model/'.$data[1][1].'", authToken: "'.$data[1][2].'", overflowX: "fit", overflowY: "fit", zoomSlider: true, linkSubProcesses: false '; $text .= $data[1][3]; $renderer->doc .= $text; // ptype = 'normal' return true; } } return false; } } // vim:ts=4:sw=4:et: