diff --git a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java index 96d2ca32e806e8917ab21f0a032acd0731c4013f..ee786cb3bf69e76d4756f039d4524d2efd90dfcb 100644 --- a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java +++ b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java @@ -225,7 +225,7 @@ public class InfoDisplayController extends FormBasicController { DateElement dateEl = DateComponentFactory.createDateElementWithYear(dateCmpName, info.getCreationDate()); flc.add(dateCmpName, dateEl); - if(secCallback.canEdit() && (ureq.getIdentity().equals(info.getAuthor()) || secCallback.canDelete())) { + if(secCallback.canEdit(info)) { String editName = "info.edit." + info.getKey(); FormLink link = uifactory.addFormLink(editName, "edit", "edit", flc, Link.BUTTON_SMALL); link.setElementCssClass("o_sel_info_edit_msg"); diff --git a/src/main/java/org/olat/commons/info/ui/InfoSecurityCallback.java b/src/main/java/org/olat/commons/info/ui/InfoSecurityCallback.java index d5c73b617100db3a22813ee0efc407a121d8e301..562bed7e944b662618d4aa5557c757c60db2ce52 100644 --- a/src/main/java/org/olat/commons/info/ui/InfoSecurityCallback.java +++ b/src/main/java/org/olat/commons/info/ui/InfoSecurityCallback.java @@ -20,6 +20,8 @@ package org.olat.commons.info.ui; +import org.olat.commons.info.model.InfoMessage; + /** * * Description:<br> @@ -35,7 +37,7 @@ public interface InfoSecurityCallback { public boolean canAdd(); - public boolean canEdit(); + public boolean canEdit(InfoMessage infoMessage); public boolean canDelete(); diff --git a/src/main/java/org/olat/course/nodes/info/InfoRunController.java b/src/main/java/org/olat/course/nodes/info/InfoRunController.java index 6245d6f1dbe69fcfc292fcc3a4d699cbe907f5c4..89278a096a943f5bebb27fcde164049a837cd40d 100644 --- a/src/main/java/org/olat/course/nodes/info/InfoRunController.java +++ b/src/main/java/org/olat/course/nodes/info/InfoRunController.java @@ -26,6 +26,7 @@ import java.util.StringTokenizer; import org.olat.commons.info.manager.InfoMessageFrontendManager; import org.olat.commons.info.manager.MailFormatter; +import org.olat.commons.info.model.InfoMessage; import org.olat.commons.info.notification.InfoSubscription; import org.olat.commons.info.notification.InfoSubscriptionManager; import org.olat.commons.info.ui.InfoDisplayController; @@ -130,7 +131,7 @@ public class InfoRunController extends BasicController { || roles.isOLATAdmin(); } - InfoSecurityCallback secCallback = new InfoCourseSecurityCallback(canAdd, canAdmin); + InfoSecurityCallback secCallback = new InfoCourseSecurityCallback(getIdentity(), canAdd, canAdmin); RepositoryService repositoryService = CoreSpringFactory.getImpl(RepositoryService.class); infoDisplayController = new InfoDisplayController(ureq, wControl, config, secCallback, infoResourceable, resSubPath, businessPath); @@ -206,10 +207,12 @@ public class InfoRunController extends BasicController { private class InfoCourseSecurityCallback implements InfoSecurityCallback { private final boolean canAdd; private final boolean canAdmin; + private final Identity identity; - public InfoCourseSecurityCallback(boolean canAdd, boolean canAdmin) { + public InfoCourseSecurityCallback(Identity identity, boolean canAdd, boolean canAdmin) { this.canAdd = canAdd; this.canAdmin = canAdmin; + this.identity = identity; } @Override @@ -223,8 +226,8 @@ public class InfoRunController extends BasicController { } @Override - public boolean canEdit() { - return canAdmin; + public boolean canEdit(InfoMessage infoMessage) { + return identity.equals(infoMessage.getAuthor()) || canAdmin; } @Override diff --git a/src/main/java/org/olat/group/ui/run/InfoGroupRunController.java b/src/main/java/org/olat/group/ui/run/InfoGroupRunController.java index 6e229c77dccabcf88e700c714886ef136d6be3f7..102d4191933fad41a80fedc9d0d6bb303a076156 100644 --- a/src/main/java/org/olat/group/ui/run/InfoGroupRunController.java +++ b/src/main/java/org/olat/group/ui/run/InfoGroupRunController.java @@ -25,6 +25,7 @@ import java.util.StringTokenizer; import org.olat.commons.info.manager.InfoMessageFrontendManager; import org.olat.commons.info.manager.MailFormatter; +import org.olat.commons.info.model.InfoMessage; import org.olat.commons.info.notification.InfoSubscription; import org.olat.commons.info.notification.InfoSubscriptionManager; import org.olat.commons.info.ui.InfoDisplayController; @@ -42,6 +43,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; +import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.util.UserSession; import org.olat.core.util.resource.OresHelper; @@ -87,7 +89,7 @@ public class InfoGroupRunController extends BasicController { } boolean canAddAndEdit = isAdmin || canAccess; - InfoSecurityCallback secCallback = new InfoGroupSecurityCallback(canAddAndEdit, isAdmin); + InfoSecurityCallback secCallback = new InfoGroupSecurityCallback(getIdentity(), canAddAndEdit, isAdmin); infoDisplayController = new InfoDisplayController(ureq, wControl, secCallback, businessGroup, resSubPath, businessPath); SendMailOption subscribers = new SendSubscriberMailOption(infoResourceable, resSubPath, messageManager); infoDisplayController.addSendMailOptions(subscribers); @@ -162,10 +164,12 @@ public class InfoGroupRunController extends BasicController { private class InfoGroupSecurityCallback implements InfoSecurityCallback { private final boolean canAdd; private final boolean canAdmin; + private final Identity identity; - public InfoGroupSecurityCallback(boolean canAdd, boolean canAdmin) { + public InfoGroupSecurityCallback(Identity identity, boolean canAdd, boolean canAdmin) { this.canAdd = canAdd; this.canAdmin = canAdmin; + this.identity = identity; } @Override @@ -179,8 +183,8 @@ public class InfoGroupRunController extends BasicController { } @Override - public boolean canEdit() { - return canAdd; + public boolean canEdit(InfoMessage infoMessage) { + return identity.equals(infoMessage.getAuthor()) || canAdmin; } @Override