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

<script type="text/javascript" src="/js/jquery-latest.js"></script>
<script type="text/javascript">
	last_phrase = ""
	$(function(){
		$("#filter").keyup(function(){
			var phrase = this.value;
			if (phrase == last_phrase) return false;
			last_phrase = phrase;
			var elems = $("#records").find("li");
			elems.each(function(){
				var elem = this
				if (elem.innerText.indexOf(phrase)>=0) {
					jQuery(elem).show();
				} else {
					jQuery(elem).hide();
				};
			})
		})
		$("#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>