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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
/**
* DokuWiki Plugin xttviewer (Syntax Component)
*
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
* @author GEIST Research Group <geist@agh.edu.pl>
*/
// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();
class syntax_plugin_xttviewer extends DokuWiki_Syntax_Plugin {
/**
* @return string Syntax mode type
*/
public function getType() {
return 'protected';
//return 'disabled';
}
/**
* @return string Paragraph type
*/
public function getPType() {
return 'normal'; // normal, stack, block
}
/**
* @return int Sort order - Low numbers go before high numbers
*/
public function getSort() {
return 999;
}
/**
* Connect lookup pattern to lexer.
*
* @param string $mode Parser mode
*/
public function connectTo($mode) {
//$this->Lexer->addSpecialPattern('<hmr>',$mode,'plugin_xttviewer');
$this->Lexer->addEntryPattern('<hmr>',$mode,'plugin_xttviewer');
}
public function postConnect() {
$this->Lexer->addExitPattern('</hmr>','plugin_xttviewer');
}
/**
* Handle matches of the xttviewer syntax
*
* @param string $match The match of the syntax
* @param int $state The state of the handler
* @param int $pos The position in the document
* @param Doku_Handler $handler The handler
* @return array Data for the renderer
*/
public function handle($match, $state, $pos, Doku_Handler &$handler){
switch ($state) {
case DOKU_LEXER_ENTER :
break;
case DOKU_LEXER_MATCHED :
break;
case DOKU_LEXER_UNMATCHED :
$lines = explode("\n",$match);
return array($state, $match);
break;
case DOKU_LEXER_EXIT :
break;
case DOKU_LEXER_SPECIAL :
break;
}
return array();
}
/**
* Render xhtml output or metadata
*
* @param string $mode Renderer mode (supported modes: xhtml)
* @param Doku_Renderer $renderer The renderer
* @param array $data The data from the handler() function
* @return bool If rendering was successful.
*/
public function render($mode, Doku_Renderer &$renderer, $data) {
list($state,$match) = $data;
if($mode == 'xhtml') {
switch ($state) {
case DOKU_LEXER_ENTER :
$renderer->doc .= 'some text';
break;
case DOKU_LEXER_MATCHED :
break;
case DOKU_LEXER_UNMATCHED :
//$mat = var_dump($match);
//$mat2 = explode("\n", $match);
$mat2 = addslashes(json_encode($match));
$plugin_path = DOKU_REL.'lib/plugins/xttviewer/';
$renderer->doc .= "<div class=\"klasa\"></div>";
//$renderer->doc .= "<script src=\"http://d3js.org/d3.v3.min.js\"></script>";
$renderer->doc .= "<script src=".$plugin_path."d3/d3.v3.js"."></script>";
$renderer->doc .= "<script src=".$plugin_path."jquery/jquery-2.0.3.js"."></script>";
$renderer->doc .= "<script type=\"text/javascript\" src=".$plugin_path."drawer.js"."></script>";
$renderer->doc .= "<script type=\"text/javascript\" src=".$plugin_path."parser.js"."></script>";
$renderer->doc .= "<script language=\"javascript\">parse('$mat2');</script>";
//$renderer->doc .= '<script type=\"text/javascript\" src=\"../lib/plugins/xttviewer/parser.js\"></script>';
echo "<script type=\"text/javascript\" src=".$plugin_path."parser.js"."></script>";
echo "<script type=\"text/javascript\" src=".$plugin_path."drawer.js"."></script>";
echo "<script src=\"http://d3js.org/d3.v3.min.js\"></script>";
//echo "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">";
//echo "<circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" /></svg>";
//echo "<script language=\"javascript\">";
//echo "parse('$mat2');";
//echo "</script>";
break;
case DOKU_LEXER_EXIT :
break;
case DOKU_LEXER_SPECIAL :
break;
}
return true;
}
return false;
}
}
// vim:ts=4:sw=4:et: