CBI: Cancelaction and event callbacks for Delegators
LuCId: Send Keep-Alive headers to avoid browser quirks
This commit is contained in:
parent
c47765a611
commit
36e18e87ef
3 changed files with 25 additions and 3 deletions
|
@ -506,6 +506,7 @@ function Delegator.__init__(self, ...)
|
||||||
self.pageaction = false
|
self.pageaction = false
|
||||||
self.readinput = true
|
self.readinput = true
|
||||||
self.allow_reset = false
|
self.allow_reset = false
|
||||||
|
self.allow_cancel = false
|
||||||
self.allow_back = false
|
self.allow_back = false
|
||||||
self.allow_finish = false
|
self.allow_finish = false
|
||||||
self.template = "cbi/delegator"
|
self.template = "cbi/delegator"
|
||||||
|
@ -559,6 +560,17 @@ function Delegator.get(self, name)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Delegator.parse(self, ...)
|
function Delegator.parse(self, ...)
|
||||||
|
if self.allow_cancel and Map.formvalue(self, "cbi.cancel") then
|
||||||
|
if self.on_cancel then
|
||||||
|
self:on_cancel()
|
||||||
|
return FORM_DONE
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.on_init and not Map.formvalue(self, "cbi.delg.current") then
|
||||||
|
self:on_init()
|
||||||
|
end
|
||||||
|
|
||||||
local newcurrent
|
local newcurrent
|
||||||
self.chain = self.chain or self:get_chain()
|
self.chain = self.chain or self:get_chain()
|
||||||
self.current = self.current or self:get_active()
|
self.current = self.current or self:get_active()
|
||||||
|
@ -587,6 +599,9 @@ function Delegator.parse(self, ...)
|
||||||
if not Map.formvalue(self, "cbi.submit") then
|
if not Map.formvalue(self, "cbi.submit") then
|
||||||
return FORM_NODATA
|
return FORM_NODATA
|
||||||
elseif not newcurrent or not self:get(newcurrent) then
|
elseif not newcurrent or not self:get(newcurrent) then
|
||||||
|
if self.on_done then
|
||||||
|
self:on_done()
|
||||||
|
end
|
||||||
return FORM_DONE
|
return FORM_DONE
|
||||||
else
|
else
|
||||||
self.current = newcurrent
|
self.current = newcurrent
|
||||||
|
|
|
@ -23,6 +23,9 @@ $Id$
|
||||||
<% if self.allow_reset then %>
|
<% if self.allow_reset then %>
|
||||||
<input class="cbi-button cbi-button-reset" type="reset" value="<%:reset%>" />
|
<input class="cbi-button cbi-button-reset" type="reset" value="<%:reset%>" />
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if self.allow_cancel then %>
|
||||||
|
<input class="cbi-button cbi-button-cancel" type="submit" name="cbi.cancel" value="<%:cancel%>" />
|
||||||
|
<% end %>
|
||||||
<% if self.allow_finish and not self:get_next(self.current) then %>
|
<% if self.allow_finish and not self:get_next(self.current) then %>
|
||||||
<input class="cbi-button cbi-button-finish" type="submit" value="<%:cbi_finish Finish%>" />
|
<input class="cbi-button cbi-button-finish" type="submit" value="<%:cbi_finish Finish%>" />
|
||||||
<% elseif self:get_next(self.current) then %>
|
<% elseif self:get_next(self.current) then %>
|
||||||
|
|
|
@ -419,8 +419,8 @@ function Server.process(self, client, env)
|
||||||
set_memory_limit(env.config.memlimit)
|
set_memory_limit(env.config.memlimit)
|
||||||
end
|
end
|
||||||
|
|
||||||
client:setsockopt("socket", "rcvtimeo", 60)
|
client:setsockopt("socket", "rcvtimeo", 5)
|
||||||
client:setsockopt("socket", "sndtimeo", 60)
|
client:setsockopt("socket", "sndtimeo", 5)
|
||||||
|
|
||||||
repeat
|
repeat
|
||||||
-- parse headers
|
-- parse headers
|
||||||
|
@ -531,7 +531,11 @@ function Server.process(self, client, env)
|
||||||
headers["Connection"] = "close"
|
headers["Connection"] = "close"
|
||||||
elseif message.env.SERVER_PROTOCOL == "HTTP/1.0" then
|
elseif message.env.SERVER_PROTOCOL == "HTTP/1.0" then
|
||||||
headers["Connection"] = "Keep-Alive"
|
headers["Connection"] = "Keep-Alive"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if not close then
|
||||||
|
headers["Keep-Alive"] = "timeout=5, max=50"
|
||||||
|
end
|
||||||
|
|
||||||
headers["Date"] = date.to_http(os.time())
|
headers["Date"] = date.to_http(os.time())
|
||||||
local header = {
|
local header = {
|
||||||
|
|
Loading…
Reference in a new issue