getConf('bootnote.note') == 'note') { $this->Lexer->addEntryPattern(']*>(?=.*)', $mode,'plugin_bootnote'); } else { $this->Lexer->addEntryPattern(']*>(?=.*)', $mode,'plugin_bootnote'); } } function postConnect() { if($this->getConf('bootnote.note') == 'note') { $this->Lexer->addExitPattern("", 'plugin_bootnote'); } else { $this->Lexer->addExitPattern("", 'plugin_bootnote'); } } /** * Do the regexp **/ function handle($match, $state, $pos, Doku_Handler $handler) { switch($state){ case DOKU_LEXER_ENTER : $data = array( 'state'=>$state, 'lvl'=> "", ); // Looking for id if($this->getConf('bootnote.note') == 'note') { $note = 'note'; } else { $note = 'bootnote'; } preg_match("/$note (\\w*)/", $match, $lvl); if( count($lvl) != 0 ) { $data['lvl'] = $lvl[1]; } return $data; case DOKU_LEXER_UNMATCHED : return array('state'=>$state, 'text'=>$match); default: return array('state'=>$state, 'bytepos_end' => $pos + strlen($match)); } } // Dokuwiki Renderer function render($mode, Doku_Renderer $renderer, $data) { if($mode != 'xhtml') return false; if($data['error']) { $renderer->doc .= $data['text']; return true; } $renderer->info['cache'] = false; switch($data['state']) { case DOKU_LEXER_ENTER : $this->_define_note($renderer, $data); break; case DOKU_LEXER_EXIT: if ($this->getConf('bootnote.theme') == 'oldtheme') { $renderer->doc .= '';// /.note $renderer->doc .= '
'; $renderer->doc .= '';// /.note-container $renderer->doc .= '';// /Global } else { $renderer->doc .= '

'; } case DOKU_LEXER_UNMATCHED : $renderer->doc .= $renderer->_xmlEntities($data['text']); break; } return true; } // Define note before render function _define_note($renderer, $data) { $glyphs = Array( 'web' => 'globe', 'question' => 'question-sign', 'learn' => 'education', 'tip' => 'education', 'warning' => 'alert', 'critical' => 'fire', 'important' => 'fire', '' => 'info-sign' ); $this->_render_note($renderer, $glyphs[$data['lvl']]); } // Render Note function _render_note($renderer, $glyph) { if ($this->getConf('bootnote.theme') == 'oldtheme') { $renderer->doc .= '
'; // Global $renderer->doc .= '
'; $renderer->doc .= ' '; $renderer->doc .= ' '; $renderer->doc .= ' '; // /.sign $renderer->doc .= '
'; // /.sign-container $renderer->doc .= '
'; $renderer->doc .= '
'; } else { $renderer->doc .= '

'; $renderer->doc .= ''; $renderer->doc .= ''.$this->getTitle($glyph).':'; if ($this->getConf('bootnote.position') == 'below') { $renderer->doc .= '

'; $renderer->doc .= '

'; } else { $renderer->doc .= ' '; // Need a space to separate title from text } } } function getTitle($glyph) { $titles = Array( 'info-sign' => $this->getLang('bootnote.info'), 'education' => $this->getLang('bootnote.learn'), 'question-sign' => $this->getLang('bootnote.question'), 'alert' => $this->getLang('bootnote.alert'), 'fire' => $this->getLang('bootnote.fire'), 'globe' => $this->getLang('bootnote.link') ); return $titles[$glyph]; } }