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 cad53c7cb1..67d894400f 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
@@ -7,6 +7,7 @@
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.JSONConversionComponent"
parent="baseJsonConversionComponent">
+
getCapabilitiesAccessState(NodeRef nodeRef, List capabilityNames);
+
+ /**
+ * Helper method to get the access state for a single capability.
+ *
+ * @param nodeRef
+ * @param capabilityName
+ * @return
+ */
+ AccessStatus getCapabilityAccessState(NodeRef nodeRef, String capabilityName);
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java
index b33d1b509c..3ab90eb468 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java
@@ -18,6 +18,7 @@
*/
package org.alfresco.module.org_alfresco_module_rm.capability;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -136,5 +137,22 @@ public class CapabilityServiceImpl implements CapabilityService
}
return answer;
}
+
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService#getCapabilityAccessState(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
+ */
+ @Override
+ public AccessStatus getCapabilityAccessState(NodeRef nodeRef, String capabilityName)
+ {
+ AccessStatus result = AccessStatus.UNDETERMINED;
+ Capability capability = getCapability(capabilityName);
+ if (capability != null)
+ {
+ List list = Collections.singletonList(capabilityName);
+ Map map = getCapabilitiesAccessState(nodeRef, list);
+ result = map.get(capability);
+ }
+ return result;
+ }
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
index ee8ca3dcfb..29f526faa2 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/JSONConversionComponent.java
@@ -23,6 +23,7 @@ import java.util.List;
import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
+import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
import org.alfresco.service.cmr.model.FileInfo;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -40,6 +41,9 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
/** Records management service */
private RecordsManagementService recordsManagementService;
+ /** Capability service */
+ private CapabilityService capabilityService;
+
/** Indicators */
private List indicators = new ArrayList();
@@ -54,6 +58,14 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
this.recordsManagementService = recordsManagementService;
}
+ /**
+ * @param capabilityService capability service
+ */
+ public void setCapabilityService(CapabilityService capabilityService)
+ {
+ this.capabilityService = capabilityService;
+ }
+
/**
* @param indicator registered indicator
*/
@@ -82,8 +94,8 @@ public class JSONConversionComponent extends org.alfresco.repo.jscript.app.JSONC
// Get the node reference for convenience
NodeRef nodeRef = nodeInfo.getNodeRef();
-
- if (AccessStatus.ALLOWED.equals(permissionService.hasPermission(nodeRef, RMPermissionModel.READ_RECORDS)) == true)
+
+ if (AccessStatus.ALLOWED.equals(capabilityService.getCapabilityAccessState(nodeRef, RMPermissionModel.VIEW_RECORDS)) == true)
{
// Indicate whether the node is a RM object or not
boolean isFilePlanComponent = recordsManagementService.isFilePlanComponent(nodeInfo.getNodeRef());