luci-base: fix field section add button/input field names
authorJo-Philipp Wich <jo@mein.io>
Mon, 16 Jul 2018 15:28:50 +0000 (17:28 +0200)
committerJo-Philipp Wich <jo@mein.io>
Mon, 16 Jul 2018 15:35:07 +0000 (17:35 +0200)
Some CBI map models, mainly the Network -> VLAN page, expect a valid
previous section ID in their Section:create() callback.

Previous refactoring of the tblsection markup broke this behaviour as
the "section" loop variable was accidentally localized, causing it to
be undefined outside of the loop body which caused the section add
button and name input fields to get rendered with a wrong "name"
attribute.

Fix this by moving the "section" variable declaration out of the loop
and by readding references to it in the non-anonymous section add case.

Fixes FS#1657
Fixes 002c4d1d5 ("luci-base: add "Name" label to autogenerated title column")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit fcc9cd6a9ab0bd7eaff6b3f3b4dd96fa31f79ebb)

modules/luci-base/luasrc/view/cbi/tblsection.htm

index c6e4d7e9afa592ec6d1e7217f38d0b353b01c0bc..7067aa587607cfd77ca8d51b14e09d8a713afd31 100644 (file)
@@ -55,11 +55,11 @@ local titlename = ifattr(not self.anonymous or self.sectiontitle, "data-title",
                        <div class="th cbi-section-table-cell cbi-section-actions"></div>
                <%- end -%>
                </div>
-               <%- local isempty, i, k = true, nil, nil
+               <%- local isempty, section, i, k = true, nil, nil
                    for i, k in ipairs(self:cfgsections()) do
                                isempty = false
+                               section = k
 
-                               local section = k
                                local sectionname = striptags((type(self.sectiontitle) == "function") and self:sectiontitle(section) or k)
                                local sectiontitle = ifattr(sectionname and (not self.anonymous or self.sectiontitle), "data-title", sectionname)
                                local colorclass = (self.extedit or self.rowcolors) and " cbi-rowstyle-%d" % rowstyle() or ""
@@ -126,7 +126,7 @@ local titlename = ifattr(not self.anonymous or self.sectiontitle, "data-title",
                                        <div class="cbi-section-error"><%:Invalid%></div>
                                <%- end %>
                                <div>
-                                       <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." data-type="uciname" data-optional="true" />
+                                       <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" data-type="uciname" data-optional="true" />
                                </div>
                                <input class="cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
                        <% end %>