1*3deaf3a5SJames Collins<?php 2*3deaf3a5SJames Collins/** 3*3deaf3a5SJames Collins * Mikio Syntax Plugin: Small 4*3deaf3a5SJames Collins * 5*3deaf3a5SJames Collins * Syntax: <SMALL></SMALL> 6*3deaf3a5SJames Collins * 7*3deaf3a5SJames Collins * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 8*3deaf3a5SJames Collins * @author James Collins <james.collins@outlook.com.au> 9*3deaf3a5SJames Collins */ 10*3deaf3a5SJames Collins 11*3deaf3a5SJames Collinsif (!defined('DOKU_INC')) die(); 12*3deaf3a5SJames Collinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 13*3deaf3a5SJames Collinsrequire_once(dirname(__FILE__).'/core.php'); 14*3deaf3a5SJames Collins 15*3deaf3a5SJames Collinsclass syntax_plugin_mikioplugin_tabgroup extends syntax_plugin_mikioplugin_core { 16*3deaf3a5SJames Collins public $tag = 'tabgroup'; 17*3deaf3a5SJames Collins 18*3deaf3a5SJames Collins 19*3deaf3a5SJames Collins public function render_lexer_enter(Doku_Renderer $renderer, $data) { 20*3deaf3a5SJames Collins $classes = $this->buildClassString($data); 21*3deaf3a5SJames Collins 22*3deaf3a5SJames Collins $renderer->doc .= '<ul class="nav nav-tabs ' . $classes . '">'; 23*3deaf3a5SJames Collins } 24*3deaf3a5SJames Collins 25*3deaf3a5SJames Collins 26*3deaf3a5SJames Collins public function render_lexer_exit(Doku_Renderer $renderer, $data) { 27*3deaf3a5SJames Collins // $renderer->doc .= '</div>'; 28*3deaf3a5SJames Collins } 29*3deaf3a5SJames Collins 30*3deaf3a5SJames Collins 31*3deaf3a5SJames Collins public function render_lexer_unmatched(Doku_Renderer $renderer, $data) { 32*3deaf3a5SJames Collins $items = []; 33*3deaf3a5SJames Collins $bar = ''; 34*3deaf3a5SJames Collins $content = ''; 35*3deaf3a5SJames Collins $first = true; 36*3deaf3a5SJames Collins 37*3deaf3a5SJames Collins if(preg_match_all('/<(?:TAB|tab)(.*?)>(.*?)<\/(?:TAB|tab)>/s', $data, $match)) { 38*3deaf3a5SJames Collins if(count($match) >= 2 && count($match[1]) == count($match[2])) { 39*3deaf3a5SJames Collins for($i = 0; $i < count($match[1]); $i++) { 40*3deaf3a5SJames Collins if(preg_match('/title=("\w[\w\s]*(?=")|\w+|"[\w\s]*")/is', $match[1][$i], $titleMatch)) { 41*3deaf3a5SJames Collins if(count($titleMatch) >= 1) { 42*3deaf3a5SJames Collins $title = str_replace("\"", "", $titleMatch[1]); 43*3deaf3a5SJames Collins $items[] = array('title' => $title, 'id' => 'tab_' . rand(0, 32767), 'content' => $this->render_text($match[2][$i])); 44*3deaf3a5SJames Collins } 45*3deaf3a5SJames Collins } 46*3deaf3a5SJames Collins } 47*3deaf3a5SJames Collins } 48*3deaf3a5SJames Collins } 49*3deaf3a5SJames Collins 50*3deaf3a5SJames Collins foreach($items as $item) { 51*3deaf3a5SJames Collins $bar .= '<li class="nav-item"><a class="nav-item nav-link' . ($first ? ' active' : '') . '" data-toggle="tab" href="#' . $item['id'] . '">' . $item['title'] . '</a></li>'; 52*3deaf3a5SJames Collins $content .= '<div id="' . $item['id'] . '" class="tab-pane ' . ($first ? ' show active' : '') . '"><p>' . $item['content'] . '</p></div>'; 53*3deaf3a5SJames Collins 54*3deaf3a5SJames Collins $first = false; 55*3deaf3a5SJames Collins } 56*3deaf3a5SJames Collins 57*3deaf3a5SJames Collins $renderer->doc .= $bar . '</ul><div class="container-fluid"><div class="tab-content">' . $content . '</div></div>'; 58*3deaf3a5SJames Collins } 59*3deaf3a5SJames Collins} 60*3deaf3a5SJames Collins?> 61