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