diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.desc.xml new file mode 100644 index 0000000000..e5310fa8c1 --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.desc.xml @@ -0,0 +1,7 @@ + + Node Metadata Storage Service + Node Metadata Storage Service + /api/metadata/node/{store_type}/{store_id}/{id} + + user + diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.js b/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.js new file mode 100644 index 0000000000..102ab3f250 --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.js @@ -0,0 +1,69 @@ +main(); + +function main() +{ + if (url.templateArgs.store_type === null) + { + status.setCode(status.STATUS_BAD_REQUEST, "NodeRef missing"); + return; + } + + // nodeRef input + var storeType = url.templateArgs.store_type; + var storeId = url.templateArgs.store_id; + var id = url.templateArgs.id; + var nodeRef = storeType + "://" + storeId + "/" + id; + var node = search.findNode(nodeRef); + if (node === null) + { + status.setCode(status.STATUS_NOT_FOUND, "Not a valid nodeRef: '" + nodeRef + "'"); + return null; + } + + // Set passed-in properties + if (json.has("properties")) + { + var properties = jsonToObject("properties"); + for (property in properties) + { + node.properties[property] = properties[property]; + } + } + + // Set passed-in tags + if (json.has("tags")) + { + var tags = String(json.get("tags")); + if (tags !== "") + { + var tagsArray = tags.split(" "); + node.tags = tagsArray; + } + } + node.save(); +} + +function jsonToObject(p_name) +{ + var object = {}; + var jsonObj = json.get(p_name); + var names = jsonObj.names(); + var name; + for (var i = 0, j = names.length(); i < j; i++) + { + name = names.get(i); + object[name] = jsonObj.get(name); + } + return object; +} + +function jsonToArray(p_name) +{ + var array = []; + var jsonArray = json.get(p_name); + for (var i = 0, j = jsonArray.length(); i < j; i++) + { + array.push(jsonArray.get(i)); + } + return array; +} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.json.ftl new file mode 100644 index 0000000000..e37684e04d --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/metadata/metadata.post.json.ftl @@ -0,0 +1,3 @@ +{ + "success": true +} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action-sets.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action-sets.lib.js index 577dd677e9..722d80a8d2 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action-sets.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action-sets.lib.js @@ -3,7 +3,7 @@ function getActionSet(asset, obj) var actionSet = "empty"; var itemStatus = obj.itemStatus.toString(); var isItemOwner = null; - isItemOwner == (obj.itemOwner && obj.itemOwner.properties.userName == person.properties.userName); + isItemOwner = (obj.itemOwner && obj.itemOwner.properties.userName == person.properties.userName); // Only 1 action set for folders if (asset.isContainer) diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.js index 1c2808dff1..99039a7c1c 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.js @@ -32,6 +32,14 @@ function getDocList(filter) // Default to all children of parentNode assets = parsedArgs.parentNode.children; } + else if (filterQuery == "node") + { + assets = [parsedArgs.rootNode]; + } + else if (filterQuery == "tag") + { + assets = parsedArgs.rootNode.childrenByTags(args["filterData"]); + } else { // Run the query returned from the filter @@ -105,7 +113,8 @@ function getDocList(filter) owner: itemOwner, createdBy: createdBy, modifiedBy: modifiedBy, - actionSet: actionSet + actionSet: actionSet, + tags: asset.tags }); } } diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.json.ftl index 6f2f9159e1..9ede12e65f 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.json.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/doclist.get.json.ftl @@ -27,6 +27,7 @@ <#else> <#assign modifiedBy="" modifiedByUser=""> + <#assign tags><#list item.tags as tag>"${tag}"<#if tag_has_next>, { "index": ${item_index}, "nodeRef": "${d.nodeRef}", @@ -49,7 +50,8 @@ "size": "${d.size}", "version": "${version}", "contentUrl": "api/node/content/${d.storeType}/${d.storeId}/${d.id}/${d.name?url}", - "actionSet": "${item.actionSet}" + "actionSet": "${item.actionSet}", + "tags": [${tags}] }<#if item_has_next>, ] diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/filters.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/filters.lib.js index bd7014fe82..f4e3f68347 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/filters.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/filters.lib.js @@ -4,6 +4,14 @@ function getFilterQuery(filter, obj) switch (String(filter)) { + case "node": + filterQuery = "node"; + break; + + case "tag": + filterQuery = "tag"; + break; + case "recentlyModified": var usingModified = true; // fall through...