*/ class syntax_plugin_dwtimeline_timeline extends syntax_plugin_dwtimeline_dwtimeline { /** * @return array Things that may be inside the syntax */ public function getAllowedTypes() { return ['plugin_dwtimeline_milestone']; } /** * Set the EntryPattern * @param string $mode */ public function connectTo($mode) { $this->Lexer->addEntryPattern( '(?=.*?)', $mode, 'plugin_dwtimeline_timeline' ); } /** * Set the ExitPattern */ public function postConnect() { $this->Lexer->addExitPattern('', 'plugin_dwtimeline_timeline'); } /** * Handle the match * @param string $match The match of the syntax * @param int $state The state of the handler * @param int $pos The position in the document * @param Doku_Handler $handler The handler * @return array Data for the renderer */ public function handle($match, $state, $pos, Doku_Handler $handler) { switch ($state) { case DOKU_LEXER_ENTER: parent::$align = $this->getConf('align'); $match = trim(substr($match, 11, -1));// returns match between (-1) $data = $this->getTitleMatches($match); parent::$align = $data['align']; return [$state, $data]; case DOKU_LEXER_UNMATCHED: return [$state, $match]; case DOKU_LEXER_EXIT: $match = trim(substr($match, 12, -1));//returns match between (-1) $data = $this->getTitleMatches($match); return [$state, $data]; } return []; } /** * Create output * * @param string $mode string output format being rendered * @param Doku_Renderer $renderer the current renderer object * @param array $data data created by handler() * @return bool rendered correctly? */ public function render($mode, Doku_Renderer $renderer, $data) { if ($mode == 'xhtml') { if (!parent::$direction) { parent::$direction = $this->getDirection(); } [$state, $indata] = $data; switch ($state) { case DOKU_LEXER_ENTER: $renderer->doc .= '
' . DOKU_LF; if ($indata['align'] === 'horz') { $renderer->doc .= '
' . DOKU_LF; } $renderer->doc .= '
' . DOKU_LF; if (isset($indata['title']) || isset($indata['description'])) { $renderer->doc .= '
' . DOKU_LF; $renderer->doc .= '
' . DOKU_LF; if (isset($indata['title'])) { $renderer->doc .= '
' . $indata['title'] . '
' . DOKU_LF; } if (isset($indata['description'])) { $renderer->doc .= '

' . DOKU_LF . $indata['description'] . DOKU_LF . '

' . DOKU_LF; } $renderer->doc .= '
' . DOKU_LF; $renderer->doc .= '
' . DOKU_LF; } break; case DOKU_LEXER_UNMATCHED: $renderer->cdata($indata); break; case DOKU_LEXER_EXIT: if (isset($indata['title']) || isset($indata['description'])) { $renderer->doc .= '
' . DOKU_LF; $renderer->doc .= '
' . DOKU_LF; if (isset($indata['title'])) { $renderer->doc .= '
' . $indata['title'] . '
' . DOKU_LF; } if (isset($indata['description'])) { $renderer->doc .= '

' . $indata['description'] . '

' . DOKU_LF; } $renderer->doc .= '
' . DOKU_LF; $renderer->doc .= '
' . DOKU_LF; $renderer->doc .= '
' . DOKU_LF; } $renderer->doc .= '
' . DOKU_LF; parent::$direction = 'tl-' . $this->getConf('direction');//Reset direction break; } return true; } return false; } }