1*7935713eSJames Collins<?php 2*7935713eSJames Collins/** 3*7935713eSJames Collins * Mikio Syntax Plugin: Step 4*7935713eSJames Collins * 5*7935713eSJames Collins * @link http://github.com/nomadjimbob/mikioplugin 6*7935713eSJames Collins * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 7*7935713eSJames Collins * @author James Collins <james.collins@outlook.com.au> 8*7935713eSJames Collins */ 9*7935713eSJames Collinsif (!defined('DOKU_INC')) die(); 10*7935713eSJames Collinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 11*7935713eSJames Collinsrequire_once(dirname(__FILE__).'/core.php'); 12*7935713eSJames Collins 13*7935713eSJames Collinsclass syntax_plugin_mikioplugin_step extends syntax_plugin_mikioplugin_core { 14*7935713eSJames Collins public $tag = 'step'; 15*7935713eSJames Collins public $hasEndTag = true; 16*7935713eSJames Collins public $options = array( 17*7935713eSJames Collins 'title' => array('type' => 'text', 'default' => ''), 18*7935713eSJames Collins 'complete' => array('type' => 'boolean', 'default' => 'false'), 19*7935713eSJames Collins 'url' => array('type' => 'url', 'default' => ''), 20*7935713eSJames Collins 'icon' => array('type' => 'text', 'default' => ''), 21*7935713eSJames Collins ); 22*7935713eSJames Collins 23*7935713eSJames Collins public function __construct() { 24*7935713eSJames Collins $this->addCommonOptions('type'); 25*7935713eSJames Collins } 26*7935713eSJames Collins 27*7935713eSJames Collins // public function getAllowedTypes() { return array(); } 28*7935713eSJames Collins 29*7935713eSJames Collins public function render_lexer_enter(Doku_Renderer $renderer, $data) { 30*7935713eSJames Collins $classes = $this->buildClass($data, array('complete')); 31*7935713eSJames Collins 32*7935713eSJames Collins $renderer->doc .= '<li class="' . $this->elemClass . ' ' . $this->classPrefix . 'step' . $classes . '">'; 33*7935713eSJames Collins if($data['url']) $renderer->doc .= '<a href="' . $data['url'] . '" class="' . $this->elemClass . ' ' . $this->classPrefix . 'step-link">'; 34*7935713eSJames Collins if($data['icon'] != '') { 35*7935713eSJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'step-icon">'; 36*7935713eSJames Collins $this->syntaxRender($renderer, 'icon', '', array_flip(explode(' ', $data['icon'])), MIKIO_LEXER_SPECIAL); 37*7935713eSJames Collins $renderer->doc .= '</div>'; 38*7935713eSJames Collins } 39*7935713eSJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'step-text">'; 40*7935713eSJames Collins if($data['title'] != '') $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'step-title">' . $data['title'] . '</div>'; 41*7935713eSJames Collins } 42*7935713eSJames Collins 43*7935713eSJames Collins 44*7935713eSJames Collins public function render_lexer_exit(Doku_Renderer $renderer, $data) { 45*7935713eSJames Collins if($data['url']) $renderer->doc .= '</a>'; 46*7935713eSJames Collins $renderer->doc .= '</div>'; 47*7935713eSJames Collins $renderer->doc .= '</li>'; 48*7935713eSJames Collins } 49*7935713eSJames Collins 50*7935713eSJames Collins 51*7935713eSJames Collins // public function render_lexer_unmatched(Doku_Renderer $renderer, $data) { 52*7935713eSJames Collins // $items = []; 53*7935713eSJames Collins // $bar = ''; 54*7935713eSJames Collins 55*7935713eSJames Collins // if(preg_match_all('/<(?i:' . $this->tagPrefix . 'step)(.*?)>/s', $data, $match)) { 56*7935713eSJames Collins // if(count($match) >= 1) { 57*7935713eSJames Collins // for($i = 0; $i < count($match[1]); $i++) { 58*7935713eSJames Collins // $title = ''; 59*7935713eSJames Collins // $text = ''; 60*7935713eSJames Collins // $complete = false; 61*7935713eSJames Collins 62*7935713eSJames Collins // if(preg_match('/title=("\w[\w\s]*(?=")|\w+|"[\w\s]*")/is', $match[1][$i], $titleMatch)) { 63*7935713eSJames Collins // if(count($titleMatch) >= 1) { 64*7935713eSJames Collins // $title = str_replace("\"", "", $titleMatch[1]); 65*7935713eSJames Collins // } 66*7935713eSJames Collins // } 67*7935713eSJames Collins 68*7935713eSJames Collins // if(preg_match('/text=("\w[\w\s]*(?=")|\w+|"[\w\s]*")/is', $match[1][$i], $titleMatch)) { 69*7935713eSJames Collins // if(count($titleMatch) >= 1) { 70*7935713eSJames Collins // $text = str_replace("\"", "", $titleMatch[1]); 71*7935713eSJames Collins // } 72*7935713eSJames Collins // } 73*7935713eSJames Collins 74*7935713eSJames Collins // if(preg_match('/ complete /is', $match[1][$i], $titleMatch)) { 75*7935713eSJames Collins // if(count($titleMatch) >= 1) { 76*7935713eSJames Collins // $complete = true; 77*7935713eSJames Collins // } 78*7935713eSJames Collins // } 79*7935713eSJames Collins 80*7935713eSJames Collins // $items[] = array('title' => $title, 'text' => $text, 'complete' => $complete); 81*7935713eSJames Collins // } 82*7935713eSJames Collins // } 83*7935713eSJames Collins // } 84*7935713eSJames Collins 85*7935713eSJames Collins // foreach($items as $item) { 86*7935713eSJames Collins // $bar .= '<li class="' . $this->elemClass . ' ' . $this->classPrefix . 'step' . ($item['complete'] ? ' ' . $this->classPrefix . 'complete' : '' ) . '"><b>' . $item['title'] .'</b>' . $item['text'] . '</li>'; 87*7935713eSJames Collins // } 88*7935713eSJames Collins 89*7935713eSJames Collins // $renderer->doc .= $bar . '</ul>'; 90*7935713eSJames Collins // } 91*7935713eSJames Collins} 92*7935713eSJames Collins?> 93