Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/EmailUserAction.java =================================================================== diff -u -r333022651b4f11aaa3c6943c900cdd6833b7cd8d -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/EmailUserAction.java (.../EmailUserAction.java) (revision 333022651b4f11aaa3c6943c900cdd6833b7cd8d) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/EmailUserAction.java (.../EmailUserAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -111,6 +111,7 @@ public ActionForward send(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { initServices(); + boolean isHtmlFormat = false; if (!(request.isUserInRole(Role.SYSADMIN) || service.isUserGlobalGroupAdmin())) { request.setAttribute("errorName", "UserAction"); @@ -140,9 +141,9 @@ EmailUserAction.log.debug("Administrator " + fromPerson + " (" + from + ") " + " sent email to user " + toPerson + "( " + to + ") " + ": \n[subject] " + subject + "\n[message] " + body); Properties properties = new Properties(); - - Emailer.send(subject, to, toPerson, from, fromPerson, body, properties); + Emailer.send(subject, to, toPerson, from, fromPerson, body, isHtmlFormat, properties); + return mapping.findForward("usersearch"); } Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r59bd722a2f5d0e28abe346135bacdf013d857a86 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/web/ForgotPasswordServlet.java =================================================================== diff -u -r0147ea5176a527227609a9f457e4fca31ea4c53b -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_central/src/java/org/lamsfoundation/lams/web/ForgotPasswordServlet.java (.../ForgotPasswordServlet.java) (revision 0147ea5176a527227609a9f457e4fca31ea4c53b) +++ lams_central/src/java/org/lamsfoundation/lams/web/ForgotPasswordServlet.java (.../ForgotPasswordServlet.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -176,6 +176,7 @@ if (!err) { + boolean isHtmlFormat = false; // generate a key for the request String key = generateUniqueKey(); @@ -198,7 +199,8 @@ Emailer.sendFromSupportEmail( messageService.getMessage("forgot.password.email.subject"), user.getEmail(), - body + body, + isHtmlFormat ); languageKey = this.SUCCESS_REQUEST_EMAIL; success = 1; Index: lams_central/src/java/org/lamsfoundation/lams/web/action/SignupAction.java =================================================================== diff -u -r4aa7a60c90a430b0c6a20a46ca8cfccbe302edbf -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_central/src/java/org/lamsfoundation/lams/web/action/SignupAction.java (.../SignupAction.java) (revision 4aa7a60c90a430b0c6a20a46ca8cfccbe302edbf) +++ lams_central/src/java/org/lamsfoundation/lams/web/action/SignupAction.java (.../SignupAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -103,8 +103,9 @@ body += "\n\n"; body += "Regards,\n"; body += "LAMS Signup System"; + boolean isHtmlFormat = false; - Emailer.sendFromSupportEmail(subject, user.getEmail(), body); + Emailer.sendFromSupportEmail(subject, user.getEmail(), body, isHtmlFormat); } catch (Exception e) { log.error(e.getMessage(), e); request.setAttribute("error", e.getMessage()); Index: lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterAction.java =================================================================== diff -u -r1b5e1d1a56b7c671c57bbd9257fdba49c85abc3f -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterAction.java (.../RegisterAction.java) (revision 1b5e1d1a56b7c671c57bbd9257fdba49c85abc3f) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterAction.java (.../RegisterAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -273,13 +273,18 @@ //send email to participant if ("1".equals(isEmailParticipant)) { + boolean isHtmlFormat = false; + eventNotificationService.sendMessage(user.getUserId().longValue(), DeliveryMethodMail.getInstance(), messageService.getMessage("register.user.email.subject"), - messageService.getMessage("register.user.email.body", new Object[] { username, password })); + messageService.getMessage("register.user.email.body", new Object[] { username, password }), + isHtmlFormat); } //send email to coordinator if (StringUtils.isNotBlank(isEmailCoordinator)) { + boolean isHtmlFormat = false; + List coordinators = userManagementService.getAllUsersWithEmail(isEmailCoordinator); if ((coordinators == null) || (coordinators.size() == 0)) { throw new RuntimeException("There are no coordinators with email: " + isEmailCoordinator); @@ -289,7 +294,8 @@ String registeredUserName = firstName + " " + lastName + " (" + username + ")"; eventNotificationService.sendMessage(coordinator.getUserId().longValue(), DeliveryMethodMail.getInstance(), messageService.getMessage("notify.coordinator.register.user.email.subject"), - messageService.getMessage("notify.coordinator.register.user.email.body", new Object[] { registeredUserName })); + messageService.getMessage("notify.coordinator.register.user.email.body", new Object[] { registeredUserName }), + isHtmlFormat); } writeAJAXOKResponse(response); Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040016.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040016.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040016.sql (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -0,0 +1,12 @@ +-- Turn off autocommit, so nothing is committed if there is an error + +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; + +-- LDEV-3010 Emails sent via forum when rich text editor is able should be sent with the correct mime-type +ALTER TABLE lams_events ADD COLUMN html_format TINYINT(1) DEFAULT 0; + +-- If there were no errors, commit and restore autocommit to on +SET FOREIGN_KEY_CHECKS=0; +COMMIT; +SET AUTOCOMMIT = 1; Index: lams_common/src/java/org/lamsfoundation/lams/events/AbstractDeliveryMethod.java =================================================================== diff -u -r6e4ed3724bd76354c2ee43c88979385c4a162a0e -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_common/src/java/org/lamsfoundation/lams/events/AbstractDeliveryMethod.java (.../AbstractDeliveryMethod.java) (revision 6e4ed3724bd76354c2ee43c88979385c4a162a0e) +++ lams_common/src/java/org/lamsfoundation/lams/events/AbstractDeliveryMethod.java (.../AbstractDeliveryMethod.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -51,10 +51,11 @@ * @param userId ID of the user * @param subject subject of the message * @param message text of the message + * @param isHtmlFormat whether the message is of HTML content-type or plain text * @return null if the operation was successful; error message if it failed * @throws InvalidParameterException */ - protected abstract String send(Long userId, String subject, String message) throws InvalidParameterException; + protected abstract String send(Long userId, String subject, String message, boolean isHtmlFormat) throws InvalidParameterException; public String getSignature() { return signature; Index: lams_common/src/java/org/lamsfoundation/lams/events/DeliveryMethodMail.java =================================================================== diff -u -r333022651b4f11aaa3c6943c900cdd6833b7cd8d -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_common/src/java/org/lamsfoundation/lams/events/DeliveryMethodMail.java (.../DeliveryMethodMail.java) (revision 333022651b4f11aaa3c6943c900cdd6833b7cd8d) +++ lams_common/src/java/org/lamsfoundation/lams/events/DeliveryMethodMail.java (.../DeliveryMethodMail.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -25,11 +25,8 @@ super((short) 1, "MAIL", "Messages will be send by Mail"); } - /** - * {@inheritDoc} - */ @Override - public String send(Long userId, String subject, String message) throws InvalidParameterException { + public String send(Long userId, String subject, String message, boolean isHtmlFormat) throws InvalidParameterException { if (userId == null) { return "User ID should not be null."; } @@ -43,7 +40,7 @@ if (StringUtils.isBlank(email)) { return "User's e-mail address is blank."; } - sendFromSupportEmail(subject, email, message); + sendFromSupportEmail(subject, email, message, isHtmlFormat); return null; } catch (Exception e) { return e.toString(); @@ -61,37 +58,43 @@ * Sends an email sourced from admin. Copied from Emailer class. * * @param subject - * subject of the message + * subject of the message * @param to - * address to send + * address to send * @param body - * text of the message + * text of the message + * @param isHtmlFormat + * whether the message is of HTML content-type or plain text * @throws AddressException - * if address was incorrect + * if address was incorrect * @throws MessagingException - * if the operation failed + * if the operation failed */ - public void sendFromSupportEmail(String subject, String to, String body) throws AddressException, + public void sendFromSupportEmail(String subject, String to, String body, boolean isHtmlFormat) throws AddressException, MessagingException, UnsupportedEncodingException { - Emailer.sendFromSupportEmail(subject, to, body); + Emailer.sendFromSupportEmail(subject, to, body, isHtmlFormat); } /** * Sends an email to the address provided by the admin. * * @param subject - * subject of the message + * subject of the message * @param body - * text of the message + * text of the message + * + * @param isHtmlFormat + * whether the message is of HTML content-type or plain text * @throws AddressException - * if address was incorrect + * if address was incorrect * @throws MessagingException - * if the operation failed + * if the operation failed */ - void notifyAdmin(String subject, String body) throws AddressException, MessagingException, UnsupportedEncodingException { + void notifyAdmin(String subject, String body, boolean isHtmlFormat) throws AddressException, + MessagingException, UnsupportedEncodingException { String adminEmail = Configuration.get("LamsSupportEmail"); if (!StringUtils.isEmpty(adminEmail)) { - sendFromSupportEmail(subject, adminEmail, body); + sendFromSupportEmail(subject, adminEmail, body, isHtmlFormat); } } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/events/Event.java =================================================================== diff -u -racc8d2acf5b6b0002e0c8129947040a779ab4077 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_common/src/java/org/lamsfoundation/lams/events/Event.java (.../Event.java) (revision acc8d2acf5b6b0002e0c8129947040a779ab4077) +++ lams_common/src/java/org/lamsfoundation/lams/events/Event.java (.../Event.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -73,6 +73,11 @@ * Subject of the message that will be send when the event is triggered. */ protected String subject; + + /** + * Boolean indicates whether the message should be sent as text/html content or regular text/plain one + */ + protected boolean htmlFormat; /** * If sending notifications fails, this property holds the time of this failure. @@ -115,7 +120,8 @@ * @param defaultMessage body of the message to send * @throws InvalidParameterException if scope is null or name is blank */ - public Event(String scope, String name, Long sessionId, String defaultSubject, String defaultMessage) + public Event(String scope, String name, Long sessionId, String defaultSubject, String defaultMessage, + boolean isHtmlContentType) throws InvalidParameterException { if (scope == null) { throw new InvalidParameterException("Event scope can not be null."); @@ -128,6 +134,7 @@ eventSessionId = sessionId; this.defaultSubject = defaultSubject; this.defaultMessage = defaultMessage; + this.htmlFormat = isHtmlContentType; fullSignature = createFullSignature(scope, name, sessionId); } @@ -151,7 +158,7 @@ @Override public Object clone() { - Event clone = new Event(scope, name, eventSessionId, defaultSubject, defaultMessage); + Event clone = new Event(scope, name, eventSessionId, defaultSubject, defaultMessage, htmlFormat); for (Subscription subscription : getSubscriptions()) { clone.getSubscriptions().add((Subscription) subscription.clone()); } @@ -258,7 +265,7 @@ for (int index = 0; index < subscriptionList.size(); index++) { Subscription subscription = subscriptionList.get(index); if (subscription.getUserId().equals(userId) && subscription.isEligibleForNotification()) { - subscription.notifyUser(subject, message); + subscription.notifyUser(subject, message, this.isHtmlFormat()); return subscription.getLastOperationSuccessful(); } } @@ -352,6 +359,7 @@ final String subjectToSend = getSubject() == null ? getDefaultSubject() : getSubject(); final String messageToSend = getMessage() == null ? getDefaultMessage() : getMessage(); + final boolean isHtmlContentType = isHtmlFormat(); final Event finalRef = this; notificationThread = new Thread(new Runnable() { public void run() { @@ -360,7 +368,7 @@ for (int index = 0; index < subscriptionList.size(); index++) { Subscription subscription = subscriptionList.get(index); if (getFailTime() != null || subscription.isEligibleForNotification()) { - subscription.notifyUser(subjectToSend, messageToSend); + subscription.notifyUser(subjectToSend, messageToSend, isHtmlContentType); if (subscription.getLastOperationSuccessful()) { if (getFailTime() != null) { getSubscriptions().remove(subscription); @@ -471,4 +479,16 @@ protected void setSubject(String subject) { this.subject = subject; } + + /** + * @hibernate.property column="html_format" length="1" + * @return + */ + protected boolean isHtmlFormat() { + return htmlFormat; + } + + protected void setHtmlFormat(boolean isHtmlContentType) { + this.htmlFormat = isHtmlContentType; + } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/events/EventNotificationService.java =================================================================== diff -u -rb088ddf2b6f09504041d70812a6472eb8d59509d -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_common/src/java/org/lamsfoundation/lams/events/EventNotificationService.java (.../EventNotificationService.java) (revision b088ddf2b6f09504041d70812a6472eb8d59509d) +++ lams_common/src/java/org/lamsfoundation/lams/events/EventNotificationService.java (.../EventNotificationService.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -120,25 +120,21 @@ return EventNotificationService.availableDeliveryMethods.add(deliveryMethod); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#createEvent(java.lang.String, java.lang.String, java.lang.Long, java.lang.String, java.lang.String) - */ - public boolean createEvent(String scope, String name, Long eventSessionId, String defaultSubject, String defaultMessage) - throws InvalidParameterException { + @Override + public boolean createEvent(String scope, String name, Long eventSessionId, String defaultSubject, + String defaultMessage, boolean isHtmlFormat) throws InvalidParameterException { Event event = getEvent(scope, name, eventSessionId); if (event != null) { saveEvent(event); return false; } - event = new Event(scope, name, eventSessionId, defaultSubject, defaultMessage); + event = new Event(scope, name, eventSessionId, defaultSubject, defaultMessage, isHtmlFormat); event.referenceCounter++; saveEvent(event); return true; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#deleteEvent(java.lang.String, java.lang.String, java.lang.Long, java.lang.String) - */ + @Override public boolean deleteEvent(String scope, String name, Long eventSessionId) throws InvalidParameterException { if (scope == null) { throw new InvalidParameterException("Scope should not be null."); @@ -157,9 +153,7 @@ } } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#eventExists(java.lang.String, java.lang.String, java.lang.Long) - */ + @Override public boolean eventExists(String scope, String name, Long eventSessionId) throws InvalidParameterException { if (scope == null) { throw new InvalidParameterException("Scope should not be null."); @@ -177,9 +171,7 @@ } } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#getAvailableDeliveryMethods() - */ + @Override public Set getAvailableDeliveryMethods() { return EventNotificationService.availableDeliveryMethods; } @@ -188,9 +180,7 @@ return eventDAO; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#isSubscribed(java.lang.String, java.lang.String, java.lang.Long, java.lang.Long) - */ + @Override public boolean isSubscribed(String scope, String name, Long eventSessionId, Long userId) throws InvalidParameterException { if (scope == null) { throw new InvalidParameterException("Scope should not be null."); @@ -215,14 +205,12 @@ return isSubscribed; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#sendMessage(java.lang.Long, org.lamsfoundation.lams.events.AbstractDeliveryMethod, java.lang.String, java.lang.String) - */ - public boolean sendMessage(Long userId, AbstractDeliveryMethod deliveryMethod, String subject, String message) + @Override + public boolean sendMessage(Long userId, AbstractDeliveryMethod deliveryMethod, String subject, String message, boolean isHtmlFormat) throws InvalidParameterException { Event eventFailCopy = new Event(EventNotificationService.SINGLE_MESSAGE_SCOPE, - String.valueOf(System.currentTimeMillis()), null, subject, message); - String result = deliveryMethod.send(userId, subject, message); + String.valueOf(System.currentTimeMillis()), null, subject, message, isHtmlFormat); + String result = deliveryMethod.send(userId, subject, message, isHtmlFormat); if (result != null) { EventNotificationService.log.warn(messageService.getMessage("mail.error.occurred.while.sending.message", new Object[] { result })); @@ -238,11 +226,9 @@ return true; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#sendMessage(java.lang.Long[], org.lamsfoundation.lams.events.AbstractDeliveryMethod, java.lang.String, java.lang.String) - */ + @Override public boolean sendMessage(final Long[] userId, final AbstractDeliveryMethod deliveryMethod, final String subject, - final String message) throws InvalidParameterException { + final String message, final boolean isHtmlFormat) throws InvalidParameterException { if (userId == null) { throw new InvalidParameterException("User IDs array should not be null."); } @@ -251,16 +237,16 @@ } if (userId.length > 0) { if (userId.length == 1) { - return sendMessage(userId[0], deliveryMethod, subject, message); + return sendMessage(userId[0], deliveryMethod, subject, message, isHtmlFormat); } else { final Event event = new Event(EventNotificationService.SINGLE_MESSAGE_SCOPE, String.valueOf(System - .currentTimeMillis()), null, subject, message); + .currentTimeMillis()), null, subject, message, isHtmlFormat); event.referenceCounter++; event.notificationThread = new Thread(new Runnable() { public void run() { for (Long id : userId) { - String result = deliveryMethod.send(id, subject, message); + String result = deliveryMethod.send(id, subject, message, isHtmlFormat); if (result != null) { EventNotificationService.log.warn(messageService.getMessage( "mail.error.occurred.while.sending.message", @@ -290,9 +276,7 @@ this.userManagementService = userManagementService; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#subscribe(java.lang.String, java.lang.String, java.lang.Long, java.lang.Long, org.lamsfoundation.lams.events.AbstractDeliveryMethod, java.lang.Long) - */ + @Override public boolean subscribe(String scope, String name, Long eventSessionId, Long userId, AbstractDeliveryMethod deliveryMethod, Long periodicity) throws InvalidParameterException { if (scope == null) { @@ -323,9 +307,7 @@ } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#trigger(java.lang.String, java.lang.String, java.lang.Long) - */ + @Override public boolean trigger(String scope, String name, Long eventSessionId) throws InvalidParameterException { if (scope == null) { throw new InvalidParameterException("Scope should not be null."); @@ -346,9 +328,7 @@ return true; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#trigger(java.lang.String, java.lang.String, java.lang.Long, java.lang.Object[] parameterValues) - */ + @Override public boolean trigger(String scope, String name, Long eventSessionId, Object[] parameterValues) throws InvalidParameterException { if (scope == null) { @@ -378,9 +358,7 @@ return true; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#trigger(java.lang.String, java.lang.String, java.lang.Long, java.lang.String, java.lang.String) - */ + @Override public boolean trigger(String scope, String name, Long eventSessionId, String title, String message) throws InvalidParameterException { if (scope == null) { @@ -402,9 +380,7 @@ return true; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#triggerForSingleUser(java.lang.String, java.lang.String, java.lang.Long, java.lang.Long) - */ + @Override public boolean triggerForSingleUser(String scope, String name, Long eventSessionId, Long userId) throws InvalidParameterException { if (scope == null) { @@ -431,9 +407,7 @@ return notificationSuccessful; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#triggerForSingleUser(java.lang.String, java.lang.String, java.lang.Long, java.lang.Long) - */ + @Override public boolean triggerForSingleUser(String scope, String name, Long eventSessionId, Long userId, Object[] parameterValues) throws InvalidParameterException { if (scope == null) { @@ -468,9 +442,7 @@ return notificationSuccessful; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#triggerForSingleUser(java.lang.String, java.lang.String, java.lang.Long, java.lang.Long, java.lang.String, java.lang.String) - */ + @Override public boolean triggerForSingleUser(String scope, String name, Long eventSessionId, Long userId, String subject, String message) throws InvalidParameterException { if (scope == null) { @@ -500,9 +472,7 @@ return notificationSuccessful; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#unsubscribe(java.lang.String, java.lang.String, java.lang.Long, java.lang.Long) - */ + @Override public boolean unsubscribe(String scope, String name, Long eventSessionId, Long userId) throws InvalidParameterException { if (scope == null) { throw new InvalidParameterException("Scope should not be null."); @@ -531,9 +501,7 @@ return subscriptionFound; } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.events.IEventNotificationService#unsubscribe(java.lang.String, java.lang.String, java.lang.Long, java.lang.Long, org.lamsfoundation.lams.events.AbstractDeliveryMethod) - */ + @Override public boolean unsubscribe(String scope, String name, Long eventSessionId, Long userId, AbstractDeliveryMethod deliveryMethod) throws InvalidParameterException { if (scope == null) { Index: lams_common/src/java/org/lamsfoundation/lams/events/IEventNotificationService.java =================================================================== diff -u -r6e4ed3724bd76354c2ee43c88979385c4a162a0e -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_common/src/java/org/lamsfoundation/lams/events/IEventNotificationService.java (.../IEventNotificationService.java) (revision 6e4ed3724bd76354c2ee43c88979385c4a162a0e) +++ lams_common/src/java/org/lamsfoundation/lams/events/IEventNotificationService.java (.../IEventNotificationService.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -48,11 +48,12 @@ * @param eventSessionId session ID of the event * @param defaultSubject subject of the message send to users; it can be altered when triggering the event * @param defaultMessage body of the message send to users; it can be altered when triggering the event + * @param isHtmlFormat whether the message is of HTML content-type or plain text * @return true if the event did not exist and was correctly created * @throws InvalidParameterException if scope was null or name was blank */ public abstract boolean createEvent(String scope, String name, Long eventSessionId, String defaultSubject, - String defaultMessage) throws InvalidParameterException; + String defaultMessage, boolean isHtmlFormat) throws InvalidParameterException; /** * Deletes an event. @@ -98,10 +99,11 @@ * @param deliveryMethod method of messaged delivery to use * @param subject subject of the message to send * @param message body of the message to send + * @param isHtmlFormat whether the message is of HTML content-type or plain text * @return true if the message was succefully send to the user * @throws InvalidParameterException if userId or delivery method are null */ - public abstract boolean sendMessage(Long userId, AbstractDeliveryMethod deliveryMethod, String subject, String message) + public abstract boolean sendMessage(Long userId, AbstractDeliveryMethod deliveryMethod, String subject, String message, boolean isHtmlFormat) throws InvalidParameterException; /** @@ -111,10 +113,11 @@ * @param deliveryMethod method of messaged delivery to use * @param subject subject of the message to send * @param message body of the message to send + * @param isHtmlFormat whether the message is of HTML content-type or plain text * @return true if the message was succefully send to all the users; as in the current implementation a separate thread is used for sending messages, this method always returns true * @throws InvalidParameterException if userId array or delivery method are null */ - public abstract boolean sendMessage(Long[] userId, AbstractDeliveryMethod deliveryMethod, String subject, String message) + public abstract boolean sendMessage(Long[] userId, AbstractDeliveryMethod deliveryMethod, String subject, String message, boolean isHtmlFormat) throws InvalidParameterException; /** Index: lams_common/src/java/org/lamsfoundation/lams/events/ResendMessagesJob.java =================================================================== diff -u -r6e4ed3724bd76354c2ee43c88979385c4a162a0e -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_common/src/java/org/lamsfoundation/lams/events/ResendMessagesJob.java (.../ResendMessagesJob.java) (revision 6e4ed3724bd76354c2ee43c88979385c4a162a0e) +++ lams_common/src/java/org/lamsfoundation/lams/events/ResendMessagesJob.java (.../ResendMessagesJob.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -47,8 +47,9 @@ User.class, subscription.getUserId().intValue()); body.append(user.getLogin()).append('\n'); } - ((DeliveryMethodMail) IEventNotificationService.DELIVERY_METHOD_MAIL).notifyAdmin( - ResendMessagesJob.messageService.getMessage("mail.resend.abandon.subject"), body.toString()); + ((DeliveryMethodMail) IEventNotificationService.DELIVERY_METHOD_MAIL).notifyAdmin( + ResendMessagesJob.messageService.getMessage("mail.resend.abandon.subject"), + body.toString(), event.isHtmlFormat()); } } else { @@ -58,7 +59,8 @@ .getPeriodicity()) { String subject = event.getSubject() == null ? event.getDefaultSubject() : event.getSubject(); String message = event.getMessage() == null ? event.getDefaultMessage() : event.getMessage(); - subscription.notifyUser(subject, message); + boolean isHtmlFormat = event.isHtmlFormat(); + subscription.notifyUser(subject, message, isHtmlFormat); } } } Index: lams_common/src/java/org/lamsfoundation/lams/events/Subscription.java =================================================================== diff -u -rd0297b87cb5cfb713673b3f7903722d0d96adfef -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_common/src/java/org/lamsfoundation/lams/events/Subscription.java (.../Subscription.java) (revision d0297b87cb5cfb713673b3f7903722d0d96adfef) +++ lams_common/src/java/org/lamsfoundation/lams/events/Subscription.java (.../Subscription.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -159,10 +159,12 @@ * Properties storing information of the last notification attempt are updated. * @param subject subject of the message; null if not applicable * @param message message to send + * @param isHtmlFormat + * whether the message is of HTML content-type or plain text */ - protected void notifyUser(String subject, String message) { + protected void notifyUser(String subject, String message, boolean isHtmlFormat) { lastOperationTime = new Date(); - lastOperationMessage = deliveryMethod.send(userId, subject, message); + lastOperationMessage = deliveryMethod.send(userId, subject, message, isHtmlFormat); } protected void setPeriodicity(Long periodicity) { Index: lams_common/src/java/org/lamsfoundation/lams/util/Emailer.java =================================================================== diff -u -r52812e8fda3e9cd9388d0e8626ba20fdd20dfb2d -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_common/src/java/org/lamsfoundation/lams/util/Emailer.java (.../Emailer.java) (revision 52812e8fda3e9cd9388d0e8626ba20fdd20dfb2d) +++ lams_common/src/java/org/lamsfoundation/lams/util/Emailer.java (.../Emailer.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -23,115 +23,120 @@ */ public class Emailer { - public Emailer() { + public Emailer() { + } + + /** + * Sends an email sourced from support email + * + * @param subject + * the subject of the email + * @param to + * the email of the recipient + * @param body + * the body of the email + * @param isHtmlFormat + * whether the message is of HTML content-type or plain text + */ + public static void sendFromSupportEmail(String subject, String to, String body, boolean isHtmlFormat) + throws AddressException, MessagingException, UnsupportedEncodingException { + String supportEmail = Configuration.get(ConfigurationKeys.LAMS_ADMIN_EMAIL); + Properties properties = new Properties(); + send(subject, to, supportEmail, body, isHtmlFormat, properties); + } + + /** + * Creates a mail session with authentication if it is required, ie if it has been set up with SMTP authentication + * in the config page + * + * @param properties + * @return + */ + public static Session getMailSession(Properties properties) { + Session session; + boolean useInternalSMTPServer = Boolean.parseBoolean(Configuration + .get(ConfigurationKeys.USE_INTERNAL_SMTP_SERVER)); + if (!useInternalSMTPServer) { + String smtpServer = Configuration.get(ConfigurationKeys.SMTP_SERVER); + properties.put("mail.smtp.host", smtpServer); } - /** - * Sends an email sourced from support email - * - * @param subject - * the subject of the email - * @param to - * the email of the recipient - * @param body - * the body of the email - */ - public static void sendFromSupportEmail(String subject, String to, String body) throws AddressException, - MessagingException, UnsupportedEncodingException { - String supportEmail = Configuration.get(ConfigurationKeys.LAMS_ADMIN_EMAIL); - Properties properties = new Properties(); - send(subject, to, supportEmail, body, properties); + String smtpAuthUser = Configuration.get(ConfigurationKeys.SMTP_AUTH_USER); + String smtpAuthPass = Configuration.get(ConfigurationKeys.SMTP_AUTH_PASSWORD); + if (!useInternalSMTPServer && (smtpAuthUser != null) && !smtpAuthUser.trim().equals("")) { + properties.setProperty("mail.smtp.submitter", smtpAuthUser); + properties.setProperty("mail.smtp.auth", "true"); + SMTPAuthenticator auth = new SMTPAuthenticator(smtpAuthUser, smtpAuthPass); + session = Session.getInstance(properties, auth); + } else { + session = Session.getInstance(properties); } + return session; + } - /** - * Creates a mail session with authentication if it is required, ie if it - * has been set up with SMTP authentication in the config page - * - * @param properties - * @return - */ - public static Session getMailSession(Properties properties) { - Session session; - boolean useInternalSMTPServer = Boolean.parseBoolean(Configuration.get(ConfigurationKeys.USE_INTERNAL_SMTP_SERVER)); - if (! useInternalSMTPServer) { - String smtpServer = Configuration.get(ConfigurationKeys.SMTP_SERVER); - properties.put("mail.smtp.host", smtpServer); - } + /** + * Send email to recipients + * + * @param subject + * the subject of the email + * @param to + * the email of the recipient + * @param from + * the email to source the email from + * @param body + * the body of the email + * @param isHtmlFormat + * whether the message is of HTML content-type or plain text + */ + public static void send(String subject, String to, String from, String body, boolean isHtmlFormat, + Properties mailServerConfig) throws AddressException, MessagingException, UnsupportedEncodingException { - String smtpAuthUser = Configuration.get(ConfigurationKeys.SMTP_AUTH_USER); - String smtpAuthPass = Configuration.get(ConfigurationKeys.SMTP_AUTH_PASSWORD); - if (!useInternalSMTPServer && (smtpAuthUser != null) && !smtpAuthUser.trim().equals("")) { - properties.setProperty("mail.smtp.submitter", smtpAuthUser); - properties.setProperty("mail.smtp.auth", "true"); - SMTPAuthenticator auth = new SMTPAuthenticator(smtpAuthUser, smtpAuthPass); - session = Session.getInstance(properties, auth); - } else { - session = Session.getInstance(properties); - } - return session; - } + send(subject, to, "", from, "", body, isHtmlFormat, mailServerConfig); - /** - * Send email to recipients - * - * @param subject - * the subject of the email - * @param to - * the email of the recipient - * @param from - * the email to source the email from - * @param body - * the body of the email - */ - public static void send(String subject, String to, String from, String body, Properties mailServerConfig) - throws AddressException, MessagingException, UnsupportedEncodingException { + } - send(subject, to, "", from, "", body, mailServerConfig); - + /** + * Send email to recipients + * + * @param subject + * the subject of the email + * @param to + * the email of the recipient + * @param toPerson + * receiver's name + * @param from + * the email to source the email from + * @param fromPerson + * sender's name + * @param body + * the body of the email + * @param isHtmlFormat + * whether the message is of HTML content-type or plain text + */ + public static void send(String subject, String to, String toPerson, String from, String fromPerson, String body, + boolean isHtmlFormat, Properties mailServerConfig) throws AddressException, MessagingException, + UnsupportedEncodingException { - } + Session session = getMailSession(mailServerConfig); + boolean useInternalSMTPServer = Boolean.parseBoolean(Configuration + .get(ConfigurationKeys.USE_INTERNAL_SMTP_SERVER)); - /** - * Send email to recipients - * - * @param subject - * the subject of the email - * @param to - * the email of the recipient - * @param toPerson - * receiver's name - * @param from - * the email to source the email from - * @param fromPerson - * sender's name - * @param body - * the body of the email - */ - public static void send(String subject, String to, String toPerson, String from, String fromPerson, String body, Properties mailServerConfig) - throws AddressException, MessagingException, UnsupportedEncodingException { + MimeMessage message = new MimeMessage(session); + message.setFrom(new InternetAddress(from, fromPerson)); + message.addRecipient(RecipientType.TO, new InternetAddress(to, toPerson)); + message.setSubject(subject, "UTF-8"); + message.setText(body, "UTF-8"); + String contentType = (isHtmlFormat) ? "text/html; charset=UTF-8" : "text/plain; charset=UTF-8"; + message.addHeader("Content-Type", contentType); - Session session = getMailSession(mailServerConfig); - boolean useInternalSMTPServer = Boolean.parseBoolean(Configuration.get(ConfigurationKeys.USE_INTERNAL_SMTP_SERVER)); - - MimeMessage message = new MimeMessage(session); - message.setFrom(new InternetAddress(from, fromPerson)); - message.addRecipient(RecipientType.TO, new InternetAddress(to, toPerson)); - if (useInternalSMTPServer) { - message.setSubject(subject); - message.setText(body); - - MailQue myMailQue = new MailQue(); - myMailQue.queMail(message); - } else { - message.setSubject(subject, "UTF-8"); - message.setText(body, "UTF-8"); - message.addHeader("Content-Type", "text/plain; charset=UTF-8"); - - Transport.send(message); - } + if (useInternalSMTPServer) { + MailQue myMailQue = new MailQue(); + myMailQue.queMail(message); - } - + } else { + Transport.send(message); + } + } } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/EmailScheduleMessageJob.java =================================================================== diff -u -r1af4378c901cea902392d4ef17f9d990f25e16f3 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/EmailScheduleMessageJob.java (.../EmailScheduleMessageJob.java) (revision 1af4378c901cea902392d4ef17f9d990f25e16f3) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/EmailScheduleMessageJob.java (.../EmailScheduleMessageJob.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -68,11 +68,12 @@ lessonId, lessonIds, activityId, xDaystoFinish, orgId); for (User user : users) { + boolean isHtmlFormat = false; long userId = user.getUserId(); log.debug("Sending scheduled email to user [" + userId + "]."); eventNotificationService.sendMessage(userId, DeliveryMethodMail.getInstance(), monitoringService .getMessageService().getMessage("event.emailnotifications.email.subject", new Object[] {}), - emailBody); + emailBody, isHtmlFormat); } } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java =================================================================== diff -u -r813ab0cf9ff81d0832a7f7ec185ef9dc4ce1c987 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java (.../EmailNotificationsAction.java) (revision 813ab0cf9ff81d0832a7f7ec185ef9dc4ce1c987) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java (.../EmailNotificationsAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -232,11 +232,12 @@ String[] userIdStrs = request.getParameterValues("userId"); for (String userIdStr : userIdStrs) { long userId = Long.parseLong(userIdStr); + boolean isHtmlFormat = false; isSuccessfullySent &= eventNotificationService.sendMessage( userId, DeliveryMethodMail.getInstance(), monitoringService.getMessageService().getMessage("event.emailnotifications.email.subject", - new Object[] {}), emailBody); + new Object[] {}), emailBody, isHtmlFormat); } JSONObject.put("isSuccessfullySent", isSuccessfullySent); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java =================================================================== diff -u -r65e3365a66b2977b268fafdd0b9fe2e5eae732a4 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java (.../LearningAction.java) (revision 65e3365a66b2977b268fafdd0b9fe2e5eae732a4) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java (.../LearningAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -770,6 +770,8 @@ if ((mode != null) && !mode.isTeacher()) { Assessment assessment = (Assessment) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT); Long toolSessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); + final boolean isHtmlFormat = false; + if (assessment.isNotifyTeachersOnAttemptCompletion()) { List monitoringUsers = service.getMonitorsByToolSessionId(toolSessionId); if (monitoringUsers != null && !monitoringUsers.isEmpty()) { @@ -782,7 +784,8 @@ service.getEventNotificationService().sendMessage(monitoringUsersIds, DeliveryMethodMail.getInstance(), service.getLocalisedMessage("event.learner.completes.attempt.subject", null), - service.getLocalisedMessage("event.learner.completes.attempt.body", new Object[] { fullName })); + service.getLocalisedMessage("event.learner.completes.attempt.body", new Object[] { fullName }), + isHtmlFormat); } } } Index: lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java =================================================================== diff -u -rd76e13fea785246cc091078e2b8eb460cc7bf342 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java (.../LearningAction.java) (revision d76e13fea785246cc091078e2b8eb460cc7bf342) +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java (.../LearningAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -238,6 +238,8 @@ sessionMap.put(DacoConstants.ATTR_DACO, daco); if (daco.isNotifyTeachersOnLearnerEntry()) { + final boolean isHtmlFormat = false; + List monitoringUsers = service.getMonitorsByToolSessionId(sessionId); if (monitoringUsers != null && !monitoringUsers.isEmpty()) { Long[] monitoringUsersIds = new Long[monitoringUsers.size()]; @@ -247,7 +249,8 @@ String fullName = dacoUser.getLastName() + " " + dacoUser.getFirstName(); service.getEventNotificationService().sendMessage(monitoringUsersIds, DeliveryMethodMail.getInstance(), service.getLocalisedMessage("event.learnerentry.subject", null), - service.getLocalisedMessage("event.learnerentry.body", new Object[] { fullName })); + service.getLocalisedMessage("event.learnerentry.body", new Object[] { fullName }), + isHtmlFormat); } } return mapping.findForward(DacoConstants.SUCCESS); @@ -495,6 +498,8 @@ // notify teachers if (daco.isNotifyTeachersOnRecordSumbit()) { + final boolean isHtmlFormat = false; + List monitoringUsers = service.getMonitorsByToolSessionId(sessionId); if (monitoringUsers != null && !monitoringUsers.isEmpty()) { Long[] monitoringUsersIds = new Long[monitoringUsers.size()]; @@ -505,7 +510,8 @@ service.getEventNotificationService().sendMessage(monitoringUsersIds, DeliveryMethodMail.getInstance(), service.getLocalisedMessage("event.recordsubmit.subject", null), - service.getLocalisedMessage("event.recordsubmit.body", new Object[] { fullName })); + service.getLocalisedMessage("event.recordsubmit.body", new Object[] { fullName }), + isHtmlFormat); } } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -r901372af1b71238311d32a55f25ec8ba637bf5ca -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -1420,6 +1420,7 @@ ToolSession toolSession = toolService.getToolSession(sessionId); Long activityId = toolSession.getToolActivity().getActivityId(); ToolActivity activity = (ToolActivity) activityDAO.getActivityByActivityId(activityId, ToolActivity.class); + boolean isHtmlFormat = forum.isAllowRichEditor(); if (forum.isNotifyLearnersOnForumPosting()) { List learners = lessonService.getLearnersHaveAttemptedActivity(activity); @@ -1432,7 +1433,8 @@ getEventNotificationService().sendMessage(learnerIds.toArray(new Long[0]), DeliveryMethodMail.getInstance(), getLocalisedMessage("event.newposting.subject", new Object[] { forum.getTitle() }), - getLocalisedMessage("event.newposting.body", new Object[] { fullName, message.getBody() })); + getLocalisedMessage("event.newposting.body", new Object[] { fullName, message.getBody() }), + isHtmlFormat); } } @@ -1447,7 +1449,8 @@ getEventNotificationService().sendMessage(monitoringUsersIds.toArray(new Long[0]), DeliveryMethodMail.getInstance(), getLocalisedMessage("event.newposting.subject", new Object[] { forum.getTitle() }), - getLocalisedMessage("event.newposting.body", new Object[] { fullName, message.getBody() })); + getLocalisedMessage("event.newposting.body", new Object[] { fullName, message.getBody() }), + isHtmlFormat); } } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java =================================================================== diff -u -r813ab0cf9ff81d0832a7f7ec185ef9dc4ce1c987 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 813ab0cf9ff81d0832a7f7ec185ef9dc4ce1c987) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -285,10 +285,13 @@ } if (forum.isNotifyLearnersOnMarkRelease()) { + boolean isHtmlFormat = false; + forumService.getEventNotificationService().createEvent(ForumConstants.TOOL_SIGNATURE, ForumConstants.EVENT_NAME_NOTIFY_LEARNERS_ON_MARK_RELEASE, forum.getContentId(), forumService.getLocalisedMessage("event.mark.release.subject", null), - forumService.getLocalisedMessage("event.mark.release.body", null)); + forumService.getLocalisedMessage("event.mark.release.body", null), + isHtmlFormat); forumService.getEventNotificationService().subscribe(ForumConstants.TOOL_SIGNATURE, ForumConstants.EVENT_NAME_NOTIFY_LEARNERS_ON_MARK_RELEASE, forum.getContentId(), Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java =================================================================== diff -u -rde59f382658daefe4f6679aaaea621284d1c72cc -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision de59f382658daefe4f6679aaaea621284d1c72cc) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -824,6 +824,8 @@ // notify teachers if (imageGallery.isNotifyTeachersOnImageSumbit()) { + final boolean isHtmlFormat = false; + List monitoringUsers = service.getMonitorsByToolSessionId(sessionId); if (monitoringUsers != null && !monitoringUsers.isEmpty()) { Long[] monitoringUsersIds = new Long[monitoringUsers.size()]; @@ -833,7 +835,8 @@ String fullName = imageGalleryUser.getLastName() + " " + imageGalleryUser.getFirstName(); service.getEventNotificationService().sendMessage(monitoringUsersIds, DeliveryMethodMail.getInstance(), service.getLocalisedMessage("event.imagesubmit.subject", null), - service.getLocalisedMessage("event.imagesubmit.body", new Object[] { fullName })); + service.getLocalisedMessage("event.imagesubmit.body", new Object[] { fullName }), + isHtmlFormat); } } } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/LearningAction.java =================================================================== diff -u -raf0f333826569e48655569fbf9c8b13decd475b0 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/LearningAction.java (.../LearningAction.java) (revision af0f333826569e48655569fbf9c8b13decd475b0) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/LearningAction.java (.../LearningAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -390,6 +390,8 @@ Resource resource = resSession.getResource(); if (resource.isNotifyTeachersOnAssigmentSumbit()) { + final boolean isHtmlFormat = false; + List monitoringUsers = service.getMonitorsByToolSessionId(sessionId); if (monitoringUsers != null && !monitoringUsers.isEmpty()) { Long[] monitoringUsersIds = new Long[monitoringUsers.size()]; @@ -399,7 +401,8 @@ String fullName = resourceUser.getLastName() + " " + resourceUser.getFirstName(); service.getEventNotificationService().sendMessage(monitoringUsersIds, DeliveryMethodMail.getInstance(), service.getLocalisedMessage("event.assigment.submit.subject", null), - service.getLocalisedMessage("event.assigment.submit.body", new Object[] { fullName })); + service.getLocalisedMessage("event.assigment.submit.body", new Object[] { fullName }), + isHtmlFormat); } } return mapping.findForward(ResourceConstants.SUCCESS); Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java =================================================================== diff -u -r228482c7a091c7691a9fc9651e46a8d98e29a6e1 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java (.../LearnerAction.java) (revision 228482c7a091c7691a9fc9651e46a8d98e29a6e1) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java (.../LearnerAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -193,10 +193,11 @@ } if (content.isNotifyLearnersOnMarkRelease()) { + boolean isHtmlFormat = false; submitFilesService.getEventNotificationService().createEvent(SbmtConstants.TOOL_SIGNATURE, SbmtConstants.EVENT_NAME_NOTIFY_LEARNERS_ON_MARK_RELEASE, content.getContentID(), submitFilesService.getLocalisedMessage("event.mark.release.subject", null), - submitFilesService.getLocalisedMessage("event.mark.release.body", null)); + submitFilesService.getLocalisedMessage("event.mark.release.body", null), isHtmlFormat); submitFilesService.getEventNotificationService().subscribe(SbmtConstants.TOOL_SIGNATURE, SbmtConstants.EVENT_NAME_NOTIFY_LEARNERS_ON_MARK_RELEASE, content.getContentID(), @@ -266,6 +267,7 @@ SubmitFilesContent content = submitFilesService.getSessionById(sessionID).getContent(); if (content.isNotifyTeachersOnFileSubmit()) { + boolean isHtmlFormat = false; List monitoringUsers = submitFilesService.getMonitorsByToolSessionId(sessionID); if (monitoringUsers != null && !monitoringUsers.isEmpty()) { Long[] monitoringUsersIds = new Long[monitoringUsers.size()]; @@ -276,7 +278,8 @@ submitFilesService.getEventNotificationService().sendMessage(monitoringUsersIds, DeliveryMethodMail.getInstance(), submitFilesService.getLocalisedMessage("event.file.submit.subject", null), - submitFilesService.getLocalisedMessage("event.file.submit.body", new Object[] { fullName })); + submitFilesService.getLocalisedMessage("event.file.submit.body", new Object[] { fullName }), + isHtmlFormat); } } return mapping.getInputForward(); Index: lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/LearningAction.java =================================================================== diff -u -rda3ab23df4afd600475db0e6f4886a0358f849aa -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/LearningAction.java (.../LearningAction.java) (revision da3ab23df4afd600475db0e6f4886a0358f849aa) +++ lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/LearningAction.java (.../LearningAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -397,6 +397,8 @@ HttpSession ss = SessionManager.getSession(); UserDTO surveyUser = (UserDTO) ss.getAttribute(AttributeNames.USER); if (survey.isNotifyTeachersOnAnswerSumbit()) { + final boolean isHtmlFormat = false; + List monitoringUsers = service.getMonitorsByToolSessionId(sessionId); if (monitoringUsers != null && !monitoringUsers.isEmpty()) { Long[] monitoringUsersIds = new Long[monitoringUsers.size()]; @@ -406,7 +408,8 @@ String fullName = surveyUser.getLastName() + " " + surveyUser.getFirstName(); service.getEventNotificationService().sendMessage(monitoringUsersIds, DeliveryMethodMail.getInstance(), service.getLocalisedMessage("event.answer.submit.subject", null), - service.getLocalisedMessage("event.answer.submit.body", new Object[] { fullName })); + service.getLocalisedMessage("event.answer.submit.body", new Object[] { fullName }), + isHtmlFormat); } } return mapping.findForward(SurveyConstants.SUCCESS); Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/WikiPageAction.java =================================================================== diff -u -r95d3a8ab54accdb67b113b8fb22b607d99d8af91 -r84151d175a3fce3cd3ff1bd4eeccfd7cbef01802 --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/WikiPageAction.java (.../WikiPageAction.java) (revision 95d3a8ab54accdb67b113b8fb22b607d99d8af91) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/WikiPageAction.java (.../WikiPageAction.java) (revision 84151d175a3fce3cd3ff1bd4eeccfd7cbef01802) @@ -501,8 +501,9 @@ // first check whether the event exists and create it if it doesnt if (!notificationService.eventExists(WikiConstants.TOOL_SIGNATURE, WikiConstants.EVENT_NOTIFY_LEARNERS, toolSessionID)) { + boolean isHtmlFormat = false; notificationService.createEvent(WikiConstants.TOOL_SIGNATURE, WikiConstants.EVENT_NOTIFY_LEARNERS, - toolSessionID, null, null); + toolSessionID, null, null, isHtmlFormat); } // Get whether the user is subscribed @@ -543,6 +544,7 @@ // Notify all the monitors if (wikiSession.getWiki().isNotifyUpdates()) { + boolean isHtmlFormat = false; List users = wikiService.getMonitorsByToolSessionId(toolSessionID); Long[] monitoringUsersIds = new Long[users.size()]; @@ -564,7 +566,7 @@ wikiSession.getSessionName(), link }); notificationService.sendMessage(monitoringUsersIds, IEventNotificationService.DELIVERY_METHOD_MAIL, - subject, body); + subject, body, isHtmlFormat); } // trigger the event if exists for all the learners who are subscribed