diff options
-rw-r--r-- | spec/util_dataforms_spec.lua | 15 | ||||
-rw-r--r-- | util/dataforms.lua | 4 |
2 files changed, 17 insertions, 2 deletions
diff --git a/spec/util_dataforms_spec.lua b/spec/util_dataforms_spec.lua index 863a3290..123b9f8a 100644 --- a/spec/util_dataforms_spec.lua +++ b/spec/util_dataforms_spec.lua @@ -386,5 +386,20 @@ describe("util.dataforms", function () 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); diff --git a/util/dataforms.lua b/util/dataforms.lua index a5733b83..3ac18697 100644 --- a/util/dataforms.lua +++ b/util/dataforms.lua @@ -42,7 +42,7 @@ function form_t.form(layout, data, formtype) 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 @@ function form_t.data(layout, stanza, current) 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 |