webmcp

annotate framework/env/request/redirect.lua @ 264:8aa38ddcc1b2

New configuration options "min_requests_per_connect" and "max_requests_per_connect"; Bugfix: Send headers added with request.add_header(...) also in case of 303 Redirect
author jbe
date Fri Mar 20 05:30:57 2015 +0100 (2015-03-20)
parents ca88032cb37c
children 56d237b81c18
rev   line source
jbe/bsw@0 1 --[[--
jbe/bsw@0 2 request.redirect{
jbe/bsw@0 3 module = module, -- module name
jbe/bsw@0 4 view = view, -- view name
jbe/bsw@0 5 id = id, -- optional id for view
jbe@113 6 params = params, -- optional view parameters
jbe@113 7 anchor = anchor -- anchor in URL
jbe/bsw@0 8 }
jbe/bsw@0 9
jbe/bsw@0 10 Calling this function causes the WebMCP to do a 303 HTTP redirect after the current view or action and all filters have finished execution. If routing mode "redirect" has been chosen, then this function is called automatically after an action and all its filters have finished execution. Calling request.redirect{...} (or request.forward{...}) explicitly inside an action will cause routing information from the browser to be ignored. To preserve GET/POST parameters of an action, use request.forward{...} instead. Currently no redirects to external (absolute) URLs are possible, there will be an implementation in future though.
jbe/bsw@0 11
jbe/bsw@0 12 --]]--
jbe/bsw@0 13
jbe/bsw@0 14 function request.redirect(args)
jbe/bsw@0 15 -- TODO: support redirects to external URLs too
jbe/bsw@0 16 -- (needs fixes in the trace system as well)
jbe/bsw@0 17 local module = args.module
jbe/bsw@0 18 local view = args.view
jbe/bsw@0 19 local id = args.id
jbe/bsw@0 20 local params = args.params or {}
jbe@113 21 local anchor = args.anchor or nil
jbe/bsw@0 22 if type(module) ~= "string" then
jbe/bsw@0 23 error("No module string passed to request.redirect{...}.")
jbe/bsw@0 24 end
jbe/bsw@0 25 if type(view) ~= "string" then
jbe/bsw@0 26 error("No view string passed to request.redirect{...}.")
jbe/bsw@0 27 end
jbe/bsw@0 28 if type(params) ~= "table" then
jbe/bsw@0 29 error("Params array passed to request.redirect{...} is not a table.")
jbe/bsw@0 30 end
jbe@113 31 if anchor and type(anchor) ~= "string" then
jbe@113 32 error("Anchor passed to request.redirect{...} must be a string or nil.")
jbe@113 33 end
jbe/bsw@0 34 if request.is_rerouted() then
jbe/bsw@0 35 error("Tried to redirect after another forward or redirect.")
jbe/bsw@0 36 end
jbe/bsw@0 37 request._redirect = {
jbe/bsw@0 38 module = module,
jbe/bsw@0 39 view = view,
jbe/bsw@0 40 id = id,
jbe@113 41 params = params,
jbe@113 42 anchor = anchor
jbe/bsw@0 43 }
jbe/bsw@0 44 trace.redirect{ module = args.module, view = args.view }
jbe/bsw@0 45 end

Impressum / About Us