-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
---
+--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
form:tag("field", { type = field_type, var = field.name, label = field.label });
local value = (data and data[field.name]) or field.value;
-
+
if value then
-- Add value, depending on type
if field_type == "hidden" then
elseif field_type == "boolean" then
form:tag("value"):text((value and "1") or "0"):up();
elseif field_type == "fixed" then
-
+ form:tag("value"):text(value):up();
elseif field_type == "jid-multi" then
for _, jid in ipairs(value) do
form:tag("value"):text(jid):up();
end
end
end
-
+
if field.required then
form:tag("required"):up();
end
-
+
-- Jump back up to list of fields
form:up();
end
if data and #data > 0 then
return data
elseif raw_data then
- return raw_data, "Invalid JID";
+ return nil, "Invalid JID: " .. raw_data;
elseif required then
return nil, "Required value missing";
end
function (field_tag, required)
local result = {};
for value in field_tag:childtags("value") do
- result[#result+1] = value;
+ result[#result+1] = value:get_text();
+ end
+ if #result > 0 then
+ return result;
+ elseif required then
+ return nil, "Required value missing";
end
- return result, (required and #result == 0 and "Required value missing" or nil);
end
field_readers["text-multi"] =
field_readers["list-single"] =
field_readers["text-single"];
- local boolean_values = {
- ["1"] = true, ["true"] = true,
- ["0"] = false, ["false"] = false,
- };
+local boolean_values = {
+ ["1"] = true, ["true"] = true,
+ ["0"] = false, ["false"] = false,
+};
field_readers["boolean"] =
function (field_tag, required)
if value ~= nil then
return value;
elseif raw_value then
- return "Invalid boolean representation";
+ return nil, "Invalid boolean representation";
elseif required then
return nil, "Required value missing";
end