123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
- if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
- require_once(DOKU_PLUGIN.'syntax.php');
- class syntax_plugin_bbcodeextensions_classdiv extends DokuWiki_Syntax_Plugin {
- function getType() { return 'container'; }
- function getPType() { return 'block'; }
- function getAllowedTypes() { return array('formatting', 'substition', 'protected', 'container'); }
- function getSort() { return 165; }
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('\[cd\=.*?\](?=.*?\x5B/cd\x5D)',$mode,'plugin_bbcodeextensions_classdiv');
- }
- function postConnect() { $this->Lexer->addExitPattern('\[/cd\]','plugin_bbcodeextensions_classdiv'); }
- function handle($match, $state, $pos, Doku_Handler $handler) {
- switch ($state) {
- case DOKU_LEXER_ENTER :
- $omatch= $match;
- $match = explode('"',substr($match, 3, -1));
- return array($state, $match[1], $omatch);
- case DOKU_LEXER_UNMATCHED :
- return array($state, $match);
- case DOKU_LEXER_EXIT :
- return array($state, '');
- }
- return array();
- }
- function render($mode, Doku_Renderer $renderer, $data) {
- if(in_array($mode, ['xhtml', 's5'], true)) {
- list($state, $match) = $data;
- $defcl= $this->getConf('class_preffix') ?? 'bbcodeextensions';
- switch ($state) {
- case DOKU_LEXER_ENTER :
- $renderer->doc .= <<<EOF
- <div class="{$defcl} {$match}" >
- EOF;
- break;
-
- case DOKU_LEXER_UNMATCHED :
- $match = $renderer->_xmlEntities($match);
- $renderer->doc .= $match;
- break;
- case DOKU_LEXER_EXIT :
- $renderer->doc .= '</div><!-- bbcodeextensions_div -->';
- break;
- }
- return true;
- } // if render
- if(in_array($mode, ['text'], true)) {
- list($state, $match) = $data;
- switch ($state) {
- case DOKU_LEXER_ENTER :
- break;
-
- case DOKU_LEXER_UNMATCHED :
- $renderer->doc .= $match;
- break;
- case DOKU_LEXER_EXIT :
- break;
- }
- return true;
- }
-
- return false;
- }
- }
|