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];
}
}