diff options
Diffstat (limited to 'gnats-editpr-html.lsp')
-rw-r--r-- | gnats-editpr-html.lsp | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/gnats-editpr-html.lsp b/gnats-editpr-html.lsp new file mode 100644 index 0000000..28b39cf --- /dev/null +++ b/gnats-editpr-html.lsp @@ -0,0 +1,129 @@ +<? local form = ... ?> +<? +--[[ DEBUG INFORMATION +io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>") +io.write(html.cfe_unpack(form)) +io.write("</span>") +--]] +?> + +<? +function displayinfo(myform,tags,viewtype) + for k,v in pairs(tags) do + if (myform[v]) and (myform[v]["value"]) then + local val = myform[v] + io.write("\n\t<DT") + if (#val.errtxt > 0) then + val.class = "error" + io.write(" class='error'") + end + io.write(">" .. val.label .. "</DT>") + io.write("\n\t\t<DD>") + if (viewtype == "viewonly") then + if not (val.value) or (val.value == "") then val.value = " " end + io.write(val.value) + elseif (val.type == "radio") and (type(val.option) == "table") and (#val.option > 0) then + io.write("<span style='display:inline' class='" .. ( val.class or "") .. "'>") + for k1,v1 in pairs(val.option) do + io.write("\n\t\t\t"..tostring(v1) .. ":") + io.write("<input style='margin-right:20px;margin-left:5px;' type='radio' class='" .. ( val.class or "") .. "' name='" .. val.name .. "'") + if (tostring(val.value) == tostring(v1)) then io.write(" checked='yes'") end + io.write(" value='" .. v1 .. "'>") + end + io.write("\n\t\t\t</input></span>") + else + io.write(html.form[val.type](val)) + end + if (val.descr) and (#val.descr > 0) then io.write("\n\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>") end + if (#val.errtxt > 0) then io.write("\n\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>") end + io.write("\n\t\t</DD>\n") + end + end +end +?> + +<H1><? io.write(form["query"]["sfields"]["category"]["value"] .. "/") +io.write(form["query"]["sfields"]["number"]["value"] .. ": " ) +io.write(form["query"]["sfields"]["synopsis"]["value"] or form["query"]["header"]["subject"]["value"] or "Qurery object")?></H1> + +<H2>Header</H2> +<DL> +<? +local myform = form.query.header +local tags = { "from","date", "subject", } +displayinfo(myform,tags) +?> +</DL> + +<H2>Details</H2> +<DL> +<? +local myform = form.query.sfields +local tags = { "submitter_id", "class", "release", "state", "priority", "severity", "responsible", "arrival_date", "closed_date", "last_modified", "originator", } +displayinfo(myform,tags) +?> +</DL> + +<? +local myform = form.query.mfields +local tags = {"organization", "environment", "description", "how_to_repeat", "fix", "release_note", } +for k,v in pairs(tags) do + local myform=myform[v] +?> +<H2><? io.write(myform.label) ?></H2> +<DL> +<? io.write(html.form[myform.type](myform)) ?> +</DL> +<? end ?> + + +<style> +table {margin:10px;margin-top:5px;border:1px solid #aaa;background:#eee;} +.Responsible-Changed-From-To {background: #fcc;} +.Responsible-Changed-From-To {background: #fcc;} +.State-Changed-From-To {background: #cfc;} +.From {background: #ccf;} +.Header {padding:3px;font-weight:bold;border-bottom:1px solid #665;} +</style> + +<? +local myform = form.query["mfields"]["audit_trail"] +?> +<H2><? io.write(myform.label) ?></H2> +<DL> +<? +for k,v in pairs(myform.option) do + io.write("\n<TABLE STYLE='width:98%;'>") + if (#v.label > 0) then + io.write("<TR CLASS='" .. (v.class or "") .. "'><TD COLSPAN=2 CLASS='Header'>" .. (v.label or "Uknown") .. "</TD></TR>") + end + for i=1,#v do + io.write("<TR><TD WIDTH='100%'><PRE>" .. (v[i] or "Uknown") .. "</PRE></TD></TR>") + end + io.write("\n</TABLE>") +end +?> +</DL> + +<? +local myform = form.query.mfields +local tags = {"unformatted", } +for k,v in pairs(tags) do + local myform=myform[v] +?> +<H2><? io.write(myform.label) ?></H2> +<DL> +<PRE><? io.write(myform.value) ?></PRE> +</DL> +<? end ?> + +<H2>Save changes</H2> +<DL> +<? +local myform = form.query +local tags = { "cmdsave", } +displayinfo(myform,tags) +?> +</DL> + + |