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
+
+ local media = field.media;
+ if media then
+ form:tag("media", { xmlns = "urn:xmpp:media-element", height = media.height, width = media.width });
+ for _, val in ipairs(media) do
+ form:tag("uri", { type = val.type }):text(val.uri):up()
+ end
+ form:up();
+ end
if field.required then
form:tag("required"):up();
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)