From 4be2e83f1aeee4ec34d56c82c56aded6944508db Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Thu, 10 May 2012 06:18:31 +0000 Subject: [PATCH] RM-306: Move to action works incorrectly git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.0@36224 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-ui-evaluators-context.xml | 70 ++++++++++----- .../action/move-to.post.json.js | 89 +++++++++++++++++++ 2 files changed, 137 insertions(+), 22 deletions(-) create mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.json.js diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml index af7c65905d..849a6823c0 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml @@ -216,6 +216,54 @@ + + + + + + RECORD_CATEGORY + RECORD_FOLDER + RECORD + + + + + + + + + + RECORD_CATEGORY + RECORD_FOLDER + RECORD + + + + + + + + + + RECORD + + + + + + + + + RECORD_FOLDER + + + + + @@ -388,28 +436,6 @@ - - - - - RECORD_FOLDER - RECORD - - - - - - - - - RECORD_FOLDER - - - - - diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.json.js b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.json.js new file mode 100644 index 0000000000..04e3a8906f --- /dev/null +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/move-to.post.json.js @@ -0,0 +1,89 @@ + + +/** + * Move multiple files action + * @method POST + */ + +/** + * Entrypoint required by action.lib.js + * + * @method runAction + * @param p_params {object} Object literal containing files array + * @return {object|null} object representation of action results + */ +function runAction(p_params) +{ + var results = [], + destNode = p_params.destNode, + files = p_params.files, + parent = null, + file, fileNode, result, nodeRef, + fromSite; + + // Must have array of files + if (!files || files.length == 0) + { + status.setCode(status.STATUS_BAD_REQUEST, "No files."); + return; + } + + for (file in files) + { + nodeRef = files[file]; + result = + { + nodeRef: nodeRef, + action: "moveFile", + success: false + } + + try + { + fileNode = search.findNode(nodeRef); + if (fileNode == null) + { + result.id = file; + result.nodeRef = nodeRef; + result.success = false; + } + else + { + if (p_params.parent && p_params.parent != null) + { + parent = search.findNode(p_params.parent); + } + result.id = fileNode.name; + result.type = fileNode.isContainer ? "folder" : "document"; + + // Retain the name of the site the node is currently in. Null if it's not in a site. + fromSite = fileNode.siteShortName; + + // move the node + result.success = fileNode.move(parent, destNode); + + if (result.success) + { + // If this was an inter-site move, we'll need to clean up the permissions on the node + if (!fromSite.equals(fileNode.siteShortName)) + { + siteService.cleanSitePermissions(fileNode); + } + } + } + } + catch (e) + { + result.id = file; + result.nodeRef = nodeRef; + result.success = false; + } + + results.push(result); + } + + return results; +} + +/* Bootstrap action script */ +main();