diff --git a/src/main/java/org/olat/core/util/mail/MailManager.java b/src/main/java/org/olat/core/util/mail/MailManager.java index bb100412c745880a61f4616e5e9bb525f90c84e2..a0814cc02258d12c8283bb3150657475b8010179 100644 --- a/src/main/java/org/olat/core/util/mail/MailManager.java +++ b/src/main/java/org/olat/core/util/mail/MailManager.java @@ -202,5 +202,7 @@ public interface MailManager { public MailContent decorateMail(MailBundle bundle); public String decorateMailBody(String body, Locale locale); + + public MailContent evaluateTemplate(MailTemplate template); } diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java index bbfe593cc1900d1096b5d81de931b5f8a3bbdae1..d15faefcce9dd71f70d7e6fa8caa5f1ebeceab43 100644 --- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java +++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java @@ -755,6 +755,25 @@ public class MailManagerImpl implements MailManager, InitializingBean { return new SimpleMailContent(content.getSubject(), decoratedBody, content.getAttachments()); } + @Override + public MailContent evaluateTemplate(MailTemplate template) { + VelocityContext context; + if(template.getContext() != null) { + context = new VelocityContext(template.getContext()); + } else { + context = new VelocityContext(); + } + template.putVariablesInMailContext(context, null); + context.put("server", Settings.getServerContextPathURI()); + + MailerResult result = new MailerResult(); + StringWriter subjectWriter = new StringWriter(2000); + evaluate(context, template.getSubjectTemplate(), subjectWriter, result); + StringWriter bodyWriter = new StringWriter(2000); + evaluate(context, template.getBodyTemplate(), bodyWriter, result); + return new SimpleMailContent(subjectWriter.toString(), bodyWriter.toString(), template.getAttachments()); + } + public String decorateMailBody(String body, Locale locale) { String template = getMailTemplate(); boolean htmlTemplate = StringHelper.isHtml(template); diff --git a/src/main/java/org/olat/core/util/mail/model/SimpleMailContent.java b/src/main/java/org/olat/core/util/mail/model/SimpleMailContent.java index d413f9ae73f9bf4fac8088b6fe4b5c14a5214f02..6fb9fd2f1b880ec152fd5dcbe2b789ca1ce3d6b5 100644 --- a/src/main/java/org/olat/core/util/mail/model/SimpleMailContent.java +++ b/src/main/java/org/olat/core/util/mail/model/SimpleMailContent.java @@ -41,7 +41,7 @@ public class SimpleMailContent implements MailContent { this.subject = subject; this.body = body; - attachments = new ArrayList<File>(); + attachments = new ArrayList<>(); if(attachmentArr != null && attachmentArr.length > 0) { for(File attachment:attachmentArr) { if(attachment != null && attachment.exists()) { @@ -55,9 +55,9 @@ public class SimpleMailContent implements MailContent { this.subject = subject; this.body = body; if(attachmentList == null) { - this.attachments = new ArrayList<File>(1); + this.attachments = new ArrayList<>(1); } else { - this.attachments = new ArrayList<File>(attachmentList); + this.attachments = new ArrayList<>(attachmentList); } } diff --git a/src/main/java/org/olat/course/nodes/co/CORunController.java b/src/main/java/org/olat/course/nodes/co/CORunController.java index df6e82cebc6941e71854c060c097c9fcca98dec3..53a471c368b3aab47a0d9ff3a2a707455ba7dd6e 100755 --- a/src/main/java/org/olat/course/nodes/co/CORunController.java +++ b/src/main/java/org/olat/course/nodes/co/CORunController.java @@ -46,6 +46,8 @@ import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.mail.ContactList; import org.olat.core.util.mail.ContactMessage; +import org.olat.core.util.mail.MailContent; +import org.olat.core.util.mail.MailManager; import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.group.BusinessGroup; @@ -70,12 +72,15 @@ public class CORunController extends BasicController { private ContactFormController coFoCtr; private final CourseGroupManager cgm; + + @Autowired + private MailManager mailManager; @Autowired private BGAreaManager areaManager; @Autowired - private BusinessGroupService businessGroupService; + private RepositoryService repositoryService; @Autowired - private RepositoryService repositoryService; + private BusinessGroupService businessGroupService; /** * Constructor for the contact form run controller @@ -225,6 +230,9 @@ public class CORunController extends BasicController { CourseMailTemplate template = new CourseMailTemplate(entry, getIdentity(), getLocale()); template.setBodyTemplate(mBody); template.setSubjectTemplate(mSubject); + MailContent content = mailManager.evaluateTemplate(template); + template.setSubjectTemplate(content.getSubject()); + template.setBodyTemplate(content.getBody()); coFoCtr = new ContactFormController(ureq, getWindowControl(), false, false, false, cmsg, template); listenTo(coFoCtr);//dispose as this controller is disposed putInitialPanel(coFoCtr.getInitialComponent());