From d10238b8c47f95c20c348b20930c38883cfe48ac Mon Sep 17 00:00:00 2001 From: Mike Hatfield Date: Fri, 26 Mar 2010 09:16:04 +0000 Subject: [PATCH] ALF-2187 - Data list - cm:attatchment not being displayed correctly ALF-2190 - Datalists: "New List" button should be disabled for users who do not have write permission Modified sample To Do list model to add attachments. Data Lists now handle associations to many endpoints correctly. Files and folders linked to appropriate non-site details page. CSS changes following UX review session. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19604 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../slingshot/datalists/evaluator.lib.js | 51 +++++++++++++----- .../alfresco/slingshot/datalists/item.lib.ftl | 54 ++++++++++++------- .../alfresco/slingshot/datalists/list.lib.ftl | 7 ++- .../slingshot/datalists/lists.get.json.ftl | 4 ++ 4 files changed, 81 insertions(+), 35 deletions(-) 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>