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