summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2015-06-05 16:31:48 -0400
committerTed Trask <ttrask01@yahoo.com>2015-06-05 16:31:48 -0400
commitdf5ea29873edff8d54bf94eb5ff494dfd9837d4f (patch)
treeda4e139a582943e64c2583bc2b47c0ba0f612d78
parente3ceb2dfe66d679e823f7e3a995ea0b0ff504e04 (diff)
downloadacf-core-df5ea29873edff8d54bf94eb5ff494dfd9837d4f.tar.bz2
acf-core-df5ea29873edff8d54bf94eb5ff494dfd9837d4f.tar.xz
Fix form with redir to not change to command result when redirecting to same action
This allows a form to override the redirect to referrer
-rw-r--r--app/acf_www-controller.lua16
1 files changed, 12 insertions, 4 deletions
diff --git a/app/acf_www-controller.lua b/app/acf_www-controller.lua
index 80d72e6..7fdf998 100644
--- a/app/acf_www-controller.lua
+++ b/app/acf_www-controller.lua
@@ -674,11 +674,19 @@ mymodule.handle_form = function(self, getFunction, setFunction, clientdata, opti
form.value.redir = cfe({ type="hidden", value=clientdata.redir, label="" })
end
if clientdata.redir and not form.errtxt then
- form.value = form.descr -- make it a command result
- form.descr = nil
- self:redirect(clientdata.redir, form)
+ -- If redirecting to a different action, change the value to a command result
+ local prefix, controller, action = self.parse_redir_string(clientdata.redir)
+ if prefix == "/" then prefix = self.conf.prefix end
+ if controller == "" then controller = self.conf.controller end
+ if self.conf.prefix ~= prefix or self.conf.controller ~= controller or self.conf.action ~= action then
+ form.value = form.descr -- make it a command result
+ form.descr = nil
+ self:redirect(clientdata.redir, form)
+ end
+ -- Otherwise, continue and ignore the referrer
+ else
+ form = redirect_to_referrer(self, form)
end
- form = redirect_to_referrer(self, form)
else
if clientdata.redir then
form.value.redir = cfe({ type="hidden", value=clientdata.redir, label="" })