From b0b87175fe360bf11088f472f6e1ba3fed22ef42 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Fri, 6 Sep 2019 09:41:07 +0200
Subject: [PATCH] OO-4150: participants cannot edit absence notices

---
 .../olat/modules/lecture/ui/LecturesSecurityCallback.java    | 2 ++
 .../modules/lecture/ui/LecturesSecurityCallbackFactory.java  | 5 +++++
 .../lecture/ui/coach/AbsenceNoticesListController.java       | 5 ++++-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallback.java b/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallback.java
index 12a810ea7a0..393441f4c3f 100644
--- a/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallback.java
+++ b/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallback.java
@@ -46,6 +46,8 @@ public interface LecturesSecurityCallback {
 	public boolean canAddNoticeOfAbsences();
 	
 	public boolean canAddDispensations();
+
+	public boolean canEditAbsenceNotices();
 	
 	public boolean canDeleteAbsenceNotices();
 	
diff --git a/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallbackFactory.java b/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallbackFactory.java
index d80fec01668..e8d6c524dc4 100644
--- a/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallbackFactory.java
+++ b/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallbackFactory.java
@@ -162,6 +162,11 @@ public class LecturesSecurityCallbackFactory {
 			return false;
 		}
 
+		@Override
+		public boolean canEditAbsenceNotices() {
+			return viewAs == LectureRoles.teacher || viewAs == LectureRoles.lecturemanager || viewAs == LectureRoles.mastercoach;
+		}
+
 		@Override
 		public boolean canDeleteAbsenceNotices() {
 			return viewAs == LectureRoles.lecturemanager || viewAs == LectureRoles.mastercoach;
diff --git a/src/main/java/org/olat/modules/lecture/ui/coach/AbsenceNoticesListController.java b/src/main/java/org/olat/modules/lecture/ui/coach/AbsenceNoticesListController.java
index c2372700e84..c9318b78dcb 100644
--- a/src/main/java/org/olat/modules/lecture/ui/coach/AbsenceNoticesListController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/coach/AbsenceNoticesListController.java
@@ -610,7 +610,10 @@ public class AbsenceNoticesListController extends FormBasicController {
 			VelocityContainer mainVC = createVelocityContainer("tools_notices");
 			// edit absence, notice of absence, dispensation
 			String editI18nKey = AbsenceNoticeHelper.getEditKey(row.getAbsenceNotice());
-			addLink(editI18nKey, "edit", "o_icon o_icon_edit", mainVC);
+			if(secCallback.canEditAbsenceNotices()) {
+				addLink(editI18nKey, "edit", "o_icon o_icon_edit", mainVC);
+			}
+			
 			// open profile
 			addLink("profile", "profile", "o_icon o_icon_user", mainVC);
 			// contact teacher
-- 
GitLab