From a1cecbc17dcefbf4394ef77ee401c9e349837728 Mon Sep 17 00:00:00 2001
From: Dirk Furrer <none@none>
Date: Thu, 12 Feb 2015 15:30:39 +0100
Subject: [PATCH] OO-1404: added subscriptionContext to the
 DropboxScoringViewController, changed the init function in the
 ProjectBrokerDropboxScoringViewController

---
 ...ectBrokerDropboxScoringViewController.java |  3 ++-
 .../ta/DropboxScoringViewController.java      | 22 +++++++++++++++++++
 .../nodes/ta/_content/dropboxscoring.html     |  5 +++++
 3 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/olat/course/nodes/projectbroker/ProjectBrokerDropboxScoringViewController.java b/src/main/java/org/olat/course/nodes/projectbroker/ProjectBrokerDropboxScoringViewController.java
index c6a6a75ee5e..94a0e4fbe14 100644
--- a/src/main/java/org/olat/course/nodes/projectbroker/ProjectBrokerDropboxScoringViewController.java
+++ b/src/main/java/org/olat/course/nodes/projectbroker/ProjectBrokerDropboxScoringViewController.java
@@ -68,7 +68,8 @@ public class ProjectBrokerDropboxScoringViewController extends DropboxScoringVie
 		Translator fallbackTranslator = Util.createPackageTranslator(this.getClass(), ureq.getLocale());
 		Translator myTranslator = Util.createPackageTranslator(DropboxScoringViewController.class, ureq.getLocale(), fallbackTranslator);
 		setTranslator(myTranslator);
-		init(ureq);
+		boolean hasNotification = ( userCourseEnv.getCourseEnvironment().getCourseGroupManager().isIdentityCourseAdministrator(ureq.getIdentity())) || userCourseEnv.getCourseEnvironment().getCourseGroupManager().isIdentityCourseCoach(ureq.getIdentity());
+		init(ureq, hasNotification);
 	}
 	
 	protected String getDropboxFilePath(String assesseeName) {
diff --git a/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java b/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java
index 16a41e2cbc9..758ca0c49f3 100644
--- a/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java
+++ b/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java
@@ -36,6 +36,7 @@ import org.olat.core.commons.modules.bc.FolderRunController;
 import org.olat.core.commons.modules.bc.vfs.OlatNamedContainerImpl;
 import org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl;
 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;
@@ -99,6 +100,9 @@ public class DropboxScoringViewController extends BasicController {
 	private CloseableModalController cmc;
 	private IFrameDisplayController iFrameCtr;
 	private DialogBoxController dialogBoxController;
+	private boolean hasNotification = false;
+	private SubscriptionContext subsContext;
+	private ContextualSubscriptionController contextualSubscriptionCtr;
 	
 	/**
 	 * Scoring view of the dropbox.
@@ -129,6 +133,11 @@ public class DropboxScoringViewController extends BasicController {
 			init(ureq);
 		}
 	}
+	
+	protected void init(UserRequest ureq, boolean hasNotification){
+		this.hasNotification = hasNotification;
+		init(ureq);
+	}
 
 	protected void init(UserRequest ureq) {
 		myContent = createVelocityContainer("dropboxscoring");
@@ -152,6 +161,19 @@ public class DropboxScoringViewController extends BasicController {
 		UserManager userManager = CoreSpringFactory.getImpl(UserManager.class);
 		String assesseeFullName = StringHelper.escapeHtml(userManager.getUserDisplayName(assessee));
 
+		// notification
+		if (hasNotification) {
+		subsContext = DropboxFileUploadNotificationHandler.getSubscriptionContext(userCourseEnv.getCourseEnvironment(), node);
+			if (subsContext != null) {
+				String path = DropboxController.getDropboxPathRelToFolderRoot(userCourseEnv.getCourseEnvironment(), node);
+				contextualSubscriptionCtr = AbstractTaskNotificationHandler.createContextualSubscriptionController(ureq, this.getWindowControl(), path, subsContext, DropboxController.class);
+				myContent.put("subscription", contextualSubscriptionCtr.getInitialComponent());
+				myContent.contextPut("hasNotification", Boolean.TRUE);
+			}
+		} else {
+			myContent.contextPut("hasNotification", Boolean.FALSE);
+		}
+		
 		OlatRootFolderImpl rootDropbox = new OlatRootFolderImpl(getDropboxFilePath(assesseeName), null);
 		rootDropbox.setLocalSecurityCallback( getDropboxVfsSecurityCallback());
 		OlatNamedContainerImpl namedDropbox = new OlatNamedContainerImpl(assesseeFullName, rootDropbox);
diff --git a/src/main/java/org/olat/course/nodes/ta/_content/dropboxscoring.html b/src/main/java/org/olat/course/nodes/ta/_content/dropboxscoring.html
index 5a1e155843a..25005c6ddb3 100644
--- a/src/main/java/org/olat/course/nodes/ta/_content/dropboxscoring.html
+++ b/src/main/java/org/olat/course/nodes/ta/_content/dropboxscoring.html
@@ -28,6 +28,11 @@
 		<h4 class="panel-title">$r.translate("dropbox.title")</h4>
 	</div>
 	<div id="collapseDropbox" class="panel-collapse collapse in">
+		<div class="panel-body">
+			#if($hasNotification == true)
+				$r.render("subscription")
+			#end
+		</div>
 		<div class="panel-body">
 			$r.render("dropbox")
 		</div>  	
-- 
GitLab