From f32accb46f9bbbbfa0540487f629232645b4a66c Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Tue, 16 Sep 2014 12:43:16 +0000 Subject: [PATCH] RM-1634 (View Version History Containing Recorded Versions) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@84235 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../version/rm-version.get.desc.xml | 8 ++ .../repository/version/rm-version.get.js | 120 ++++++++++++++++++ .../version/rm-version.get.json.ftl | 21 +++ 3 files changed, 149 insertions(+) create mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.desc.xml create mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.js create mode 100644 rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.json.ftl diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.desc.xml new file mode 100644 index 0000000000..2c7c93f48d --- /dev/null +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.desc.xml @@ -0,0 +1,8 @@ + + Node Version Info + Node Version Info including some RM related information + /api/rm/rm-version + + user + required + diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.js b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.js new file mode 100644 index 0000000000..00875b74eb --- /dev/null +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.js @@ -0,0 +1,120 @@ +var PeopleCache = {}; + +/** + * Gets / caches a person object + * @method getPerson + * @param username {string} User name + */ +function getPerson(username) +{ + if (typeof PeopleCache[username] == "undefined") + { + var person = people.getPerson(username); + if (person == null) + { + if (username == "System" || username.match("^System@") == "System@") + { + // special case for the System users + person = + { + properties: + { + userName: "System", + firstName: "System", + lastName: "User" + }, + assocs: {} + }; + } + else + { + // missing person - may have been deleted from the database + person = + { + properties: + { + userName: username, + firstName: "", + lastName: "" + }, + assocs: {} + }; + } + } + PeopleCache[username] = + { + userName: person.properties.userName, + firstName: person.properties.firstName, + lastName: person.properties.lastName, + displayName: (person.properties.firstName + " " + person.properties.lastName).replace(/^\s+|\s+$/g, "") + }; + } + return PeopleCache[username]; +} + +function main() +{ + var json = "", + versions = []; + + // allow for content to be loaded from id + if (args["nodeRef"] != null) + { + var nodeRef = args["nodeRef"], + node = search.findNode(nodeRef), + versionHistory, version, p, recordNodeRef; + + if (node != null) + { + var versionHistory = node.versionHistory; + if (versionHistory != null) + { + for (i = 0; i < versionHistory.length; i++) + { + version = versionHistory[i]; + p = getPerson(version.creator); + recordNodeRef = version.getVersionProperty("recordNodeRef"); + versions[versions.length] = + { + nodeRef: version.node.nodeRef.toString(), + name: version.node.name, + label: version.label, + description: version.description, + createdDate: version.createdDate, + creator: + { + userName: p.userName, + firstName: p.firstName, + lastName: p.lastName + }, + recordNodeRef: recordNodeRef ? recordNodeRef.toString() : "" + }; + } + } + else + { + p = getPerson(node.properties.creator); + versions[0] = + { + nodeRef: node.nodeRef.toString(), + name: node.name, + label: "1.0", + description: "", + createdDate: node.properties.created, + creator: + { + userName: p.userName, + firstName: p.firstName, + lastName: p.lastName + }, + recordNodeRef: "" + }; + } + } + } + + // store node onto model + model.versions = versions; +} + +main(); \ No newline at end of file diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.json.ftl new file mode 100644 index 0000000000..84b3ecc3de --- /dev/null +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/repository/version/rm-version.get.json.ftl @@ -0,0 +1,21 @@ +<#escape x as jsonUtils.encodeJSONString(x)> +[ +<#list versions as v> + { + "nodeRef": "${v.nodeRef}", + "name": "${v.name}", + "label": "${v.label}", + "description": "${v.description}", + "createdDate": "${v.createdDate?string("dd MMM yyyy HH:mm:ss 'GMT'Z '('zzz')'")}", + "createdDateISO": "${xmldate(v.createdDate)}", + "creator": + { + "userName": "${v.creator.userName}", + "firstName": "${v.creator.firstName!""}", + "lastName": "${v.creator.lastName!""}" + }, + "recordNodeRef": "${v.recordNodeRef}" + }<#if (v_has_next)>, + +] + \ No newline at end of file