Implement reverse dependencies
Allow wiazrd steps without buttons
This commit is contained in:
Steven Barth 2009-11-22 20:32:56 +00:00
parent bbfdc9ea83
commit 19758fae43
4 changed files with 19 additions and 5 deletions

View 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() {

View file

@ -616,6 +616,7 @@ function Delegator.parse(self, ...)
self.current = newcurrent or self.current self.current = newcurrent or self.current
self.active = self:get(self.current) self.active = self:get(self.current)
if type(self.active) ~= "function" then if type(self.active) ~= "function" then
self.active:populate_delegator(self)
self.active:parse(false) self.active:parse(false)
return FROM_PROCEED return FROM_PROCEED
else else

View file

@ -17,6 +17,7 @@ $Id$
<% for _, x in ipairs(self.chain) do %> <% for _, x in ipairs(self.chain) do %>
<input type="hidden" name="cbi.delg.path" value="<%=x%>" /> <input type="hidden" name="cbi.delg.path" value="<%=x%>" />
<% end %> <% end %>
<% if not self.disallow_pageactions then %>
<% if self.allow_back and self:get_prev(self.current) 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%>" /> <input class="cbi-button cbi-button-back" type="submit" name="cbi.delg.back" value="<%:« Back%>" />
<% end %> <% end %>
@ -30,6 +31,7 @@ $Id$
<input class="cbi-button cbi-button-finish" type="submit" value="<%:Finish%>" /> <input class="cbi-button cbi-button-finish" type="submit" value="<%:Finish%>" />
<% elseif self:get_next(self.current) then %> <% elseif self:get_next(self.current) then %>
<input class="cbi-button cbi-button-next" type="submit" value="<%:Next »%>" /> <input class="cbi-button cbi-button-next" type="submit" value="<%:Next »%>" />
<% end %>
<% end %> <% end %>
<script type="text/javascript">cbi_d_update();</script> <script type="text/javascript">cbi_d_update();</script>
</div> </div>

View 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> <div>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script> <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<input type="hidden" name="cbi.submit" value="1" /> <input type="hidden" name="cbi.submit" value="1" />