From 30fd91f22f06dd04447721db7226fef3edb1f36a Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Thu, 20 Feb 2014 02:59:52 +0000 Subject: [PATCH 1/2] RM-1261: Records/Folders scheduled for destruction can be deleted by user without required capabilities RM-1258: It's possible to edit, delete and create (via copy) new category without "Create Modify Destroy File Plan Metadata" capability git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.1@62861 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-capabilities-group-context.xml | 8 +- .../rm-capabilities-recordfolder-context.xml | 77 ++++++++++++++++--- .../messages/capability-service.properties | 3 +- 3 files changed, 70 insertions(+), 18 deletions(-) diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml index af101759ac..2a1fdf3960 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml @@ -18,11 +18,9 @@ - - - + @@ -34,7 +32,7 @@ - + @@ -51,7 +49,7 @@ - + diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml index 501c4d11a8..957ff9b0e3 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml @@ -25,23 +25,19 @@ + parent="compositeCapability"> + - + + - RECORD_CATEGORY - RECORD_FOLDER + + + - - - - - - - - + @@ -68,6 +64,63 @@ + + + + + + + + RECORD_CATEGORY + + + + + + + + + + + + + + + + RECORD_FOLDER + + + + + + + + + + + + + + + + + + + RECORD_FOLDER + + + + + + + + + + + diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties index 38f3346254..9245bed466 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties @@ -50,10 +50,11 @@ capability.UpdateTriggerDates.title=Update Trigger Dates capability.ManuallyChangeDispositionDates.title=Manually Change Disposition Dates capability.AuthorizeNominatedTransfers.title=Authorize Nominated Transfers capability.AuthorizeAllTransfers.title=Authorize All Transfers -capability.DestroyRecordsScheduledForDestruction.title=Destroy Records Scheduled for Destruction +capability.DestroyRecordsScheduledForDestruction.title=Destroy Record or Record Folder Scheduled for Destruction capability.DestroyRecords.title=Destroy Records capability.DeleteRecords.title=Delete Records capability.TriggerAnEvent.title=Trigger An Event +capability.FileDestructionReport.title=File Destruction Report # Hold Controls capability.group.holdControls.title=Hold Controls From 59a4b2893a079165acc42d80de20d3ecfb2da3ea Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Thu, 20 Feb 2014 03:41:20 +0000 Subject: [PATCH 2/2] RM-1267: Delete Record capability is needed to delete the reference git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.1@62862 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../RecordsManagementAdminServiceImpl.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java index afe04b98bc..1702c3c060 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java @@ -1116,7 +1116,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin /** * @see org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService#removeCustomReference(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName) */ - public void removeCustomReference(NodeRef fromNode, NodeRef toNode, QName assocId) + public void removeCustomReference(final NodeRef fromNode, final NodeRef toNode, final QName assocId) { Map availableAssocs = this.getCustomReferenceDefinitions(); @@ -1133,14 +1133,23 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin // TODO: Ask for a more efficient method such as // nodeService.removeChildAssociation(fromNode, toNode, chRef.getTypeQName(), null); - List children = nodeService.getChildAssocs(fromNode); - for (ChildAssociationRef chRef : children) - { - if (assocId.equals(chRef.getTypeQName()) && chRef.getChildRef().equals(toNode)) - { - nodeService.removeChildAssociation(chRef); - } - } + AuthenticationUtil.runAsSystem(new RunAsWork() + { + @Override + public Void doWork() throws Exception + { + List children = nodeService.getChildAssocs(fromNode); + for (ChildAssociationRef chRef : children) + { + if (assocId.equals(chRef.getTypeQName()) && chRef.getChildRef().equals(toNode)) + { + nodeService.removeChildAssociation(chRef); + } + } + + return null; + } + }); } else {