From fef48f05f5f50f6a35560a2bf89d126314ce6192 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 29 Nov 2012 16:44:01 +0100
Subject: [PATCH] OO-190: show an implicite release rule for course's maps
 which say the map is released for coaches

---
 .../ui/structel/EPMultipleMapController.java  |  2 +-
 .../ui/structel/EPShareListController.java    | 70 ++++++++++++++-----
 .../ui/structel/_content/sharePolicy.html     | 28 +++++---
 .../structel/_i18n/LocalStrings_de.properties |  1 +
 .../structel/_i18n/LocalStrings_en.properties |  1 +
 .../structel/_i18n/LocalStrings_fr.properties |  1 +
 6 files changed, 75 insertions(+), 28 deletions(-)

diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPMultipleMapController.java b/src/main/java/org/olat/portfolio/ui/structel/EPMultipleMapController.java
index 8b44f661155..49cdec7a750 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPMultipleMapController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPMultipleMapController.java
@@ -261,7 +261,7 @@ public class EPMultipleMapController extends BasicController implements Activate
 					shareLink.setCustomEnabledLinkCSS("b_with_small_icon_left b_share_icon");
 					shareLink.setUserObject(map);
 					boolean shared = ePFMgr.isMapShared(map);
-					if(shared) {
+					if(shared || (map instanceof EPStructuredMap && ((EPStructuredMap)map).getTargetResource() != null)) {
 						shareLink.setCustomDisplayText(translate("map.share.shared"));
 					}
 				}
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPShareListController.java b/src/main/java/org/olat/portfolio/ui/structel/EPShareListController.java
index 8a50d76b669..b616b7c7907 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPShareListController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPShareListController.java
@@ -74,6 +74,7 @@ import org.olat.group.model.SearchBusinessGroupParams;
 import org.olat.portfolio.manager.EPFrontendManager;
 import org.olat.portfolio.manager.EPMapPolicy;
 import org.olat.portfolio.manager.EPMapPolicy.Type;
+import org.olat.portfolio.model.structel.EPStructuredMap;
 import org.olat.portfolio.model.structel.PortfolioStructure;
 import org.olat.portfolio.model.structel.PortfolioStructureMap;
 import org.olat.user.UserManager;
@@ -112,6 +113,11 @@ public class EPShareListController extends FormBasicController {
 		for(int i=targetKeys.length; i-->0; ) {
 			targetValues[i] = translate("map.share.to." + targetKeys[i]);
 		}
+		
+		if(map instanceof EPStructuredMap && ((EPStructuredMap)map).getTargetResource() != null) {
+			policyWrappers.add(new TutorPolicyWrapper());
+		}
+
 		for(EPMapPolicy policy:ePFMgr.getMapPolicies(map)) {
 			policyWrappers.add(new PolicyWrapper(policy));
 		}
@@ -483,26 +489,31 @@ public class EPShareListController extends FormBasicController {
 				}
 			}
 			
