From 20b7c6860c0a58d3dcb0c4dfb1bce804c6b55edf Mon Sep 17 00:00:00 2001
From: uhensler <none@none>
Date: Wed, 17 Jan 2018 12:47:10 +0100
Subject: [PATCH] OO-3116: Pool admin rights fine tuning

---
 .../java/org/olat/modules/qpool/QuestionPoolModule.java    | 2 +-
 .../qpool/security/ProcesslessSecurityCallback.java        | 6 +++++-
 .../qpool/security/ReviewProcessSecurityCallback.java      | 7 +++++--
 .../olat/modules/qpool/ui/_i18n/LocalStrings_de.properties | 2 +-
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/olat/modules/qpool/QuestionPoolModule.java b/src/main/java/org/olat/modules/qpool/QuestionPoolModule.java
index b17f3848e48..1aef046ff2b 100644
--- a/src/main/java/org/olat/modules/qpool/QuestionPoolModule.java
+++ b/src/main/java/org/olat/modules/qpool/QuestionPoolModule.java
@@ -89,7 +89,7 @@ public class QuestionPoolModule extends AbstractSpringModule implements ConfigOn
 	
 	private boolean poolAdminAllowedToEditMetadata = false;
 	private boolean poolAdminAllowedToEditStatus = false;
-	private boolean poolAdminAllowedToConfigReviewProcess = true;
+	private boolean poolAdminAllowedToConfigReviewProcess = false;
 	private boolean poolAdminAllowedToConfigTaxonomy = true;
 	private boolean poolAdminAllowedToConfigPools = true;
 	private boolean poolAdminAllowedToConfigItemTypes = true;
diff --git a/src/main/java/org/olat/modules/qpool/security/ProcesslessSecurityCallback.java b/src/main/java/org/olat/modules/qpool/security/ProcesslessSecurityCallback.java
index 3daafcff2dd..656e2a66344 100644
--- a/src/main/java/org/olat/modules/qpool/security/ProcesslessSecurityCallback.java
+++ b/src/main/java/org/olat/modules/qpool/security/ProcesslessSecurityCallback.java
@@ -81,7 +81,11 @@ public class ProcesslessSecurityCallback implements QuestionItemSecurityCallback
 
 	@Override
 	public boolean canRemoveTaxonomy() {
-		return admin || itemView.isAuthor() || itemView.isEditableInPool() || itemView.isEditableInShare();
+		return admin 
+				|| itemView.isAuthor()
+				|| itemView.isEditableInPool()
+				|| itemView.isEditableInShare()
+				|| (poolAdmin && qpoolModule.isPoolAdminAllowedToEditMetadata());
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/qpool/security/ReviewProcessSecurityCallback.java b/src/main/java/org/olat/modules/qpool/security/ReviewProcessSecurityCallback.java
index cb002e9ef6d..9ea9949ad57 100644
--- a/src/main/java/org/olat/modules/qpool/security/ReviewProcessSecurityCallback.java
+++ b/src/main/java/org/olat/modules/qpool/security/ReviewProcessSecurityCallback.java
@@ -92,7 +92,10 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba
 	@Override
 	public boolean canRemoveTaxonomy() {
 		return QuestionStatus.draft.equals(itemView.getQuestionStatus())
-				&& (admin || itemView.isAuthor() || itemView.isManager());
+				&& (admin
+						|| itemView.isAuthor()
+						|| itemView.isManager()
+						|| (poolAdmin && qpoolModule.isPoolAdminAllowedToEditMetadata()));
 	}
 
 	@Override
@@ -152,7 +155,7 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba
 	@Override
 	public boolean canRemove() {
 		return questionItemSource.isRemoveEnabled()
-				&& (admin || itemView.isAuthor());
+				&& (admin || itemView.isAuthor() || (poolAdmin && qpoolModule.isPoolAdminAllowedToEditStatus()));
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties
index 1280d4f3bc5..ddf6d527066 100644
--- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties
@@ -150,7 +150,7 @@ previous=Vorherige
 process.activate.not.reviewable.description=Fragen im Format 'QTI 1.2' k\u00F6nnen nicht beurteilt werden. Bitte konvertieren Sie die Frage zuerst in das Format 'QTI 2.1'.
 process.activate.review=Frage beurteilen
 process.activate.review.description=Die Frage befindet sich im Status 'Review'. Bitte \u00FCberpr\u00FCfen Sie die Frage sorgf\u00E4ltig auf fachlich und eignungstechnische Korrektheit und geben Sie anschliessend mit der untenstehenden Schaltfl\u00E4che Ihre Bewertung ab.
-process.activate.start.review=Beurteilungsprozes starten
+process.activate.start.review=Beurteilungsprozess starten
 process.activate.start.review.description=Diese Frage befindet sich im Status 'Draft'. Wenn die Frage fertig erstellt ist, k\u00F6nnen Sie den Beurteilungsprozess starten. Die Frage kann anschliessend nicht mehr bearbeitet werden.
 process.comment=Kommentar
 process.confirm.endOfLife=Die Frage kann nach dem Setzen des "$\:lifecycle.status.endOfLife" nicht mehr verwendet werden .Wollen Sie die Frage "{0}" wirklich auf End of life setzen?
-- 
GitLab