From 2f11cd9a660e3f088faa2ea29b68bee3237afd94 Mon Sep 17 00:00:00 2001
From: gnaegi <none@none>
Date: Wed, 23 Mar 2016 19:03:03 +0100
Subject: [PATCH] OO-1952 Add link to course and course title to member list
 mail

---
 .../members/MembersCourseNodeRunController.java  | 16 ++++++++++++++--
 .../nodes/members/MembersMailController.java     |  7 ++++++-
 .../members/_i18n/LocalStrings_de.properties     |  1 +
 .../members/_i18n/LocalStrings_en.properties     |  1 +
 4 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java b/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
index e4a7147afcd..8e69a22102c 100644
--- a/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
+++ b/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
@@ -52,6 +52,7 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.core.gui.media.MediaResource;
+import org.olat.core.helpers.Settings;
 import org.olat.core.id.Identity;
 import org.olat.core.id.User;
 import org.olat.core.id.UserConstants;
@@ -375,7 +376,7 @@ public class MembersCourseNodeRunController extends FormBasicController {
 		removeAsListenerAndDispose(cmc);
 		removeAsListenerAndDispose(mailCtrl);
 		
-		mailCtrl = new MembersMailController(ureq, getWindowControl(), courseEnv, ownerList, coachList, participantList);
+		mailCtrl = new MembersMailController(ureq, getWindowControl(), courseEnv, ownerList, coachList, participantList, createBodyTemplate());
 		listenTo(mailCtrl);
 		
 		String title = translate("members.email.title");
@@ -405,7 +406,8 @@ public class MembersCourseNodeRunController extends FormBasicController {
 			
 			ContactMessage cmsg = new ContactMessage(ureq.getIdentity());
 			cmsg.addEmailTo(contactList);
-			
+			// preset body template from i18n
+			cmsg.setBodyText(createBodyTemplate());
 			emailController = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg);
 			listenTo(emailController);
 			
@@ -416,6 +418,16 @@ public class MembersCourseNodeRunController extends FormBasicController {
 		}
 	}
 	
+	private String createBodyTemplate() {
+		String courseName = courseEnv.getCourseTitle();
+		// Build REST URL to course element, use hack via group manager to access repo entry
+		StringBuilder courseLink = new StringBuilder();
+		RepositoryEntry entry = courseEnv.getCourseGroupManager().getCourseEntry();
+		courseLink.append(Settings.getServerContextPathURI())
+			.append("/url/RepositoryEntry/").append(entry.getKey());
+		return translate("email.body.template", new String[]{courseName, courseLink.toString()});		
+	}
+	
 	protected void doOpenHomePage(Member member, UserRequest ureq) {
 		String url = "[HomePage:" + member.getKey() + "]";
 		BusinessControl bc = BusinessControlFactory.getInstance().createFromString(url);
diff --git a/src/main/java/org/olat/course/nodes/members/MembersMailController.java b/src/main/java/org/olat/course/nodes/members/MembersMailController.java
index 860c44ab5ce..7c6f45413ab 100644
--- a/src/main/java/org/olat/course/nodes/members/MembersMailController.java
+++ b/src/main/java/org/olat/course/nodes/members/MembersMailController.java
@@ -110,7 +110,7 @@ public class MembersMailController extends FormBasicController {
 	private RepositoryService repositoryService;
 	
 	public MembersMailController(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv,
-			List<Member> ownerList, List<Member> coachList, List<Member> participantList) {
+			List<Member> ownerList, List<Member> coachList, List<Member> participantList, String bodyTemplate) {
 		super(ureq, wControl, Util.createPackageTranslator(MailHelper.class, ureq.getLocale()));
 		
 		this.courseEnv = courseEnv;
@@ -119,6 +119,11 @@ public class MembersMailController extends FormBasicController {
 		this.participantList = participantList;
 		this.contactAttachmentMaxSizeInMb = mailModule.getMaxSizeForAttachement();
 		initForm(ureq);
+		
+		// preset body template if set
+		if (StringHelper.containsNonWhitespace(bodyTemplate)) {
+			bodyEl.setValue(bodyTemplate);			
+		}
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties
index 18c0091b990..7a560fbe4e5 100644
--- a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties
@@ -13,6 +13,7 @@ owners=Kursbesitzer
 coaches=Kursbetreuer
 participants=Kursteilnehmer
 contact.external.list.example=xyz@olat.com, abc@frentix.com<br/>user@yourcompany.ch
+email.body.template=<p /><p /><p>Link zum Kurs <strong>{0}</strong>:<br /><a href='{1}'>{1}</a></p>
 email.from=Von
 email.send=Schicken
 email.function=Emailfunktion
diff --git a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties
index a1669cb1d0c..2e9a8ab96c7 100644
--- a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties
@@ -13,6 +13,7 @@ contact.external.list.example=xyz@olat.com, abc@frentix.com<br/>user@yourcompany
 owners=Course owners
 coaches=Course coaches
 participants=Course participants
+email.body.template=<p /><p /><p>Link to course <strong>{0}</strong>:<br /><a href='{1}'>{1}</a></p>
 email.from=From
 email.send=Send
 email.function=E-mail function
-- 
GitLab