xref: /plugin/mermaid/action.php (revision 2d4b7fc29698099c27f70332f09cceb3b2c1e80c)
1<?php
2/**
3 * DokuWiki Plugin mermaid (Action Component)
4 *
5 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6 * @author  Robert Weinmeister <develop@weinmeister.org>
7 */
8
9class action_plugin_mermaid extends \dokuwiki\Extension\ActionPlugin
10{
11    /** @inheritDoc */
12    public function register(Doku_Event_Handler $controller)
13    {
14        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'load');
15    }
16
17    public function load(Doku_Event $event, $param)
18    {
19        switch ($this->getConf('location')) {
20            case 'local':
21                $event->data['script'][] = array
22                (
23                    'type'    => 'text/javascript',
24                    'charset' => 'utf-8',
25                    'src' => DOKU_BASE.'lib/plugins/mermaid/mermaid.min.js'
26                );
27                break;
28            case 'latest':
29                $event->data['script'][] = array
30                (
31                    'type'    => 'text/javascript',
32                    'charset' => 'utf-8',
33                    'src' => 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'
34                );
35                break;
36
37            case 'remote93':
38                $event->data['script'][] = array
39                (
40                    'type'    => 'text/javascript',
41                    'charset' => 'utf-8',
42                    'src' => 'https://cdn.jsdelivr.net/npm/mermaid@9.3/dist/mermaid.min.js'
43                );
44                break;
45            default:
46        }
47
48        $event->data['link'][] = array
49        (
50            'rel'     => 'stylesheet',
51            'type'    => 'text/css',
52            'href'    => DOKU_BASE."lib/plugins/mermaid/mermaid.css",
53        );
54
55        // Can be changed for debugging
56        // https://mermaid.js.org/config/directives.html#changing-loglevel-via-directive
57        $event->data['script'][] = array
58        (
59            'type'    => 'text/javascript',
60            'charset' => 'utf-8',
61            '_data'   => 'mermaid.initialize({logLevel: "error"});'
62        );
63    }
64}
65