xref: /plugin/mikioplugin/syntax/card.php (revision edb48470f16c4f0bdfbfa5a01e1ea529a828d346)
117e6d639SJames Collins<?php
217e6d639SJames Collins/**
317e6d639SJames Collins * Mikio Syntax Plugin: Card
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 */
9*edb48470SJames Collinsif (!defined('DOKU_INC')) { die();
10*edb48470SJames Collins}
11*edb48470SJames Collinsif (!defined('DOKU_PLUGIN')) { define('DOKU_PLUGIN', DOKU_INC.'lib/plugins/');
12*edb48470SJames Collins}
13*edb48470SJames Collinsrequire_once dirname(__FILE__).'/core.php';
1417e6d639SJames Collins
15*edb48470SJames Collinsclass syntax_plugin_mikioplugin_card extends syntax_plugin_mikioplugin_core
16*edb48470SJames Collins{
1717e6d639SJames Collins    public $tag                 = 'card';
187935713eSJames Collins    public $hasEndTag           = true;
197935713eSJames Collins    public $options             = array(
207935713eSJames Collins        'image'         => array('type'     => 'media',      'default'   => ''),
21062e2726SJames Collins        'image-cover' => array('type'     => 'boolean',      'default'   => 'false'),
228dd6c7b1SJames Collins        'image-height' => array('type' => 'size', 'default' => ''),
237935713eSJames Collins        'overlay'       => array('type'     => 'boolean',   'default'   => 'false'),
247935713eSJames Collins        'title'         => array('type'     => 'text',      'default'   => ''),
257935713eSJames Collins        'subtitle'      => array('type'     => 'text',      'default'   => ''),
267935713eSJames Collins        'no-body'        => array('type'     => 'boolean',   'default'   => 'false'),
277935713eSJames Collins        'header'      => array('type'     => 'text',      'default'   => ''),
287935713eSJames Collins        'footer'      => array('type'     => 'text',      'default'   => ''),
297935713eSJames Collins        'placeholder-text'      => array('type'     => 'text',      'default'   => ''),
307935713eSJames Collins        'placeholder-color'      => array('type'     => 'text',      'default'   => ''),
317935713eSJames Collins        'placeholder-text-color'      => array('type'     => 'text',      'default'   => ''),
328dd6c7b1SJames Collins        'placeholder-height' => array('type' => 'size', 'default' => ''),
337935713eSJames Collins        'footer-image'      => array('type'     => 'media',      'default'   => ''),
34062e2726SJames Collins        'footer-image-cover' => array('type'     => 'boolean',      'default'   => 'false'),
357935713eSJames Collins        'footer-placeholder-text'      => array('type'     => 'text',      'default'   => ''),
367935713eSJames Collins        'footer-placeholder-color'      => array('type'     => 'text',      'default'   => ''),
377935713eSJames Collins        'footer-placeholder-text-color'      => array('type'     => 'text',      'default'   => ''),
387935713eSJames Collins        'horizontal'            => array('type'     => 'boolean',   'default'   => 'false'),
397935713eSJames Collins        'footer-small'        => array('type'     => 'boolean',   'default'   => 'false'),
407935713eSJames Collins    );
4117e6d639SJames Collins
4217e6d639SJames Collins
43*edb48470SJames Collins    public function __construct()
44*edb48470SJames Collins    {
451766d43cSJames Collins        $this->addCommonOptions('type shadow width height text-align vertical-align text-color');
467935713eSJames Collins    }
477935713eSJames Collins
48*edb48470SJames Collins    public function getAllowedTypes()
49*edb48470SJames Collins    {
50*edb48470SJames Collins        return array('formatting', 'substition', 'disabled', 'container', 'protected');
51*edb48470SJames Collins    }
52*edb48470SJames Collins    public function getPType()
53*edb48470SJames Collins    {
54*edb48470SJames Collins        return 'normal';
55*edb48470SJames Collins    }
564f3848fdSJames Collins
57*edb48470SJames Collins    public function render_lexer_enter(Doku_Renderer $renderer, $data)
58*edb48470SJames Collins    {
597935713eSJames Collins        $classes = $this->buildClass($data, array('overlay', 'horizontal'));
60*edb48470SJames Collins        $styles = $this->buildStyle(array('height' => $data['height'], 'width' => $data['width']), true);
6117e6d639SJames Collins
627935713eSJames Collins        $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'card' . $classes . '"' . $styles . '>';
63f4aa5cdcSJames Collins
64*edb48470SJames Collins        if($data['horizontal']) { $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'card-horizontal-image">';
65*edb48470SJames Collins        }
667935713eSJames Collins        if($data['placeholder-text'] != '') {
678dd6c7b1SJames Collins            $this->syntaxRender($renderer, 'placeholder', '', $this->arrayRemoveEmpties(array('text' => $data['placeholder-text'], 'color' => $data['placeholder-color'], 'text-color' => $data['placeholder-text-color'], 'height' => $data['placeholder-height'])));
687935713eSJames Collins        } elseif($data['image'] != '') {
698dd6c7b1SJames Collins            $style = '';
708dd6c7b1SJames Collins            if($data['image-height'] != '') {
718dd6c7b1SJames Collins                $style = 'height:' . $data['image-height'] . ';';
728dd6c7b1SJames Collins            }
738dd6c7b1SJames Collins            $renderer->doc .= '<img src="' . $data['image'] . '" class="' . $this->elemClass . ' ' . $this->classPrefix . 'card-image' . ($data['image-cover'] ? ' ' . $this->classPrefix . 'image-cover' : '') . '" style="' . $style . '">';
74939c483cSJames Collins        }
75*edb48470SJames Collins        if($data['horizontal']) { $renderer->doc .= '</div><div class="' . $this->elemClass . ' ' . $this->classPrefix . 'card-horizontal-body">';
76*edb48470SJames Collins        }
7717e6d639SJames Collins
78*edb48470SJames Collins        if($data['header'] != '') { $this->syntaxRender($renderer, 'cardheader', $data['header']);
79*edb48470SJames Collins        }
801e2e4602SJames Collins
81*edb48470SJames Collins        if($data['no-body'] == false) { $this->syntaxRender($renderer, 'cardbody', '', $this->arrayRemoveEmpties(array('vertical-align' => $data['vertical-align'], 'text-color' => $data['text-color'])), MIKIO_LEXER_ENTER);
82*edb48470SJames Collins        }
8317e6d639SJames Collins
84*edb48470SJames Collins        if($data['title'] != '') { $this->syntaxRender($renderer, 'cardtitle', $data['title']);
85*edb48470SJames Collins        }
86*edb48470SJames Collins        if($data['subtitle'] != '') { $this->syntaxRender($renderer, 'cardsubtitle', $data['subtitle']);
87*edb48470SJames Collins        }
8817e6d639SJames Collins    }
8917e6d639SJames Collins
9017e6d639SJames Collins
91*edb48470SJames Collins    public function render_lexer_exit(Doku_Renderer $renderer, $data)
92*edb48470SJames Collins    {
93*edb48470SJames Collins        if($data['no-body'] == false) { $this->syntaxRender($renderer, 'cardbody', '', null, MIKIO_LEXER_EXIT);
94*edb48470SJames Collins        }
95f4aa5cdcSJames Collins
967935713eSJames Collins        if($data['footer'] != '') {
977935713eSJames Collins            $this->syntaxRender($renderer, 'cardfooter', $data['footer'], $this->arrayRemoveEmpties(array('small' => $data['footer-small'])));
9817e6d639SJames Collins        }
9917e6d639SJames Collins
1007935713eSJames Collins        if($data['footer-placeholder-text'] != '') {
1017935713eSJames Collins            $this->syntaxRender($renderer, 'placeholder', '', $this->arrayRemoveEmpties(array('text' => $data['footer-placeholder-text'], 'color' => $data['footer-placeholder-color'], 'text-color' => $data['footer-placeholder-text-color'])));
1027935713eSJames Collins        } elseif($data['footer-image'] != '') {
103062e2726SJames Collins            $renderer->doc .= '<img src="' . $data['footer-image'] . '" class="' . $this->elemClass . ' ' . $this->classPrefix . 'card-image' . ($data['footer-image-cover'] ? ' ' . $this->classPrefix . 'image-cover' : '') .'">';
1041e2e4602SJames Collins        }
1051e2e4602SJames Collins
106*edb48470SJames Collins        if($data['horizontal']) { $renderer->doc .= '</div>';
107*edb48470SJames Collins        }
10817e6d639SJames Collins        $renderer->doc .= '</div>';
10917e6d639SJames Collins    }
11017e6d639SJames Collins}
11117e6d639SJames Collins?>