require("html")
function displayinfo(myform,tags,viewtype)
for k,v in pairs(tags) do
if (myform[v]) and (myform[v]["value"]) then
local val = myform[v]
local label = val.label
io.write("\n\t
")
if (viewtype == "viewonly") then
if (val.value == "") and (val.errtxt == nil) and ((val.descr) and (val.descr == "")) then val.value = " " end
io.write(val.value)
elseif (val.type == "radio") and (type(val.option) == "table") and (#val.option > 0) then
io.write("")
for k1,v1 in pairs(val.option) do
io.write(tostring(v1.label) .. ":")
io.write("")
end
io.write("")
else
io.write(html.form[val.type](val))
end
if (val.descr) and (#val.descr > 0) then io.write("\n\t\t
" .. string.gsub(val.descr, "\n", " ") .. "
") end
if (val.errtxt) then io.write("\n\t\t
" .. string.gsub(val.errtxt, "\n", " ") .. "
") end
io.write("\n\t\t
\n")
end
end
end
function displaymanagement (myform,tags)
local descriptions, errors
for k,v in pairs(tags) do
if (myform[v]) then
if (myform[v]['descr']) and (#myform[v]['descr'] > 0) then
descriptions = (descriptions or "") .. myform[v]['descr']
end
if (myform[v]['errtxt']) and (#myform[v]['errtxt'] > 0) then
errors = (errors or "") .. myform[v]['errtxt']
end
end
end
if (myform) and (myform[tags[1]]) then
io.write('
' .. (myform[tags[1]]["label"] or myform[tags[1]]["name"]) .. '
')
io.write('
')
--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
" .. string.gsub(descriptions, "\n", " ") .. "
")
end
if (errors) and (#errors > 0) then
io.write("\n\t\t
" .. string.gsub(errors, "\n", " ") .. "
")
end
io.write('
')
-- Display the result of previous action
if (myform) and (myform['actionresult']) then
if (myform['actionresult']['errtxt']) and (#myform['actionresult']['errtxt'] > 0) then
io.write('
' .. myform['actionresult']['label'] .. '
')
io.write('
' .. (myform['actionresult']['errtxt'] or "") .. '
')
elseif (myform['actionresult']['descr']) and (#myform['actionresult']['descr'] > 0) then
io.write('
' .. myform['actionresult']['label'] .. '
')
io.write('
' .. (myform['actionresult']['descr'] or "") .. '
')
end
end
end
end
function displayitem(myitem)
if not myitem then return end
io.write("
" .. html.html_escape(myitem.label) .. "
\n")
io.write("
")
io.write(string.gsub(html.html_escape(tostring(myitem.value)), "\n", " ") .. "\n")
if myitem.descr then io.write("
\n")
end
function displayformitem(myitem, name, viewtype)
if not myitem then return end
if name then myitem.name = name end
if myitem.type ~= "hidden" then
io.write("
" .. html.html_escape(myitem.label) .. "
\n")
io.write("
\n")
end
if (viewtype == "viewonly") then
myitem.disabled = "true"
end
if myitem.type == "multi" then
-- FIXME multiple select doesn't work in haserl, so use series of checkboxes
--myitem.type = "select"
--myitem.multiple = "true"
myitem.class = nil
local tempname = myitem.name
local tempval = myitem.value or {}
local reverseval = {}
for x,val in ipairs(tempval) do
reverseval[val] = x
end
local reverseopt = {}
for x,val in ipairs(myitem.option) do
reverseopt[val] = x
myitem.value = val
myitem.checked = reverseval[val]
myitem.name = tempname .. "." .. x
io.write(html.form.checkbox(myitem) .. html.html_escape(val) .. " \n")
end
-- Check for values not in options
if myitem.errtxt then
myitem.class = "error"
io.write('
\n')
end
for x,val in ipairs(tempval) do
if not reverseopt[val] then
myitem.value = val
myitem.checked = true
io.write(html.form.checkbox(myitem) .. html.html_escape(val) .. " \n")
end
end
if myitem.errtxt then
io.write('
\n')
end
myitem.name = tempname
myitem.value = tempval
elseif myitem.type == "boolean" then
if (myitem.value == true) then myitem.checked = "" end
myitem.value = "true"
io.write(html.form.checkbox(myitem) .. "\n")
elseif myitem.type == "list" then
myitem.value = table.concat(myitem.value, "\n")
io.write(html.form.longtext(myitem) .. "\n")
else
io.write((html.form[myitem.type](myitem) or "") .. "\n")
end
if myitem.type ~= "hidden" then
if myitem.descr then io.write('
\n")
end
end
function displayformstart(myform, page_info)
if not myform then return end
if not myform.action and page_info then
myform.action = page_info.script .. page_info.prefix .. page_info.controller .. "/" .. page_info.action
end
if myform.descr then io.write('
\n") end
io.write('')
end
function displaycommandresults(commands, session, preserveerrors)
local cmdresult = {}
for i,cmd in ipairs(commands) do
if session[cmd.."result"] then
cmdresult[#cmdresult + 1] = session[cmd.."result"]
if not preserveerrors or not session[cmd.."result"].errtxt then
session[cmd.."result"] = nil
end
end
end
if #cmdresult > 0 then
io.write("
Command Result
\n
\n")
for i,result in ipairs(cmdresult) do
if type(result.value) == "string" and result.value ~= "" then io.write(string.gsub(html.html_escape(result.value), "\n", " ") .. "\n") end
if result.descr then io.write('