luci-base: validation.js: fix "unique" validator
authorJo-Philipp Wich <jo@mein.io>
Fri, 22 Nov 2019 07:42:58 +0000 (08:42 +0100)
committerJo-Philipp Wich <jo@mein.io>
Fri, 22 Nov 2019 07:44:41 +0000 (08:44 +0100)
Previous refactoring renamed the "data-type" attribute of widget markup
containers to "data-widget", breaking the "unique" validator as it relies
on it to lookup options.

Fixes: #3341
Fixes: 13e9e3e9e ("treewide: fix "Unhandled token" errors with Lua CBI maps")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 4f0d67a2897d6592cb0f7562fa042dd4987fd7eb)

modules/luci-base/htdocs/luci-static/resources/validation.js

index 79ae1d67070efa8a0e078099c4c36e19fad37b15..dbf30488c179b5fd269aff7c2b51db004e244ff6 100644 (file)
@@ -535,9 +535,9 @@ var ValidatorFactory = L.Class.extend({
 
                unique: function(subvalidator, subargs) {
                        var ctx = this,
-                           option = findParent(ctx.field, '[data-type][data-name]'),
+                           option = findParent(ctx.field, '[data-widget][data-name]'),
                            section = findParent(option, '.cbi-section'),
-                           query = '[data-type="%s"][data-name="%s"]'.format(option.getAttribute('data-type'), option.getAttribute('data-name')),
+                           query = '[data-widget="%s"][data-name="%s"]'.format(option.getAttribute('data-widget'), option.getAttribute('data-name')),
                            unique = true;
 
                        section.querySelectorAll(query).forEach(function(sibling) {