summaryrefslogtreecommitdiffstats
path: root/tinydns-view-html.lsp
diff options
context:
space:
mode:
Diffstat (limited to 'tinydns-view-html.lsp')
-rw-r--r--tinydns-view-html.lsp144
1 files changed, 144 insertions, 0 deletions
diff --git a/tinydns-view-html.lsp b/tinydns-view-html.lsp
new file mode 100644
index 0000000..8ec8b9e
--- /dev/null
+++ b/tinydns-view-html.lsp
@@ -0,0 +1,144 @@
+<? 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();
+ }
+ });
+ }
+ }
+ function editEntry(){
+ window.location.href = "edit?" + this.id;
+ }
+ var filterTimer;
+ $(function(){
+ $("#filter").keyup(function(){
+ window.clearTimeout(filterTimer);
+ filterTimer = window.setTimeout("filterPage();",250);
+ });
+ $("#filter-list").submit(function(){
+ return false;
+ }).focus();
+ $("#records li").not(":has(ul)").dblclick(editEntry);
+ $("#locations li").not(":has(ul)").dblclick(editEntry);
+ });
+</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>")
+--]]
+?>
+
+<H1>DNS Entries
+<? if view.filename then io.write(" for "..view.filename) end ?>
+</H1>
+<H2>Locations</H2>
+<DL id="locations">
+<?
+if (view.value) and (view.value['%']) then
+ local val = view.value['%'] ?>
+ <DT<? if (val.errtxt) then io.write(" class='error'") end ?>><?= val.label ?></DT>
+
+ <DD><ul>
+ <? local currentloc = ""
+ for i,loc in ipairs(val) do
+ if currentloc ~= loc[1] then
+ if currentloc ~= "" then ?>
+ </ul>
+ <? end ?>
+ <li><IMG SRC='/skins/static/tango/16x16/places/start-here.png' width='16' height='16' alt> <B><?= loc[1] ?></B></li>
+ <ul STYLE='margin-left:30px';>
+ <? end
+ currentloc = loc[1] ?>
+ <li id='filename=<?= loc.filename ?>;linenumber=<?= loc.linenumber ?>'>
+ <?= loc[2] ?><? if loc[2] == "" then io.write('*') end ?>
+ <? if (loc.errtxt) then ?><P CLASS='error'><?= string.gsub(loc.errtxt, "\n", "<BR>") ?></P><? end ?>
+ </li>
+ <? end
+ if currentloc ~= "" then ?>
+ </ul>
+ <? end ?>
+ </ul>
+ </DD>
+<? else ?>
+ No locations defined
+<? 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.value[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;' id='filename=<?= entry.filename ?>;linenumber=<?= entry.linenumber ?>'>
+ <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>