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