summaryrefslogtreecommitdiffstats
path: root/tinydns-status-html.lsp
blob: ca0ddf4884d7229881681a5063950e3eeda33538 (plain)
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
126
127
128
<? local view, viewlibrary = ... 
require("viewfunctions")
?>

<script type="text/javascript" src="/js/jquery-latest.js"></script>
<script type="text/javascript">
	var last_phrase = "";
	function filterPage(){
		var phrase = $("#filter").val();
		if (phrase != last_phrase){
			last_phrase = phrase;
			$("#records li").each(function(){
				var elem = jQuery(this);
				if (elem.text().indexOf(phrase)>=0) {
					elem.show();
				} else {
					elem.hide();
				}
			});
		}
	}
	var filterTimer;
	$(function(){
		$("#filter").keyup(function(){
			window.clearTimeout(filterTimer);
			filterTimer = window.setTimeout("filterPage();",250);
		});
		$("#filter-list").submit(function(){
			return false;
		}).focus();
	});
</script>

<?
--[[ DEBUG INFORMATION
io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
io.write(html.cfe_unpack(view))
io.write("</span>")
--]]
?>

<? if viewlibrary and viewlibrary.dispatch_component then
	viewlibrary.dispatch_component("basicstatus")
end ?>

<H1>PROGRAM SPECIFIC OPTIONS/INFORMATION</H1>
<H2>Locations</H2>
<DL>
<? 
if (view) and (view['%']) then
	local val = view['%'] ?> 
	<DT<? if (val.errtxt) then io.write(" class='error'") end ?>><?= val.label ?></DT>

	<DD>
	<? local currentloc = ""
	for i,loc in ipairs(val) do 
		if currentloc ~= loc[1] then ?>
			<IMG SRC='/skins/static/tango/16x16/places/start-here.png' width='16' height='16' alt> <B><?= loc[1] ?></B>
		<? end
		currentloc = loc[1] ?>
		<BR><SPAN STYLE='margin-left:30px;'><?= loc[2] ?></SPAN><BR>
		<? if (loc.errtxt) then ?><P CLASS='error'><?= string.gsub(loc.errtxt, "\n", "<BR>") ?></P><? end ?>
	<? end ?>
	</DD>
<? end ?>
</DL>

<?
local function doListIndents(next, indent)
	local newentry = {}
	for mt in string.gmatch(next, "([^.]+)") do
		table.insert(newentry, mt)
	end
	local revnewentry = {}
	for j=#newentry,1,-1 do
		table.insert(revnewentry, newentry[j])
	end
	local i=1
	while indent[i] and revnewentry[i] == indent[i] do
		i=i+1
	end
	local ending = #indent-(i-1)
	local starting = #newentry-(i-1)
	for j=1,ending do
		io.write("</li></ul>\n")
	end
	for j=1,starting do
		io.write("<ul><li STYLE='margin-left:10px;'><strong>")
		io.write(table.concat(newentry, ".", #newentry-(i+j-2), #newentry))
		io.write("</strong>\n")
	end
	return revnewentry
end
?>

<H2>Records</H2>
<form id="filter-list">Filter: <input name="filter" id="filter" value="" maxlength="30" size="30" type="text"></form>
<DL id="records">
<?
local tags = {".", "&", "=", "+", "@", "'", "^", "C", "Z", ":" }
for i,entrytype in ipairs(tags) do 
	local myview = view[entrytype]
	if (myview) then ?>
		<DT><?= myview.label ?></DT>
		<DD><ul>
		<? local indent = {}
		for j,entry in ipairs(myview) do 
			indent = doListIndents(entry[1], indent) ?>
			<ul><li STYLE='margin-left:10px;'><IMG SRC='/skins/static/tango/16x16/devices/computer.png' width='16' height='16'><?= tostring(entry[1]) ?><BR>
			<TABLE STYLE='margin-left:<?= tostring(7-#indent) ?>0px;'>
			<? for k=2,#entry do
				local option = entry[k]
				if (option) and option ~= "" then ?>
					<TR><TD WIDTH='160px' STYLE='border:none;'><?= myview.fieldlabels[k] ?>:</TD>
					<TD STYLE='border:none;'><?= option ?></TD></TR>
				<? end
			end ?>
			</TABLE>
			<? if entry.errtxt then ?>
				<P CLASS='error'><?= string.gsub(entry.errtxt, "\n", "<BR>") ?></P>
			<? end ?>
			</li></ul>
		<? end
		doListIndents("", indent) ?>
		</ul></DD>
	<? end
end ?>
</DL>