CBI:
authorSteven Barth <steven@midlink.org>
Sun, 22 Nov 2009 20:32:56 +0000 (20:32 +0000)
committerSteven Barth <steven@midlink.org>
Sun, 22 Nov 2009 20:32:56 +0000 (20:32 +0000)
Implement reverse dependencies
Allow wiazrd steps without buttons

libs/cbi/htdocs/luci-static/resources/cbi.js
libs/cbi/luasrc/cbi.lua
libs/cbi/luasrc/view/cbi/delegator.htm
libs/cbi/luasrc/view/cbi/header.htm

index 004e12e..7ba8118 100644 (file)
@@ -59,15 +59,26 @@ function cbi_d_checkvalue(target, ref) {
 }
 
 function cbi_d_check(deps) {
 }
 
 function cbi_d_check(deps) {
+       var reverse;
+       var def = false;
        for (var i=0; i<deps.length; i++) {
        for (var i=0; i<deps.length; i++) {
-               var istat = true
+               var istat = true;
+               reverse = false;
                for (var j in deps[i]) {
                for (var j in deps[i]) {
-                       istat = (istat && cbi_d_checkvalue(j, deps[i][j]))
+                       if (j.slice(-8) == "!reverse") {
+                               reverse = true;
+                       } else if (j.slice(-8) == "!default") {
+                               def = true;
+                               istat = false;
+                       } else {
+                               istat = (istat && cbi_d_checkvalue(j, deps[i][j]))
+                       }
                }
                if (istat) {
                }
                if (istat) {
-                       return true
+                       return !reverse;
                }
        }
                }
        }
+       return def;
 }
 
 function cbi_d_update() {
 }
 
 function cbi_d_update() {
index 9b947cb..e265589 100644 (file)
@@ -616,6 +616,7 @@ function Delegator.parse(self, ...)
                self.current = newcurrent or self.current
                self.active = self:get(self.current)
                if type(self.active) ~= "function" then
                self.current = newcurrent or self.current
                self.active = self:get(self.current)
                if type(self.active) ~= "function" then
+                       self.active:populate_delegator(self)
                        self.active:parse(false)
                        return FROM_PROCEED
                else
                        self.active:parse(false)
                        return FROM_PROCEED
                else
index 08c1fe7..a4a62af 100644 (file)
@@ -17,6 +17,7 @@ $Id$
 <% for _, x in ipairs(self.chain) do %>
                <input type="hidden" name="cbi.delg.path" value="<%=x%>" />
 <% end %>
 <% for _, x in ipairs(self.chain) do %>
                <input type="hidden" name="cbi.delg.path" value="<%=x%>" />
 <% end %>
+<% if not self.disallow_pageactions then %>
 <% if self.allow_back and self:get_prev(self.current) then %>
                <input class="cbi-button cbi-button-back" type="submit" name="cbi.delg.back" value="<%:« Back%>" />
 <% end %>
 <% if self.allow_back and self:get_prev(self.current) then %>
                <input class="cbi-button cbi-button-back" type="submit" name="cbi.delg.back" value="<%:« Back%>" />
 <% end %>
@@ -31,5 +32,6 @@ $Id$
 <% elseif self:get_next(self.current) then %>
                <input class="cbi-button cbi-button-next" type="submit" value="<%:Next »%>" />
 <% end %>
 <% elseif self:get_next(self.current) then %>
                <input class="cbi-button cbi-button-next" type="submit" value="<%:Next »%>" />
 <% end %>
+<% end %>
                <script type="text/javascript">cbi_d_update();</script>
                <script type="text/javascript">cbi_d_update();</script>
-       </div>
+       </div>
\ No newline at end of file
index c831b0d..bece16b 100644 (file)
@@ -14,7 +14,7 @@ $Id$
 -%>
 
 <%+header%>
 -%>
 
 <%+header%>
-<form method="post" action="<%=REQUEST_URI%>" enctype="multipart/form-data">
+<form method="post" name="cbi" action="<%=REQUEST_URI%>" enctype="multipart/form-data">
        <div>
                <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
                <input type="hidden" name="cbi.submit" value="1" />
        <div>
                <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
                <input type="hidden" name="cbi.submit" value="1" />