xref: /plugin/mikioplugin/syntax/carousel.php (revision 94f363a8f6d0a4cb3d159f09b4763dfe14cd514a)
117e6d639SJames Collins<?php
2*94f363a8Snomadjimbob
317e6d639SJames Collins/**
417e6d639SJames Collins * Mikio Syntax Plugin: Carousel
517e6d639SJames Collins *
67935713eSJames Collins * @link        http://github.com/nomadjimbob/mikioplugin
717e6d639SJames Collins * @license     GPL 2 (http://www.gnu.org/licenses/gpl.html)
817e6d639SJames Collins * @author      James Collins <james.collins@outlook.com.au>
917e6d639SJames Collins */
1017e6d639SJames Collinsif (!defined('DOKU_INC')) die();
1117e6d639SJames Collinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
1217e6d639SJames Collinsrequire_once(dirname(__FILE__) . '/core.php');
1317e6d639SJames Collins
14*94f363a8Snomadjimbobclass syntax_plugin_mikioplugin_carousel extends syntax_plugin_mikioplugin_core
15*94f363a8Snomadjimbob{
1617e6d639SJames Collins    public $tag                 = 'carousel';
177935713eSJames Collins    public $hasEndTag           = true;
187935713eSJames Collins    public $options             = array(
19*94f363a8Snomadjimbob        'transition'    => array(
20*94f363a8Snomadjimbob            'type'     => 'choice',
217935713eSJames Collins            'data'     => array('slide', 'fade'),
22*94f363a8Snomadjimbob            'default'  => ''
23*94f363a8Snomadjimbob        ),
247935713eSJames Collins        'indicators'    => array('type'     => 'boolean',   'default'   => 'true'),
257935713eSJames Collins        'controls'      => array('type'     => 'boolean',   'default'   => 'true'),
267935713eSJames Collins        'start'         => array('type'     => 'boolean',   'default'   => 'false'),
27062e2726SJames Collins        'cover'         => array('type'     => 'boolean',   'default'   => 'false'),
28*94f363a8Snomadjimbob        'control-color' => array('type'     => 'color',     'default'   => '#fff'),
29*94f363a8Snomadjimbob        'control-outline-color' => array('type'     => 'color',     'default'   => ''),
30*94f363a8Snomadjimbob        'control-outline-width' => array('type'     => 'multisize',     'default'   => ''),
317935713eSJames Collins    );
3217e6d639SJames Collins
33*94f363a8Snomadjimbob    public function __construct()
34*94f363a8Snomadjimbob    {
356b66a10dSJames Collins        $this->addCommonOptions('height');
366b66a10dSJames Collins    }
376b66a10dSJames Collins
3817e6d639SJames Collins
39*94f363a8Snomadjimbob    public function render_lexer_enter(Doku_Renderer $renderer, $data)
40*94f363a8Snomadjimbob    {
417935713eSJames Collins        $classes = $this->buildClass($data, array('transition'));
426b66a10dSJames Collins        $styles = $this->buildStyle(array('height' => $data['height']), TRUE);
4317e6d639SJames Collins
44062e2726SJames Collins        $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'carousel' . ($data['cover'] ? ' ' . $this->classPrefix . 'image-cover' : '') . $classes . '" data-auto-start="' . ($data['start'] ? 'true' : 'false') . '"' . $styles . '>';
457935713eSJames Collins        $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'carousel-inner">';
4617e6d639SJames Collins    }
4717e6d639SJames Collins
4817e6d639SJames Collins
49*94f363a8Snomadjimbob    public function render_lexer_exit(Doku_Renderer $renderer, $data)
50*94f363a8Snomadjimbob    {
5157ae4893SJames Collins        $renderer->doc .= '</div>';
5257ae4893SJames Collins
537935713eSJames Collins        if ($data['controls'] === TRUE) {
54*94f363a8Snomadjimbob            $svg_styles = $this->buildStyle(array('fill' => $data['control-color'], 'stroke' => $data['control-outline-color'], 'stroke-width' => $data['control-outline-width']), TRUE);
55*94f363a8Snomadjimbob
56*94f363a8Snomadjimbob            $renderer->doc .= '<a href="#" class="' . $this->elemClass . ' ' . $this->classPrefix . 'carousel-control ' . $this->classPrefix . 'carousel-control-prev" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 8 8"' . $svg_styles . '><path d="M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z"/></svg></a>';
57*94f363a8Snomadjimbob            $renderer->doc .= '<a href="#" class="' . $this->elemClass . ' ' . $this->classPrefix . 'carousel-control ' . $this->classPrefix . 'carousel-control-next" role="button"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 8 8"' . $svg_styles . '><path d="M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z"/></svg></a>';
587935713eSJames Collins        }
5957ae4893SJames Collins
607935713eSJames Collins        if ($data['indicators'] === TRUE) {
617935713eSJames Collins            $renderer->doc .= '<ul class="' . $this->elemClass . ' ' . $this->classPrefix . 'carousel-indicators"></ul>';
6257ae4893SJames Collins        }
6357ae4893SJames Collins
6457ae4893SJames Collins        $renderer->doc .= '</div>';
6517e6d639SJames Collins    }
6617e6d639SJames Collins}
67