xref: /plugin/mikioplugin/syntax/accordionitem.php (revision f5938de5b5926511c9beebf3b0b4360a6ae4f808)
1<?php
2/**
3 * Mikio Syntax Plugin: Accordion Item
4 *
5 * Syntax:  <ACCORDION-ITEM></ACCORDION-ITEM>
6 *
7 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
8 * @author     James Collins <james.collins@outlook.com.au>
9 */
10
11if (!defined('DOKU_INC')) die();
12if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
13require_once(dirname(__FILE__).'/core.php');
14
15class syntax_plugin_mikioplugin_accordionitem extends syntax_plugin_mikioplugin_core {
16    public $tag                 = 'accordion-item';
17    public $options             = array('title', 'id', 'parent', 'show');
18
19
20    public function render_lexer_enter(Doku_Renderer $renderer, $data) {
21        $id = '';
22        $parent = '';
23        $title = '';
24        $heading = 'heading_' . rand(0, 32767);
25        $collapse = 'collapse_' . rand(0, 32767);
26        $show = '';
27
28        if(array_key_exists('id', $data) && $data['id'] != '') {
29            $id = $data['id'];
30        } else {
31            $id = 'accordion_item_' . rand(0, 32767);
32            $this->values['id'] = $id;
33        }
34
35        if(array_key_exists('parent', $data) && $data['parent'] != '') $parent = $data['parent'];
36        if(array_key_exists('title', $data) && $data['title'] != '') $title = $data['title'];
37        if(array_key_exists('show', $data) && $data['show'] != false) $show = 'show';
38
39        $renderer->doc .= '<div class="card"><div class="card-header" id="' . $heading . '"><h5 class="mb-0"><button class="btn btn-link" data-toggle="collapse" data-target="#' . $collapse . '" aria-expanded="true" aria-controls="' . $collapse . '">' . $title . '</button></h5></div><div id="' . $collapse . '" class="collapse ' . $show . '" aria-labelledby="' . $heading . '" data-parent="#' . $parent . '"><div class="card-body">';
40    }
41
42
43    public function render_lexer_exit(Doku_Renderer $renderer, $data) {
44        $renderer->doc .= '</div></div></div>';
45    }
46}
47?>