diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImpl.java
index 53bb242f86..cf732ee197 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImpl.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImpl.java
@@ -49,6 +49,7 @@
import com.adobe.cq.forms.core.components.models.form.ThankYouOption;
import com.adobe.cq.forms.core.components.util.AbstractContainerImpl;
import com.adobe.cq.forms.core.components.util.ComponentUtils;
+import com.day.cq.commons.LanguageUtil;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.PageManager;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -269,6 +270,26 @@ public String getLang() {
}
}
+ @Override
+ public String getContainingPageLang() {
+ // todo: right now it is copy of aem form because app is part of far, and af-apps is not pare of far
+ if (request != null) {
+ Page currentPage = getCurrentPage();
+ if (!GuideWCMUtils.isForms(currentPage.getPath())) {
+ String pagePath = currentPage.getPath(), pageLocaleRoot = LanguageUtil.getLanguageRoot(pagePath), locale = "";
+ if (StringUtils.isNotBlank(pageLocaleRoot)) {
+ int localeStartIndex = StringUtils.lastIndexOf(pageLocaleRoot, '/');
+ locale = StringUtils.substring(pageLocaleRoot, localeStartIndex + 1);
+ }
+ return locale;
+ } else {
+ return FormContainer.super.getContainingPageLang();
+ }
+ } else {
+ return FormContainer.super.getContainingPageLang();
+ }
+ }
+
@Override
public @NotNull Map getProperties() {
Map properties = super.getProperties();
diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/FormContainer.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/FormContainer.java
index 07f9edd969..e7292e6e84 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/FormContainer.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/FormContainer.java
@@ -303,6 +303,17 @@ default String getLang() {
return "en-US";
}
+ /**
+ * Returns the language of the containing page
+ *
+ * @return the language of the containing page
+ * @since com.adobe.cq.forms.core.components.models.form 4.7.1
+ */
+ @JsonIgnore
+ default String getContainingPageLang() {
+ return getLang();
+ }
+
/**
* Returns the redirect url after form submission
*
diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/package-info.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/package-info.java
index fc68ca73a2..e6840120af 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/package-info.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/package-info.java
@@ -34,7 +34,8 @@
* version, is bound to this proxy component resource type.
*
*/
-@Version("5.2.0")
+
+@Version("5.2.1")
package com.adobe.cq.forms.core.components.models.form;
import org.osgi.annotation.versioning.Version;
diff --git a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImplTest.java b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImplTest.java
index 8132c569dc..82dbebea37 100644
--- a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImplTest.java
+++ b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v2/form/FormContainerImplTest.java
@@ -70,7 +70,10 @@ public class FormContainerImplTest {
private static final String LIB_FORM_CONTAINER = "/libs/core/fd/components/form/container/v2/container";
protected static final String SITES_PATH = "/content/exampleSite";
+ protected static final String SITES_LANG_PATH = "/content/th/exampleSite";
protected static final String FORM_CONTAINER_PATH_IN_SITES = SITES_PATH + "/jcr:content/root/sitecontainer/formcontainer";
+ protected static final String FORM_CONTAINER_PATH_WITH_LANGUAGE_IN_SITES = SITES_LANG_PATH
+ + "/jcr:content/root/sitecontainer/formcontainer";
protected static final String AF_PATH = "/content/forms/af/testAf";
@@ -83,7 +86,8 @@ void setUp() {
// resource up to find page
context.load().json(BASE + "/test-lib-form-container.json", LIB_FORM_CONTAINER); // required since v2 container resource type should
// be v1 for localization to work
- context.load().json(BASE + "/test-forms-in-sites.json", "/content/exampleSite");
+ context.load().json(BASE + "/test-forms-in-sites.json", SITES_PATH);
+ context.load().json(BASE + "/test-forms-in-sites.json", SITES_LANG_PATH);
context.load().json(BASE + "/test-content.json", CONTENT_FORM_WITHOUT_PREFILL_ROOT);
context.registerService(SlingModelFilter.class, new SlingModelFilter() {
@@ -134,6 +138,13 @@ void testGetIdForSitePage() throws Exception {
assertEquals("L2NvbnRlbnQvZXhhbXBsZVNpdGUvamNyOmNvbnRlbnQvcm9vdC9zaXRlY29udGFpbmVyL2Zvcm1jb250YWluZXI=", formContainer.getId());
}
+ @Test
+ void testGetPageLangForSitePage() throws Exception {
+ FormContainer formContainer = Utils.getComponentUnderTest(FORM_CONTAINER_PATH_WITH_LANGUAGE_IN_SITES, FormContainer.class, context);
+ assertNotNull(formContainer.getContainingPageLang());
+ assertEquals("th", formContainer.getContainingPageLang());
+ }
+
@Test
void testGetAction() throws Exception {
FormContainer formContainer = Utils.getComponentUnderTest(PATH_FORM_1, FormContainer.class, context);
diff --git a/it/core/src/main/java/com/adobe/cq/forms/core/components/it/service/CustomAFSubmitService.java b/it/core/src/main/java/com/adobe/cq/forms/core/components/it/service/CustomAFSubmitService.java
index 3be4c2c6f8..cb94ad2202 100644
--- a/it/core/src/main/java/com/adobe/cq/forms/core/components/it/service/CustomAFSubmitService.java
+++ b/it/core/src/main/java/com/adobe/cq/forms/core/components/it/service/CustomAFSubmitService.java
@@ -90,7 +90,8 @@ public Map submit(FormSubmitInfo formSubmitInfo) {
result.put("fd:redirectParameters", redirectParamMap);
} catch (Exception ex) {
logger.error("Error while using the AF Submit service", ex);
-
+ // todo: have to fix this
+ result.put(GuideConstants.FORM_SUBMISSION_ERROR, Boolean.TRUE);
}
return result;
}
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/container.html b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/container.html
index 07439acd12..136d621c79 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/container.html
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/container.html
@@ -21,6 +21,7 @@
id="${container.id}"
data-cmp-is="adaptiveFormContainer"
data-cmp-context-path="${request.contextPath}"
+ data-cmp-page-lang="${container.containingPageLang}"
data-cmp-path="${resource.path}"
class="cmp-adaptiveform-container cmp-container">
diff --git a/ui.frontend/src/HTTPAPILayer.js b/ui.frontend/src/HTTPAPILayer.js
index 2d256c8cd8..e8fead17e3 100644
--- a/ui.frontend/src/HTTPAPILayer.js
+++ b/ui.frontend/src/HTTPAPILayer.js
@@ -49,9 +49,10 @@ class HTTPAPILayer {
/**
* Retrieves the form definition for the specified form container path using the json exporter API
* @param {string} formContainerPath - The path of the form container.
+ * @param {string} pageLang - Language of the containing sites page
* @returns {Promise