require("html")
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("" .. string.gsub(html.html_escape(myitem.descr), "\n", "
") .. "
\n") end
if myitem.errtxt then io.write("" .. string.gsub(html.html_escape(myitem.errtxt), "\n", "
") .. "
\n") end
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('' .. string.gsub(html.html_escape(myitem.descr), "\n", "
") .. "
\n") end
if myitem.errtxt then io.write('' .. string.gsub(html.html_escape(myitem.errtxt), "\n", "
") .. "
\n") end
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('' .. string.gsub(html.html_escape(myform.descr), "\n", "
") .. "
\n") end
if myform.errtxt then io.write('' .. string.gsub(html.html_escape(myform.errtxt), "\n", "
") .. "
\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('' .. string.gsub(html.html_escape(result.descr), "\n", "
") .. "
\n") end
if result.errtxt then io.write('' .. string.gsub(html.html_escape(result.errtxt), "\n", "
") .. "
\n") end
end
io.write("
\n")
end
end