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 { 196e5341c6SRobert Weinmeister // Can be changed for debugging Mermaid 206e5341c6SRobert Weinmeister // https://mermaid.js.org/config/directives.html#changing-loglevel-via-directive 216e5341c6SRobert Weinmeister define("MERMAIDLOGLEVEL", "error"); 226e5341c6SRobert Weinmeister 23*4c8bd9ffSRobert Weinmeister $theme = $this->getConf('theme'); 24*4c8bd9ffSRobert Weinmeister $init = "mermaid.initialize({startOnLoad: true, logLevel: '".MERMAIDLOGLEVEL."', theme: '".$theme."'});"; 25*4c8bd9ffSRobert Weinmeister 262d4b7fc2SRobert Weinmeister switch ($this->getConf('location')) { 272d4b7fc2SRobert Weinmeister case 'local': 2846a60b4fSRobertWeinmeister $event->data['script'][] = array 2946a60b4fSRobertWeinmeister ( 3046a60b4fSRobertWeinmeister 'type' => 'text/javascript', 3146a60b4fSRobertWeinmeister 'charset' => 'utf-8', 322d4b7fc2SRobert Weinmeister 'src' => DOKU_BASE.'lib/plugins/mermaid/mermaid.min.js' 3346a60b4fSRobertWeinmeister ); 342d4b7fc2SRobert Weinmeister break; 352d4b7fc2SRobert Weinmeister case 'latest': 362d4b7fc2SRobert Weinmeister $event->data['script'][] = array 372d4b7fc2SRobert Weinmeister ( 386e5341c6SRobert Weinmeister 'type' => 'module', 392d4b7fc2SRobert Weinmeister 'charset' => 'utf-8', 40*4c8bd9ffSRobert Weinmeister '_data' => "import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';".$init 412d4b7fc2SRobert Weinmeister ); 422d4b7fc2SRobert Weinmeister break; 43a612c7d6SRobert Weinmeister case 'remote106': 44a612c7d6SRobert Weinmeister $event->data['script'][] = array 45a612c7d6SRobert Weinmeister ( 46a612c7d6SRobert Weinmeister 'type' => 'module', 47a612c7d6SRobert Weinmeister 'charset' => 'utf-8', 48a612c7d6SRobert Weinmeister '_data' => "import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; 49a612c7d6SRobert Weinmeister mermaid.initialize({startOnLoad: true, logLevel: '" . MERMAIDLOGLEVEL . "'});" 50a612c7d6SRobert Weinmeister ); 51a612c7d6SRobert Weinmeister break; 528eaa3f3bSRobert Weinmeister case 'remote104': 538eaa3f3bSRobert Weinmeister $event->data['script'][] = array 548eaa3f3bSRobert Weinmeister ( 558eaa3f3bSRobert Weinmeister 'type' => 'module', 568eaa3f3bSRobert Weinmeister 'charset' => 'utf-8', 578eaa3f3bSRobert Weinmeister '_data' => "import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.esm.min.mjs'; 588eaa3f3bSRobert Weinmeister mermaid.initialize({startOnLoad: true, logLevel: '" . MERMAIDLOGLEVEL . "'});" 598eaa3f3bSRobert Weinmeister ); 608eaa3f3bSRobert Weinmeister break; 617d8a2661SRobert Weinmeister case 'remote103': 627d8a2661SRobert Weinmeister $event->data['script'][] = array 637d8a2661SRobert Weinmeister ( 647d8a2661SRobert Weinmeister 'type' => 'module', 657d8a2661SRobert Weinmeister 'charset' => 'utf-8', 66*4c8bd9ffSRobert Weinmeister '_data' => "import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.3.1/dist/mermaid.esm.min.mjs';".$init 677d8a2661SRobert Weinmeister ); 687d8a2661SRobert Weinmeister break; 694df3d176SRobert Weinmeister case 'remote102': 704df3d176SRobert Weinmeister $event->data['script'][] = array 714df3d176SRobert Weinmeister ( 724df3d176SRobert Weinmeister 'type' => 'module', 734df3d176SRobert Weinmeister 'charset' => 'utf-8', 74*4c8bd9ffSRobert Weinmeister '_data' => "import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.2.4/dist/mermaid.esm.min.mjs';".$init 754df3d176SRobert Weinmeister ); 764df3d176SRobert Weinmeister break; 775f50b169SRobert Weinmeister case 'remote101': 785f50b169SRobert Weinmeister $event->data['script'][] = array 795f50b169SRobert Weinmeister ( 805f50b169SRobert Weinmeister 'type' => 'module', 815f50b169SRobert Weinmeister 'charset' => 'utf-8', 82*4c8bd9ffSRobert Weinmeister '_data' => "import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.1.0/dist/mermaid.esm.min.mjs';".$init 835f50b169SRobert Weinmeister ); 844df3d176SRobert Weinmeister break; 856e5341c6SRobert Weinmeister case 'remote100': 866e5341c6SRobert Weinmeister $event->data['script'][] = array 876e5341c6SRobert Weinmeister ( 886e5341c6SRobert Weinmeister 'type' => 'module', 896e5341c6SRobert Weinmeister 'charset' => 'utf-8', 90*4c8bd9ffSRobert Weinmeister '_data' => "import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10.0.2/dist/mermaid.esm.min.mjs';".$init 916e5341c6SRobert Weinmeister ); 926e5341c6SRobert Weinmeister break; 936e5341c6SRobert Weinmeister case 'remote94': 946e5341c6SRobert Weinmeister $event->data['script'][] = array 956e5341c6SRobert Weinmeister ( 966e5341c6SRobert Weinmeister 'type' => 'text/javascript', 976e5341c6SRobert Weinmeister 'charset' => 'utf-8', 984df3d176SRobert Weinmeister 'src' => 'https://cdn.jsdelivr.net/npm/mermaid@9.4.3/dist/mermaid.min.js' 996e5341c6SRobert Weinmeister ); 1006e5341c6SRobert Weinmeister break; 1012d4b7fc2SRobert Weinmeister case 'remote93': 1022d4b7fc2SRobert Weinmeister $event->data['script'][] = array 1032d4b7fc2SRobert Weinmeister ( 1042d4b7fc2SRobert Weinmeister 'type' => 'text/javascript', 1052d4b7fc2SRobert Weinmeister 'charset' => 'utf-8', 1064df3d176SRobert Weinmeister 'src' => 'https://cdn.jsdelivr.net/npm/mermaid@9.3.0/dist/mermaid.min.js' 1072d4b7fc2SRobert Weinmeister ); 1082d4b7fc2SRobert Weinmeister break; 1092d4b7fc2SRobert Weinmeister default: 1102d4b7fc2SRobert Weinmeister } 11146a60b4fSRobertWeinmeister 11246a60b4fSRobertWeinmeister $event->data['link'][] = array 11346a60b4fSRobertWeinmeister ( 11446a60b4fSRobertWeinmeister 'rel' => 'stylesheet', 11546a60b4fSRobertWeinmeister 'type' => 'text/css', 11646a60b4fSRobertWeinmeister 'href' => DOKU_BASE."lib/plugins/mermaid/mermaid.css", 11746a60b4fSRobertWeinmeister ); 11846a60b4fSRobertWeinmeister 1196e5341c6SRobert Weinmeister switch ($this->getConf('location')) { 1204df3d176SRobert Weinmeister case 'local': 1216e5341c6SRobert Weinmeister case 'remote94': 1226e5341c6SRobert Weinmeister case 'remote93': 12346a60b4fSRobertWeinmeister $event->data['script'][] = array 12446a60b4fSRobertWeinmeister ( 12546a60b4fSRobertWeinmeister 'type' => 'text/javascript', 12646a60b4fSRobertWeinmeister 'charset' => 'utf-8', 127*4c8bd9ffSRobert Weinmeister '_data' => $init 12846a60b4fSRobertWeinmeister ); 1296e5341c6SRobert Weinmeister break; 1306e5341c6SRobert Weinmeister default: 1316e5341c6SRobert Weinmeister } 13246a60b4fSRobertWeinmeister } 13346a60b4fSRobertWeinmeister} 134