diff --git a/README.md b/README.md index a119327..d2df1f6 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Fixed deployment of web resources in the file-mapping.properties ## Version 3.0.0 -AMP artifacts ready-to-deploy available at [3.0.0](https://github.com/keensoft/alfresco-datalist-constraints/releases/tag/3.0.0) +AMP artifacts ready-to-deploy available at [3.1.0](https://github.com/keensoft/alfresco-datalist-constraints/releases/tag/3.1.0) It can be defined the same DataList ID to be applied locally inside a Site, overriding global `Dictionary` datalist values. When using for advanced search, new `search` parameter has been added for FTL control in order to mix all values from local sites and `Dictionary` sites. @@ -80,3 +80,7 @@ From Sample 2 Site > Values = 1,2 ``` >> Sample custom model and Share form definition are being provided at folder `datalist-sample` + +## Version 3.1.0 + +Added controls for default value and parent selection \ No newline at end of file diff --git a/datalist-model-repo/pom.xml b/datalist-model-repo/pom.xml index 67089aa..c8db5a0 100644 --- a/datalist-model-repo/pom.xml +++ b/datalist-model-repo/pom.xml @@ -4,7 +4,7 @@ 4.0.0 es.keensoft datalist-model-repo - 3.0.0 + 3.1.0 datalist-model-repo Repository AMP project amp Manages the lifecycle of the site-props-repo Repository AMP (Alfresco Module Package) diff --git a/datalist-model-repo/src/main/java/es/keensoft/alfresco/action/webscript/DataListWebScript.java b/datalist-model-repo/src/main/java/es/keensoft/alfresco/action/webscript/DataListWebScript.java index 51a86f6..0852c75 100644 --- a/datalist-model-repo/src/main/java/es/keensoft/alfresco/action/webscript/DataListWebScript.java +++ b/datalist-model-repo/src/main/java/es/keensoft/alfresco/action/webscript/DataListWebScript.java @@ -49,20 +49,34 @@ public void execute(WebScriptRequest request, WebScriptResponse response) throws String targetedDataListName = request.getExtensionPath(); // 1. search = sites + dictionary - // 2. siteId = if exists(site) ? site : dictionary - // 3. ...... = dictionary + // 2. nodeRef = site (if belongs to one) + // 3. siteId = if exists(site) ? site : dictionary + // 4. ...... = dictionary List sites = new ArrayList(); + String search = request.getParameter("search"); + String siteId = request.getParameter("siteId"); + String nodeRef = request.getParameter("nodeRef"); + if (search != null && search.toLowerCase().equals("true")) { + sites.addAll(getSitesDataList(targetedDataListName)); + } else { - String siteId = request.getParameter("siteId"); + + if (nodeRef != null) { + SiteInfo siteInfo = siteService.getSite(new NodeRef(nodeRef)); + if (siteInfo != null) { + siteId = siteInfo.getShortName(); + } + } if (siteId != null && existsDatalist(siteId, targetedDataListName)) { sites.add(siteService.getSite(siteId)); } else { sites = siteService.listSites(null, DATALIST_PRESET); } + } JSONArray objProcess = new JSONArray(); @@ -72,7 +86,7 @@ public void execute(WebScriptRequest request, WebScriptResponse response) throws Map values = new HashMap(); for (SiteInfo site : sites) { - + NodeRef dataListContainer = SiteServiceImpl.getSiteContainer(site.getShortName(), DATALIST_CONTAINER_ID, true, siteService, transactionService, taggingService); List dataListsNodes = nodeService.getChildAssocs(dataListContainer); @@ -115,9 +129,9 @@ public void execute(WebScriptRequest request, WebScriptResponse response) throws Map sortedValues = sortByComparator(values); for (Map.Entry entry : sortedValues.entrySet()) { JSONObject obj = new JSONObject(); - obj.put(JSON_CODE, entry.getKey()); - obj.put(JSON_VALUE, entry.getValue()); - objProcess.put(obj); + obj.put(JSON_CODE, entry.getKey()); + obj.put(JSON_VALUE, entry.getValue()); + objProcess.put(obj); } } diff --git a/datalist-model-share/pom.xml b/datalist-model-share/pom.xml index 04bc88f..aa65a1a 100644 --- a/datalist-model-share/pom.xml +++ b/datalist-model-share/pom.xml @@ -4,7 +4,7 @@ 4.0.0 es.keensoft datalist-model-share - 3.0.0 + 3.1.0 site-props-share AMP project amp Manages the lifecycle of the site-props-share AMP (Alfresco Module Package) diff --git a/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-defaultValue.ftl b/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-defaultValue.ftl new file mode 100644 index 0000000..4aaf5e2 --- /dev/null +++ b/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-defaultValue.ftl @@ -0,0 +1,115 @@ +<#include "/org/alfresco/components/form/controls/common/utils.inc.ftl" /> + +<#if field.control.params.optionSeparator??> + <#assign optionSeparator=field.control.params.optionSeparator> +<#else> + <#assign optionSeparator=","> + +<#if field.control.params.labelSeparator??> + <#assign labelSeparator=field.control.params.labelSeparator> +<#else> + <#assign labelSeparator="|"> + + +<#assign fieldValue=field.value> + +<#if fieldValue?string == "" && field.control.params.defaultValueContextProperty??> + <#if context.properties[field.control.params.defaultValueContextProperty]??> + <#assign fieldValue = context.properties[field.control.params.defaultValueContextProperty]> + <#elseif args[field.control.params.defaultValueContextProperty]??> + <#assign fieldValue = args[field.control.params.defaultValueContextProperty]> + + + +<#if field.control.params.defaultValue??> + <#assign defaultValue=field.control.params.defaultValue> + + +
+ <#if form.mode == "view"> +
+ <#if field.mandatory && !(fieldValue?is_number) && fieldValue?string == ""> + + + ${field.label?html}: + <#if fieldValue?string == ""> + <#assign valueToShow=msg("form.control.novalue")> + <#else> + <#assign valueToShow=fieldValue> + <#if field.control.params.options?? && field.control.params.options != ""> + <#list field.control.params.options?split(optionSeparator) as nameValue> + <#if nameValue?index_of(labelSeparator) == -1> + <#if nameValue == fieldValue?string || (fieldValue?is_number && fieldValue?c == nameValue)> + <#assign valueToShow=nameValue> + <#break> + + <#else> + <#assign choice=nameValue?split(labelSeparator)> + <#if choice[0] == fieldValue?string || (fieldValue?is_number && fieldValue?c == choice[0])> + <#assign valueToShow=msgValue(choice[1])> + <#break> + + + + + + ${valueToShow?html} +
+ <#else> + + + +
+ + \ No newline at end of file diff --git a/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-multiple.ftl b/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-multiple.ftl index b057141..92c9b9c 100644 --- a/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-multiple.ftl +++ b/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-multiple.ftl @@ -291,6 +291,10 @@ function fillOptions${field.id}(selectId, value) { var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?search=true&"+ (new Date().getTime()); <#elseif page?? && page.url.templateArgs.site??> var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?siteId=${page.url.templateArgs.site!""}&"+ (new Date().getTime()); + <#elseif args?? && args.destination??> + var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?nodeRef=${args.destination!""}&"+ (new Date().getTime()); + <#elseif page?? && page.url.args.nodeRef??> + var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?nodeRef=${page.url.args.nodeRef!""}&"+ (new Date().getTime()); <#else> var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?"+ (new Date().getTime()); diff --git a/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-parent.ftl b/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-parent.ftl new file mode 100644 index 0000000..339cbaa --- /dev/null +++ b/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone-parent.ftl @@ -0,0 +1,146 @@ +<#include "/org/alfresco/components/form/controls/common/utils.inc.ftl" /> + +<#-- +This control will hide the dependent controls injected via the +control parameters in the form config by hiding the div {field.name}-control +--> +<#assign hideProperties=field.control.params.hideProperties> + + +<#assign hideOnValue=field.control.params.hideOnValue> + +<#if field.control.params.optionSeparator??> + <#assign optionSeparator=field.control.params.optionSeparator> +<#else> + <#assign optionSeparator=","> + +<#if field.control.params.labelSeparator??> + <#assign labelSeparator=field.control.params.labelSeparator> +<#else> + <#assign labelSeparator="|"> + + +<#assign fieldValue=field.value> + +<#if fieldValue?string == "" && field.control.params.defaultValueContextProperty??> + <#if context.properties[field.control.params.defaultValueContextProperty]??> + <#assign fieldValue = context.properties[field.control.params.defaultValueContextProperty]> + <#elseif args[field.control.params.defaultValueContextProperty]??> + <#assign fieldValue = args[field.control.params.defaultValueContextProperty]> + + + +<#if fieldValue?string == "${hideOnValue}"> + <#assign hide=true> +<#else> + <#assign hide=false> + + + +
+ <#if form.mode == "view"> +
+ <#if field.mandatory && !(fieldValue?is_number) && fieldValue?string == ""> + + + ${field.label?html}: + <#if fieldValue?string == ""> + <#assign valueToShow=msg("form.control.novalue")> + <#else> + <#assign valueToShow=fieldValue> + <#if field.control.params.options?? && field.control.params.options != ""> + <#list field.control.params.options?split(optionSeparator) as nameValue> + <#if nameValue?index_of(labelSeparator) == -1> + <#if nameValue == fieldValue?string || (fieldValue?is_number && fieldValue?c == nameValue)> + <#assign valueToShow=nameValue> + <#break> + + <#else> + <#assign choice=nameValue?split(labelSeparator)> + <#if choice[0] == fieldValue?string || (fieldValue?is_number && fieldValue?c == choice[0])> + <#assign valueToShow=msgValue(choice[1])> + <#break> + + + + + + ${valueToShow?html} +
+ <#else> + + + + +
+ + \ No newline at end of file diff --git a/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone.ftl b/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone.ftl index 69da746..33bb8cc 100644 --- a/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone.ftl +++ b/datalist-model-share/src/main/amp/config/alfresco/web-extension/site-webscripts/org/alfresco/components/form/controls/datalistSelectone.ftl @@ -72,6 +72,10 @@ YAHOO.util.Event.onContentReady("${fieldHtmlId}", function () var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?search=true&"+ (new Date().getTime()); <#elseif page?? && page.url.templateArgs.site??> var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?siteId=${page.url.templateArgs.site!""}&"+ (new Date().getTime()); + <#elseif args?? && args.destination??> + var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?nodeRef=${args.destination!""}&"+ (new Date().getTime()); + <#elseif page?? && page.url.args.nodeRef??> + var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?nodeRef=${page.url.args.nodeRef!""}&"+ (new Date().getTime()); <#else> var linkTemplate="/keensoft/datalist/${field.control.params.itemType}?"+ (new Date().getTime());