]>
Commit | Line | Data |
---|---|---|
aff192e6 DM |
1 | package PVE::HTMLControls; |
2 | ||
3 | use strict; | |
4 | use JSON; | |
5 | ||
6 | my $uidcount = 0; | |
7 | ||
8 | my %jsesc = ( "\n" => '\n', | |
9 | "\r" => '\r', | |
10 | "\t" => '\t', | |
11 | "\f" => '\f', | |
12 | "\b" => '\b', | |
13 | "\"" => '\"', | |
14 | "\\" => '\\\\', | |
15 | ); | |
16 | ||
17 | sub string_to_js { | |
18 | my $str = shift; | |
19 | $str =~ s/([\\\"\n\r\t\f\b])/$jsesc{$1}/eg; | |
20 | $str =~ s/([\x00-\x07\x0b\x0e-\x1f])/'\\u00' . unpack('H2',$1)/eg; | |
21 | return '"' . $str . '"'; | |
22 | } | |
23 | ||
24 | sub get_uid { | |
25 | my $prefix = shift || 'uid'; | |
26 | ||
27 | $uidcount++; | |
28 | ||
29 | return $prefix . '_' . $$. '_' .$uidcount; | |
30 | } | |
31 | ||
32 | # Ajax controls | |
33 | ||
34 | sub create_log_viewer { | |
35 | my ($lvid, $service, $serviceid, $filterid, $statusid, $trackid) = @_; | |
36 | ||
37 | $service = '' if !$service; | |
38 | ||
39 | # trackid format: UID:$pid:/path/to/executable | |
40 | ||
41 | $trackid = '' if !$trackid; | |
42 | ||
43 | my $myupdater = get_uid ($lvid); | |
44 | ||
45 | my $out = "<script type='text/javascript'><!--\n"; | |
46 | $out .= <<__EOJS; | |
47 | ||
48 | var $myupdater = new logViewer ('$lvid', '$service', '$serviceid', '$filterid', '$statusid', '$trackid'); | |
49 | ||
50 | $myupdater.start(); | |
51 | ||
52 | __EOJS | |
53 | ||
54 | $out .= "--></script>\n"; | |
55 | ||
56 | return $out; | |
57 | } | |
58 | ||
59 | sub create_wsviewer { | |
60 | my ($lvid, $statusid, $url, $args, $period) = @_; | |
61 | ||
62 | my $myupdater = get_uid ($lvid); | |
63 | ||
64 | $period = 10 if !$period; | |
65 | ||
66 | $statusid = '' if !$statusid; | |
67 | ||
68 | my $jsargs = to_json ($args); | |
69 | my $out = "<script type='text/javascript'><!--\n"; | |
70 | $out .= <<__EOJS; | |
71 | ||
72 | var $myupdater = new wsViewer ('$lvid', '$statusid', $period, '$url', $jsargs); | |
73 | ||
74 | $myupdater.start(); | |
75 | ||
76 | __EOJS | |
77 | ||
78 | $out .= "--></script>\n"; | |
79 | ||
80 | return $out; | |
81 | } | |
82 | ||
83 | sub create_periodic_updater { | |
84 | my ($lvid, $url, $args, $period) = @_; | |
85 | ||
86 | $period = 10 if !$period; | |
87 | ||
88 | my $jsargs = to_json ($args); | |
89 | ||
90 | $lvid = 'noautoupdate' if !$lvid; | |
91 | ||
92 | my $out = "<script type='text/javascript'><!--\n"; | |
93 | $out .= <<__EOJS; | |
94 | ||
95 | new Ajax.PeriodicalUpdater ('$lvid', '$url', { | |
96 | frequency: $period, | |
97 | parameters: $jsargs | |
98 | }); | |
99 | ||
100 | __EOJS | |
101 | ||
102 | $out .= "--></script>\n"; | |
103 | return $out; | |
104 | } | |
105 | ||
106 | # vzlist viewer | |
107 | ||
108 | sub create_vzlist_viewer { | |
109 | my ($lvid, $statusid, $cid) = @_; | |
110 | ||
111 | my $myupdater = get_uid ($lvid); | |
112 | ||
113 | my $out = "<script type='text/javascript'><!--\n"; | |
114 | $out .= <<__EOJS; | |
115 | ||
116 | var $myupdater = new vzlistViewer ('$lvid', '$statusid', '$cid'); | |
117 | ||
118 | $myupdater.start(); | |
119 | ||
120 | __EOJS | |
121 | ||
122 | $out .= "--></script>\n"; | |
123 | ||
124 | return $out; | |
125 | } | |
126 | ||
127 | # server time viewer | |
128 | ||
129 | sub create_time_viewer { | |
130 | my ($uid) = @_; | |
131 | ||
132 | my $out = "\n<script type='text/javascript'><!--\n"; | |
133 | $out .= <<__EOJS; | |
134 | ||
135 | new timeViewer ('$uid'); | |
136 | ||
137 | __EOJS | |
138 | $out .= "--></script>\n"; | |
139 | ||
140 | return $out; | |
141 | } | |
142 | ||
143 | sub create_command_viewer { | |
144 | my ($lvid, $statusid, $abortid, $upid) = @_; | |
145 | ||
146 | my $jsvar = get_uid($lvid); | |
147 | ||
148 | return '' if !defined ($upid); | |
149 | return '' if !defined ($abortid); | |
150 | ||
151 | my $out = "\n<script type='text/javascript'><!--\n"; | |
152 | $out .= <<__EOJS; | |
153 | ||
154 | var $jsvar = new commandViewer ('$jsvar', '$lvid', '$upid', '$statusid', '$abortid'); | |
155 | ||
156 | $jsvar.start (); | |
157 | ||
158 | __EOJS | |
159 | ||
160 | $out .= "--></script>\n"; | |
161 | ||
162 | return $out; | |
163 | } | |
164 | ||
165 | 1; |