diff --git a/all/pom.xml b/all/pom.xml index a2b9ce708..5f04e4e20 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -7,7 +7,7 @@ com.exadel.etoolbox etoolbox-authoring-kit - 2.5.3 + 2.5.4 etoolbox-authoring-kit-all diff --git a/core/pom.xml b/core/pom.xml index 68ced1e82..1403c7bc6 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -7,7 +7,7 @@ com.exadel.etoolbox etoolbox-authoring-kit - 2.5.3 + 2.5.4 etoolbox-authoring-kit-core diff --git a/core/src/main/java/com/exadel/aem/toolkit/api/annotations/widgets/rte/HtmlLinkRules.java b/core/src/main/java/com/exadel/aem/toolkit/api/annotations/widgets/rte/HtmlLinkRules.java index 7490c201e..870d8e135 100644 --- a/core/src/main/java/com/exadel/aem/toolkit/api/annotations/widgets/rte/HtmlLinkRules.java +++ b/core/src/main/java/com/exadel/aem/toolkit/api/annotations/widgets/rte/HtmlLinkRules.java @@ -53,14 +53,14 @@ /** * Defines the {@code target} attribute for a link to an internal resource * @see LinkTarget - * @return One of {@code LinkTarget} values + * @return String value */ - LinkTarget targetInternal() default LinkTarget.AUTO; + String targetInternal() default LinkTarget.AUTO; /** * Defines the {@code target} attribute for a link to an external resource * @see LinkTarget - * @return One of {@code LinkTarget} values + * @return String value */ - LinkTarget targetExternal() default LinkTarget.AUTO; + String targetExternal() default LinkTarget.AUTO; } diff --git a/core/src/main/java/com/exadel/aem/toolkit/api/annotations/widgets/rte/LinkTarget.java b/core/src/main/java/com/exadel/aem/toolkit/api/annotations/widgets/rte/LinkTarget.java index 21b4f6982..97410733f 100644 --- a/core/src/main/java/com/exadel/aem/toolkit/api/annotations/widgets/rte/LinkTarget.java +++ b/core/src/main/java/com/exadel/aem/toolkit/api/annotations/widgets/rte/LinkTarget.java @@ -14,26 +14,27 @@ package com.exadel.aem.toolkit.api.annotations.widgets.rte; /** - * Contains possible values of {@link HtmlLinkRules#targetExternal()} and {@link HtmlLinkRules#targetInternal()} properties + * Enumerates values of {@link HtmlLinkRules#targetExternal()} and {@link HtmlLinkRules#targetInternal()} properties. + * These properties define the value of `target` attribute for an anchor tag */ -public enum LinkTarget { - AUTO { - @Override - public String toString() { - return ""; - } - }, - MANUAL { - @Override - public String toString() { - return "manual"; - } - }, - BLANK { - @Override - public String toString() { - return "blank"; - } - }, +public class LinkTarget { + public static final String AUTO = ""; + + public static final String BLANK = "_blank"; + + @Deprecated + public static final String MANUAL = "manual"; + + public static final String PARENT = "_parent"; + + public static final String SELF = AUTO; + + public static final String TOP = "_top"; + + /** + * Default (instantiation-preventing) constructor + */ + private LinkTarget() { + } } diff --git a/core/src/main/java/com/exadel/aem/toolkit/core/CoreConstants.java b/core/src/main/java/com/exadel/aem/toolkit/core/CoreConstants.java index b531ce239..2d03b8f45 100644 --- a/core/src/main/java/com/exadel/aem/toolkit/core/CoreConstants.java +++ b/core/src/main/java/com/exadel/aem/toolkit/core/CoreConstants.java @@ -60,6 +60,8 @@ public class CoreConstants { public static final String EQUALITY_SIGN = "="; public static final String WILDCARD = "*"; + public static final String CONTENT_TYPE_JSON = "application/json;charset=utf-8"; + /** * Default (instantiation-restricting) constructor */ diff --git a/core/src/main/java/com/exadel/aem/toolkit/core/lists/servlets/ListsServlet.java b/core/src/main/java/com/exadel/aem/toolkit/core/lists/servlets/ListsServlet.java index ccdbc952e..26dd362f7 100644 --- a/core/src/main/java/com/exadel/aem/toolkit/core/lists/servlets/ListsServlet.java +++ b/core/src/main/java/com/exadel/aem/toolkit/core/lists/servlets/ListsServlet.java @@ -52,8 +52,8 @@ import com.exadel.aem.toolkit.core.lists.ListConstants; /** - * Provides the collection of AEM resources that either represent Exadel Toolbox Lists or serve as folders for Exadel - * Toolbox Lists to be displayed in the Exadel Toolbox Lists console + * Provides the collection of AEM resources that either represent an EToolbox Lists or serve as folders for EToolbox + * Lists to be displayed in the EToolbox Lists console *

Note: This class is not a part of the public API and is subject to change. Do not use it in your own * code

*/ diff --git a/core/src/main/java/com/exadel/aem/toolkit/core/optionprovider/servlets/OptionProviderServlet.java b/core/src/main/java/com/exadel/aem/toolkit/core/optionprovider/servlets/OptionProviderServlet.java index 3e992b6d0..6b60fae41 100644 --- a/core/src/main/java/com/exadel/aem/toolkit/core/optionprovider/servlets/OptionProviderServlet.java +++ b/core/src/main/java/com/exadel/aem/toolkit/core/optionprovider/servlets/OptionProviderServlet.java @@ -20,7 +20,6 @@ import javax.annotation.Nonnull; import javax.servlet.Servlet; import javax.servlet.ServletException; -import javax.servlet.http.HttpServletResponse; import org.apache.commons.collections4.CollectionUtils; import org.apache.sling.api.SlingHttpServletRequest; @@ -59,7 +58,6 @@ "sling.servlet.methods=" + HttpConstants.METHOD_GET }) public class OptionProviderServlet extends SlingSafeMethodsServlet { - private static final String CONTENT_TYPE_JSON = "application/json;charset=utf-8"; private static final String QUERY_KEY_OUTPUT = "output"; private static final String QUERY_VALUE_JSON = "json"; @@ -74,28 +72,28 @@ public class OptionProviderServlet extends SlingSafeMethodsServlet { * @param response {@code SlingHttpServletResponse} instance */ @Override - protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException { + protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) + throws ServletException, IOException { List options = optionProvider.getOptions(request); - if (CollectionUtils.isEmpty(options) && isJsonOutput(request)) { - response.setStatus(HttpServletResponse.SC_NOT_FOUND); + if (!isJsonOutput(request)) { + DataSource ds = new SimpleDataSource(options.iterator()); + request.setAttribute(DataSource.class.getName(), ds); return; } - if (isJsonOutput(request)) { - response.setContentType(CONTENT_TYPE_JSON); - response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); - try { - response.getWriter().print(getJsonOutput(options)); - } catch (JSONException | NullPointerException e) { - throw new ServletException(e); - } + response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); + response.setContentType(CoreConstants.CONTENT_TYPE_JSON); + if (CollectionUtils.isEmpty(options)) { + response.getWriter().write(CoreConstants.ARRAY_OPENING + CoreConstants.ARRAY_CLOSING); return; } - - DataSource ds = new SimpleDataSource(options.iterator()); - request.setAttribute(DataSource.class.getName(), ds); + try { + response.getWriter().print(getJsonOutput(options)); + } catch (JSONException | NullPointerException e) { + throw new ServletException(e); + } } /** @@ -104,6 +102,9 @@ protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHtt * @return True or false */ private static boolean isJsonOutput(SlingHttpServletRequest request) { + if (QUERY_VALUE_JSON.equalsIgnoreCase(request.getRequestPathInfo().getExtension())) { + return true; + } RequestParameter jsonParameter = request.getRequestParameter(QUERY_KEY_OUTPUT); if (jsonParameter == null) { return false; diff --git a/docs/content/authoring-tools/etoolbox-lists.md b/docs/content/authoring-tools/etoolbox-lists.md index a5b3b32ac..ee2797f2a 100644 --- a/docs/content/authoring-tools/etoolbox-lists.md +++ b/docs/content/authoring-tools/etoolbox-lists.md @@ -123,3 +123,9 @@ public class MyComponent { String optionList; } ``` + +## Retrieving Lists' content via HTTP + +Your website's authoring logic may require fetching the content of a list via HTTP — e.g., with an AJAX request. This can be achieved with the OptionSource / [OptionProvider](../dev-tools/option-provider.md) servlet. Make a GET request to `/apps/etoolbox-authoring-kit/datasources/option-provider.json?path=`. + +By default, the servlet returns a JSON array of objects with `text` and `value` properties matching the same-named attributes of list items. You will probably want to modify the mapping. To say, a typical EToolbox List makes use of `jcr:title` and `value` attributes. Add `&textMember=jcr:title` to expose _jcr:title_. Similarly, you can alter the `valueMember` parameter, add some `attributeMembers`, etc. Please remember that if an item doesn't have a non-blank mapping for both _text_ and _value_, it won't be displayed. diff --git a/docs/content/dev-tools/component-management/customizing-toolkit.md b/docs/content/dev-tools/component-management/customizing-toolkit.md index 5e9c527c2..c2673f24f 100644 --- a/docs/content/dev-tools/component-management/customizing-toolkit.md +++ b/docs/content/dev-tools/component-management/customizing-toolkit.md @@ -313,7 +313,7 @@ mvn clean test -Pintegration -D"aem.host"=192.168.0.81 -D"aem.port"=8080 -D"aem. ### Doing regression testing -The ToolKit supports regression testing as well. Regression testing is done using an external AEM project. The aim is to make sure that a version of ToolKit (namely, the plugin) produces essentially the same XML markup as an one. The version is considered a "reference" and is used as a baseline for comparison. +The ToolKit supports regression testing as well. Regression testing is done using an external AEM project. The aim is to make sure that a _newer_ version of ToolKit (namely, the plugin) produces essentially the same XML markup as an _older_ one. The _older_ version is used as a baseline for comparison. To run regression tests, you need to specify the dedicated Maven profile like the following: ``` diff --git a/docs/content/getting-started/installation.md b/docs/content/getting-started/installation.md index fe9557eca..7eb2333c8 100644 --- a/docs/content/getting-started/installation.md +++ b/docs/content/getting-started/installation.md @@ -11,7 +11,7 @@ seoTitle: Installation - Exadel Authoring Kit com.exadel.etoolbox etoolbox-authoring-kit-core - 2.5.3 + 2.5.4 provided ``` @@ -21,7 +21,7 @@ seoTitle: Installation - Exadel Authoring Kit com.exadel.etoolbox etoolbox-authoring-kit-plugin - 2.5.3 + 2.5.4 @@ -79,7 +79,7 @@ You need to do two steps. com.exadel.etoolbox etoolbox-authoring-kit-all - 2.5.3 + 2.5.4 content-package ``` diff --git a/docs/website/package-lock.json b/docs/website/package-lock.json index 575cc02d3..d9cd03300 100644 --- a/docs/website/package-lock.json +++ b/docs/website/package-lock.json @@ -1,12 +1,12 @@ { "name": "eak-website", - "version": "2.5.3", + "version": "2.5.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "eak-website", - "version": "2.5.3", + "version": "2.5.4", "license": "ISC", "dependencies": { "@exadel/esl": "^5.0.0", diff --git a/docs/website/package.json b/docs/website/package.json index a57e83369..011841ea7 100644 --- a/docs/website/package.json +++ b/docs/website/package.json @@ -1,6 +1,6 @@ { "name": "eak-website", - "version": "2.5.3", + "version": "2.5.4", "description": "EAK website package definition", "main": "index.js", "scripts": { diff --git a/it.tests/pom.xml b/it.tests/pom.xml index daf6562ff..a48a171e5 100644 --- a/it.tests/pom.xml +++ b/it.tests/pom.xml @@ -20,7 +20,7 @@ com.exadel.etoolbox etoolbox-authoring-kit - 2.5.3 + 2.5.4 etoolbox-authoring-kit-it.tests diff --git a/plugin/pom.xml b/plugin/pom.xml index 5d7765969..552a63309 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -7,7 +7,7 @@ com.exadel.etoolbox etoolbox-authoring-kit - 2.5.3 + 2.5.4 etoolbox-authoring-kit-plugin diff --git a/plugin/src/test/com/exadel/aem/toolkit/plugin/handlers/common/cases/components/ScriptedComponent.java b/plugin/src/test/com/exadel/aem/toolkit/plugin/handlers/common/cases/components/ScriptedComponent.java index e9362181b..9904f4789 100644 --- a/plugin/src/test/com/exadel/aem/toolkit/plugin/handlers/common/cases/components/ScriptedComponent.java +++ b/plugin/src/test/com/exadel/aem/toolkit/plugin/handlers/common/cases/components/ScriptedComponent.java @@ -76,7 +76,7 @@ public class ScriptedComponent extends ScriptedParent { }, maxUndoSteps = 25, htmlLinkRules = @HtmlLinkRules( - targetInternal = LinkTarget.MANUAL, + targetInternal = LinkTarget.TOP, targetExternal = LinkTarget.BLANK, protocols = {"http:", "https:"}, defaultProtocol = "http:" diff --git a/plugin/src/test/com/exadel/aem/toolkit/plugin/handlers/widgets/cases/RichTextEditorWidget.java b/plugin/src/test/com/exadel/aem/toolkit/plugin/handlers/widgets/cases/RichTextEditorWidget.java index 4005c7964..cbd6266ad 100644 --- a/plugin/src/test/com/exadel/aem/toolkit/plugin/handlers/widgets/cases/RichTextEditorWidget.java +++ b/plugin/src/test/com/exadel/aem/toolkit/plugin/handlers/widgets/cases/RichTextEditorWidget.java @@ -103,7 +103,7 @@ public class RichTextEditorWidget { indentSize = 1, maxUndoSteps = 25, htmlLinkRules = @HtmlLinkRules( - targetInternal = LinkTarget.MANUAL, + targetInternal = LinkTarget.PARENT, targetExternal = LinkTarget.BLANK, protocols = {"http:", "https:"}, defaultProtocol = "http:" diff --git a/plugin/src/test/resources/handlers/common/components/generic/scriptedComponent/_cq_dialog.xml b/plugin/src/test/resources/handlers/common/components/generic/scriptedComponent/_cq_dialog.xml index 3321f5677..ef9f916b1 100644 --- a/plugin/src/test/resources/handlers/common/components/generic/scriptedComponent/_cq_dialog.xml +++ b/plugin/src/test/resources/handlers/common/components/generic/scriptedComponent/_cq_dialog.xml @@ -131,8 +131,8 @@ protocols="[http:,https:]"> + targetExternal="_blank" + targetInternal="_top"/> - + diff --git a/pom.xml b/pom.xml index e679ce836..ce4d67a58 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.exadel.etoolbox etoolbox-authoring-kit - 2.5.3 + 2.5.4 Exadel Toolbox Authoring Kit Automates generating and managing rich and responsive authoring interfaces for Adobe Experience Manager @@ -462,25 +462,25 @@ com.exadel.etoolbox etoolbox-anydiff-core - 1.0.0 + 1.1.1 test com.fasterxml.jackson.core jackson-annotations - 2.13.4 + 2.18.0 compile com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.18.0 compile com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.18.0 compile diff --git a/ui.apps/package-lock.json b/ui.apps/package-lock.json index 682fc20be..98bcf644a 100644 --- a/ui.apps/package-lock.json +++ b/ui.apps/package-lock.json @@ -1,12 +1,12 @@ { "name": "depends-on", - "version": "2.5.3", + "version": "2.5.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "depends-on", - "version": "2.5.3", + "version": "2.5.4", "license": "Apache-2.0", "devDependencies": { "eslint": "^9.19.0", diff --git a/ui.apps/package.json b/ui.apps/package.json index d4ed77523..ac95e1627 100644 --- a/ui.apps/package.json +++ b/ui.apps/package.json @@ -1,7 +1,7 @@ { "name": "depends-on", "description": "A clientlib that executes defined action on dependent fields", - "version": "2.5.3", + "version": "2.5.4", "private": true, "devDependencies": { "eslint": "^9.19.0", diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml index b2ebe4e60..dfcb90a4d 100644 --- a/ui.apps/pom.xml +++ b/ui.apps/pom.xml @@ -7,7 +7,7 @@ com.exadel.etoolbox etoolbox-authoring-kit - 2.5.3 + 2.5.4 etoolbox-authoring-kit-ui.apps diff --git a/ui.apps/src/main/content/jcr_root/apps/etoolbox-authoring-kit/depends-on/js/dependsOnQueryObserver.js b/ui.apps/src/main/content/jcr_root/apps/etoolbox-authoring-kit/depends-on/js/dependsOnQueryObserver.js index 448fffc1d..3776ec1ff 100644 --- a/ui.apps/src/main/content/jcr_root/apps/etoolbox-authoring-kit/depends-on/js/dependsOnQueryObserver.js +++ b/ui.apps/src/main/content/jcr_root/apps/etoolbox-authoring-kit/depends-on/js/dependsOnQueryObserver.js @@ -130,7 +130,11 @@ return true; } const queryResult = ns.QueryProcessor.evaluateQuery(this.parsedQuery, this.$el); - ns.ActionRegistry.getAction(this.action).call(this, queryResult, this.data, this); + try { + ns.ActionRegistry.getAction(this.action).call(this, queryResult, this.data, this); + } catch (e) { + console.debug('[DependsOn]: Error while executing an action', e); + } } } diff --git a/ui.content/pom.xml b/ui.content/pom.xml index f3602689b..50afd361b 100644 --- a/ui.content/pom.xml +++ b/ui.content/pom.xml @@ -8,7 +8,7 @@ com.exadel.etoolbox etoolbox-authoring-kit - 2.5.3 + 2.5.4 etoolbox-authoring-kit-ui.content