-			DateChooser fromChooser = uifactory.addDateChooser("map.share.from." + cmpName, "map.share.from", "", container);
-			fromChooser.setDate(policyWrapper.getFrom());
-			fromChooser.setValidDateCheck("map.share.date.invalid");
-			policyWrapper.setFromChooser(fromChooser);
-			DateChooser toChooser = uifactory.addDateChooser("map.share.to." + cmpName, "map.share.to", "", container);
-			toChooser.setDate(policyWrapper.getTo());
-			toChooser.setValidDateCheck("map.share.date.invalid");
-			policyWrapper.setToChooser(toChooser);
-
-			FormLink addLink = uifactory.addFormLink("map.share.policy.add." + cmpName, "map.share.policy.add", null, container, Link.BUTTON_SMALL);
-			addLink.setUserObject(policyWrapper);
-			FormLink removeLink = uifactory.addFormLink("map.share.policy.delete." + cmpName, "map.share.policy.delete", null, container, Link.BUTTON_SMALL);
-			removeLink.setUserObject(policyWrapper);
-			if (!policyWrapper.getType().equals(EPMapPolicy.Type.allusers)){
-				FormLink inviteLink = uifactory.addFormLink("map.share.policy.invite." + cmpName, "map.share.policy.invite", null, container, Link.BUTTON_XSMALL);
-				inviteLink.setUserObject(policyWrapper);
-				inviteLink.setEnabled(!policyWrapper.isInvitationSend());
+			if(policyWrapper instanceof TutorPolicyWrapper) {
+				String text = translate("map.share.with.tutor");
+				uifactory.addStaticTextElement("map.share.text." + cmpName, text, container);
+			} else {
+				DateChooser fromChooser = uifactory.addDateChooser("map.share.from." + cmpName, "map.share.from", "", container);
+				fromChooser.setDate(policyWrapper.getFrom());
+				fromChooser.setValidDateCheck("map.share.date.invalid");
+				policyWrapper.setFromChooser(fromChooser);
+				DateChooser toChooser = uifactory.addDateChooser("map.share.to." + cmpName, "map.share.to", "", container);
+				toChooser.setDate(policyWrapper.getTo());
+				toChooser.setValidDateCheck("map.share.date.invalid");
+				policyWrapper.setToChooser(toChooser);
+	
+				FormLink addLink = uifactory.addFormLink("map.share.policy.add." + cmpName, "map.share.policy.add", null, container, Link.BUTTON_SMALL);
+				addLink.setUserObject(policyWrapper);
+				FormLink removeLink = uifactory.addFormLink("map.share.policy.delete." + cmpName, "map.share.policy.delete", null, container, Link.BUTTON_SMALL);
+				removeLink.setUserObject(policyWrapper);
+				if (!policyWrapper.getType().equals(EPMapPolicy.Type.allusers)){
+					FormLink inviteLink = uifactory.addFormLink("map.share.policy.invite." + cmpName, "map.share.policy.invite", null, container, Link.BUTTON_XSMALL);
+					inviteLink.setUserObject(policyWrapper);
+					inviteLink.setEnabled(!policyWrapper.isInvitationSend());
+				}
+				StaticTextElement genErrorPanel = uifactory.addStaticTextElement("errorpanel." + cmpName, "", container);
+				genErrorPanel.setUserObject(policyWrapper);
 			}
-			StaticTextElement genErrorPanel = uifactory.addStaticTextElement("errorpanel." + cmpName, "", container);
-			genErrorPanel.setUserObject(policyWrapper);
 			
 			policyWrapper.setComponentName(cmpName);
 			
@@ -625,6 +636,27 @@ public class EPShareListController extends FormBasicController {
 		}
 	}
 	
