This is an automated email from the ASF dual-hosted git repository. dklco pushed a commit to branch dklco/form-framework in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git
commit 7b38bf025df95dedd352418483b0b8dae72a7c8f Author: Dan Klco <[email protected]> AuthorDate: Thu Jul 25 15:19:17 2019 -0400 Adding the ability to have components reload the page rather than reloading in context --- api/src/main/java/org/apache/sling/cms/Component.java | 11 +++++++++-- .../sling/cms/core/internal/filters/EditIncludeFilter.java | 13 ++++++------- .../sling/cms/core/internal/models/ComponentImpl.java | 10 ++++++++++ .../apps/reference/components/forms/actions/sendemail.json | 3 ++- .../reference/components/forms/actions/updateprofile.json | 3 ++- .../apps/reference/components/forms/fields/selection.json | 3 ++- .../apps/reference/components/forms/fields/textarea.json | 3 ++- .../apps/reference/components/forms/fields/textfield.json | 3 ++- .../jcr_root/apps/reference/components/forms/fieldset.json | 3 ++- .../reference/components/forms/providers/userprofile.json | 3 ++- ui/src/main/frontend/src/js/editor.js | 8 ++++++-- 11 files changed, 45 insertions(+), 18 deletions(-) diff --git a/api/src/main/java/org/apache/sling/cms/Component.java b/api/src/main/java/org/apache/sling/cms/Component.java index c8cd9c4..bc92b22 100644 --- a/api/src/main/java/org/apache/sling/cms/Component.java +++ b/api/src/main/java/org/apache/sling/cms/Component.java @@ -61,15 +61,22 @@ public interface Component { * @return the title */ String getTitle(); - + /** - * True if the component is editable, false otherwise. + * True if the component is editable, false otherwise. * * @return the editable flag */ boolean isEditable(); /** + * Returns true if the the property reloadPage is set to true. + * + * @return true if page should be reloaded when the component is saved + */ + boolean isReloadPage(); + + /** * Returns true if the only component type on the component is the specified * type. * diff --git a/core/src/main/java/org/apache/sling/cms/core/internal/filters/EditIncludeFilter.java b/core/src/main/java/org/apache/sling/cms/core/internal/filters/EditIncludeFilter.java index 2527f10..6611291 100644 --- a/core/src/main/java/org/apache/sling/cms/core/internal/filters/EditIncludeFilter.java +++ b/core/src/main/java/org/apache/sling/cms/core/internal/filters/EditIncludeFilter.java @@ -118,10 +118,11 @@ public class EditIncludeFilter implements Filter { String editPath = component.getEditPath(); String title = StringUtils.isNotEmpty(component.getTitle()) ? component.getTitle() : StringUtils.substringAfterLast(resource.getResourceType(), "/"); - writer.write("<div class=\"sling-cms-component\" data-component=\"" + component.getResource().getPath() - + "\" data-sling-cms-title=\"" + title + "\" data-sling-cms-resource-path=\"" + resource.getPath() - + "\" data-sling-cms-resource-type=\"" + resource.getResourceType() + "\" data-sling-cms-edit=\"" - + editPath + "\"><div class=\"sling-cms-editor\">"); + writer.write("<div class=\"sling-cms-component\" data-reload=\"" + component.isReloadPage() + + "\" data-component=\"" + component.getResource().getPath() + "\" data-sling-cms-title=\"" + title + + "\" data-sling-cms-resource-path=\"" + resource.getPath() + "\" data-sling-cms-resource-type=\"" + + resource.getResourceType() + "\" data-sling-cms-edit=\"" + editPath + + "\"><div class=\"sling-cms-editor\">"); writer.write( "<div class=\"level has-background-grey\"><div class=\"level-left\"><div class=\"field has-addons\">"); @@ -156,7 +157,6 @@ public class EditIncludeFilter implements Filter { editPath = component.getEditPath(); } - if (StringUtils.isNotEmpty(editPath)) { includeEnd = true; writeEditorMarkup(resource, writer); @@ -168,8 +168,7 @@ public class EditIncludeFilter implements Filter { } writer.write("<div class=\"sling-cms-component\" data-sling-cms-title=\"" + (component != null ? component.getTitle() : "") + "\" data-sling-cms-resource-path=\"" - + resource.getPath() + "\" data-sling-cms-resource-type=\"" + resource.getResourceType() - + "\">"); + + resource.getPath() + "\" data-sling-cms-resource-type=\"" + resource.getResourceType() + "\">"); } return includeEnd; } diff --git a/core/src/main/java/org/apache/sling/cms/core/internal/models/ComponentImpl.java b/core/src/main/java/org/apache/sling/cms/core/internal/models/ComponentImpl.java index 9a76cab..26154d9 100644 --- a/core/src/main/java/org/apache/sling/cms/core/internal/models/ComponentImpl.java +++ b/core/src/main/java/org/apache/sling/cms/core/internal/models/ComponentImpl.java @@ -43,6 +43,11 @@ public class ComponentImpl implements Component { @Default(booleanValues = true) private boolean editable; + @Inject + @Optional + @Default(booleanValues = false) + private boolean reloadPage; + private Resource resource; @Inject @@ -161,6 +166,11 @@ public class ComponentImpl implements Component { return editable; } + @Override + public boolean isReloadPage() { + return reloadPage; + } + /** * Returns true if the only component type on the component is the specified * type. diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/forms/actions/sendemail.json b/reference/src/main/resources/jcr_root/apps/reference/components/forms/actions/sendemail.json index 2f8e0ad..efe3d7b 100644 --- a/reference/src/main/resources/jcr_root/apps/reference/components/forms/actions/sendemail.json +++ b/reference/src/main/resources/jcr_root/apps/reference/components/forms/actions/sendemail.json @@ -1,5 +1,6 @@ { "jcr:primaryType" : "sling:Component", "jcr:title": "Email", - "componentType": "Form Action" + "componentType": "Form Action", + "reloadPage": true } \ No newline at end of file diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/forms/actions/updateprofile.json b/reference/src/main/resources/jcr_root/apps/reference/components/forms/actions/updateprofile.json index 8549c19..fc11fd1 100644 --- a/reference/src/main/resources/jcr_root/apps/reference/components/forms/actions/updateprofile.json +++ b/reference/src/main/resources/jcr_root/apps/reference/components/forms/actions/updateprofile.json @@ -1,5 +1,6 @@ { "jcr:primaryType" : "sling:Component", "jcr:title": "Update Profile", - "componentType": "Form Action" + "componentType": "Form Action", + "reloadPage": true } \ No newline at end of file diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/selection.json b/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/selection.json index d3f03c2..341d4a1 100644 --- a/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/selection.json +++ b/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/selection.json @@ -1,5 +1,6 @@ { "jcr:primaryType" : "sling:Component", "jcr:title": "Selection", - "componentType": "Form Field" + "componentType": "Form Field", + "reloadPage": true } \ No newline at end of file diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/textarea.json b/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/textarea.json index d9c86e4..0722adc 100644 --- a/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/textarea.json +++ b/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/textarea.json @@ -1,5 +1,6 @@ { "jcr:primaryType" : "sling:Component", "jcr:title": "Textarea", - "componentType": "Form Field" + "componentType": "Form Field", + "reloadPage": true } \ No newline at end of file diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/textfield.json b/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/textfield.json index c2976c7..7cb2186 100644 --- a/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/textfield.json +++ b/reference/src/main/resources/jcr_root/apps/reference/components/forms/fields/textfield.json @@ -1,5 +1,6 @@ { "jcr:primaryType" : "sling:Component", "jcr:title": "Text Field", - "componentType": "Form Field" + "componentType": "Form Field", + "reloadPage": true } \ No newline at end of file diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/forms/fieldset.json b/reference/src/main/resources/jcr_root/apps/reference/components/forms/fieldset.json index 5d40038..3926e8d 100644 --- a/reference/src/main/resources/jcr_root/apps/reference/components/forms/fieldset.json +++ b/reference/src/main/resources/jcr_root/apps/reference/components/forms/fieldset.json @@ -1,5 +1,6 @@ { "jcr:primaryType" : "sling:Component", "jcr:title": "Fieldset", - "componentType": "Form Field" + "componentType": "Form Field", + "reloadPage": true } \ No newline at end of file diff --git a/reference/src/main/resources/jcr_root/apps/reference/components/forms/providers/userprofile.json b/reference/src/main/resources/jcr_root/apps/reference/components/forms/providers/userprofile.json index 3be98ba..eda95b0 100644 --- a/reference/src/main/resources/jcr_root/apps/reference/components/forms/providers/userprofile.json +++ b/reference/src/main/resources/jcr_root/apps/reference/components/forms/providers/userprofile.json @@ -1,5 +1,6 @@ { "jcr:primaryType" : "sling:Component", "jcr:title": "User Profile", - "componentType": "Form Value Provider" + "componentType": "Form Value Provider", + "reloadPage": true } \ No newline at end of file diff --git a/ui/src/main/frontend/src/js/editor.js b/ui/src/main/frontend/src/js/editor.js index abd30b0..a21570f 100644 --- a/ui/src/main/frontend/src/js/editor.js +++ b/ui/src/main/frontend/src/js/editor.js @@ -80,14 +80,18 @@ } }, reloadComponent: function (path, cb) { - var component = document.querySelector('.sling-cms-component[data-sling-cms-resource-path="' + path + '"]'); + var component = document.querySelector('.sling-cms-component[data-sling-cms-resource-path="' + path + '"]'), + reloadPage = component.dataset.reload === 'true'; while (!component && path.length > 1) { var pathArr = path.split('\/'); pathArr.pop(); path = pathArr.join('/'); component = document.querySelector('.sling-cms-component[data-sling-cms-resource-path="' + path + '"]'); + if(component.dataset.reload === 'true') { + reloadPage = true; + } } - if (!component) { + if (!component || reloadPage) { CMSEditor.ui.hideModal(); window.top.location.reload(); }
