xref: /plugin/dwtimeline/action.php (revision 545c554be65100e9bb5eff6d4aa54c829680442a)
14ff971beSsaggi-dw<?php
2*545c554bSsaggi-dw
34ff971beSsaggi-dw/**
44ff971beSsaggi-dw * DokuWiki Plugin dwtimeline (Action Component)
54ff971beSsaggi-dw *
64ff971beSsaggi-dw * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
74ff971beSsaggi-dw * @author  saggi <saggi@gmx.de>
84ff971beSsaggi-dw */
94ff971beSsaggi-dw
10*545c554bSsaggi-dwclass action_plugin_dwtimeline extends DokuWiki_Action_Plugin
11*545c554bSsaggi-dw{
124ff971beSsaggi-dw    /**
134ff971beSsaggi-dw     * Register the eventhandlers
144ff971beSsaggi-dw     */
15*545c554bSsaggi-dw    public function register(Doku_Event_Handler $controller)
16*545c554bSsaggi-dw    {
17*545c554bSsaggi-dw        $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'insertButton', array());
184ff971beSsaggi-dw    }
194ff971beSsaggi-dw
204ff971beSsaggi-dw    /**
214ff971beSsaggi-dw     * Inserts the toolbar button
224ff971beSsaggi-dw     */
23*545c554bSsaggi-dw    public function insertButton(Doku_Event $event, $param)
24*545c554bSsaggi-dw    {
254ff971beSsaggi-dw        $event->data[] = array(
262ddb0813SSteffen Sagert            'type'  => 'picker',
272ddb0813SSteffen Sagert            'title' => $this->getLang('tl-picker'),
282ddb0813SSteffen Sagert            'icon'  => '../../plugins/dwtimeline/icons/timeline_picker.png',
292ddb0813SSteffen Sagert            'list'  => array(
302ddb0813SSteffen Sagert                array(
314ff971beSsaggi-dw                    'type'   => 'format',
324ff971beSsaggi-dw                    'title'  => $this->getLang('tl-button'),
334ff971beSsaggi-dw                    'icon'   => '../../plugins/dwtimeline/icons/timeline_marker.png',
342ddb0813SSteffen Sagert                    'open'   => $this->buildSkeleton('complete'),
354ff971beSsaggi-dw                    'sample' => $this->getLang('ms-content'),
364ff971beSsaggi-dw                    'close'  => '\n</milestone>\n</dwtimeline title="' . $this->getLang('tl-end') . '">',
372ddb0813SSteffen Sagert                ),
382ddb0813SSteffen Sagert                array(
392ddb0813SSteffen Sagert                    'type'   => 'format',
402ddb0813SSteffen Sagert                    'title'  => $this->getLang('ms-button'),
412ddb0813SSteffen Sagert                    'icon'   => '../../plugins/dwtimeline/icons/page_white_code.png',
422ddb0813SSteffen Sagert                    'open'   => $this->buildSkeleton('milestone'),
432ddb0813SSteffen Sagert                    'sample' => $this->getLang('ms-content'),
442ddb0813SSteffen Sagert                    'close'  => '\n</milestone>',
452ddb0813SSteffen Sagert                ),
462ddb0813SSteffen Sagert            )
474ff971beSsaggi-dw        );
484ff971beSsaggi-dw    }
494ff971beSsaggi-dw
50*545c554bSsaggi-dw    private function buildSkeleton($skeletontype, $data = null)
51*545c554bSsaggi-dw    {
522ddb0813SSteffen Sagert        switch ($skeletontype) {
532ddb0813SSteffen Sagert            case 'complete':
54*545c554bSsaggi-dw                $skeleton = '<dwtimeline align="' . $this->getConf('align') . '" title="';
55*545c554bSsaggi-dw                $skeleton .= $this->getLang('tl-title') . '" description="' . $this->getLang('tl-desc') . '">\n';
56c78eb039Ssaggi-dw                $skeleton .= $this->buildSkeleton('milestone');
57*545c554bSsaggi-dw                $skeleton .= $this->getLang('ms-content') . '\n';
582ddb0813SSteffen Sagert                $skeleton .= '</milestone>\n';
59c78eb039Ssaggi-dw                $skeleton .= $this->buildSkeleton('milestone', '02');
602ddb0813SSteffen Sagert                break;
612ddb0813SSteffen Sagert            case 'milestone':
62*545c554bSsaggi-dw                if (!$data) {
63*545c554bSsaggi-dw                    $data = $this->getLang('ms-data');
64*545c554bSsaggi-dw                }
65*545c554bSsaggi-dw                $skeleton = '<milestone title="' . $this->getLang('ms-title') . '" description="';
66*545c554bSsaggi-dw                $skeleton .= $this->getLang('ms-desc') . '" ';
67c78eb039Ssaggi-dw                $skeleton .= 'data="' . $data . '" backcolor="' . $this->getLang('ms-backcolor') . '">\n';
682ddb0813SSteffen Sagert                break;
692ddb0813SSteffen Sagert            default:
70*545c554bSsaggi-dw                $skeleton = '<dwtimeline title="' . $this->getLang('tl-title') . '" description="';
71*545c554bSsaggi-dw                $skeleton .= $this->getLang('tl-desc') . '">\n';
72c78eb039Ssaggi-dw                $skeleton .= $this->buildSkeleton('milestone');
732ddb0813SSteffen Sagert                break;
742ddb0813SSteffen Sagert        }
754ff971beSsaggi-dw        return $skeleton;
764ff971beSsaggi-dw    }
774ff971beSsaggi-dw}
78