+	public class TutorPolicyWrapper extends PolicyWrapper {
+
+		@Override
+		public Date getTo() {
+			return null;
+		}
+
+		@Override
+		public DateChooser getFromChooser() {
+			return null;
+		}
+
+		@Override
+		public String calc(String cmpName) {
+			if("map.share.target".equals(cmpName) || "map.share.with".equals(cmpName) ) {
+				return "xxx";
+			}
+			return super.calc(cmpName);
+		}
+	}
+	
 	public class PolicyWrapper {
 		private EPMapPolicy mapPolicy;
 		private String componentName;
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_content/sharePolicy.html b/src/main/java/org/olat/portfolio/ui/structel/_content/sharePolicy.html
index 15ce2d3f1e5..fb7a3c55bef 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_content/sharePolicy.html
+++ b/src/main/java/org/olat/portfolio/ui/structel/_content/sharePolicy.html
@@ -1,22 +1,34 @@
 <div class="b_eportfolio_share_policy_wrapper policytype_$wrapper.getType() b_clearfix">
 	<div class="b_float_right">
-		$r.render($wrapper.calc("map.share.policy.add"))
-		$r.render($wrapper.calc("map.share.policy.delete"))
+		#if($r.available($wrapper.calc("map.share.policy.add"))) $r.render($wrapper.calc("map.share.policy.add")) #end
+		#if($r.available($wrapper.calc("map.share.policy.delete"))) $r.render($wrapper.calc("map.share.policy.delete")) #end
 		#if($r.available($wrapper.calc("map.share.policy.invite"))) <br/><br/>$r.render($wrapper.calc("map.share.policy.invite")) #end
 	</div>
+	
 	<div class="b_eportfolio_share_policy">
-		$r.render($wrapper.calc("map.share.target"))
+		#if($r.available($wrapper.calc("map.share.text")))
+			<p>$r.render($wrapper.calc("map.share.text"))</p>
+		#end
+		#if($r.available($wrapper.calc("map.share.target")))
+			$r.render($wrapper.calc("map.share.target"))
+		#end
 		#if($r.available($wrapper.calc("map.share.with")))
 			<div class="b_eportfolio_share_with">
 				$r.render($wrapper.calc("map.share.with"))
 			</div>
 		#end
 		<br/>
-		<div class="b_ep_share_date"><span>$r.translate("map.share.from")</span></div>
-		$r.render($wrapper.calc("map.share.from"))
-		<div class="b_ep_share_date"><span>$r.translate("map.share.to")</span></div>
-		$r.render($wrapper.calc("map.share.to"))
-		<br/><div class="b_form_error_msg">$r.render($wrapper.calc("errorpanel"))</div>
+		#if($r.available($wrapper.calc("map.share.from")))
+			<div class="b_ep_share_date"><span>$r.translate("map.share.from")</span></div>
+			$r.render($wrapper.calc("map.share.from"))
+		#end
+		#if($r.available($wrapper.calc("map.share.to")))
+			<div class="b_ep_share_date"><span>$r.translate("map.share.to")</span></div>
+			$r.render($wrapper.calc("map.share.to"))
+		#end
+		#if($r.available($wrapper.calc("errorpanel")))
+			<br/><div class="b_form_error_msg">$r.render($wrapper.calc("errorpanel"))</div>
+		#end
 	</div>
 </div>
 
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_de.properties
index e56dc4c5145..a5902ad35a5 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_de.properties
@@ -85,6 +85,7 @@ map.share.with.mail.error=Bitte geben Sie eine g
 map.share.with.mail.error.olatUser=Diese E-Mailadresse wird bereits von einem OLAT-Benutzer verwendet.
 map.share.with.link=URL
 map.share.with.allOlatUsers=Für alle OLAT-Benutzer freigegeben
+map.share.with.tutor=Für Ihren Betreuer freigegeben
 map.share.empty.warn=Dieses Feld muss ausgefüllt werden.
 map.share.invitation.mail.subject=Einladung zu einer freigegebenen Sammelmappe
 map.share.invitation.mail.list=Eingeladene Personen
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_en.properties
index 2a7fddceab8..3993b8b2f3b 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_en.properties
@@ -84,6 +84,7 @@ map.share.to.invitation=Release invitation
 map.share.to.user=User
 map.share.to.user.hint=Click here to select user
 map.share.with.allOlatUsers=Release for all OLAT users
+map.share.with.tutor=Release for your coach
 map.share.with.firstName=First name
 map.share.with.lastName=Last name
 map.share.with.link=URL
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_fr.properties
index b4933c9e756..90d269bd2e0 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_fr.properties
@@ -84,6 +84,7 @@ map.share.to.invitation=Invitation partage
 map.share.to.user=Utilisateur
 map.share.to.user.hint=Cliquez ici pour s\u00E9lectionner des utilisateurs
 map.share.with.allOlatUsers=Partag\u00E9 pour tous les utilisateurs OLAT
+map.share.with.tutor=Partag\u00E9 avec votre coach
 map.share.with.firstName=Pr\u00E9nom
 map.share.with.lastName=Nom
 map.share.with.link=URL
-- 
GitLab