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