webmcp
view framework/env/request/redirect.lua @ 1:985024b16520
Version 1.0.1
New feature: JSON requests
Changes in ui.paginate: Current page setting is directly fetched from CGI params, instead of view params
Changed behavior of load methods of atom library to accept nil as input
Bugfixes in mondelefant_atom_connector timestamp(tz) loaders
Added global constant _WEBMCP_VERSION containing a version string
New feature: JSON requests
Changes in ui.paginate: Current page setting is directly fetched from CGI params, instead of view params
Changed behavior of load methods of atom library to accept nil as input
Bugfixes in mondelefant_atom_connector timestamp(tz) loaders
Added global constant _WEBMCP_VERSION containing a version string
author | jbe |
---|---|
date | Tue Nov 17 12:00:00 2009 +0100 (2009-11-17) |
parents | 9fdfb27f8e67 |
children | ca88032cb37c |
line source
1 --[[--
2 request.redirect{
3 module = module, -- module name
4 view = view, -- view name
5 id = id, -- optional id for view
6 params = params -- optional view parameters
7 }
9 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.
11 --]]--
13 function request.redirect(args)
14 -- TODO: support redirects to external URLs too
15 -- (needs fixes in the trace system as well)
16 local module = args.module
17 local view = args.view
18 local id = args.id
19 local params = args.params or {}
20 if type(module) ~= "string" then
21 error("No module string passed to request.redirect{...}.")
22 end
23 if type(view) ~= "string" then
24 error("No view string passed to request.redirect{...}.")
25 end
26 if type(params) ~= "table" then
27 error("Params array passed to request.redirect{...} is not a table.")
28 end
29 if request.is_rerouted() then
30 error("Tried to redirect after another forward or redirect.")
31 end
32 request._redirect = {
33 module = module,
34 view = view,
35 id = id,
36 params = params
37 }
38 trace.redirect{ module = args.module, view = args.view }
39 end