You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by dk...@apache.org on 2019/10/25 12:56:52 UTC
[sling-org-apache-sling-app-cms] 02/02: Fixes SLING-8801 - Adding
an option to forward the form rather than redirecting
This is an automated email from the ASF dual-hosted git repository.
dklco pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git
commit 873521c624142faad2c825e262e2ed52c5a2e565
Author: Dan Klco <dk...@apache.org>
AuthorDate: Fri Oct 25 00:41:13 2019 -0400
Fixes SLING-8801 - Adding an option to forward the form rather than redirecting
---
.../cms/reference/forms/impl/FormHandler.java | 17 +++++++++++++--
.../apps/reference/components/forms/form/edit.json | 24 +++++++++++++++++++---
2 files changed, 36 insertions(+), 5 deletions(-)
diff --git a/reference/src/main/java/org/apache/sling/cms/reference/forms/impl/FormHandler.java b/reference/src/main/java/org/apache/sling/cms/reference/forms/impl/FormHandler.java
index 2bce68f..053098e 100644
--- a/reference/src/main/java/org/apache/sling/cms/reference/forms/impl/FormHandler.java
+++ b/reference/src/main/java/org/apache/sling/cms/reference/forms/impl/FormHandler.java
@@ -30,6 +30,7 @@ import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
+import org.apache.sling.api.wrappers.SlingHttpServletRequestWrapper;
import org.apache.sling.cms.Page;
import org.apache.sling.cms.PageManager;
import org.apache.sling.cms.ResourceTree;
@@ -89,9 +90,21 @@ public class FormHandler extends SlingAllMethodsServlet {
return;
}
- String thankYouPage = request.getResource().getValueMap().get("thankYouPage", String.class);
+ String thankYouPage = request.getResource().getValueMap().get("successPage", String.class);
if (StringUtils.isNotBlank(thankYouPage)) {
- response.sendRedirect(request.getResourceResolver().map(request, thankYouPage) + ".html?message=success");
+ if ("forward".equals(request.getResource().getValueMap().get("successAction", String.class))) {
+ SlingHttpServletRequestWrapper requestWrapper = new SlingHttpServletRequestWrapper(request) {
+ @Override
+ public String getMethod() {
+ return "GET";
+ }
+ };
+
+ request.getRequestDispatcher(thankYouPage).forward(requestWrapper, response);
+ } else {
+ response.sendRedirect(
+ request.getResourceResolver().map(request, thankYouPage) + ".html?message=success");
+ }
} else {
response.sendRedirect(request.getResourceResolver().map(request, pagePath) + ".html?message=success");
}
diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/forms/form/edit.json b/reference/src/main/resources/jcr_root/apps/reference/components/forms/form/edit.json
index 835835a..aa98ccd 100644
--- a/reference/src/main/resources/jcr_root/apps/reference/components/forms/form/edit.json
+++ b/reference/src/main/resources/jcr_root/apps/reference/components/forms/form/edit.json
@@ -19,11 +19,29 @@
"name": "submitText",
"required": true
},
- "thankYouPage": {
+ "successPage": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "sling-cms/components/editor/fields/path",
- "label": "Thank You Page",
- "name": "thankYouPage"
+ "label": "Success Page",
+ "name": "successPage"
+ },
+ "successAction": {
+ "jcr:primaryType": "nt:unstructured",
+ "sling:resourceType": "sling-cms/components/editor/fields/select",
+ "label": "Success Action",
+ "name": "successAction",
+ "options": {
+ "redirect": {
+ "jcr:primaryType": "nt:unstructured",
+ "label": "Redirect",
+ "value": "redirect"
+ },
+ "forward": {
+ "jcr:primaryType": "nt:unstructured",
+ "label": "Forward",
+ "value": "forward"
+ }
+ }
},
"successMessage": {
"jcr:primaryType": "nt:unstructured",