From 58f229b79575e15f0a5e86711590cadb9bd9975c Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Tue, 17 Nov 2015 13:44:12 +0100
Subject: [PATCH] OO-1786	: show the subscription on the list of
 groups/participants, clearfix the subscription in the individual/group view,
 wording

---
 .../_i18n/LocalStrings_de.properties           |  2 +-
 .../_i18n/LocalStrings_en.properties           |  2 +-
 .../_i18n/LocalStrings_fr.properties           |  2 +-
 .../_i18n/LocalStrings_pt_BR.properties        |  2 +-
 .../ui/ContextualSubscriptionController.java   | 15 +++++----------
 .../notifications/ui/_content/consubs.html     |  6 +-----
 .../nodes/gta/manager/GTAManagerImpl.java      |  2 --
 .../nodes/gta/ui/GTAAbstractController.java    | 14 ++++++++------
 .../gta/ui/GTAAssessmentDetailsController.java |  4 ++--
 .../nodes/gta/ui/GTACoachController.java       | 12 ++++++------
 .../gta/ui/GTACoachSelectionController.java    | 18 ++++++++++++++++--
 .../nodes/gta/ui/GTAParticipantController.java |  2 +-
 .../course/nodes/gta/ui/_content/coach.html    |  4 +++-
 .../nodes/gta/ui/_content/coach_selection.html |  6 ++++++
 14 files changed, 52 insertions(+), 39 deletions(-)

diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_de.properties
index 86dd5f8053f..1c800dff242 100644
--- a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_de.properties
@@ -32,7 +32,7 @@ FileResource.WIKI=Wiki
 FileResource.XLS=Excel
 FolderModule=Ordner
 Forum=Forum
-GroupTask=Gruppenaufgabe
+GroupTask=Aufgabe
 Inbox=Inbox
 EPStructuredMap=ePortfolio
 InfoMessage=Mitteilungen
diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_en.properties
index ba20f8d7fbb..76b679bc8ef 100644
--- a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_en.properties
@@ -33,7 +33,7 @@ FileResource.WIKI=Wiki
 FileResource.XLS=Excel
 FolderModule=Folder
 Forum=Forum
-GroupTask=Group task
+GroupTask=Task
 Inbox=Inbox
 InfoMessage=Messages
 LibrarySite=Library
diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_fr.properties
index 2f393eb6f6e..4f6b69da65b 100644
--- a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_fr.properties
@@ -33,7 +33,7 @@ FileResource.WIKI=Wiki
 FileResource.XLS=Excel
 FolderModule=Dossier
 Forum=Forum
-GroupTask=Devoir de groupe
+GroupTask=Devoir
 Inbox=Bo\u00EEte de r\u00E9ception
 InfoMessage=Communications
 LibrarySite=Biblioth\u00E8que
diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_pt_BR.properties
index f38d36215b8..a9df84e511e 100644
--- a/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_pt_BR.properties
+++ b/src/main/java/org/olat/core/commons/chiefcontrollers/_i18n/LocalStrings_pt_BR.properties
@@ -33,7 +33,7 @@ FileResource.WIKI=Wiki
 FileResource.XLS=Excel
 FolderModule=Pasta
 Forum=F\u00F3rum
