From 0f2bdf273a0571c75cb3abac52dfee7ac59e2f6c Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Mon, 7 Oct 2019 15:24:25 +0200
Subject: [PATCH] OO-4293: Only course participants can perform a portfolio
 task

---
 .../PortfolioCourseNodeRunController.java       | 17 ++++++++++++++++-
 .../course/nodes/portfolio/_content/run.html    |  3 +++
 .../portfolio/_i18n/LocalStrings_de.properties  |  2 ++
 .../portfolio/_i18n/LocalStrings_en.properties  |  2 ++
 4 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/olat/course/nodes/portfolio/PortfolioCourseNodeRunController.java b/src/main/java/org/olat/course/nodes/portfolio/PortfolioCourseNodeRunController.java
index f7ec2ed339e..361564aaa5e 100644
--- a/src/main/java/org/olat/course/nodes/portfolio/PortfolioCourseNodeRunController.java
+++ b/src/main/java/org/olat/course/nodes/portfolio/PortfolioCourseNodeRunController.java
@@ -39,6 +39,8 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
 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.generic.messages.MessageController;
+import org.olat.core.gui.control.generic.messages.MessageUIFactory;
 import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
 import org.olat.core.id.OLATResourceable;
@@ -143,7 +145,20 @@ public class PortfolioCourseNodeRunController extends FormBasicController {
 	
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
+		if (userCourseEnv.isAdmin() || userCourseEnv.isCoach()) {
+			String title = "";
+			if(templateMap != null) {
+				title = StringHelper.escapeHtml(templateMap.getTitle());
+			} else if(templateBinder != null) {
+				title = StringHelper.escapeHtml(templateBinder.getTitle());
+			}
+			MessageController coachMessage = MessageUIFactory.createInfoMessage(ureq, getWindowControl(),
+					translate("info.coach.title"), translate("info.coach.text", new String[] { title }));
+			(((FormLayoutContainer) formLayout).getFormItemComponent()).put("coachMessage", coachMessage.getInitialComponent());
+		}
+		
 		infosContainer = FormLayoutContainer.createDefaultFormLayout("infos", getTranslator());
+		infosContainer.setVisible(userCourseEnv.isParticipant());
 		formLayout.add(infosContainer);
 		
 		String assessmentPage = velocity_root + "/assessment_infos.html";
@@ -304,7 +319,7 @@ public class PortfolioCourseNodeRunController extends FormBasicController {
 	}
 	
 	private void updateAssessmentInfos(UserRequest ureq, Date returnDate) {
-		if(returnDate != null || copyBinder != null) {
+		if(userCourseEnv.isParticipant() && (returnDate != null || copyBinder != null)) {
 			String rDate = formatter.formatDateAndTime(returnDate);
 			uifactory.addStaticTextElement("map.returnDate", rDate, infosContainer);
 
diff --git a/src/main/java/org/olat/course/nodes/portfolio/_content/run.html b/src/main/java/org/olat/course/nodes/portfolio/_content/run.html
index c5322fc1234..66ef8d6e780 100644
--- a/src/main/java/org/olat/course/nodes/portfolio/_content/run.html
+++ b/src/main/java/org/olat/course/nodes/portfolio/_content/run.html
@@ -1,3 +1,6 @@
+#if ($r.available("coachMessage"))
+	$r.render("coachMessage")
+#end
 $r.render("assessmentInfos")
 #if ($r.available("highScore"))
 	$r.render("highScore")
diff --git a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_de.properties
index e45a71d329f..fb6f8d9d752 100644
--- a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_de.properties
@@ -9,6 +9,8 @@ error.noreference.long=F\u00FCr "{0}" muss in der Konfiguration eine Portfoliovo
 error.noreference.short=Es ist noch keine Portfoliovorlage f\u00FCr "{0}" ausgew\u00E4hlt.
 pane.tab.highscore=HighScore
 explanation.text=Mitteilung an Benutzer
+info.coach.title=Portfolioaufgabe
+info.coach.text=Die Kursteilnehmer m\u00FCssen die Portfolioaufgabe "{0}" bearbeiten.
 map.available=Es steht eine Portfolioaufgabe zur Verf\u00FCgung\: {0}. Sie k\u00F6nnen diese abholen und anschliessend bearbeiten.
 map.comment=Kommentar/Bewertung
 map.copied=Eine neue Portfolioaufgabe "{0}" befindet sich in Ihrem ePortfolio.
diff --git a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_en.properties
index ccef18c64e4..d456f4d1fd8 100644
--- a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_en.properties
@@ -23,6 +23,8 @@ preview.map=Preview
 error.noreference.long=For "{0}" you have to select a portfolio template in the tab "Learning content" in your configuration first.
 error.noreference.short=No portfolio template selected for "{0}"
 explanation.text=Message for users
+info.coach.title=Portfolio task
+info.coach.text=The course participants have to perform the portfolio task "{0}".
 map.available=There is a portfolio task at your disposal\: {0}. You can collect it before performing it later on.
 map.comment=Comment/evaluation
 map.copied=There is a new portfolio task "{0}" in your ePortfolio.
-- 
GitLab