util/dataforms.lua

changeset 1958
e2b0026143c4
parent 1945
adfd7f3720f5
child 2061
e34fdca432a9
equal deleted inserted replaced
1957:5856b2dcf81e 1958:e2b0026143c4
8 8
9 local setmetatable = setmetatable; 9 local setmetatable = setmetatable;
10 local pairs, ipairs = pairs, ipairs; 10 local pairs, ipairs = pairs, ipairs;
11 local tostring, type = tostring, type; 11 local tostring, type = tostring, type;
12 local t_concat = table.concat; 12 local t_concat = table.concat;
13
14 local st = require "util.stanza"; 13 local st = require "util.stanza";
15 14
16 module "dataforms" 15 module "dataforms"
17 16
18 local xmlns_forms = 'jabber:x:data'; 17 local xmlns_forms = 'jabber:x:data';
64 elseif field_type == "text-multi" then 63 elseif field_type == "text-multi" then
65 -- Split into multiple <value> tags, one for each line 64 -- Split into multiple <value> tags, one for each line
66 for line in value:gmatch("([^\r\n]+)\r?\n*") do 65 for line in value:gmatch("([^\r\n]+)\r?\n*") do
67 form:tag("value"):text(line):up(); 66 form:tag("value"):text(line):up();
68 end 67 end
68 elseif field_type == "list-single" then
69 for _, val in ipairs(value) do
70 if type(val) == "table" then
71 form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up();
72 else
73 form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
74 end
75 end
69 end 76 end
70 77
71 if field.required then 78 if field.required then
72 form:tag("required"):up(); 79 form:tag("required"):up();
73 end 80 end
118 end 125 end
119 end 126 end
120 return t_concat(result, "\n"); 127 return t_concat(result, "\n");
121 end 128 end
122 129
130 field_readers["list-single"] =
131 field_readers["text-single"];
132
123 field_readers["boolean"] = 133 field_readers["boolean"] =
124 function (field_tag) 134 function (field_tag)
125 local value = field_tag:child_with_name("value"); 135 local value = field_tag:child_with_name("value");
126 if value then 136 if value then
127 if value[1] == "1" or value[1] == "true" then 137 if value[1] == "1" or value[1] == "true" then

mercurial