diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/evaluator.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/evaluator.lib.js index b1f32d947a..ebe937f571 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/evaluator.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/evaluator.lib.js @@ -113,27 +113,25 @@ var Evaluator = objData.displayValue = obj.displayName; objData.metadata = obj.userName; } - else if (type == "datetime" || type == "date") + else if (type == "cm:folder") { - objData.metadata = type; - } - else if (node.isSubType("cm:folder")) - { - obj = getContentObject(node.nodeRef); + obj = Evaluator.getContentObject(value); if (obj == null) { return false; } objData.displayValue = obj.displayPath.substring(companyhome.name.length() + 1); + objData.metadata = "container"; } - else if (node.isSubType("cm:object")) + else if (type == "cm:cmobject" || type == "cm:content") { - obj = getContentObject(node.nodeRef); + obj = Evaluator.getContentObject(value); if (obj == null) { return false; } objData.displayValue = obj.properties["cm:name"]; + objData.metadata = obj.isContainer ? "container" : "document"; } return true; }, @@ -176,7 +174,9 @@ var Evaluator = { var isAssoc = k.indexOf("assoc") == 0, value = formData[k].value, + values, type = isAssoc ? objDefinitions[k].endpointType : objDefinitions[k].dataType, + endpointMany = isAssoc ? objDefinitions[k].endpointMany : false, objData = { type: type @@ -185,17 +185,40 @@ var Evaluator = if (value instanceof java.util.Date) { objData.value = utils.toISO8601(value); + objData.displayValue = objData.value; + nodeData[k] = objData; + } + else if (endpointMany) + { + if (value.length() > 0) + { + values = value.split(","); + nodeData[k] = []; + for each (value in values) + { + var objLoop = + { + type: objData.type, + value: value, + displayValue: value + }; + + if (Evaluator.decorateFieldData(objLoop, node)) + { + nodeData[k].push(objLoop); + } + } + } } else { - // java.util.List instances are returned from ScriptFormData.java as Strings objData.value = value; - } - objData.displayValue = objData.value; + objData.displayValue = objData.value; - if (Evaluator.decorateFieldData(objData, node)) - { - nodeData[k] = objData; + if (Evaluator.decorateFieldData(objData, node)) + { + nodeData[k] = objData; + } } } diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/item.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/item.lib.ftl index fc8d9a0999..605cf650a8 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/item.lib.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/item.lib.ftl @@ -40,28 +40,42 @@ "itemData": { <#list item.nodeData?keys as key> - <#assign data = item.nodeData[key]> + <#assign itemData = item.nodeData[key]> "${key}": - { - <#if data.value?is_boolean> - "value": ${data.value?string}, - <#elseif data.value?is_number> - "value": ${data.value?c}, - <#else> - "value": "${data.value}", - - <#if data.metadata??> - "metadata": "${data.metadata}", - - <#if data.displayValue?is_boolean> - "displayValue": ${data.displayValue?string} - <#elseif data.displayValue?is_number> - "displayValue": ${data.displayValue?c} - <#else> - "displayValue": "${data.displayValue}" - - }<#if key_has_next>, + <#if itemData?is_sequence> + [ + <#list itemData as data> + <@renderData data /><#if data_has_next>, + + ] + <#else> + <@renderData itemData /> + <#if key_has_next>, } + + +<#macro renderData data> + <#escape x as jsonUtils.encodeJSONString(x)> +{ + <#if data.value?is_boolean> + "value": ${data.value?string}, + <#elseif data.value?is_number> + "value": ${data.value?c}, + <#else> + "value": "${data.value}", + + <#if data.metadata??> + "metadata": "${data.metadata}", + + <#if data.displayValue?is_boolean> + "displayValue": ${data.displayValue?string} + <#elseif data.displayValue?is_number> + "displayValue": ${data.displayValue?c} + <#else> + "displayValue": "${data.displayValue}" + +} + \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/list.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/list.lib.ftl index 1fc5e5e73b..51c2e0b2f2 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/list.lib.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/list.lib.ftl @@ -5,7 +5,12 @@ "title": "${list.properties.title!list.name}", "description": "${list.properties.description!""}", "nodeRef": "${list.nodeRef}", - "itemType": "${list.properties["dl:dataListItemType"]!""}" + "itemType": "${list.properties["dl:dataListItemType"]!""}", + "permissions": + { + "edit": ${list.hasPermission("Write")?string}, + "delete": ${list.hasPermission("Delete")?string} + } } \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/lists.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/lists.get.json.ftl index a7c477e328..3bdef7ad0a 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/lists.get.json.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/datalists/lists.get.json.ftl @@ -2,6 +2,10 @@ <#escape x as jsonUtils.encodeJSONString(x)> { "container": "${datalists.container.nodeRef?string}", + "permissions": + { + "create": ${datalists.container.hasPermission("CreateChildren")?string} + }, "datalists": [ <#list datalists.lists as list>