xref: /plugin/mikioplugin/syntax/tabgroup.php (revision f4aa5cdcd0e03f6c42013de167faf20da20a1685)
13deaf3a5SJames Collins<?php
23deaf3a5SJames Collins/**
33deaf3a5SJames Collins * Mikio Syntax Plugin: Small
43deaf3a5SJames Collins *
53deaf3a5SJames Collins * Syntax:  <SMALL></SMALL>
63deaf3a5SJames Collins *
73deaf3a5SJames Collins * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
83deaf3a5SJames Collins * @author     James Collins <james.collins@outlook.com.au>
93deaf3a5SJames Collins */
103deaf3a5SJames Collins
113deaf3a5SJames Collinsif (!defined('DOKU_INC')) die();
123deaf3a5SJames Collinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
133deaf3a5SJames Collinsrequire_once(dirname(__FILE__).'/core.php');
143deaf3a5SJames Collins
153deaf3a5SJames Collinsclass syntax_plugin_mikioplugin_tabgroup extends syntax_plugin_mikioplugin_core {
163deaf3a5SJames Collins    public $tag                 = 'tabgroup';
173deaf3a5SJames Collins
183deaf3a5SJames Collins
19*f4aa5cdcSJames Collins    public function getAllowedTypes() {  return array(); }
20*f4aa5cdcSJames Collins
213deaf3a5SJames Collins    public function render_lexer_enter(Doku_Renderer $renderer, $data) {
223deaf3a5SJames Collins        $classes = $this->buildClassString($data);
233deaf3a5SJames Collins
243deaf3a5SJames Collins        $renderer->doc .= '<ul class="nav nav-tabs ' . $classes . '">';
253deaf3a5SJames Collins    }
263deaf3a5SJames Collins
273deaf3a5SJames Collins
283deaf3a5SJames Collins    public function render_lexer_exit(Doku_Renderer $renderer, $data) {
293deaf3a5SJames Collins        // $renderer->doc .= '</div>';
303deaf3a5SJames Collins    }
313deaf3a5SJames Collins
323deaf3a5SJames Collins
333deaf3a5SJames Collins    public function render_lexer_unmatched(Doku_Renderer $renderer, $data) {
343deaf3a5SJames Collins        $items = [];
353deaf3a5SJames Collins        $bar = '';
363deaf3a5SJames Collins        $content = '';
373deaf3a5SJames Collins        $first = true;
383deaf3a5SJames Collins
393deaf3a5SJames Collins        if(preg_match_all('/<(?:TAB|tab)(.*?)>(.*?)<\/(?:TAB|tab)>/s', $data, $match)) {
403deaf3a5SJames Collins            if(count($match) >= 2 && count($match[1]) == count($match[2])) {
413deaf3a5SJames Collins                for($i = 0; $i < count($match[1]); $i++) {
423deaf3a5SJames Collins                    if(preg_match('/title=("\w[\w\s]*(?=")|\w+|"[\w\s]*")/is', $match[1][$i], $titleMatch)) {
433deaf3a5SJames Collins                        if(count($titleMatch) >= 1) {
443deaf3a5SJames Collins                            $title = str_replace("\"", "", $titleMatch[1]);
453deaf3a5SJames Collins                            $items[] = array('title' => $title, 'id' => 'tab_' . rand(0, 32767), 'content' => $this->render_text($match[2][$i]));
463deaf3a5SJames Collins                        }
473deaf3a5SJames Collins                    }
483deaf3a5SJames Collins                }
493deaf3a5SJames Collins            }
503deaf3a5SJames Collins        }
513deaf3a5SJames Collins
523deaf3a5SJames Collins        foreach($items as $item) {
533deaf3a5SJames Collins            $bar .= '<li class="nav-item"><a class="nav-item nav-link' . ($first ? ' active' : '') . '" data-toggle="tab" href="#' . $item['id'] . '">' . $item['title'] . '</a></li>';
543deaf3a5SJames Collins            $content .= '<div id="' . $item['id'] . '" class="tab-pane ' . ($first ? ' show active' : '') . '"><p>' . $item['content'] . '</p></div>';
553deaf3a5SJames Collins
563deaf3a5SJames Collins            $first = false;
573deaf3a5SJames Collins        }
583deaf3a5SJames Collins
593deaf3a5SJames Collins        $renderer->doc .= $bar . '</ul><div class="container-fluid"><div class="tab-content">' . $content . '</div></div>';
603deaf3a5SJames Collins    }
613deaf3a5SJames Collins}
623deaf3a5SJames Collins?>
63