X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=util%2Fdataforms.lua;h=ee37157a48f268615721c9a99fa0b3b8d103d755;hb=533fc1fa57ce10fc0821f8edaeb247f2710a543c;hp=1e01f6e848d5f43370509c39d53e0a501590cc4d;hpb=777a7765d80ff7b8789c63d6e02d2f200024bd57;p=prosody.git diff --git a/util/dataforms.lua b/util/dataforms.lua index 1e01f6e8..ee37157a 100644 --- a/util/dataforms.lua +++ b/util/dataforms.lua @@ -53,7 +53,7 @@ function form_t.form(layout, data, formtype) 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(); @@ -93,6 +93,15 @@ function form_t.form(layout, data, formtype) 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(); @@ -112,7 +121,7 @@ function form_t.data(layout, stanza) for _, field in ipairs(layout) do local tag; - for field_tag in stanza:childtags() do + for field_tag in stanza:childtags("field") do if field.name == field_tag.attr.var then tag = field_tag; break; @@ -156,7 +165,7 @@ field_readers["jid-single"] = 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 @@ -185,9 +194,13 @@ field_readers["list-multi"] = 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"] = @@ -202,10 +215,10 @@ 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)