14ff971beSsaggi-dw<?php 24ff971beSsaggi-dw/** 34ff971beSsaggi-dw * DokuWiki Plugin dwtimeline (Action Component) 44ff971beSsaggi-dw * 54ff971beSsaggi-dw * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 64ff971beSsaggi-dw * @author saggi <saggi@gmx.de> 74ff971beSsaggi-dw */ 84ff971beSsaggi-dw 94ff971beSsaggi-dw// must be run within Dokuwiki 104ff971beSsaggi-dwif(!defined('DOKU_INC')) die(); 114ff971beSsaggi-dw 124ff971beSsaggi-dwclass action_plugin_dwtimeline extends DokuWiki_Action_Plugin { 134ff971beSsaggi-dw 144ff971beSsaggi-dw /** 154ff971beSsaggi-dw * Register the eventhandlers 164ff971beSsaggi-dw */ 174ff971beSsaggi-dw public function register(Doku_Event_Handler $controller) { 184ff971beSsaggi-dw $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'insert_button', array ()); 194ff971beSsaggi-dw } 204ff971beSsaggi-dw 214ff971beSsaggi-dw /** 224ff971beSsaggi-dw * Inserts the toolbar button 234ff971beSsaggi-dw */ 244ff971beSsaggi-dw public function insert_button(Doku_Event $event, $param) { 252ddb0813SSteffen Sagert 264ff971beSsaggi-dw $event->data[] = array ( 272ddb0813SSteffen Sagert 'type' => 'picker', 282ddb0813SSteffen Sagert 'title' => $this->getLang('tl-picker'), 292ddb0813SSteffen Sagert 'icon' => '../../plugins/dwtimeline/icons/timeline_picker.png', 302ddb0813SSteffen Sagert 'list' => array( 312ddb0813SSteffen Sagert array( 324ff971beSsaggi-dw 'type' => 'format', 334ff971beSsaggi-dw 'title' => $this->getLang('tl-button'), 344ff971beSsaggi-dw 'icon' => '../../plugins/dwtimeline/icons/timeline_marker.png', 352ddb0813SSteffen Sagert 'open' => $this->buildSkeleton('complete'), 364ff971beSsaggi-dw 'sample' => $this->getLang('ms-content'), 374ff971beSsaggi-dw 'close' => '\n</milestone>\n</dwtimeline title="'.$this->getLang('tl-end').'">', 382ddb0813SSteffen Sagert ), 392ddb0813SSteffen Sagert array( 402ddb0813SSteffen Sagert 'type' => 'format', 412ddb0813SSteffen Sagert 'title' => $this->getLang('ms-button'), 422ddb0813SSteffen Sagert 'icon' => '../../plugins/dwtimeline/icons/page_white_code.png', 432ddb0813SSteffen Sagert 'open' => $this->buildSkeleton('milestone'), 442ddb0813SSteffen Sagert 'sample' => $this->getLang('ms-content'), 452ddb0813SSteffen Sagert 'close' => '\n</milestone>', 462ddb0813SSteffen Sagert ), 472ddb0813SSteffen Sagert ) 484ff971beSsaggi-dw ); 494ff971beSsaggi-dw } 504ff971beSsaggi-dw 51*c78eb039Ssaggi-dw private function buildSkeleton($skeletontype, $data = null) { 5208c5c745SSteffen Sagert $skeleton = ''; 532ddb0813SSteffen Sagert switch ($skeletontype){ 542ddb0813SSteffen Sagert case 'complete' : 552ddb0813SSteffen Sagert $skeleton = '<dwtimeline align="' . $this->getConf('align') . '" title="' . $this->getLang('tl-title') . '" description="' . $this->getLang('tl-desc') . '">\n'; 56*c78eb039Ssaggi-dw $skeleton .= $this->buildSkeleton('milestone'); 572ddb0813SSteffen Sagert $skeleton .= '</milestone>\n'; 58*c78eb039Ssaggi-dw $skeleton .= $this->buildSkeleton('milestone', '02'); 592ddb0813SSteffen Sagert break; 602ddb0813SSteffen Sagert case 'milestone' : 61*c78eb039Ssaggi-dw if (!$data) {$data = $this->getLang('ms-data');} 622ddb0813SSteffen Sagert $skeleton = '<milestone title = "' . $this->getLang('ms-title') . '" description="' . $this->getLang('ms-desc') . '" '; 63*c78eb039Ssaggi-dw $skeleton .= 'data="' . $data . '" backcolor="' . $this->getLang('ms-backcolor') . '">\n'; 642ddb0813SSteffen Sagert break; 652ddb0813SSteffen Sagert default : 662ddb0813SSteffen Sagert $skeleton = '<dwtimeline title="' . $this->getLang('tl-title') . '" description="' . $this->getLang('tl-desc') . '">\n'; 67*c78eb039Ssaggi-dw $skeleton .= $this->buildSkeleton('milestone'); 682ddb0813SSteffen Sagert break; 692ddb0813SSteffen Sagert } 704ff971beSsaggi-dw return $skeleton; 714ff971beSsaggi-dw } 724ff971beSsaggi-dw 734ff971beSsaggi-dw 744ff971beSsaggi-dw} 754ff971beSsaggi-dw 76