117e6d639SJames Collins<?php 217e6d639SJames Collins/** 317e6d639SJames Collins * Mikio Syntax Plugin: Alert 417e6d639SJames Collins * 57935713eSJames Collins * @link http://github.com/nomadjimbob/mikioplugin 617e6d639SJames Collins * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 717e6d639SJames Collins * @author James Collins <james.collins@outlook.com.au> 817e6d639SJames Collins */ 9edb48470SJames Collinsif (!defined('DOKU_INC')) { die(); 10edb48470SJames Collins} 11edb48470SJames Collinsif (!defined('DOKU_PLUGIN')) { define('DOKU_PLUGIN', DOKU_INC.'lib/plugins/'); 12edb48470SJames Collins} 13*3a0ad8d3SJames Collinsrequire_once __DIR__.'/core.php'; 1417e6d639SJames Collins 15edb48470SJames Collinsclass syntax_plugin_mikioplugin_alert extends syntax_plugin_mikioplugin_core 16edb48470SJames Collins{ 1717e6d639SJames Collins public $tag = 'alert'; 187935713eSJames Collins public $hasEndTag = true; 1917e6d639SJames Collins public $options = array( 207935713eSJames Collins 'dismissible' => array('type' => 'boolean', 'default' => 'false'), 211e0354ddSJames Collins 'icon' => array('type' => 'text', 'default' => ''), 2217e6d639SJames Collins ); 2317e6d639SJames Collins 24edb48470SJames Collins public function __construct() 25edb48470SJames Collins { 267935713eSJames Collins $this->addCommonOptions('type shadow width align text-align'); 277935713eSJames Collins $this->options['type']['default'] = 'primary'; 287935713eSJames Collins } 297935713eSJames Collins 30edb48470SJames Collins public function getAllowedTypes() 31edb48470SJames Collins { 32edb48470SJames Collins return array('formatting', 'substition', 'disabled', 'container', 'protected'); 33edb48470SJames Collins } 34edb48470SJames Collins public function getPType() 35edb48470SJames Collins { 36edb48470SJames Collins return 'normal'; 37edb48470SJames Collins } 3817e6d639SJames Collins 39edb48470SJames Collins public function render_lexer_enter(Doku_Renderer $renderer, $data) 40edb48470SJames Collins { 417935713eSJames Collins $classes = $this->buildClass($data, array('dismissible')); 428127a956SJames Collins $styles = $this->buildStyle(array('width' => $data['width'] ?? ''), true); 4317e6d639SJames Collins 447935713eSJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'alert ' . $classes . '" role="alert"' . $styles . '>'; 4517e6d639SJames Collins 468127a956SJames Collins if(!empty($data['icon'])) { 471e0354ddSJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'alert-icon">'; 481e0354ddSJames Collins $this->syntaxRender($renderer, 'icon', '', array_flip(explode(' ', $data['icon'])), MIKIO_LEXER_SPECIAL); 491e0354ddSJames Collins $renderer->doc .= '</div>'; 501e0354ddSJames Collins } 511e0354ddSJames Collins 521e0354ddSJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'alert-content">'; 531e0354ddSJames Collins 547935713eSJames Collins if($data['dismissible'] == true) { 557935713eSJames Collins $renderer->doc .= '<a href="#" class="' . $this->elemClass . ' ' . $this->classPrefix . 'alert-close">×</a>'; 5617e6d639SJames Collins } 5717e6d639SJames Collins } 5817e6d639SJames Collins 5917e6d639SJames Collins 60edb48470SJames Collins public function render_lexer_exit(Doku_Renderer $renderer, $data) 61edb48470SJames Collins { 621e0354ddSJames Collins $renderer->doc .= '</div></div>'; 6317e6d639SJames Collins } 6417e6d639SJames Collins} 6517e6d639SJames Collins?>