1<?php 2if (!defined('DOKU_INC')) die(); 3class syntax_plugin_bureaucracytoolbar extends DokuWiki_Syntax_Plugin { 4 public function getType() { 5 return 'substition'; 6 } 7 public function getPType() { 8 return 'block'; 9 } 10 public function getSort() { 11 return 155; 12 } 13 public function connectTo($mode) { 14 $this->Lexer->addSpecialPattern('<bureaucracytoolbar>', $mode, 'plugin_bureaucracytoolbar'); 15 } 16 public function handle($match, $state, $pos, Doku_Handler $handler) { 17 return array(); 18 } 19 public function render($mode, Doku_Renderer $renderer, $data) { 20 if ($mode !== 'xhtml') return false; 21 $renderer->doc .= $this->getToolbarHtml(); 22 $this->addJavaScript(); 23 return true; 24 } 25 private function getToolbarHtml() { 26 $html = '<div class="bureaucracytoolbar">'; 27 $html .= '<button type="button" onclick="bureaucracyToolbar.addSyntax(\'bold\')">Bold</button>'; 28 $html .= '<button type="button" onclick="bureaucracyToolbar.addSyntax(\'italic\')">Italic</button>'; 29 $html .= '<button type="button" onclick="bureaucracyToolbar.addSyntax(\'underscore\')">Underscore</button>'; 30 $html .= '<button type="button" onclick="bureaucracyToolbar.addSyntax(\'code\')">Code</button>'; 31 $html .= '<button type="button" onclick="bureaucracyToolbar.addSyntax(\'list\')">List Item</button>'; 32 $html .= '<button type="button" onclick="bureaucracyToolbar.addSyntax(\'link\')">Link</button>';// New button 33 $html .= '</div>'; 34 $html .= '<style> 35 .bureaucracytoolbar { margin-bottom: 10px; background-color: #f0f0f0; padding: 5px; border-radius: 4px; } 36 .bureaucracytoolbar button { margin-right: 5px; padding: 5px 10px; cursor: pointer; } 37 </style>'; 38 return $html; 39 } 40 private function addJavaScript() { 41 $script = DOKU_BASE . 'lib/plugins/bureaucracytoolbar/script.js'; 42 global $INFO; 43 if (!isset($INFO['bureaucracytoolbar_js_added'])) { 44 $INFO['bureaucracytoolbar_js_added'] = true; 45 echo '<script type="text/javascript" src="' . $script . '"></script>'; 46 } 47 } 48} 49