luci-base: cbi: further refactoring
[project/luci.git] / modules / luci-base / luasrc / view / cbi / ucisection.htm
index ba0cc53..2cb1e75 100644 (file)
 
 <% if self.optionals[section] and #self.optionals[section] > 0 or self.dynamic then %>
        <div class="cbi-optionals" data-index="<%=#self.children + 1%>">
-               <% if self.dynamic then %>
-                       <input type="text" id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" />
-                       <% if self.optionals[section] and #self.optionals[section] > 0 then %>
-                       <script type="text/javascript">
-                               cbi_combobox_init('cbi.opt.<%=self.config%>.<%=section%>', {
-                               <%-
-                                       for i, val in pairs(self.optionals[section]) do
-                               -%>
-                                       <%-=string.format("%q", val.option) .. ":" .. string.format("%q", striptags(val.title))-%>
-                                       <%-if next(self.optionals[section], i) then-%>,<%-end-%>
-                               <%-
-                                       end
-                               -%>
-                               }, '', '<%-: -- custom -- -%>');
-                       </script>
-                       <% end %>
+               <%
+               if self.dynamic then
+                       local keys, vals, name, opt = { }, { }
+                       for name, opt in pairs(self.optionals[section]) do
+                               keys[#keys+1] = name
+                               vals[#vals+1] = opt.title
+                       end
+               %>
+                       <input type="text" id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-type="uciname" data-optional="true"<%=
+                               ifattr(#keys > 0, "data-choices", luci.util.json_encode({keys, vals}))
+                       %> />
                <% else %>
-               <select id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-optionals="true">
-                       <option><%: -- Additional Field -- %></option>
-                       <% for key, val in pairs(self.optionals[section]) do -%>
-                               <option id="cbi-<%=self.config.."-"..section.."-"..val.option%>" value="<%=val.option%>" data-index="<%=val.index%>" data-depends="<%=pcdata(val:deplist2json(section))%>"><%=striptags(val.title)%></option>
-                       <%- end %>
-               </select>
-       <% end %>
+                       <select id="cbi.opt.<%=self.config%>.<%=section%>" name="cbi.opt.<%=self.config%>.<%=section%>" data-optionals="true">
+                               <option><%: -- Additional Field -- %></option>
+                               <% for key, val in pairs(self.optionals[section]) do -%>
+                                       <option id="cbi-<%=self.config.."-"..section.."-"..val.option%>" value="<%=val.option%>" data-index="<%=val.index%>" data-depends="<%=pcdata(val:deplist2json(section))%>"><%=striptags(val.title)%></option>
+                               <%- end %>
+                       </select>
+               <% end %>
                <input type="submit" class="cbi-button cbi-button-fieldadd" value="<%:Add%>" />
        </div>
 <% end %>