diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get.json.ftl
index 5bba5c878a..60f7681fda 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get.json.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get.json.ftl
@@ -22,7 +22,13 @@
"docfolder": "${result.docfolder}",
"recurrence": "${result.recurrence}",
- "isoutlook": "${result.isoutlook?string}"
+ "isoutlook": "${result.isoutlook?string}",
+
+ "permissions":
+ {
+ "edit": ${result.canEdit?string},
+ "delete": ${result.canDelete?string}
+ }
#if>
}
#escape>
diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml
index 8b91128430..8e2e442292 100644
--- a/config/alfresco/web-scripts-application-context.xml
+++ b/config/alfresco/web-scripts-application-context.xml
@@ -1722,6 +1722,7 @@
+
diff --git a/source/java/org/alfresco/repo/web/scripts/calendar/CalendarEntryGet.java b/source/java/org/alfresco/repo/web/scripts/calendar/CalendarEntryGet.java
index 6430970a71..2d6c79a4aa 100644
--- a/source/java/org/alfresco/repo/web/scripts/calendar/CalendarEntryGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/calendar/CalendarEntryGet.java
@@ -26,6 +26,8 @@ import java.util.Map;
import org.alfresco.service.cmr.calendar.CalendarEntry;
import org.alfresco.service.cmr.calendar.CalendarEntryDTO;
import org.alfresco.service.cmr.calendar.CalendarRecurrenceHelper;
+import org.alfresco.service.cmr.security.AccessStatus;
+import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.site.SiteInfo;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -44,6 +46,7 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
public class CalendarEntryGet extends AbstractCalendarWebScript
{
private static Log logger = LogFactory.getLog(CalendarEntryGet.class);
+ private PermissionService permissionService;
@Override
protected Map executeImpl(SiteInfo site, String eventName,
@@ -81,6 +84,12 @@ public class CalendarEntryGet extends AbstractCalendarWebScript
}
}
+ // Check the permissions the user has on the entry
+ AccessStatus canEdit = permissionService.hasPermission(entry.getNodeRef(), PermissionService.WRITE);
+ AccessStatus canDelete = permissionService.hasPermission(entry.getNodeRef(), PermissionService.DELETE);
+ result.put("canEdit", (canEdit == AccessStatus.ALLOWED));
+ result.put("canDelete", (canDelete == AccessStatus.ALLOWED));
+
// All done
Map model = new HashMap();
model.put("result", result);
@@ -208,4 +217,9 @@ public class CalendarEntryGet extends AbstractCalendarWebScript
// All done
return text.toString();
}
+
+ public void setPermissionService(PermissionService permissionService)
+ {
+ this.permissionService = permissionService;
+ }
}
diff --git a/source/java/org/alfresco/repo/web/scripts/calendar/CalendarRestApiTest.java b/source/java/org/alfresco/repo/web/scripts/calendar/CalendarRestApiTest.java
index c28b61f83f..f368872c8d 100644
--- a/source/java/org/alfresco/repo/web/scripts/calendar/CalendarRestApiTest.java
+++ b/source/java/org/alfresco/repo/web/scripts/calendar/CalendarRestApiTest.java
@@ -413,6 +413,12 @@ public class CalendarRestApiTest extends BaseWebScriptTest
assertEquals("6/29/2011", entry.getJSONObject("endAt").get("legacyDate"));
assertEquals("13:00", entry.getJSONObject("endAt").get("legacyTime"));
+ // Check the permissions on it
+ assertEquals(true, entry.has("permissions"));
+ JSONObject permissions = entry.getJSONObject("permissions");
+ assertEquals(true, permissions.getBoolean("edit"));
+ assertEquals(true, permissions.getBoolean("delete"));
+
// Edit
entry = updateEntry(name, EVENT_TITLE_ONE, "More Where", "More Thing", false, Status.STATUS_OK);