diff options
Diffstat (limited to 'tinydns-view-html.lsp')
-rw-r--r-- | tinydns-view-html.lsp | 144 |
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> |