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" .. val.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, viewtype) io.write("" .. myitem.label .. "\n") io.write("
") 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" 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 .. "
\n") end myitem.name = tempname myitem.value = tempval else io.write(html.form[myitem.type](myitem) .. "\n") end if myitem.descr then io.write("

" .. string.gsub(myitem.descr, "\n", "
") .. "

\n") end if myitem.errtxt then io.write("

" .. string.gsub(myitem.errtxt, "\n", "
") .. "

\n") end io.write("
\n") end function displayform(myform, order) if myform.descr then io.write("

" .. string.gsub(myform.descr, "\n", "
") .. "

\n") end if myform.errtxt then io.write("

" .. string.gsub(myform.errtxt, "\n", "
") .. "

\n") end io.write('
\n') io.write('
\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 for name,item in pairs(myform.value) do if nil == reverseorder[name] then item.name = name displayitem(item) end end io.write('
\n') io.write('
\n') io.write('
') end