1581a9aa1SJames Collins<?php 2581a9aa1SJames Collins/** 37935713eSJames Collins * Mikio Syntax Plugin: Box 4581a9aa1SJames Collins * 57935713eSJames Collins * @link http://github.com/nomadjimbob/mikioplugin 6581a9aa1SJames Collins * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 7581a9aa1SJames Collins * @author James Collins <james.collins@outlook.com.au> 8581a9aa1SJames Collins */ 9581a9aa1SJames Collinsif (!defined('DOKU_INC')) die(); 10581a9aa1SJames Collinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 11581a9aa1SJames Collinsrequire_once(dirname(__FILE__).'/core.php'); 12581a9aa1SJames Collins 13581a9aa1SJames Collinsclass syntax_plugin_mikioplugin_box extends syntax_plugin_mikioplugin_core { 14581a9aa1SJames Collins public $tag = 'box'; 157935713eSJames Collins public $hasEndTag = true; 167935713eSJames Collins public $options = array( 17*1766d43cSJames Collins 'attr' => array('type' => 'text'), 187935713eSJames Collins 'round' => array('type' => 'size', 'default' => '0'), 197935713eSJames Collins 'border-color' => array('type' => 'color', 'default' => ''), 20*1766d43cSJames Collins 'border-width' => array('type' => 'multisize', 'default' => ''), 217935713eSJames Collins 'reveal' => array('type' => 'boolean', 'default' => 'false'), 227935713eSJames Collins 'reveal-text' => array('type' => 'text', 'default' => 'Reveal'), 23*1766d43cSJames Collins 'url' => array('type' => 'url', 'default' => ''), 24*1766d43cSJames Collins 'color' => array('type' => 'color', 'default' => ''), 25*1766d43cSJames Collins 'padding' => array('type' => 'multisize', 'default' => ''), 26*1766d43cSJames Collins 'margin' => array('type' => 'multisize', 'default' => ''), 27*1766d43cSJames Collins 'grid-row' => array('type' => 'text'), 28*1766d43cSJames Collins 'grid-row-start' => array('type' => 'number'), 29*1766d43cSJames Collins 'grid-row-end' => array('type' => 'number'), 30*1766d43cSJames Collins 'grid-row-span' => array('type' => 'number'), 31*1766d43cSJames Collins 'grid-col' => array('type' => 'text'), 32*1766d43cSJames Collins 'grid-col-start' => array('type' => 'number'), 33*1766d43cSJames Collins 'grid-col-end' => array('type' => 'number'), 34*1766d43cSJames Collins 'grid-col-span' => array('type' => 'number'), 357935713eSJames Collins ); 367935713eSJames Collins 377935713eSJames Collins public function __construct() { 38*1766d43cSJames Collins $this->addCommonOptions('width height type shadow text-align links-match'); 397935713eSJames Collins } 40581a9aa1SJames Collins 41581a9aa1SJames Collins public function render_lexer_enter(Doku_Renderer $renderer, $data) { 42*1766d43cSJames Collins if($data['attr'] != '') { 43*1766d43cSJames Collins $data = array_merge($data, $this->callMikioTag('setattr', $data['attr'])); 44*1766d43cSJames Collins // echo '#' . $this->callMikioTag('setattr', $data['attr']) . '#'; 45*1766d43cSJames Collins } 46581a9aa1SJames Collins 47*1766d43cSJames Collins $tag = 'div'; 48*1766d43cSJames Collins if($data['url'] != '') $tag = 'a'; 49*1766d43cSJames Collins 50*1766d43cSJames Collins if($data['grid-row-span'] != '') $data['grid-row-end'] = 'span ' . $data['grid-row-span']; 51*1766d43cSJames Collins if($data['grid-col-span'] != '') $data['grid-col-end'] = 'span ' . $data['grid-col-span']; 52*1766d43cSJames Collins 53*1766d43cSJames Collins if($data['grid-row'] != '') { 54*1766d43cSJames Collins $parts = explode(' ', $data['grid-row']); 55*1766d43cSJames Collins $i = count($parts); 56*1766d43cSJames Collins if($i == 2 || $i == 3) { 57*1766d43cSJames Collins $data['grid-row-start'] = filter_var($parts[0], FILTER_VALIDATE_INT); 58*1766d43cSJames Collins } 59*1766d43cSJames Collins 60*1766d43cSJames Collins if($i == 2) { 61*1766d43cSJames Collins $data['grid-row-end'] = filter_var($parts[1], FILTER_VALIDATE_INT); 62*1766d43cSJames Collins } else { 63*1766d43cSJames Collins $data['grid-row-end'] = strtolower($parts[1]) . ' ' . filter_var($parts[2], FILTER_VALIDATE_INT); 64*1766d43cSJames Collins } 65*1766d43cSJames Collins } 66*1766d43cSJames Collins 67*1766d43cSJames Collins if($data['grid-col'] != '') { 68*1766d43cSJames Collins $parts = explode(' ', $data['grid-col']); 69*1766d43cSJames Collins $i = count($parts); 70*1766d43cSJames Collins if($i == 2 || $i == 3) { 71*1766d43cSJames Collins $data['grid-col-start'] = filter_var($parts[0], FILTER_VALIDATE_INT); 72*1766d43cSJames Collins } 73*1766d43cSJames Collins 74*1766d43cSJames Collins if($i == 2) { 75*1766d43cSJames Collins $data['grid-col-end'] = filter_var($parts[1], FILTER_VALIDATE_INT); 76*1766d43cSJames Collins } else { 77*1766d43cSJames Collins $data['grid-col-end'] = strtolower($parts[1]) . ' ' . filter_var($parts[2], FILTER_VALIDATE_INT); 78*1766d43cSJames Collins } 79*1766d43cSJames Collins } 80*1766d43cSJames Collins 81*1766d43cSJames Collins $classes = $this->buildClass($data); 82*1766d43cSJames Collins $styles = $this->buildStyle(array( 83*1766d43cSJames Collins 'width' => $data['width'], 84*1766d43cSJames Collins 'height' => $data['height'], 85*1766d43cSJames Collins 'border-radius' => $data['round'], 86*1766d43cSJames Collins 'border-color' => $data['border-color'], 87*1766d43cSJames Collins 'border-width' => $data['border-width'], 88*1766d43cSJames Collins 'color' => $data['color'], 89*1766d43cSJames Collins 'padding' => $data['padding'], 90*1766d43cSJames Collins 'margin' => $data['margin'], 91*1766d43cSJames Collins 'grid-row-start' => $data['grid-row-start'], 92*1766d43cSJames Collins 'grid-row-end' => $data['grid-row-end'], 93*1766d43cSJames Collins 'grid-col-start' => $data['grid-col-start'], 94*1766d43cSJames Collins 'grid-col-end' => $data['grid-col-end'], 95*1766d43cSJames Collins 96*1766d43cSJames Collins ), TRUE); 97*1766d43cSJames Collins 98*1766d43cSJames Collins $renderer->doc .= '<' . $tag . ($data['url'] != '' ? ' href="' . $data['url'] . '"' : '') . ' class="' . $this->elemClass . ' ' . $this->classPrefix . 'box'. $classes .'"' . $styles. '>'; 997935713eSJames Collins if($data['reveal']) $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'reveal">' . $data['reveal-text'] . '</div>'; 100581a9aa1SJames Collins } 101581a9aa1SJames Collins 102581a9aa1SJames Collins 103581a9aa1SJames Collins public function render_lexer_exit(Doku_Renderer $renderer, $data) { 104*1766d43cSJames Collins $tag = 'div'; 105*1766d43cSJames Collins if($data['url'] != '') $tag = 'a'; 106*1766d43cSJames Collins 107*1766d43cSJames Collins $renderer->doc .= '</' . $tag . '>'; 108581a9aa1SJames Collins } 109581a9aa1SJames Collins} 110581a9aa1SJames Collins?>