Software /
code /
prosody
Comparison
util/dataforms.lua @ 2061:e34fdca432a9
util.dataforms: Only add value to rendered form if supplied in the data
author | Florian Zeitz |
---|---|
date | Fri, 30 Oct 2009 01:18:56 +0000 |
parent | 1958:e2b0026143c4 |
child | 2070:25dc4b9d06b1 |
comparison
equal
deleted
inserted
replaced
2060:b23295b5428a | 2061:e34fdca432a9 |
---|---|
36 -- Add field tag | 36 -- Add field tag |
37 form:tag("field", { type = field_type, var = field.name, label = field.label }); | 37 form:tag("field", { type = field_type, var = field.name, label = field.label }); |
38 | 38 |
39 local value = (data and data[field.name]) or field.value; | 39 local value = (data and data[field.name]) or field.value; |
40 | 40 |
41 -- Add value, depending on type | 41 if value then |
42 if field_type == "hidden" then | 42 -- Add value, depending on type |
43 if type(value) == "table" then | 43 if field_type == "hidden" then |
44 -- Assume an XML snippet | 44 if type(value) == "table" then |
45 form:tag("value") | 45 -- Assume an XML snippet |
46 :add_child(value) | 46 form:tag("value") |
47 :up(); | 47 :add_child(value) |
48 elseif value then | 48 :up(); |
49 form:tag("value"):text(tostring(value)):up(); | |
50 end | |
51 elseif field_type == "boolean" then | |
52 form:tag("value"):text((value and "1") or "0"):up(); | |
53 elseif field_type == "fixed" then | |
54 | |
55 elseif field_type == "jid-multi" then | |
56 for _, jid in ipairs(value) do | |
57 form:tag("value"):text(jid):up(); | |
58 end | |
59 elseif field_type == "jid-single" then | |
60 form:tag("value"):text(value):up(); | |
61 elseif field_type == "text-single" or field_type == "text-private" then | |
62 form:tag("value"):text(value):up(); | |
63 elseif field_type == "text-multi" then | |
64 -- Split into multiple <value> tags, one for each line | |
65 for line in value:gmatch("([^\r\n]+)\r?\n*") do | |
66 form:tag("value"):text(line):up(); | |
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 | 49 else |
73 form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up(); | 50 form:tag("value"):text(tostring(value)):up(); |
51 end | |
52 elseif field_type == "boolean" then | |
53 form:tag("value"):text((value and "1") or "0"):up(); | |
54 elseif field_type == "fixed" then | |
55 | |
56 elseif field_type == "jid-multi" then | |
57 for _, jid in ipairs(value) do | |
58 form:tag("value"):text(jid):up(); | |
59 end | |
60 elseif field_type == "jid-single" then | |
61 form:tag("value"):text(value):up(); | |
62 elseif field_type == "text-single" or field_type == "text-private" then | |
63 form:tag("value"):text(value):up(); | |
64 elseif field_type == "text-multi" then | |
65 -- Split into multiple <value> tags, one for each line | |
66 for line in value:gmatch("([^\r\n]+)\r?\n*") do | |
67 form:tag("value"):text(line):up(); | |
68 end | |
69 elseif field_type == "list-single" then | |
70 for _, val in ipairs(value) do | |
71 if type(val) == "table" then | |
72 form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up(); | |
73 else | |
74 form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up(); | |
75 end | |
74 end | 76 end |
75 end | 77 end |
76 end | 78 end |
77 | 79 |
78 if field.required then | 80 if field.required then |