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" .. val.label .. "" end io.write(">" .. label .. "") io.write("\n\t\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("

" .. 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('
\n') if myform.value.redir then displayformitem(myform.value.redir, "redir") end end function displayform(myform, order, finishingorder, page_info) if not myform then return end displayformstart(myform, page_info) io.write('
\n') local reverseorder= {["redir"]=0} if order then for x,name in ipairs(order) do reverseorder[name] = x if myform.value[name] then myform.value[name].name = name displayformitem(myform.value[name]) end end end local reversefinishingorder = {} if finishingorder then for x,name in ipairs(finishingorder) do reversefinishingorder[name] = x end end for name,item in pairs(myform.value) do if nil == reverseorder[name] and nil == reversefinishingorder[name] then item.name = name displayformitem(item) end end if finishingorder then for x,name in ipairs(finishingorder) do if myform.value[name] then myform.value[name].name = name displayformitem(myform.value[name]) end end end io.write('
\n') displayformend(myform) end function displayformend(myform) if not myform then return end io.write('
\n') io.write('
\n') io.write('
\n') 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