xref: /plugin/mermaid/action.php (revision 2d4b7fc29698099c27f70332f09cceb3b2c1e80c)
146a60b4fSRobertWeinmeister<?php
246a60b4fSRobertWeinmeister/**
346a60b4fSRobertWeinmeister * DokuWiki Plugin mermaid (Action Component)
446a60b4fSRobertWeinmeister *
546a60b4fSRobertWeinmeister * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
646a60b4fSRobertWeinmeister * @author  Robert Weinmeister <develop@weinmeister.org>
746a60b4fSRobertWeinmeister */
846a60b4fSRobertWeinmeister
946a60b4fSRobertWeinmeisterclass action_plugin_mermaid extends \dokuwiki\Extension\ActionPlugin
1046a60b4fSRobertWeinmeister{
1146a60b4fSRobertWeinmeister    /** @inheritDoc */
1246a60b4fSRobertWeinmeister    public function register(Doku_Event_Handler $controller)
1346a60b4fSRobertWeinmeister    {
1446a60b4fSRobertWeinmeister        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'load');
1546a60b4fSRobertWeinmeister    }
1646a60b4fSRobertWeinmeister
1746a60b4fSRobertWeinmeister    public function load(Doku_Event $event, $param)
1846a60b4fSRobertWeinmeister    {
19*2d4b7fc2SRobert Weinmeister        switch ($this->getConf('location')) {
20*2d4b7fc2SRobert Weinmeister            case 'local':
2146a60b4fSRobertWeinmeister                $event->data['script'][] = array
2246a60b4fSRobertWeinmeister                (
2346a60b4fSRobertWeinmeister                    'type'    => 'text/javascript',
2446a60b4fSRobertWeinmeister                    'charset' => 'utf-8',
25*2d4b7fc2SRobert Weinmeister                    'src' => DOKU_BASE.'lib/plugins/mermaid/mermaid.min.js'
2646a60b4fSRobertWeinmeister                );
27*2d4b7fc2SRobert Weinmeister                break;
28*2d4b7fc2SRobert Weinmeister            case 'latest':
29*2d4b7fc2SRobert Weinmeister                $event->data['script'][] = array
30*2d4b7fc2SRobert Weinmeister                (
31*2d4b7fc2SRobert Weinmeister                    'type'    => 'text/javascript',
32*2d4b7fc2SRobert Weinmeister                    'charset' => 'utf-8',
33*2d4b7fc2SRobert Weinmeister                    'src' => 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'
34*2d4b7fc2SRobert Weinmeister                );
35*2d4b7fc2SRobert Weinmeister                break;
36*2d4b7fc2SRobert Weinmeister
37*2d4b7fc2SRobert Weinmeister            case 'remote93':
38*2d4b7fc2SRobert Weinmeister                $event->data['script'][] = array
39*2d4b7fc2SRobert Weinmeister                (
40*2d4b7fc2SRobert Weinmeister                    'type'    => 'text/javascript',
41*2d4b7fc2SRobert Weinmeister                    'charset' => 'utf-8',
42*2d4b7fc2SRobert Weinmeister                    'src' => 'https://cdn.jsdelivr.net/npm/mermaid@9.3/dist/mermaid.min.js'
43*2d4b7fc2SRobert Weinmeister                );
44*2d4b7fc2SRobert Weinmeister                break;
45*2d4b7fc2SRobert Weinmeister            default:
46*2d4b7fc2SRobert Weinmeister        }
4746a60b4fSRobertWeinmeister
4846a60b4fSRobertWeinmeister        $event->data['link'][] = array
4946a60b4fSRobertWeinmeister        (
5046a60b4fSRobertWeinmeister            'rel'     => 'stylesheet',
5146a60b4fSRobertWeinmeister            'type'    => 'text/css',
5246a60b4fSRobertWeinmeister            'href'    => DOKU_BASE."lib/plugins/mermaid/mermaid.css",
5346a60b4fSRobertWeinmeister        );
5446a60b4fSRobertWeinmeister
5546a60b4fSRobertWeinmeister        // Can be changed for debugging
5646a60b4fSRobertWeinmeister        // https://mermaid.js.org/config/directives.html#changing-loglevel-via-directive
5746a60b4fSRobertWeinmeister        $event->data['script'][] = array
5846a60b4fSRobertWeinmeister        (
5946a60b4fSRobertWeinmeister            'type'    => 'text/javascript',
6046a60b4fSRobertWeinmeister            'charset' => 'utf-8',
6146a60b4fSRobertWeinmeister            '_data'   => 'mermaid.initialize({logLevel: "error"});'
6246a60b4fSRobertWeinmeister        );
6346a60b4fSRobertWeinmeister    }
6446a60b4fSRobertWeinmeister}
65