-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsyntax.php
More file actions
40 lines (31 loc) · 2.17 KB
/
syntax.php
File metadata and controls
40 lines (31 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
if(!defined('DOKU_INC')) die();
class syntax_plugin_diagram extends DokuWiki_Syntax_Plugin {
public function getType(){ return 'formatting'; }
public function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
public function getSort(){ return 158; }
public function connectTo($mode) { $this->Lexer->addEntryPattern('<diagram.*?>(?=.*?</diagram>)',$mode,'plugin_diagram'); }
public function postConnect() { $this->Lexer->addExitPattern('</diagram>','plugin_diagram'); }
public function handle($match, $state, $pos, Doku_Handler $handler) {
return array($state, $match);
}
public function render($mode, Doku_Renderer $renderer, $data) {
// $data is what the function handle() return'ed.
if($mode == 'xhtml'){
/** @var Doku_Renderer_xhtml $renderer */
list($state,$match) = $data;
switch ($state) {
case DOKU_LEXER_UNMATCHED :
$filename = str_replace(':' , '/', $match);
$fullFilename = 'data/media' . $filename;
$xml = simplexml_load_string(file_get_contents($fullFilename));
$renderer->doc .= '<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{"highlight":"#0000ff","nav":true,"resize":true,"xml":"<mxfile userAgent=\"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36\" version=\"6.0.2.8\" editor=\"www.draw.io\" type=\"device\"><diagram name=\"Page-1\">' . $xml->diagram . '</diagram></mxfile>","toolbar":"pages zoom layers lightbox","page":0}"></div>
<a href="/lib/plugins/diagram/lib/?lang=de&offline=1&url=' . $filename . '" target="_blank" style="display: block; width:100%; text-align: right">Online-Editor öffnen</a>
<script type="text/javascript" src="/lib/plugins/diagram/lib/icon_lib.js"></script>' ;
break;
}
return true;
}
return false;
}
}