# HG changeset patch # User jbe # Date 1350227473 -7200 # Node ID 52305ec73d472ad1d05eb591d75eea1cb5dac1de # Parent db4bf2e6513c659f83c4543dcb17977d8f939635 Fixed 404 treatment regarding _webmcp_path interface diff -r db4bf2e6513c -r 52305ec73d47 framework/cgi-bin/webmcp.lua --- a/framework/cgi-bin/webmcp.lua Wed Oct 10 18:41:11 2012 +0200 +++ b/framework/cgi-bin/webmcp.lua Sun Oct 14 17:11:13 2012 +0200 @@ -281,8 +281,7 @@ end end - if cgi.params["_webmcp_404"] then - request.force_absolute_baseurl() + if request.is_404() then request.set_status("404 Not Found") if request.get_404_route() then request.forward(request.get_404_route()) diff -r db4bf2e6513c -r 52305ec73d47 framework/env/request/__init.lua --- a/framework/env/request/__init.lua Wed Oct 10 18:41:11 2012 +0200 +++ b/framework/env/request/__init.lua Sun Oct 14 17:11:13 2012 +0200 @@ -3,6 +3,7 @@ request._forward_processed = false request._redirect = nil request._absolute_baseurl = nil +request._is_404 = false request._404_route = nil request._force_absolute_baseurl = false request._perm_params = {} @@ -12,6 +13,10 @@ request._params = {} local depth if cgi then -- if-clause to support interactive mode + if cgi.params._webmcp_404 then + request.force_absolute_baseurl() + request._is_404 = true + end for key, value in pairs(cgi.params) do if not string.match(key, "^_webmcp_") then request._params[key] = value @@ -24,21 +29,18 @@ if path == "" then request._module = "index" request._view = "index" - depth = 0 return end module = string.match(path, "^([^/]+)/$") if module then request._module = module request._view = "index" - depth = 1 return end module, action = string.match(path, "^([^/]+)/([^/.]+)$") if module then request._module = module request._action = action - depth = 1 return end module, view, suffix = string.match(path, "^([^/]+)/([^/.]+)%.([^/]+)$") @@ -46,7 +48,6 @@ request._module = module request._view = view request._suffix = suffix - depth = 1 return end module, view, id, suffix = string.match(path, "^([^/]+)/([^/]+)/([^/.]+)%.([^/]+)$") @@ -55,11 +56,15 @@ request._view = view request._id = id request._suffix = suffix - depth = 2 return end + request._is_404 = true end parse() + depth = 0 + for match in string.gmatch(path, "/") do + depth = depth + 1 + end else request._module = cgi.params._webmcp_module request._action = cgi.params._webmcp_action diff -r db4bf2e6513c -r 52305ec73d47 framework/env/request/is_404.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/framework/env/request/is_404.lua Sun Oct 14 17:11:13 2012 +0200 @@ -0,0 +1,11 @@ +--[[-- +is_404 = -- boolean +request.is_404() + +Returns true, if this request results in a 404, else false. + +--]]-- + +function request.is_404() + return request._is_404 +end