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",