From 488f32c18cd851ffee9ac41ed8a6de5bc6574718 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Thu, 4 Feb 2021 08:53:12 +0100
Subject: [PATCH] OO-5271: deleted and trashed course must be read-only

---
 .../org/olat/course/run/CourseRuntimeController.java | 12 +++++++++---
 .../olat/course/run/_i18n/LocalStrings_de.properties |  1 +
 .../olat/course/run/_i18n/LocalStrings_en.properties |  1 +
 .../olat/course/run/_i18n/LocalStrings_fr.properties |  1 +
 .../run/userview/UserCourseEnvironmentImpl.java      |  3 +--
 .../java/org/olat/repository/RepositoryManager.java  |  2 +-
 .../model/SingleRoleRepositoryEntrySecurity.java     |  2 +-
 7 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/olat/course/run/CourseRuntimeController.java b/src/main/java/org/olat/course/run/CourseRuntimeController.java
index 3e149c758b5..129c7f19c7a 100644
--- a/src/main/java/org/olat/course/run/CourseRuntimeController.java
+++ b/src/main/java/org/olat/course/run/CourseRuntimeController.java
@@ -481,9 +481,15 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im
 	
 	private void setCourseClosedMessage() {
 		UserCourseEnvironment userCourseEnv = getUserCourseEnvironment();
-		if(userCourseEnv != null &&  getRepositoryEntry().getEntryStatus() == RepositoryEntryStatusEnum.closed) {
-			toolbarPanel.setMessage(translate("course.closed"));
-			toolbarPanel.setMessageCssClass("o_warning");
+		if(userCourseEnv != null) {
+			if(getRepositoryEntry().getEntryStatus() == RepositoryEntryStatusEnum.closed) {
+				toolbarPanel.setMessage(translate("course.closed"));
+				toolbarPanel.setMessageCssClass("o_warning");
+			} else if(getRepositoryEntry().getEntryStatus() == RepositoryEntryStatusEnum.deleted
+					|| getRepositoryEntry().getEntryStatus() == RepositoryEntryStatusEnum.trash) {
+				toolbarPanel.setMessage(translate("course.deleted"));
+				toolbarPanel.setMessageCssClass("o_warning");
+			}
 		} else {
 			toolbarPanel.setMessage(null);
 			toolbarPanel.setMessageComponent(null);
diff --git a/src/main/java/org/olat/course/run/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/run/_i18n/LocalStrings_de.properties
index fd13bbb9485..3be482b63fe 100644
--- a/src/main/java/org/olat/course/run/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/run/_i18n/LocalStrings_de.properties
@@ -55,6 +55,7 @@ command.run=Kurs Laufzeitumgebung
 command.settings=Kursinfo \u00e4ndern
 command.wiki=Wiki
 course.closed=Dieser Kurs wurde beendet und kann nicht mehr bearbeitet oder aktualisiert werden.
+course.deleted=Dieser Kurs wurde gel\u00f6scht und kann nicht mehr bearbeitet oder aktualisiert werden.
 course.disposed.command.restart=Den Kurs beenden und neu starten
 course.disposed.message=Bitte beenden Sie diesen Kurs und starten Sie ihn neu.
 course.disposed.title=Dieser Kurs wurde ver\u00e4ndert.
diff --git a/src/main/java/org/olat/course/run/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/run/_i18n/LocalStrings_en.properties
index 0defb69156a..5d0f8ecd4f7 100644
--- a/src/main/java/org/olat/course/run/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/course/run/_i18n/LocalStrings_en.properties
@@ -55,6 +55,7 @@ command.run=Course runtime
 command.settings=Change course info
 command.wiki=Wiki
 course.closed=This course is finished and can therefore no longer be edited or updated.
+course.deleted=This course is deleted and can therefore no longer be edited or updated.
 course.disposed.command.restart=Close course and restart
 course.disposed.message=Please close this course and restart.
 course.disposed.title=This course has been modified.
diff --git a/src/main/java/org/olat/course/run/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/run/_i18n/LocalStrings_fr.properties
index d954f235e95..7dd82aaddc4 100644
--- a/src/main/java/org/olat/course/run/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/course/run/_i18n/LocalStrings_fr.properties
@@ -55,6 +55,7 @@ command.run=Cours
 command.settings=Modifier la description
 command.wiki=Wiki
 course.closed=Ce cours est termin\u00E9 et n'est plus \u00E9dit\u00E9 ou actualis\u00E9.
+course.deleted=Ce cours a \u00E9t\u00E9 effac\u00E9 et n'est plus \u00E9dit\u00E9 ou actualis\u00E9.
 course.disposed.command.restart=Fermer le cours et red\u00E9marrer.
 course.disposed.message=Fermez le cours et red\u00E9marrez-le \u00E0 nouveau SVP.
 course.disposed.title=Le cours a \u00E9t\u00E9 modifi\u00E9.
diff --git a/src/main/java/org/olat/course/run/userview/UserCourseEnvironmentImpl.java b/src/main/java/org/olat/course/run/userview/UserCourseEnvironmentImpl.java
index bf905bc81e7..9e5885a5413 100644
--- a/src/main/java/org/olat/course/run/userview/UserCourseEnvironmentImpl.java
+++ b/src/main/java/org/olat/course/run/userview/UserCourseEnvironmentImpl.java
@@ -50,7 +50,6 @@ import org.olat.group.BusinessGroup;
 import org.olat.modules.curriculum.CurriculumElement;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntrySecurity;
-import org.olat.repository.RepositoryEntryStatusEnum;
 import org.olat.repository.model.RepositoryEntryLifecycle;
 
 /**
@@ -81,7 +80,7 @@ public class UserCourseEnvironmentImpl implements UserCourseEnvironment {
 	public UserCourseEnvironmentImpl(IdentityEnvironment identityEnvironment, CourseEnvironment courseEnvironment) {
 		this(identityEnvironment, courseEnvironment, null, null, null, null, null, null, null, null);
 		if(courseEnvironment != null) {
-			courseReadOnly = courseEnvironment.getCourseGroupManager().getCourseEntry().getEntryStatus() == RepositoryEntryStatusEnum.closed;
+			courseReadOnly = courseEnvironment.getCourseGroupManager().getCourseEntry().getEntryStatus().decommissioned();
 		}
 	}
 
diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java
index 418e44adc99..21b86c26845 100644
--- a/src/main/java/org/olat/repository/RepositoryManager.java
+++ b/src/main/java/org/olat/repository/RepositoryManager.java
@@ -640,7 +640,7 @@ public class RepositoryManager {
 			}
 		}
 
-		boolean readOnly = re.getEntryStatus() == RepositoryEntryStatusEnum.closed;
+		boolean readOnly = re.getEntryStatus().decommissioned();
 
 		return new RepositoryEntrySecurityImpl(isEntryAdmin, isOwner,
 				isCourseParticipant, isCourseCoach,
diff --git a/src/main/java/org/olat/repository/model/SingleRoleRepositoryEntrySecurity.java b/src/main/java/org/olat/repository/model/SingleRoleRepositoryEntrySecurity.java
index 991fce053e2..3b78d27beba 100644
--- a/src/main/java/org/olat/repository/model/SingleRoleRepositoryEntrySecurity.java
+++ b/src/main/java/org/olat/repository/model/SingleRoleRepositoryEntrySecurity.java
@@ -58,7 +58,7 @@ public class SingleRoleRepositoryEntrySecurity implements RepositoryEntrySecurit
 			return iconCssClass;
 		}
 		
-	};
+	}
 	
 	private Role currentRole;
 	private RepositoryEntrySecurity wrappedSecurity;
-- 
GitLab