1<?php 2 3/** 4 * DokuWiki Plugin dwtimeline (Action Component) 5 * 6 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 7 * @author saggi <saggi@gmx.de> 8 */ 9 10use dokuwiki\Extension\ActionPlugin; 11use dokuwiki\Extension\Event; 12use dokuwiki\Extension\EventHandler; 13 14class action_plugin_dwtimeline extends ActionPlugin 15{ 16 /** 17 * Register the eventhandlers 18 */ 19 public function register(EventHandler $controller) 20 { 21 $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'insertButton', []); 22 } 23 24 /** 25 * Inserts the toolbar button 26 */ 27 public function insertButton(Event $event, $param) 28 { 29 $event->data[] = [ 30 'type' => 'picker', 31 'title' => $this->getLang('tl-picker'), 32 'icon' => '../../plugins/dwtimeline/icons/timeline_picker.png', 33 'list' => [ 34 [ 35 'type' => 'format', 36 'title' => $this->getLang('tl-button'), 37 'icon' => '../../plugins/dwtimeline/icons/timeline_marker.png', 38 'open' => $this->buildSkeleton('complete'), 39 'sample' => $this->getLang('ms-content'), 40 'close' => '\n</milestone>\n</dwtimeline title="' . $this->getLang('tl-end') . '">', 41 ], 42 [ 43 'type' => 'format', 44 'title' => $this->getLang('ms-button'), 45 'icon' => '../../plugins/dwtimeline/icons/page_white_code.png', 46 'open' => $this->buildSkeleton('milestone'), 47 'sample' => $this->getLang('ms-content'), 48 'close' => '\n</milestone>', 49 ], 50 ] 51 ]; 52 } 53 54 private function buildSkeleton($skeletontype, $data = null) 55 { 56 switch ($skeletontype) { 57 case 'complete': 58 $skeleton = '<dwtimeline align="' . $this->getConf('align') . '" title="'; 59 $skeleton .= $this->getLang('tl-title') . '" description="' . $this->getLang('tl-desc') . '">\n'; 60 $skeleton .= $this->buildSkeleton('milestone'); 61 $skeleton .= $this->getLang('ms-content') . '\n'; 62 $skeleton .= '</milestone>\n'; 63 $skeleton .= $this->buildSkeleton('milestone', '02'); 64 break; 65 case 'milestone': 66 if (!$data) { 67 $data = $this->getLang('ms-data'); 68 } 69 $skeleton = '<milestone title="' . $this->getLang('ms-title') . '" description="'; 70 $skeleton .= $this->getLang('ms-desc') . '" '; 71 $skeleton .= 'data="' . $data . '" backcolor="' . $this->getLang('ms-backcolor') . '">\n'; 72 break; 73 default: 74 $skeleton = '<dwtimeline title="' . $this->getLang('tl-title') . '" description="'; 75 $skeleton .= $this->getLang('tl-desc') . '">\n'; 76 $skeleton .= $this->buildSkeleton('milestone'); 77 break; 78 } 79 return $skeleton; 80 } 81} 82