treewide: rework uci apply workflow
[project/luci.git] / modules / luci-base / luasrc / view / cbi / map.htm
index e90c3f5..69ef361 100644 (file)
@@ -2,12 +2,57 @@
        <div class="errorbox"><%=pcdata(msg)%></div>
 <%- end end -%>
 
-<%-+cbi/apply_xhr-%>
-
 <div class="cbi-map" id="cbi-<%=self.config%>">
        <% if self.title and #self.title > 0 then %><h2 name="content"><%=self.title%></h2><% end %>
        <% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
-       <%- if firstmap and applymap then cbi_apply_xhr(self.config, parsechain, redirect) end -%>
-       <%- self:render_children() %>
+       <%- if firstmap and (applymap or confirmmap) then -%>
+               <%+cbi/apply_widget%>
+               <% cbi_apply_widget(redirect) %>
+               <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+               <script type="text/javascript">
+                       document.addEventListener("DOMContentLoaded", function() {
+                               <% if confirmmap then -%>
+                                       uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);
+                               <%- else -%>
+                                       uci_apply(true);
+                               <%- end %>
+                       });
+               </script>
+       <%- end -%>
+
+       <% if self.tabbed then %>
+               <ul class="cbi-tabmenu map">
+                       <%- self.selected_tab = luci.http.formvalue("tab.m-" .. self.config) %>
+                       <% for i, section in ipairs(self.children) do %>
+                               <%- if not self.selected_tab then self.selected_tab = section.sectiontype end %>
+                               <li id="tab.m-<%=self.config%>.<%=section.section or section.sectiontype%>" class="cbi-tab<%=(section.sectiontype == self.selected_tab) and '' or '-disabled'%>">
+                                       <a onclick="this.blur(); return cbi_t_switch('m-<%=self.config%>', '<%=section.section or section.sectiontype%>')" href="<%=REQUEST_URI%>?tab.m-<%=self.config%>=<%=section.section or section.sectiontype%>"><%=section.title or section.section or section.sectiontype %></a>
+                                       <% if section.sectiontype == self.selected_tab then %><input type="hidden" id="tab.m-<%=self.config%>" name="tab.m-<%=self.config%>" value="<%=section.section or section.sectiontype%>" /><% end %>
+                               </li>
+                       <% end %>
+               </ul>
+               <br />
+               <% for i, section in ipairs(self.children) do %>
+                       <div class="cbi-tabcontainer" id="container.m-<%=self.config%>.<%=section.section or section.sectiontype%>"<% if section.sectiontype ~= self.selected_tab then %> style="display:none"<% end %>>
+                               <% section:render() %>
+                       </div>
+                       <script type="text/javascript">cbi_t_add('m-<%=self.config%>', '<%=section.section or section.sectiontype%>')</script>
+               <% end %>
+
+               <% if not self.save then -%>
+                       <div class="cbi-section-error">
+                               <% for _, section in ipairs(self.children) do %>
+                                       <% if section.error and section.error[section.section] then -%>
+                                               <ul><li>
+                                                       <%:One or more invalid/required values on tab%>:&nbsp;<%=section.title or section.section or section.sectiontype%>
+                                               </li></ul>
+                                       <%- end %>
+                               <% end %>
+                       </div>
+               <%- end %>
+       <% else %>
+               <%- self:render_children() %>
+       <% end %>
+
        <br />
 </div>