luci-base: form.js: decode HTML entities in AbstractElement.stripTags()
authorMikael Magnusson <mikma@users.sourceforge.net>
Tue, 20 Aug 2024 20:17:36 +0000 (22:17 +0200)
committerPaul Donald <newtwen+github@gmail.com>
Wed, 18 Sep 2024 21:26:48 +0000 (23:26 +0200)
This commit fixes a problem with HTML entities which were visible in their
encoded form in the mobile view. This happened for example when displaying
a GridSection with a Value option containing "&nbsp;" in the title.
Without this change only HTML entities in titles that also contains tags
are decoded before they are stored in data-title attributes.

Signed-off-by: Mikael Magnusson <mikma@users.sourceforge.net>
modules/luci-base/htdocs/luci-static/resources/form.js

index 3834bceb0199073b0fbbd16678759062e3ee2eeb..624bc2c2f8a3f68d87dc01e0a0f8e0e141d71cc3 100644 (file)
@@ -275,16 +275,18 @@ var CBIAbstractElement = baseclass.extend(/** @lends LuCI.form.AbstractElement.p
        },
 
        /**
-        * Strip any HTML tags from the given input string.
+        * Strip any HTML tags from the given input string, and decode
+        * HTML entities.
         *
         * @param {string} s
         * The input string to clean.
         *
         * @returns {string}
-        * The cleaned input string with HTML tags removed.
+        * The cleaned input string with HTML tags removed, and HTML
+        * entities decoded.
         */
        stripTags: function(s) {
-               if (typeof(s) == 'string' && !s.match(/[<>]/))
+               if (typeof(s) == 'string' && !s.match(/[<>\&]/))
                        return s;
 
                var x = dom.elem(s) ? s : dom.parse('<div>' + s + '</div>');