DocLib simple metadata editing and tag support.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10047 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mike Hatfield
2008-07-26 04:46:52 +00:00
parent 1061838a4c
commit d934b3b83e
7 changed files with 101 additions and 3 deletions

View File

@@ -0,0 +1,7 @@
<webscript>
<shortname>Node Metadata Storage Service</shortname>
<description>Node Metadata Storage Service</description>
<url>/api/metadata/node/{store_type}/{store_id}/{id}</url>
<format default="json" />
<authentication>user</authentication>
</webscript>

View File

@@ -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;
}

View File

@@ -0,0 +1,3 @@
{
"success": true
}

View File

@@ -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)

View File

@@ -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
});
}
}

View File

@@ -27,6 +27,7 @@
<#else>
<#assign modifiedBy="" modifiedByUser="">
</#if>
<#assign tags><#list item.tags as tag>"${tag}"<#if tag_has_next>,</#if></#list></#assign>
{
"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>,</#if>
</#list>
]

View File

@@ -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...