-GroupTask=Tarefa de grupo
+GroupTask=Tarefa
 Inbox=Caixa de entrada
 InfoMessage=Mensagens
 LibrarySite=Biblioteca
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/ContextualSubscriptionController.java b/src/main/java/org/olat/core/commons/services/notifications/ui/ContextualSubscriptionController.java
index bca737cf89f..208bfd4c09a 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/ContextualSubscriptionController.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/ContextualSubscriptionController.java
@@ -38,6 +38,7 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * Description: <br>
@@ -50,13 +51,13 @@ public class ContextualSubscriptionController extends BasicController {
 	private VelocityContainer myContent;
 	private Link subscribeButton;
 	private Link unsubscribeButton;
-	private Panel allPanel;
-	private Panel detailsPanel;
-	private NotificationsManager notifManager;
 	private SubscriptionContext subscriptionContext;
 	private boolean isSubscribed;
 	private final PublisherData publisherData;
 	
+	@Autowired
+	private NotificationsManager notifManager;
+	
 	/**
 	 * @param ureq
 	 * @param subscriptionContext
@@ -73,9 +74,6 @@ public class ContextualSubscriptionController extends BasicController {
 			putInitialPanel(new Panel("empty:nosubscription"));
 			return;
 		}
-		
-		detailsPanel = new Panel("subscription_detail");
-		allPanel = new Panel("subscription_all");
 
 		subscribeButton = LinkFactory.createCustomLink("command.subscribe", "command.subscribe", "off", Link.LINK, myContent, this);
 		subscribeButton.setCustomEnabledLinkCSS("o_noti_subscribe_link o_button_toggle");
@@ -87,14 +85,11 @@ public class ContextualSubscriptionController extends BasicController {
 		unsubscribeButton.setIconRightCSS("o_icon o_icon_toggle");
 		unsubscribeButton.setTitle("command.unsubscribe");
 		
-		notifManager = NotificationsManager.getInstance();
 		// if subscribed, offer a unsubscribe button and vica versa.
 		isSubscribed = notifManager.isSubscribed(ureq.getIdentity(), subscriptionContext);
 
 		updateUI();
-		myContent.put("detailsPanel", detailsPanel);
-		allPanel.setContent(myContent);
-		putInitialPanel(allPanel);
+		putInitialPanel(myContent);
 	}
 	
 	public boolean isSubscribed() {
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_content/consubs.html b/src/main/java/org/olat/core/commons/services/notifications/ui/_content/consubs.html
index ece81067f41..39bd05d05eb 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/_content/consubs.html
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_content/consubs.html
@@ -1,10 +1,6 @@
 <div id="$r.getCId()" class="o_noti"> 
 	<a href="javascript:$r.contextHelpJSCommand("org.olat.core.commons.services.notifications.ui","home-notifications.html")" title="$r.translateInAttribute("help.hover.notif")" class="o_label">
-		<i class="o_icon o_icon_notification"></i> 
-		<span>
-			$r.translate("actions.title")
-		</span>
-	</a>	
+		<i class="o_icon o_icon_notification"></i> <span>$r.translate("actions.title")</span></a>	
 	#if ($subscribed)
 		$r.render("command.unsubscribe")
 	#else
diff --git a/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java b/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
index 4bb494e9369..4785f238a7a 100644
--- a/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
+++ b/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
@@ -296,8 +296,6 @@ public class GTAManagerImpl implements GTAManager, DeletableGroupData {
 		SubscriptionContext sc = new SubscriptionContext("CourseModule", courseEnv.getCourseResourceableId(), cNode.getIdent());
 		return sc;
 	}
-	
-	
 
 	@Override
 	public List<BusinessGroup> filterBusinessGroups(List<BusinessGroup> groups, GTACourseNode cNode) {
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java
index 0e27b90083d..66fc4eddf14 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java
@@ -71,6 +71,7 @@ public abstract class GTAAbstractController extends BasicController {
 	protected final ModuleConfiguration config;
 	protected final RepositoryEntry courseEntry;
 	
+	protected final boolean withSubscription;
 	protected final PublisherData publisherData;
 	protected final SubscriptionContext subsContext;
 
@@ -95,22 +96,23 @@ public abstract class GTAAbstractController extends BasicController {
 	protected UserCourseInformationsManager userCourseInformationsManager;
 	
 	public GTAAbstractController(UserRequest ureq, WindowControl wControl,
-			GTACourseNode gtaNode, CourseEnvironment courseEnv, boolean withTitle, boolean withGrading) {
-		this(ureq, wControl, gtaNode, courseEnv, null, null, null, withTitle, withGrading);
+			GTACourseNode gtaNode, CourseEnvironment courseEnv, boolean withTitle, boolean withGrading, boolean withSubscription) {
+		this(ureq, wControl, gtaNode, courseEnv, null, null, null, withTitle, withGrading, withSubscription);
 	}
 	
 	public GTAAbstractController(UserRequest ureq, WindowControl wControl,
-			GTACourseNode gtaNode, CourseEnvironment courseEnv, UserCourseEnvironment userCourseEnv, boolean withTitle, boolean withGrading) {
-		this(ureq, wControl, gtaNode, courseEnv, userCourseEnv, null, null, withTitle, withGrading);
+			GTACourseNode gtaNode, CourseEnvironment courseEnv, UserCourseEnvironment userCourseEnv, boolean withTitle, boolean withGrading, boolean withSubscription) {
+		this(ureq, wControl, gtaNode, courseEnv, userCourseEnv, null, null, withTitle, withGrading, withSubscription);
 	}
 
 	public GTAAbstractController(UserRequest ureq, WindowControl wControl,
 			GTACourseNode gtaNode, CourseEnvironment courseEnv, UserCourseEnvironment userCourseEnv,
-			BusinessGroup assessedGroup, Identity assessedIdentity, boolean withTitle, boolean withGrading) {
+			BusinessGroup assessedGroup, Identity assessedIdentity, boolean withTitle, boolean withGrading, boolean withSubscription) {
 		super(ureq, wControl);
 		
 		this.withTitle = withTitle;
 		this.withGrading = withGrading;
+		this.withSubscription = withSubscription;
 		
 		this.gtaNode = gtaNode;
 		this.config = gtaNode.getModuleConfiguration();
@@ -154,7 +156,7 @@ public abstract class GTAAbstractController extends BasicController {
 			task = gtaManager.getTask(assessedIdentity, taskList);
 		}
 		
-		if (subsContext != null) {
+		if (withSubscription && subsContext != null) {
 			contextualSubscriptionCtr = new ContextualSubscriptionController(ureq, getWindowControl(), subsContext, publisherData);
 			listenTo(contextualSubscriptionCtr);
 			mainVC.put("contextualSubscription", contextualSubscriptionCtr.getInitialComponent());
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAAssessmentDetailsController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAAssessmentDetailsController.java
index 23c089108ba..d609ff76cf3 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAAssessmentDetailsController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAAssessmentDetailsController.java
@@ -160,14 +160,14 @@ public class GTAAssessmentDetailsController extends BasicController {
 	
 	private void doSelectBusinessGroup(UserRequest ureq, BusinessGroup group) {
 		removeAsListenerAndDispose(coachingCtrl);
-		coachingCtrl = new GTACoachController(ureq, getWindowControl(), courseEnv, gtaNode, group, true, true);
+		coachingCtrl = new GTACoachController(ureq, getWindowControl(), courseEnv, gtaNode, group, true, true, true);
 		listenTo(coachingCtrl);
 		mainVC.put("selection", coachingCtrl.getInitialComponent());
 	}
 	
 	private void doSelectParticipant(UserRequest ureq, Identity identity) {
 		removeAsListenerAndDispose(coachingCtrl);
-		coachingCtrl = new GTACoachController(ureq, getWindowControl(), courseEnv, gtaNode, identity, false, false);
+		coachingCtrl = new GTACoachController(ureq, getWindowControl(), courseEnv, gtaNode, identity, false, false, true);
 		listenTo(coachingCtrl);
 		mainVC.put("selection", coachingCtrl.getInitialComponent());
 	}
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java
index e8edd9d04a8..01eb1b62a1a 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java
@@ -83,13 +83,13 @@ public class GTACoachController extends GTAAbstractController {
 	private BusinessGroupService groupService;
 	
 	public GTACoachController(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, GTACourseNode gtaNode,
-			BusinessGroup assessedGroup, boolean withTitle, boolean withGrading) {
-		this(ureq, wControl, courseEnv, gtaNode, assessedGroup, null, withTitle, withGrading);
+			BusinessGroup assessedGroup, boolean withTitle, boolean withGrading, boolean withSubscription) {
+		this(ureq, wControl, courseEnv, gtaNode, assessedGroup, null, withTitle, withGrading, withSubscription);
 	}
 	
 	public GTACoachController(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, GTACourseNode gtaNode,
-			Identity assessedIdentity, boolean withTitle, boolean withGrading) {
-		this(ureq, wControl, courseEnv, gtaNode, null, assessedIdentity, withTitle, withGrading);
+			Identity assessedIdentity, boolean withTitle, boolean withGrading, boolean withSubscription) {
+		this(ureq, wControl, courseEnv, gtaNode, null, assessedIdentity, withTitle, withGrading, withSubscription);
 	}
 
 	/**
@@ -104,8 +104,8 @@ public class GTACoachController extends GTAAbstractController {
 	 * @param withGrading Allow to remove the grading panel in assessment tool
 	 */
 	private GTACoachController(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, GTACourseNode gtaNode,
-			BusinessGroup assessedGroup, Identity assessedIdentity, boolean withTitle, boolean withGrading) {
-		super(ureq, wControl, gtaNode, courseEnv, null, assessedGroup, assessedIdentity, withTitle, withGrading);
+			BusinessGroup assessedGroup, Identity assessedIdentity, boolean withTitle, boolean withGrading, boolean withSubscription) {
+		super(ureq, wControl, gtaNode, courseEnv, null, assessedGroup, assessedIdentity, withTitle, withGrading, withSubscription);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachSelectionController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachSelectionController.java
index a2340806216..ee787002bfa 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachSelectionController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachSelectionController.java
@@ -23,6 +23,9 @@ import java.util.Collections;
 import java.util.List;
 
 import org.olat.basesecurity.BaseSecurity;
+import org.olat.core.commons.services.notifications.PublisherData;
+import org.olat.core.commons.services.notifications.SubscriptionContext;
+import org.olat.core.commons.services.notifications.ui.ContextualSubscriptionController;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.link.Link;
@@ -62,6 +65,9 @@ public class GTACoachSelectionController extends BasicController {
 	private final GTACourseNode gtaNode;
 	private final CourseEnvironment courseEnv;
 	
+	protected final PublisherData publisherData;
+	protected final SubscriptionContext subsContext;
+	
 	@Autowired
 	private GTAManager gtaManager;
 	@Autowired
@@ -76,6 +82,14 @@ public class GTACoachSelectionController extends BasicController {
 		mainVC = createVelocityContainer("coach_selection");
 		backLink = LinkFactory.createLinkBack(mainVC, this);
 		
+		publisherData = gtaManager.getPublisherData(courseEnv, gtaNode);
+		subsContext = gtaManager.getSubscriptionContext(courseEnv, gtaNode);
+		if (subsContext != null) {
+			ContextualSubscriptionController contextualSubscriptionCtr = new ContextualSubscriptionController(ureq, getWindowControl(), subsContext, publisherData);
+			listenTo(contextualSubscriptionCtr);
+			mainVC.put("contextualSubscription", contextualSubscriptionCtr.getInitialComponent());
+		}
+		
 		ModuleConfiguration config = gtaNode.getModuleConfiguration();
 		if(GTAType.group.name().equals(config.getStringValue(GTACourseNode.GTASK_TYPE))) {
 			List<BusinessGroup> groups;
@@ -157,14 +171,14 @@ public class GTACoachSelectionController extends BasicController {
 	
 	private void doSelectBusinessGroup(UserRequest ureq, BusinessGroup group) {
 		removeAsListenerAndDispose(coachingCtrl);
-		coachingCtrl = new GTACoachController(ureq, getWindowControl(), courseEnv, gtaNode, group, true, true);
+		coachingCtrl = new GTACoachController(ureq, getWindowControl(), courseEnv, gtaNode, group, true, true, false);
 		listenTo(coachingCtrl);
 		mainVC.put("selection", coachingCtrl.getInitialComponent());
 	}
 	
 	private void doSelectParticipant(UserRequest ureq, Identity identity) {
 		removeAsListenerAndDispose(coachingCtrl);
-		coachingCtrl = new GTACoachController(ureq, getWindowControl(), courseEnv, gtaNode, identity, true, true);
+		coachingCtrl = new GTACoachController(ureq, getWindowControl(), courseEnv, gtaNode, identity, true, true, false);
 		listenTo(coachingCtrl);
 		mainVC.put("selection", coachingCtrl.getInitialComponent());
 	}
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
index c13ae7f194b..69260d16b39 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
@@ -98,7 +98,7 @@ public class GTAParticipantController extends GTAAbstractController {
 
 	public GTAParticipantController(UserRequest ureq, WindowControl wControl,
 			GTACourseNode gtaNode, UserCourseEnvironment userCourseEnv) {
-		super(ureq, wControl, gtaNode, userCourseEnv.getCourseEnvironment(), userCourseEnv, true, true);
+		super(ureq, wControl, gtaNode, userCourseEnv.getCourseEnvironment(), userCourseEnv, true, true, true);
 	}
 	
 	@Override
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/_content/coach.html b/src/main/java/org/olat/course/nodes/gta/ui/_content/coach.html
index d12f8e71f01..2af1807bfb9 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/_content/coach.html
+++ b/src/main/java/org/olat/course/nodes/gta/ui/_content/coach.html
@@ -1,4 +1,6 @@
-$r.render("contextualSubscription")
+#if($r.available("contextualSubscription"))
+	<div class="clearfix">$r.render("contextualSubscription")</div>
+#end
 
 #if($groupName && !$groupName.isEmpty())
 	<h4>
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/_content/coach_selection.html b/src/main/java/org/olat/course/nodes/gta/ui/_content/coach_selection.html
index a3b9ab8852e..b77a68ce456 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/_content/coach_selection.html
+++ b/src/main/java/org/olat/course/nodes/gta/ui/_content/coach_selection.html
@@ -5,7 +5,13 @@
 	#if($r.available("list"))
 		$r.render("backLink")
 	#end
+	#if($r.available("contextualSubscription"))
+		$r.render("contextualSubscription")
+	#end
 	$r.render("selection")
 #elseif($r.available("list"))
+	#if($r.available("contextualSubscription"))
+		<div class="clearfix">$r.render("contextualSubscription")</div>
+	#end
 	$r.render("list")
 #end
\ No newline at end of file
-- 
GitLab