aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2017-09-23 13:20:46 +0100
committerMatthew Wild <mwild1@gmail.com>2017-09-23 13:20:46 +0100
commit87b9555f232d5acfa4ff817a5320a75169483542 (patch)
tree5dca7a84233e5b0541a5c3eb5c2fea10d884e3ee
parentec9ba1dbde43170769bcfe2123173084b1e197b7 (diff)
downloadprosody-87b9555f232d5acfa4ff817a5320a75169483542.tar.gz
prosody-87b9555f232d5acfa4ff817a5320a75169483542.zip
util.dataforms: Don't include list options in result forms (fixes #983)
-rw-r--r--util/dataforms.lua40
1 files changed, 22 insertions, 18 deletions
diff --git a/util/dataforms.lua b/util/dataforms.lua
index 756f35a7..469ce976 100644
--- a/util/dataforms.lua
+++ b/util/dataforms.lua
@@ -68,33 +68,37 @@ function form_t.form(layout, data, formtype)
form:tag("value"):text(line):up();
end
elseif field_type == "list-single" then
- local has_default = false;
- for _, val in ipairs(field.options or value) do
- if type(val) == "table" then
- form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up();
- if value == val.value or val.default and (not has_default) then
- form:tag("value"):text(val.value):up();
- has_default = true;
+ if formtype ~= "result" then
+ local has_default = false;
+ for _, val in ipairs(field.options or value) do
+ if type(val) == "table" then
+ form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up();
+ if value == val.value or val.default and (not has_default) then
+ form:tag("value"):text(val.value):up();
+ has_default = true;
+ end
+ else
+ form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
end
- else
- form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
end
end
- if field.options and value then
+ if (field.options or formtype == "result") and value then
form:tag("value"):text(value):up();
end
elseif field_type == "list-multi" then
- for _, val in ipairs(field.options or value) do
- if type(val) == "table" then
- form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up();
- if not field.options and val.default then
- form:tag("value"):text(val.value):up();
+ if formtype ~= "result" then
+ for _, val in ipairs(field.options or value) do
+ if type(val) == "table" then
+ form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up();
+ if not field.options and val.default then
+ form:tag("value"):text(val.value):up();
+ end
+ else
+ form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
end
- else
- form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
end
end
- if field.options and value then
+ if (field.options or formtype == "result") and value then
for _, val in ipairs(value) do
form:tag("value"):text(val):up();
end