summaryrefslogtreecommitdiffstats
path: root/lib/viewfunctions.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/viewfunctions.lua')
-rw-r--r--lib/viewfunctions.lua109
1 files changed, 86 insertions, 23 deletions
diff --git a/lib/viewfunctions.lua b/lib/viewfunctions.lua
index d69f2cc..c7aa53f 100644
--- a/lib/viewfunctions.lua
+++ b/lib/viewfunctions.lua
@@ -4,14 +4,14 @@ function displayinfo(myform,tags,viewtype)
if (myform[v]) and (myform[v]["value"]) then
local val = myform[v]
io.write("\n\t<DT")
- if (#val.errtxt > 0) then
+ if (val.errtxt) 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 (val.value == "") and (val.errtxt == "") and ((val.descr) and (val.descr == "")) then val.value = "&nbsp;" end
+ if (val.value == "") and (val.errtxt == nil) and ((val.descr) and (val.descr == "")) then val.value = "&nbsp;" 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 "") .. "'>")
@@ -26,7 +26,7 @@ function displayinfo(myform,tags,viewtype)
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
+ if (val.errtxt) 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
@@ -46,31 +46,94 @@ function displaymanagement (myform,tags)
end
if (myform) and (myform[tags[1]]) then
- io.write('<dt>' .. (myform[tags[1]]["label"] or myform[tags[1]]["name"]) .. '</dt>')
- io.write('<dd>')
- --Show buttons
- for k,v in pairs(tags) do
- if (myform[v]) then
- io.write(html.form[myform[v].type](myform[v]))
+ io.write('<dt>' .. (myform[tags[1]]["label"] or myform[tags[1]]["name"]) .. '</dt>')
+ io.write('<dd>')
+ --Show buttons
+ for k,v in pairs(tags) do
+ if (myform[v]) then
+ io.write(html.form[myform[v].type](myform[v]))
+ end
+ end
+ if (descriptions) and (#descriptions > 0) then
+ io.write("\n\t\t<P CLASS='descr'>" .. string.gsub(descriptions, "\n", "<BR>") .. "</P>")
+ end
+ if (errors) and (#errors > 0) then
+ io.write("\n\t\t<P CLASS='error'>" .. string.gsub(errors, "\n", "<BR>") .. "</P>")
end
+ io.write('</dd>')
+
+ -- Display the result of previous action
+ if (myform) and (myform['actionresult']) then
+ if (myform['actionresult']['errtxt']) and (#myform['actionresult']['errtxt'] > 0) then
+ io.write('<dt class="error">' .. myform['actionresult']['label'] .. '</dt>')
+ io.write('<dd><pre class="error">' .. (myform['actionresult']['errtxt'] or "") .. '</pre></dd>')
+ elseif (myform['actionresult']['descr']) and (#myform['actionresult']['descr'] > 0) then
+ io.write('<dt>' .. myform['actionresult']['label'] .. '</dt>')
+ io.write('<dd><pre>' .. (myform['actionresult']['descr'] or "") .. '</pre></dd>')
+ end
+ end
+ end
+end
+
+function displayitem(myitem, viewtype)
+ io.write("<DT")
+ if myitem.errtxt then
+ myitem.class = "error"
+ io.write(" class='error'")
end
- if (descriptions) and (#descriptions > 0) then
- io.write("\n\t\t<P CLASS='descr'>" .. string.gsub(descriptions, "\n", "<BR>") .. "</P>")
+ io.write(">" .. myitem.label .. "</DT>\n")
+ io.write("<DD>")
+ if (viewtype == "viewonly") then
+ myitem.disabled = "true"
end
- if (errors) and (#errors > 0) then
- io.write("\n\t\t<P CLASS='error'>" .. string.gsub(errors, "\n", "<BR>") .. "</P>")
+ if myitem.type == "multi" then
+ -- FIXME multiple select doesn't work in haserl, so use series of checkboxes
+ --myitem.type = "select"
+ --myitem.multiple = "true"
+ local tempname = myitem.name
+ local tempval = myitem.value
+ local reverseval = {}
+ for x,val in ipairs(tempval) do
+ reverseval[val] = x
+ end
+ for x,val in ipairs(myitem.option) do
+ myitem.value = val
+ myitem.checked = reverseval[val]
+ myitem.name = tempname .. "." .. val
+ io.write(html.form.checkbox(myitem) .. val .. "<br>\n")
+ end
+ myitem.name = tempname
+ myitem.value = tempval
+ else
+ io.write(html.form[myitem.type](myitem) .. "\n")
end
- io.write('</dd>')
+ if myitem.descr then io.write("<P CLASS='descr'>" .. string.gsub(myitem.descr, "\n", "<BR>") .. "</P>\n") end
+ if myitem.errtxt then io.write("<P CLASS='error'>" .. string.gsub(myitem.errtxt, "\n", "<BR>") .. "</P>\n") end
+ io.write("</DD>\n")
+end
- -- Display the result of previous action
- if (myform) and (myform['actionresult']) then
- if (myform['actionresult']['errtxt']) and (#myform['actionresult']['errtxt'] > 0) then
- io.write('<dt class="error">' .. myform['actionresult']['label'] .. '</dt>')
- io.write('<dd><pre class="error">' .. (myform['actionresult']['errtxt'] or "") .. '</pre></dd>')
- elseif (myform['actionresult']['descr']) and (#myform['actionresult']['descr'] > 0) then
- io.write('<dt>' .. myform['actionresult']['label'] .. '</dt>')
- io.write('<dd><pre>' .. (myform['actionresult']['descr'] or "") .. '</pre></dd>')
+function displayform(myform, order)
+ if myform.descr then io.write("<P CLASS='descr'>" .. string.gsub(myform.descr, "\n", "<BR>") .. "</P>\n") end
+ if myform.errtxt then io.write("<P CLASS='error'>" .. string.gsub(myform.errtxt, "\n", "<BR>") .. "</P>\n") end
+ io.write('<form action="' .. myform.action .. '" method="POST">\n')
+ io.write('<DL>\n')
+ local reverseorder= {}
+ if order then
+ for x,name in ipairs(order) do
+ reverseorder[name] = x
+ if myform.value[name] then
+ myform.value[name].name = name
+ displayitem(myform.value[name])
+ end
end
end
-end
+ for name,item in pairs(myform.value) do
+ if nil == reverseorder[name] then
+ item.name = name
+ displayitem(item)
+ end
+ end
+ io.write('<DT><input class="submit" type="submit" value="' .. myform.submit .. '"></DT>\n')
+ io.write('</DL>\n')
+ io.write('</FORM>')
end