Software /
code /
prosody
Changeset
9242:68694c1bd960
util.dataforms: Allow field names to be different from the 'var' attribute
This should allow the usage of long prefixes and namespace-like names to
be contained to the XML representation of the form, so that the code can
use more convenient names.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 01 Sep 2018 01:24:46 +0200 |
parents | 9241:2d82a926826f |
children | 9243:a4c52e304e6f |
files | spec/util_dataforms_spec.lua util/dataforms.lua |
diffstat | 2 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/spec/util_dataforms_spec.lua Mon Sep 03 17:45:30 2018 +0100 +++ b/spec/util_dataforms_spec.lua Sat Sep 01 01:24:46 2018 +0200 @@ -386,5 +386,20 @@ assert.same(expect, data, "got back the same data"); end); end); + + describe("field 'var' property", function () + it("works as expected", function () + local f = dataforms.new { + { + var = "someprefix#the-field", + name = "the_field", + type = "text-single", + } + }; + local x = f:form({the_field = "hello"}); + assert.equal("someprefix#the-field", x:find"field@var"); + assert.equal("hello", x:find"field/value#"); + end); + end); end);
--- a/util/dataforms.lua Mon Sep 03 17:45:30 2018 +0100 +++ b/util/dataforms.lua Sat Sep 01 01:24:46 2018 +0200 @@ -42,7 +42,7 @@ for _, field in ipairs(layout) do local field_type = field.type or "text-single"; -- Add field tag - form:tag("field", { type = field_type, var = field.name, label = formtype ~= "submit" and field.label or nil }); + form:tag("field", { type = field_type, var = field.var or field.name, label = formtype ~= "submit" and field.label or nil }); if formtype ~= "submit" then if field.desc then @@ -150,7 +150,7 @@ for _, field in ipairs(layout) do local tag; for field_tag in stanza:childtags("field") do - if field.name == field_tag.attr.var then + if (field.var or field.name) == field_tag.attr.var then tag = field_tag; break; end