1 | 1 | simandl | <?php |
2 | | | |
3 | 13 | simandl | // ****************************************** |
4 | | | // sensible defaults |
5 | | | $mapdir='configs'; |
6 | | | $cacti_base = '../../'; |
7 | | | $cacti_url = '/'; |
8 | | | $ignore_cacti=FALSE; |
9 | | | |
10 | 85 | simandl | $config['base_url'] = $cacti_url; |
11 | | | |
12 | 13 | simandl | @include_once('editor-config.php'); |
13 | | | |
14 | 85 | simandl | // check if the goalposts have moved |
15 | | | if( is_dir($cacti_base) && file_exists($cacti_base."/include/global.php") ) |
16 | 13 | simandl | { |
17 | | | // include the cacti-config, so we know about the database |
18 | 85 | simandl | include_once($cacti_base."/include/global.php"); |
19 | | | // $config['base_url'] = $cacti_url; |
20 | | | $config['base_url'] = (isset($config['url_path'])? $config['url_path'] : $cacti_url); |
21 | | | $cacti_found = TRUE; |
22 | | | // print "global"; |
23 | | | } |
24 | | | elseif( is_dir($cacti_base) && file_exists($cacti_base."/include/config.php") ) |
25 | | | { |
26 | | | // include the cacti-config, so we know about the database |
27 | 13 | simandl | include_once($cacti_base."/include/config.php"); |
28 | | | |
29 | 85 | simandl | // $config['base_url'] = $cacti_url; |
30 | | | $config['base_url'] = (isset($config['url_path'])? $config['url_path'] : $cacti_url); |
31 | | | $cacti_found = TRUE; |
32 | | | // print "config"; |
33 | 13 | simandl | } |
34 | | | else |
35 | | | { |
36 | | | $cacti_found = FALSE; |
37 | | | } |
38 | | | |
39 | 85 | simandl | // print $config['base_url']; |
40 | | | |
41 | 13 | simandl | // ****************************************** |
42 | | | |
43 | 1 | simandl | function js_escape($str) |
44 | | | { |
45 | | | $str = str_replace('\\', '\\\\', $str); |
46 | | | $str = str_replace("'", "\\\'", $str); |
47 | | | |
48 | | | $str = "'".$str."'"; |
49 | | | |
50 | | | return($str); |
51 | | | } |
52 | | | |
53 | 13 | simandl | if(isset($_REQUEST['command']) && $_REQUEST["command"]=='link_step2') |
54 | 1 | simandl | { |
55 | | | $dataid = intval($_REQUEST['dataid']); |
56 | | | |
57 | | | $SQL_graphid = "select graph_templates_item.local_graph_id, title_cache FROM graph_templates_item,graph_templates_graph,data_template_rrd where graph_templates_graph.local_graph_id = graph_templates_item.local_graph_id and task_item_id=data_template_rrd.id and local_data_id=$dataid LIMIT 1;"; |
58 | | | |
59 | | | $link = mysql_connect($database_hostname,$database_username,$database_password) |
60 | | | or die('Could not connect: ' . mysql_error()); |
61 | | | mysql_selectdb($database_default,$link) or die('Could not select database: '.mysql_error()); |
62 | | | |
63 | | | $result = mysql_query($SQL_graphid) or die('Query failed: ' . mysql_error()); |
64 | | | $line = mysql_fetch_array($result, MYSQL_ASSOC); |
65 | | | $graphid = $line['local_graph_id']; |
66 | | | |
67 | | | ?> |
68 | | | <html> |
69 | | | <head> |
70 | | | <script type="text/javascript"> |
71 | | | function update_source_step2(graphid) |
72 | | | { |
73 | | | var graph_url, hover_url; |
74 | | | |
75 | | | var base_url = '<?php echo isset($config['base_url'])?$config['base_url']:''; ?>'; |
76 | | | |
77 | | | if (typeof window.opener == "object") { |
78 | | | |
79 | | | graph_url = base_url + 'graph_image.php?local_graph_id=' + graphid + '&rra_id=0&graph_nolegend=true&graph_height=100&graph_width=300'; |
80 | | | info_url = base_url + 'graph.php?rra_id=all&local_graph_id=' + graphid; |
81 | | | |
82 | | | opener.document.forms["frmMain"].link_infourl.value = info_url; |
83 | | | opener.document.forms["frmMain"].link_hover.value = graph_url; |
84 | | | } |
85 | | | self.close(); |
86 | | | } |
87 | | | |
88 | | | window.onload = update_source_step2(<?php echo $graphid ?>); |
89 | | | |
90 | | | </script> |
91 | | | </head> |
92 | | | <body> |
93 | | | This window should disappear in a moment. |
94 | | | </body> |
95 | | | </html> |
96 | | | <?php |
97 | 13 | simandl | // end of link step 2 |
98 | 1 | simandl | } |
99 | 13 | simandl | |
100 | | | if(isset($_REQUEST['command']) && $_REQUEST["command"]=='link_step1') |
101 | 1 | simandl | { |
102 | | | ?> |
103 | | | <html> |
104 | | | <head> |
105 | 85 | simandl | <script type="text/javascript" src="editor-resources/jquery-latest.min.js"></script> |
106 | 1 | simandl | <script type="text/javascript"> |
107 | | | |
108 | 85 | simandl | function filterlist(previous) |
109 | | | { |
110 | | | var filterstring = $('input#filterstring').val(); |
111 | | | |
112 | | | if(filterstring=='') |
113 | | | { |
114 | | | $('ul#dslist > li').show(); |
115 | | | return; |
116 | | | } |
117 | | | |
118 | | | if(filterstring!=previous) |
119 | | | { |
120 | | | $('ul#dslist > li').hide(); |
121 | | | $("ul#dslist > li:contains('" + filterstring + "')").show(); |
122 | | | } |
123 | | | } |
124 | | | |
125 | | | $(document).ready( function() { |
126 | | | $('span.filter').keyup(function() { |
127 | | | var previous = $('input#filterstring').val(); |
128 | | | setTimeout(function () {filterlist(previous)}, 500); |
129 | | | }).show(); |
130 | | | }); |
131 | | | |
132 | 1 | simandl | function update_source_step1(dataid,datasource) |
133 | | | { |
134 | | | var newlocation; |
135 | | | var fullpath; |
136 | | | |
137 | 85 | simandl | var rra_path = <?php echo js_escape($config['rra_path']); ?>; |
138 | 1 | simandl | |
139 | | | if (typeof window.opener == "object") { |
140 | 85 | simandl | fullpath = datasource.replace(/<path_rra>/, rra_path); |
141 | | | if(document.forms['mini'].aggregate.checked) |
142 | | | { |
143 | | | opener.document.forms["frmMain"].link_target.value = opener.document.forms["frmMain"].link_target.value + " " + fullpath; |
144 | | | } |
145 | | | else |
146 | | | { |
147 | | | opener.document.forms["frmMain"].link_target.value = fullpath; |
148 | | | } |
149 | 1 | simandl | } |
150 | | | if(document.forms['mini'].overlib.checked) |
151 | | | { |
152 | 13 | simandl | newlocation = 'cacti-pick.php?command=link_step2&dataid=' + dataid; |
153 | 1 | simandl | self.location = newlocation; |
154 | | | } |
155 | | | else |
156 | | | { |
157 | | | self.close(); |
158 | | | } |
159 | | | } |
160 | 85 | simandl | |
161 | | | function applyDSFilterChange(objForm) { |
162 | | | strURL = '?host_id=' + objForm.host_id.value; |
163 | | | strURL = strURL + '&command=link_step1'; |
164 | | | if( objForm.overlib.checked) |
165 | | | { |
166 | | | strURL = strURL + "&overlib=1"; |
167 | | | } |
168 | | | else |
169 | | | { |
170 | | | strURL = strURL + "&overlib=0"; |
171 | | | } |
172 | | | // document.frmMain.link_bandwidth_out_cb.checked |
173 | | | if( objForm.aggregate.checked) |
174 | | | { |
175 | | | strURL = strURL + "&aggregate=1"; |
176 | | | } |
177 | | | else |
178 | | | { |
179 | | | strURL = strURL + "&aggregate=0"; |
180 | | | } |
181 | | | document.location = strURL; |
182 | | | } |
183 | | | |
184 | 1 | simandl | </script> |
185 | | | <style type="text/css"> |
186 | | | body { font-family: sans-serif; font-size: 10pt; } |
187 | | | ul { list-style: none; margin: 0; padding: 0; } |
188 | | | ul { border: 1px solid black; } |
189 | | | ul li.row0 { background: #ddd;} |
190 | | | ul li.row1 { background: #ccc;} |
191 | | | ul li { border-bottom: 1px solid #aaa; border-top: 1px solid #eee; padding: 2px;} |
192 | | | ul li a { text-decoration: none; color: black; } |
193 | | | </style> |
194 | | | <title>Pick a data source</title> |
195 | | | </head> |
196 | | | <body> |
197 | | | <?php |
198 | | | |
199 | 85 | simandl | $SQL_picklist = "select data_local.host_id, data_template_data.local_data_id, data_template_data.name_cache, data_template_data.active, data_template_data.data_source_path from data_local,data_template_data,data_input,data_template where data_local.id=data_template_data.local_data_id and data_input.id=data_template_data.data_input_id and data_local.data_template_id=data_template.id "; |
200 | 1 | simandl | |
201 | 85 | simandl | $host_id = -1; |
202 | | | |
203 | | | $overlib = true; |
204 | | | $aggregate = false; |
205 | | | |
206 | | | if(isset($_REQUEST['aggregate'])) $aggregate = ( $_REQUEST['aggregate']==0 ? false : true); |
207 | | | if(isset($_REQUEST['overlib'])) $overlib= ( $_REQUEST['overlib']==0 ? false : true); |
208 | | | |
209 | | | |
210 | | | if(isset($_REQUEST['host_id'])) |
211 | | | { |
212 | | | $host_id = intval($_REQUEST['host_id']); |
213 | | | if($host_id>=0) $SQL_picklist .= " and data_local.host_id=$host_id "; |
214 | | | } |
215 | | | |
216 | | | $SQL_picklist .= " order by name_cache;"; |
217 | | | |
218 | | | $hosts = db_fetch_assoc("select id,CONCAT_WS('',description,' (',hostname,')') as name from host order by description,hostname"); |
219 | | | ?> |
220 | 1 | simandl | |
221 | | | <h3>Pick a data source:</h3> |
222 | | | |
223 | | | <form name="mini"> |
224 | 85 | simandl | <?php |
225 | | | if(sizeof($hosts) > 0) { |
226 | | | print 'Host: <select name="host_id" onChange="applyDSFilterChange(document.mini)">'; |
227 | | | |
228 | | | print '<option '.($host_id==-1 ? 'SELECTED' : '' ).' value="-1">Any</option>'; |
229 | | | print '<option '.($host_id==0 ? 'SELECTED' : '' ).' value="0">None</option>'; |
230 | | | foreach ($hosts as $host) |
231 | | | { |
232 | | | print '<option '; |
233 | | | if($host_id==$host['id']) print " SELECTED "; |
234 | | | print 'value="'.$host['id'].'">'.$host['name'].'</option>'; |
235 | | | } |
236 | | | print '</select><br />'; |
237 | | | } |
238 | | | |
239 | | | print '<span class="filter" style="display: none;">Filter: <input id="filterstring" name="filterstring" size="20"> (case-sensitive)<br /></span>'; |
240 | | | print '<input id="overlib" name="overlib" type="checkbox" value="yes" '.($overlib ? 'CHECKED' : '' ).'> <label for="overlib">Also set OVERLIBGRAPH and INFOURL.</label><br />'; |
241 | | | print '<input id="aggregate" name="aggregate" type="checkbox" value="yes" '.($aggregate ? 'CHECKED' : '' ).'> <label for="aggregate">Append TARGET to existing one (Aggregate)</label>'; |
242 | | | |
243 | | | print '</form><div class="listcontainer"><ul id="dslist">'; |
244 | | | |
245 | 1 | simandl | $queryrows = db_fetch_assoc($SQL_picklist); |
246 | | | |
247 | | | // print $SQL_picklist; |
248 | | | |
249 | | | $i=0; |
250 | 85 | simandl | if( is_array($queryrows) && sizeof($queryrows) > 0 ) |
251 | 1 | simandl | { |
252 | | | foreach ($queryrows as $line) { |
253 | | | //while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { |
254 | | | echo "<li class=\"row".($i%2)."\">"; |
255 | | | $key = $line['local_data_id']."','".$line['data_source_path']; |
256 | | | echo "<a href=\"#\" onclick=\"update_source_step1('$key')\">". $line['name_cache'] . "</a>"; |
257 | | | echo "</li>\n"; |
258 | 85 | simandl | |
259 | 1 | simandl | $i++; |
260 | | | } |
261 | | | } |
262 | | | else |
263 | | | { |
264 | 85 | simandl | print "<li>No results...</li>"; |
265 | 1 | simandl | } |
266 | | | |
267 | | | // Free resultset |
268 | | | //mysql_free_result($result); |
269 | | | |
270 | | | // Closing connection |
271 | | | //mysql_close($link); |
272 | | | |
273 | | | ?> |
274 | | | </ul> |
275 | 85 | simandl | </div> |
276 | 1 | simandl | </body> |
277 | | | </html> |
278 | | | <?php |
279 | 13 | simandl | } // end of link step 1 |
280 | | | |
281 | | | if(isset($_REQUEST['command']) && $_REQUEST["command"]=='node_step1') |
282 | | | { |
283 | 85 | simandl | $host_id = -1; |
284 | | | $SQL_picklist = "SELECT graph_templates_graph.id, graph_local.host_id, graph_templates_graph.local_graph_id, graph_templates_graph.height, graph_templates_graph.width, graph_templates_graph.title_cache, graph_templates.name, graph_local.host_id FROM (graph_local,graph_templates_graph) LEFT JOIN graph_templates ON (graph_local.graph_template_id=graph_templates.id) WHERE graph_local.id=graph_templates_graph.local_graph_id "; |
285 | | | |
286 | | | $overlib = true; |
287 | | | $aggregate = false; |
288 | | | |
289 | | | if(isset($_REQUEST['aggregate'])) $aggregate = ( $_REQUEST['aggregate']==0 ? false : true); |
290 | | | if(isset($_REQUEST['overlib'])) $overlib= ( $_REQUEST['overlib']==0 ? false : true); |
291 | | | |
292 | | | |
293 | | | if(isset($_REQUEST['host_id'])) |
294 | | | { |
295 | | | $host_id = intval($_REQUEST['host_id']); |
296 | | | if($host_id>=0) $SQL_picklist .= " and graph_local.host_id=$host_id "; |
297 | | | } |
298 | | | $SQL_picklist .= " order by title_cache"; |
299 | | | |
300 | | | $hosts = db_fetch_assoc("select id,CONCAT_WS('',description,' (',hostname,')') as name from host order by description,hostname"); |
301 | | | |
302 | 13 | simandl | ?> |
303 | | | <html> |
304 | | | <head> |
305 | 85 | simandl | <script type="text/javascript" src="editor-resources/jquery-latest.min.js"></script> |
306 | | | <script type="text/javascript"> |
307 | | | |
308 | | | function filterlist(previous) |
309 | | | { |
310 | | | var filterstring = $('input#filterstring').val(); |
311 | | | |
312 | | | if(filterstring=='') |
313 | | | { |
314 | | | $('ul#dslist > li').show(); |
315 | | | return; |
316 | | | } |
317 | | | |
318 | | | if(filterstring!=previous) |
319 | | | { |
320 | | | $('ul#dslist > li').hide(); |
321 | | | $('ul#dslist > li').contains(filterstring).show(); |
322 | | | } |
323 | | | } |
324 | | | |
325 | | | $(document).ready( function() { |
326 | | | $('span.filter').keyup(function() { |
327 | | | var previous = $('input#filterstring').val(); |
328 | | | setTimeout(function () {filterlist(previous)}, 500); |
329 | | | }).show(); |
330 | | | }); |
331 | | | |
332 | | | function applyDSFilterChange(objForm) { |
333 | | | strURL = '?host_id=' + objForm.host_id.value; |
334 | | | strURL = strURL + '&command=node_step1'; |
335 | | | if( objForm.overlib.checked) |
336 | | | { |
337 | | | strURL = strURL + "&overlib=1"; |
338 | | | } |
339 | | | else |
340 | | | { |
341 | | | strURL = strURL + "&overlib=0"; |
342 | | | } |
343 | | | |
344 | | | //if( objForm.aggregate.checked) |
345 | | | //{ |
346 | | | // strURL = strURL + "&aggregate=1"; |
347 | | | //} |
348 | | | //else |
349 | | | //{ |
350 | | | // strURL = strURL + "&aggregate=0"; |
351 | | | //} |
352 | | | document.location = strURL; |
353 | | | } |
354 | | | |
355 | | | </script> |
356 | 13 | simandl | <script type="text/javascript"> |
357 | | | |
358 | | | function update_source_step1(graphid) |
359 | | | { |
360 | | | var graph_url, hover_url; |
361 | | | |
362 | | | var base_url = '<?php echo isset($config['base_url'])?$config['base_url']:''; ?>'; |
363 | | | |
364 | | | if (typeof window.opener == "object") { |
365 | | | |
366 | 85 | simandl | graph_url = base_url + 'graph_image.php?rra_id=0&graph_nolegend=true&graph_height=100&graph_width=300&local_graph_id=' + graphid; |
367 | 13 | simandl | info_url = base_url + 'graph.php?rra_id=all&local_graph_id=' + graphid; |
368 | | | |
369 | 85 | simandl | // only set the overlib URL unless the box is checked |
370 | | | if( document.forms['mini'].overlib.checked) |
371 | | | { |
372 | | | opener.document.forms["frmMain"].node_infourl.value = info_url; |
373 | | | } |
374 | 13 | simandl | opener.document.forms["frmMain"].node_hover.value = graph_url; |
375 | | | } |
376 | | | self.close(); |
377 | | | } |
378 | | | </script> |
379 | | | <style type="text/css"> |
380 | | | body { font-family: sans-serif; font-size: 10pt; } |
381 | | | ul { list-style: none; margin: 0; padding: 0; } |
382 | | | ul { border: 1px solid black; } |
383 | | | ul li.row0 { background: #ddd;} |
384 | | | ul li.row1 { background: #ccc;} |
385 | | | ul li { border-bottom: 1px solid #aaa; border-top: 1px solid #eee; padding: 2px;} |
386 | | | ul li a { text-decoration: none; color: black; } |
387 | | | </style> |
388 | 85 | simandl | <title>Pick a graph</title> |
389 | 13 | simandl | </head> |
390 | | | <body> |
391 | | | |
392 | | | <?php |
393 | | | |
394 | 85 | simandl | # print "Cacti is ".$config["cacti_version"]; |
395 | 13 | simandl | |
396 | | | # $SQL_picklist = "select data_template_data.local_data_id, data_template_data.name_cache, data_template_data.active, data_template_data.data_source_path from data_local,data_template_data,data_input,data_template left join data_input on data_input.id=data_template_data.data_input_id left join data_template on data_local.data_template_id=data_template.id where data_local.id=data_template_data.local_data_id order by name_cache;"; |
397 | | | # $SQL_picklist = "select data_template_data.local_data_id, data_template_data.name_cache, data_template_data.active, data_template_data.data_source_path from data_local,data_template_data,data_input,data_template where data_local.id=data_template_data.local_data_id and data_input.id=data_template_data.data_input_id and data_local.data_template_id=data_template.id order by name_cache;"; |
398 | 85 | simandl | |
399 | | | |
400 | | | |
401 | 13 | simandl | #$link = mysql_connect($database_hostname,$database_username,$database_password) |
402 | | | # or die('Could not connect: ' . mysql_error()); |
403 | | | # mysql_selectdb($database_default,$link) or die('Could not select database: '.mysql_error()); |
404 | | | |
405 | | | #$result = mysql_query($SQL_picklist) or die('Query failed: ' . mysql_error()); |
406 | | | ?> |
407 | 85 | simandl | |
408 | 13 | simandl | <h3>Pick a graph:</h3> |
409 | | | |
410 | 85 | simandl | <form name="mini"> |
411 | | | <?php |
412 | | | if(sizeof($hosts) > 0) { |
413 | | | print 'Host: <select name="host_id" onChange="applyDSFilterChange(document.mini)">'; |
414 | | | |
415 | | | print '<option '.($host_id==-1 ? 'SELECTED' : '' ).' value="-1">Any</option>'; |
416 | | | print '<option '.($host_id==0 ? 'SELECTED' : '' ).' value="0">None</option>'; |
417 | | | foreach ($hosts as $host) |
418 | | | { |
419 | | | print '<option '; |
420 | | | if($host_id==$host['id']) print " SELECTED "; |
421 | | | print 'value="'.$host['id'].'">'.$host['name'].'</option>'; |
422 | | | } |
423 | | | print '</select><br />'; |
424 | | | } |
425 | | | |
426 | | | print '<span class="filter" style="display: none;">Filter: <input id="filterstring" name="filterstring" size="20"> (case-sensitive)<br /></span>'; |
427 | | | print '<input id="overlib" name="overlib" type="checkbox" value="yes" '.($overlib ? 'CHECKED' : '' ).'> <label for="overlib">Set both OVERLIBGRAPH and INFOURL.</label><br />'; |
428 | | | // print '<input id="aggregate" name="aggregate" type="checkbox" value="yes" '.($aggregate ? 'CHECKED' : '' ).'> <label for="aggregate">Append TARGET to existing one (Aggregate)</label>'; |
429 | | | |
430 | | | print '</form><div class="listcontainer"><ul id="dslist">'; |
431 | | | |
432 | 13 | simandl | $queryrows = db_fetch_assoc($SQL_picklist); |
433 | | | |
434 | | | // print $SQL_picklist; |
435 | | | |
436 | | | $i=0; |
437 | 85 | simandl | if( is_array($queryrows) && sizeof($queryrows) > 0) |
438 | 13 | simandl | { |
439 | | | foreach ($queryrows as $line) { |
440 | | | //while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { |
441 | | | echo "<li class=\"row".($i%2)."\">"; |
442 | | | $key = $line['local_graph_id']; |
443 | | | echo "<a href=\"#\" onclick=\"update_source_step1('$key')\">". $line['title_cache'] . "</a>"; |
444 | | | echo "</li>\n"; |
445 | | | $i++; |
446 | | | } |
447 | | | } |
448 | | | else |
449 | | | { |
450 | | | print "No results..."; |
451 | | | } |
452 | | | |
453 | | | // Free resultset |
454 | | | //mysql_free_result($result); |
455 | | | |
456 | | | // Closing connection |
457 | | | //mysql_close($link); |
458 | | | ?> |
459 | | | </ul> |
460 | | | </body> |
461 | | | </html> |
462 | | | <?php |
463 | | | } // end of node step 1 |
464 | | | |
465 | 1 | simandl | // vim:ts=4:sw=4: |
466 | | | ?> |