From 39cd795e6e296996dbaab790518ae266d410cbea Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 2 Jun 2017 10:11:42 +0200 Subject: [PATCH] OO-2796: show more informations by e-mail errors --- .../den/DENManageParticipantsController.java | 2 +- .../securitygroup/gui/GroupController.java | 4 +- .../user/course/CourseOverviewController.java | 4 +- .../user/groups/GroupOverviewController.java | 2 +- .../olat/basesecurity/ui/GroupController.java | 4 +- .../org/olat/core/util/mail/MailHelper.java | 112 +++++++++++------- .../org/olat/core/util/mail/MailerResult.java | 31 +++-- .../mail/_i18n/LocalStrings_de.properties | 2 + .../mail/_i18n/LocalStrings_en.properties | 2 + .../util/mail/manager/MailManagerImpl.java | 2 + .../core/util/mail/ui/MailListController.java | 2 +- .../ui/SendDocumentsByEMailController.java | 2 +- .../member/MembersOverviewController.java | 2 +- .../course/nodes/en/EnrollmentManager.java | 8 +- .../projectbroker/ProjectGroupController.java | 2 +- .../nodes/ta/TACourseNodeEditController.java | 2 +- .../ui/CourseReminderLogsController.java | 2 +- .../ui/CourseSendReminderListController.java | 2 +- .../edit/BusinessGroupMembersController.java | 2 +- .../AbstractBusinessGroupListController.java | 2 +- .../modules/co/ContactFormController.java | 34 ++---- .../repository/handlers/CourseHandler.java | 2 +- .../author/RepositoryMembersController.java | 2 +- .../wizard/UnpublishResourceCallback.java | 2 +- 24 files changed, 134 insertions(+), 97 deletions(-) diff --git a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java index f0cfb7631a1..2a256914f0e 100644 --- a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java +++ b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java @@ -241,7 +241,7 @@ public class DENManageParticipantsController extends BasicController { MailBundle ccBundles = mailManager.makeMailBundle(context, sender, notificationCtr.getMailTemplate(), sender, metaId, result); result.append(mailManager.sendMessage(ccBundles)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } notificationCmc.deactivate(); selectedIds.clear(); diff --git a/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java b/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java index f5ab938677e..9dd08931f1f 100644 --- a/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java +++ b/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java @@ -541,7 +541,7 @@ public class GroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } } @@ -588,7 +588,7 @@ public class GroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.appendErrorsAndWarnings(result, errorMessage, infoMessage, ureq.getLocale()); + MailHelper.appendErrorsAndWarnings(result, errorMessage, infoMessage, ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } // report any errors on screen if (infoMessage.length() > 0) getWindowControl().setWarning(infoMessage.toString()); diff --git a/src/main/java/org/olat/admin/user/course/CourseOverviewController.java b/src/main/java/org/olat/admin/user/course/CourseOverviewController.java index 6e1db8aca41..a3b696987c5 100644 --- a/src/main/java/org/olat/admin/user/course/CourseOverviewController.java +++ b/src/main/java/org/olat/admin/user/course/CourseOverviewController.java @@ -493,7 +493,7 @@ public class CourseOverviewController extends BasicController { //make sure all is committed before loading the model again (I see issues without) DBFactory.getInstance().commitAndCloseSession(); - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } /** @@ -564,7 +564,7 @@ public class CourseOverviewController extends BasicController { MailPackage mailing = new MailPackage(doSendMail); // 2) remove as participant businessGroupService.removeParticipants(getIdentity(), membersToRemove, group, mailing); - MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } } diff --git a/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java b/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java index f2ed51d1ec4..cc80983c1b1 100644 --- a/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java +++ b/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java @@ -325,7 +325,7 @@ public class GroupOverviewController extends BasicController { MailPackage mailing = new MailPackage(doSendMail); // 2) remove as participant businessGroupService.removeParticipants(getIdentity(), Collections.singletonList(identity), group, mailing); - MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } } diff --git a/src/main/java/org/olat/basesecurity/ui/GroupController.java b/src/main/java/org/olat/basesecurity/ui/GroupController.java index c73e58c5f96..466f356ecba 100644 --- a/src/main/java/org/olat/basesecurity/ui/GroupController.java +++ b/src/main/java/org/olat/basesecurity/ui/GroupController.java @@ -551,7 +551,7 @@ public class GroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } } @@ -598,7 +598,7 @@ public class GroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.appendErrorsAndWarnings(result, errorMessage, infoMessage, ureq.getLocale()); + MailHelper.appendErrorsAndWarnings(result, errorMessage, infoMessage, ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } // report any errors on screen if (infoMessage.length() > 0) getWindowControl().setWarning(infoMessage.toString()); diff --git a/src/main/java/org/olat/core/util/mail/MailHelper.java b/src/main/java/org/olat/core/util/mail/MailHelper.java index 440cda4f91f..5d081370450 100644 --- a/src/main/java/org/olat/core/util/mail/MailHelper.java +++ b/src/main/java/org/olat/core/util/mail/MailHelper.java @@ -40,6 +40,7 @@ import org.olat.core.id.Identity; import org.olat.core.id.Preferences; import org.olat.core.id.User; import org.olat.core.id.UserConstants; +import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.i18n.I18nManager; import org.olat.core.util.i18n.I18nModule; @@ -170,15 +171,19 @@ public class MailHelper { * @param wControl The current window controller * @param locale The users local */ - public static void printErrorsAndWarnings(MailerResult mailerResult, WindowControl wControl, Locale locale) { + public static void printErrorsAndWarnings(MailerResult mailerResult, WindowControl wControl, boolean admin, Locale locale) { + if(mailerResult == null || wControl == null) return; + StringBuilder errors = new StringBuilder(); StringBuilder warnings = new StringBuilder(); - appendErrorsAndWarnings(mailerResult, errors, warnings, locale); + appendErrorsAndWarnings(mailerResult, errors, warnings, admin, locale); // now print a warning to the users screen if (errors.length() > 0) { + if (warnings.length() > 0) { + errors.append(warnings); + } wControl.setError(errors.toString()); - } - if (warnings.length() > 0) { + } else if (warnings.length() > 0) { wControl.setWarning(warnings.toString()); } } @@ -194,44 +199,72 @@ public class MailHelper { * @param warnings StringBuilder for the warnings * @param locale The users local */ - public static void appendErrorsAndWarnings(MailerResult mailerResult, StringBuilder errors, StringBuilder warnings, Locale locale) { - Translator trans = Util.createPackageTranslator(MailerResult.class, locale); + public static void appendErrorsAndWarnings(MailerResult mailerResult, StringBuilder errors, StringBuilder warnings, boolean admin, Locale locale) { + if(mailerResult == null) return; + int returnCode = mailerResult.getReturnCode(); - List<Identity> failedIdentites = mailerResult.getFailedIdentites(); + Translator trans = Util.createPackageTranslator(MailerResult.class, locale); // first the severe errors - if (returnCode == MailerResult.SEND_GENERAL_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.send.general")).append("</p>"); - } else if (returnCode == MailerResult.SENDER_ADDRESS_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.sender.address")).append("</p>"); - } else if (returnCode == MailerResult.RECIPIENT_ADDRESS_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.recipient.address")).append("</p>"); - } else if (returnCode == MailerResult.TEMPLATE_GENERAL_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.template.general")).append("</p>"); - } else if (returnCode == MailerResult.TEMPLATE_PARSE_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.template.parse")).append("</p>"); - } else if (returnCode == MailerResult.ATTACHMENT_INVALID) { - errors.append("<p>").append(trans.translate("mailhelper.error.attachment")).append("</p>"); - } else { - // mail could be send, but maybe not to all the users (e.g. invalid mail - // adresses or a temporary problem) - if (failedIdentites != null && failedIdentites.size() > 0) { - warnings.append("<p>").append(trans.translate("mailhelper.error.failedusers")); - warnings.append("<ul>"); - for (Identity identity : failedIdentites) { - User user = identity.getUser(); - warnings.append("<li>"); - String fullname = UserManager.getInstance().getUserDisplayName(identity); - warnings.append(trans.translate("mailhelper.error.failedusers.user", new String[] { - user.getProperty(UserConstants.FIRSTNAME, null), - user.getProperty(UserConstants.LASTNAME, null), - user.getProperty(UserConstants.EMAIL, null), - fullname - })); - warnings.append("</li>"); + switch(returnCode) { + case MailerResult.MAILHOST_UNDEFINED: { + errors.append("<p><strong>").append(trans.translate("mailhelper.error.undefined.smtp")).append("</strong></p>"); + break; + } + case MailerResult.SEND_GENERAL_ERROR: { + errors.append("<p>").append(trans.translate("mailhelper.error.send.general")).append("</p>"); + if(admin && StringHelper.containsNonWhitespace(mailerResult.getErrorMessage())) { + errors.append("<p><em>").append(mailerResult.getErrorMessage()).append("</em></p>"); + } + break; + } + case MailerResult.SENDER_ADDRESS_ERROR: { + errors.append("<p>").append(trans.translate("mailhelper.error.sender.address")).append("</p>"); + if(admin && StringHelper.containsNonWhitespace(mailerResult.getErrorMessage())) { + errors.append("<p><em>").append(mailerResult.getErrorMessage()).append("</em></p>"); } - warnings.append("</ul></p>"); + break; + } + case MailerResult.TEMPLATE_GENERAL_ERROR: { + errors.append("<p>").append(trans.translate("mailhelper.error.template.general")).append("</p>"); + break; + } + case MailerResult.TEMPLATE_PARSE_ERROR: { + errors.append("<p>").append(trans.translate("mailhelper.error.template.parse")).append("</p>"); + break; } + case MailerResult.ATTACHMENT_INVALID: { + errors.append("<p>").append(trans.translate("mailhelper.error.attachment")).append("</p>"); + break; + } + } + + List<Identity> failedIdentites = mailerResult.getFailedIdentites(); + if (failedIdentites != null && failedIdentites.size() > 0) { + warnings.append("<p>").append(trans.translate("mailhelper.error.failedusers")); + warnings.append("<ul>"); + for (Identity identity : failedIdentites) { + User user = identity.getUser(); + warnings.append("<li>"); + String fullname = UserManager.getInstance().getUserDisplayName(identity); + warnings.append(trans.translate("mailhelper.error.failedusers.user", new String[] { + user.getProperty(UserConstants.FIRSTNAME, null), + user.getProperty(UserConstants.LASTNAME, null), + user.getProperty(UserConstants.EMAIL, null), + fullname + })); + warnings.append("</li>"); + } + warnings.append("</ul></p>"); + } + + List<String> invalidAddresses = mailerResult.getInvalidAddresses(); + if (invalidAddresses != null && invalidAddresses.size() > 0) { + warnings.append("<p>").append(trans.translate("mailhelper.error.failedadresses")).append("<ul>"); + for (String invalidAddress:invalidAddresses) { + warnings.append("<li>").append(invalidAddress).append("</li>"); + } + warnings.append("<ul>"); } } @@ -274,7 +307,4 @@ public class MailHelper { } return attachmentList; } -} - - - +} \ No newline at end of file diff --git a/src/main/java/org/olat/core/util/mail/MailerResult.java b/src/main/java/org/olat/core/util/mail/MailerResult.java index 2e4aed7a48a..032c5e63454 100644 --- a/src/main/java/org/olat/core/util/mail/MailerResult.java +++ b/src/main/java/org/olat/core/util/mail/MailerResult.java @@ -51,10 +51,12 @@ public class MailerResult { public static final int TEMPLATE_GENERAL_ERROR = 6; public static final int ATTACHMENT_INVALID = 7; + private final List<String> invalidAddresses = new ArrayList<>(); private final List<Identity> failedIdentites = new ArrayList<>(); private int returnCode = OK; + private String errorMessage; /** * @return list of identities to which the mail could not be send, e.g. @@ -75,6 +77,26 @@ public class MailerResult { return returnCode; } + /** + * Package helper to set the return code. + * + * @param returnCode + */ + public void setReturnCode(int returnCode) { + this.returnCode = returnCode; + } + + /** + * @return The error message returned by the JavaMail library and / or the mail server. + */ + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + /** * Package helper to add an identity to which for whatever reason the mail * could not be sent @@ -96,15 +118,6 @@ public class MailerResult { } } } - - /** - * Package helper to set the return code. - * - * @param returnCode - */ - public void setReturnCode(int returnCode) { - this.returnCode = returnCode; - } public void append(MailerResult newResult) { if(newResult.getReturnCode() != MailerResult.OK) { diff --git a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_de.properties index 2c3cbe5d568..003333d24ef 100644 --- a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_de.properties @@ -18,9 +18,11 @@ footer.no.userdata=<p>Diese Nachricht wurde automatisch von der Lernplattform Op footer.with.userdata=<p>Absender: {2} {3} ({0}), {4} {5}</p><p>Diese Nachricht wurde \u00FCber die Lernplattform OpenOLAT versandt: {1}</p> mailhelper.error.attachment=Die E-Mail konnte nicht verschickt werden\: ung\u00FCltiges Attachment. Bitte benachrichtigen Sie die Empf\u00E4nger manuell. +mailhelper.error.failedadresses=Diese Email Adresses konnte inval sein: mailhelper.error.failedusers=Den folgenden Benutzern kann Ihre Nachricht nicht zugestellt werden. Bitte benachrichtigen Sie diese Benutzer manuell und bitten Sie diese, ihre E-Mail-Adresse zu \u00FCberpr\u00FCfen\: mailhelper.error.failedusers.title = Gesperrte Empf\u00e4nger-Adressen mailhelper.error.failedusers.user = {0} {1} mit Mailadresse {2} und Login {3} +mailhelper.error.undefined.smtp=Der SMTP-Server ist nicht konfiguriert. mailhelper.error.recipient.address=Die E-Mail konnte nicht verschickt werden\: ung\u00FCltige Empf\u00E4ngeradresse. Bitte benachrichtigen Sie die Empf\u00E4nger manuell. mailhelper.error.send.general=Die E-Mail konnte aus unbekannten Problemen nicht verschickt werden. Bitte benachrichtigen Sie die Empf\u00E4nger manuell. mailhelper.error.sender.address=Die E-Mail konnte nicht verschickt werden\: ung\u00FCltige Absenderadresse. Bitte benachrichtigen Sie die Empf\u00E4nger manuell. diff --git a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_en.properties index 55e3802a2d8..5a032641129 100644 --- a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_en.properties @@ -52,9 +52,11 @@ mail.unmarked=Unmarked mail.unread=Unread mailhelper.error.addressinvalid=One or more addresses are invalid\: {0} mailhelper.error.attachment=Mail could not be sent\: invalid attachments. Please notify your recipients manually. +mailhelper.error.failedadresses=These e-mail addresses are perhaps invalid: mailhelper.error.failedusers=Your e-mail cannot be sent to the following users. Please notify them manually and ask them to check their e-mail address\: mailhelper.error.failedusers.title=Disabled recipients' addresses mailhelper.error.failedusers.user={0} {1} using mail address {2} and login {3} +mailhelper.error.undefined.smtp=The SMTP server is not configured. mailhelper.error.recipient.address=Mail could not be sent\: invalid recipient address. Please notify your recipients manually. mailhelper.error.send.general=Mail could not be sent due to unknown problems. Please notify your recipients manually. mailhelper.error.sender.address=Mail could not be sent\: invalid sender address. Please notify your recipients manually. 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 fcdcf4db538..5f15ce49b91 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 @@ -1694,9 +1694,11 @@ public class MailManagerImpl implements MailManager, InitializingBean { result.setReturnCode(MailerResult.RECIPIENT_ADDRESS_ERROR); result.addInvalidAddresses(e.getInvalidAddresses()); result.addInvalidAddresses(e.getValidUnsentAddresses()); + result.setErrorMessage(e.getMessage()); log.warn("Could not send mail", e); } catch (MessagingException e) { result.setReturnCode(MailerResult.SEND_GENERAL_ERROR); + result.setErrorMessage(e.getMessage()); log.warn("Could not send mail", e); } } diff --git a/src/main/java/org/olat/core/util/mail/ui/MailListController.java b/src/main/java/org/olat/core/util/mail/ui/MailListController.java index cf80e594682..779e9592376 100644 --- a/src/main/java/org/olat/core/util/mail/ui/MailListController.java +++ b/src/main/java/org/olat/core/util/mail/ui/MailListController.java @@ -356,7 +356,7 @@ public class MailListController extends BasicController implements Activateable2 DBMailLight mail = (DBMailLight) tableCtr.getTableDataModel().getObject(i); MailerResult result = forwardToMyRealMail(mail); if(result.getReturnCode() != MailerResult.OK) { - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } else { showInfo("mail.action.send.real.success", mail.getSubject()); } diff --git a/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java b/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java index ac5fa28c195..1472db08f7f 100644 --- a/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java +++ b/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java @@ -549,7 +549,7 @@ public class SendDocumentsByEMailController extends FormBasicController implemen result.append(mailManager.sendMessage(bundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } public class FileInfo { diff --git a/src/main/java/org/olat/course/member/MembersOverviewController.java b/src/main/java/org/olat/course/member/MembersOverviewController.java index 718dd80a593..25d01ba219c 100644 --- a/src/main/java/org/olat/course/member/MembersOverviewController.java +++ b/src/main/java/org/olat/course/member/MembersOverviewController.java @@ -387,7 +387,7 @@ public class MembersOverviewController extends BasicController implements Activa MailPackage mailing = new MailPackage(template, result, getWindowControl().getBusinessControl().getAsString(), template != null); businessGroupService.updateMemberships(getIdentity(), allModifications, mailing); - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); switchToAllMembers(ureq); } diff --git a/src/main/java/org/olat/course/nodes/en/EnrollmentManager.java b/src/main/java/org/olat/course/nodes/en/EnrollmentManager.java index 51d8252224a..a201774b274 100644 --- a/src/main/java/org/olat/course/nodes/en/EnrollmentManager.java +++ b/src/main/java/org/olat/course/nodes/en/EnrollmentManager.java @@ -150,7 +150,7 @@ public class EnrollmentManager extends BasicManager { if(bundle != null) { mailManager.sendMessage(bundle); } - MailHelper.printErrorsAndWarnings(result, wControl, trans.getLocale()); + MailHelper.printErrorsAndWarnings(result, wControl, false, trans.getLocale()); } public void doCancelEnrollmentInWaitingList(final Identity identity, final BusinessGroup enrolledWaitingListGroup, final ENCourseNode enNode, @@ -174,7 +174,7 @@ public class EnrollmentManager extends BasicManager { if(bundle != null) { mailManager.sendMessage(bundle); } - MailHelper.printErrorsAndWarnings(result, wControl, trans.getLocale()); + MailHelper.printErrorsAndWarnings(result, wControl, false, trans.getLocale()); } // Helper Methods @@ -396,7 +396,7 @@ public class EnrollmentManager extends BasicManager { if(bundle != null) { mailManager.sendMessage(bundle); } - MailHelper.printErrorsAndWarnings(result, wControl, trans.getLocale()); + MailHelper.printErrorsAndWarnings(result, wControl, false, trans.getLocale()); return true; } @@ -433,7 +433,7 @@ public class EnrollmentManager extends BasicManager { if(bundle != null) { mailManager.sendMessage(bundle); } - MailHelper.printErrorsAndWarnings(result, wControl, trans.getLocale()); + MailHelper.printErrorsAndWarnings(result, wControl, false, trans.getLocale()); return true; } diff --git a/src/main/java/org/olat/course/nodes/projectbroker/ProjectGroupController.java b/src/main/java/org/olat/course/nodes/projectbroker/ProjectGroupController.java index 1e562f6339c..0a2960162f2 100644 --- a/src/main/java/org/olat/course/nodes/projectbroker/ProjectGroupController.java +++ b/src/main/java/org/olat/course/nodes/projectbroker/ProjectGroupController.java @@ -190,7 +190,7 @@ public class ProjectGroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, urequest.getIdentity(), mailTemplate, null, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), urequest.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), urequest.getUserSession().getRoles().isOLATAdmin(), urequest.getLocale()); } fireEvent(urequest, Event.CHANGED_EVENT ); // Participant and waiting-list were changed => reload both diff --git a/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java b/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java index bb25b959299..213c2d01797 100644 --- a/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java +++ b/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java @@ -535,7 +535,7 @@ public class TACourseNodeEditController extends ActivateableTabbableDefaultContr MailBundle ccBundle = mailManager.makeMailBundle(context, sender, mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } } diff --git a/src/main/java/org/olat/course/reminder/ui/CourseReminderLogsController.java b/src/main/java/org/olat/course/reminder/ui/CourseReminderLogsController.java index 514d14cf257..ac952facba4 100644 --- a/src/main/java/org/olat/course/reminder/ui/CourseReminderLogsController.java +++ b/src/main/java/org/olat/course/reminder/ui/CourseReminderLogsController.java @@ -218,7 +218,7 @@ public class CourseReminderLogsController extends FormBasicController { List<Identity> identitiesToRemind = Collections.singletonList(id); MailerResult result = reminderService.sendReminder(reloadedReminder, identitiesToRemind); if(result.getReturnCode() != MailerResult.OK) { - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), false, getLocale()); } else { showInfo("reminder.resend"); } diff --git a/src/main/java/org/olat/course/reminder/ui/CourseSendReminderListController.java b/src/main/java/org/olat/course/reminder/ui/CourseSendReminderListController.java index 7e43e1381e3..8f57cf40f85 100644 --- a/src/main/java/org/olat/course/reminder/ui/CourseSendReminderListController.java +++ b/src/main/java/org/olat/course/reminder/ui/CourseSendReminderListController.java @@ -176,7 +176,7 @@ public class CourseSendReminderListController extends FormBasicController { List<Identity> identitiesToRemind = Collections.singletonList(id); MailerResult result = reminderService.sendReminder(reloadedReminder, identitiesToRemind); if(result.getReturnCode() != MailerResult.OK) { - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), false, getLocale()); } else { showInfo("reminder.resend"); } diff --git a/src/main/java/org/olat/group/ui/edit/BusinessGroupMembersController.java b/src/main/java/org/olat/group/ui/edit/BusinessGroupMembersController.java index 195cc234585..1369f2bbd10 100644 --- a/src/main/java/org/olat/group/ui/edit/BusinessGroupMembersController.java +++ b/src/main/java/org/olat/group/ui/edit/BusinessGroupMembersController.java @@ -247,6 +247,6 @@ public class BusinessGroupMembersController extends BasicController { MailTemplate template = (MailTemplate)runContext.get("mailTemplate"); MailPackage mailing = new MailPackage(template, getWindowControl().getBusinessControl().getAsString(), template != null); businessGroupService.updateMemberships(getIdentity(), allModifications, mailing); - MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), false, getLocale()); } } diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java index 9e6e9bb70dd..bab3d43ab63 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java @@ -910,7 +910,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr private void finishUserManagement(MembershipModification mod, List<BusinessGroup> groups, MailTemplate template, boolean sendMail) { MailPackage mailing = new MailPackage(template, getWindowControl().getBusinessControl().getAsString(), sendMail); businessGroupService.updateMembership(getIdentity(), mod, groups, mailing); - MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), false, getLocale()); } protected void doSearch(UserRequest ureq, SearchEvent event) { diff --git a/src/main/java/org/olat/modules/co/ContactFormController.java b/src/main/java/org/olat/modules/co/ContactFormController.java index 18353f54cdf..07b0b9dc591 100644 --- a/src/main/java/org/olat/modules/co/ContactFormController.java +++ b/src/main/java/org/olat/modules/co/ContactFormController.java @@ -40,7 +40,6 @@ import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.id.Identity; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; -import org.olat.core.util.StringHelper; import org.olat.core.util.mail.ContactList; import org.olat.core.util.mail.ContactMessage; import org.olat.core.util.mail.MailBundle; @@ -50,7 +49,6 @@ import org.olat.core.util.mail.MailHelper; import org.olat.core.util.mail.MailLoggingAction; import org.olat.core.util.mail.MailManager; import org.olat.core.util.mail.MailerResult; -import org.olat.user.UserManager; import org.springframework.beans.factory.annotation.Autowired; /** @@ -99,8 +97,6 @@ public class ContactFormController extends BasicController { @Autowired private MailManager mailService; - @Autowired - private UserManager userManager; /** * @@ -242,7 +238,7 @@ public class ContactFormController extends BasicController { ThreadLocalUserActivityLogger.log(MailLoggingAction.MAIL_SENT, getClass()); fireEvent(ureq, Event.DONE_EVENT); } else { - showError(result); + showError(ureq, result); fireEvent(ureq, Event.FAILED_EVENT); } } @@ -253,26 +249,18 @@ public class ContactFormController extends BasicController { cntctForm.setDisplayOnly(true); } - private void showError(MailerResult result) { + private void showError(UserRequest ureq, MailerResult result) { + StringBuilder errors = new StringBuilder(1024); + StringBuilder warnings = new StringBuilder(1024); + MailHelper.appendErrorsAndWarnings(result, errors, warnings, ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); + StringBuilder error = new StringBuilder(1024); error.append(translate("error.msg.send.nok")); - if(result != null && (result.getFailedIdentites().size() > 0 || result.getInvalidAddresses().size() > 0)) { - error.append("<br />"); - - StringBuilder ids = new StringBuilder(1024); - for(Identity identity:result.getFailedIdentites()) { - if(ids.length() > 0) ids.append(", "); - - String fullname = userManager.getUserDisplayName(identity); - if(StringHelper.containsNonWhitespace(fullname)) { - ids.append(fullname); - } - } - for(String invalidAddress:result.getInvalidAddresses()) { - if(ids.length() > 0) ids.append(", "); - ids.append(invalidAddress); - } - error.append(translate("error.msg.send.invalid.rcps", new String[]{ ids.toString() })); + if(errors.length() > 0) { + error.append("<br>").append(errors); + } + if(warnings.length() > 0) { + warnings.append("<br>").append(warnings); } getWindowControl().setError(error.toString()); } diff --git a/src/main/java/org/olat/repository/handlers/CourseHandler.java b/src/main/java/org/olat/repository/handlers/CourseHandler.java index 8dd88878ec6..2b367873147 100644 --- a/src/main/java/org/olat/repository/handlers/CourseHandler.java +++ b/src/main/java/org/olat/repository/handlers/CourseHandler.java @@ -547,7 +547,7 @@ public class CourseHandler implements RepositoryHandler { control.setInfo(CourseCreationMailHelper.getSuccessMessageString(uureq)); // send notification mail final MailerResult mr = CourseCreationMailHelper.sentNotificationMail(uureq, ccHelper.getConfiguration()); - MailHelper.printErrorsAndWarnings(mr, control, uureq.getLocale()); + MailHelper.printErrorsAndWarnings(mr, control, uureq.getUserSession().getRoles().isOLATAdmin(), uureq.getLocale()); return StepsMainRunController.DONE_MODIFIED; } }; diff --git a/src/main/java/org/olat/repository/ui/author/RepositoryMembersController.java b/src/main/java/org/olat/repository/ui/author/RepositoryMembersController.java index 2a4d75a895e..3a1d9b7b2bc 100644 --- a/src/main/java/org/olat/repository/ui/author/RepositoryMembersController.java +++ b/src/main/java/org/olat/repository/ui/author/RepositoryMembersController.java @@ -187,6 +187,6 @@ public class RepositoryMembersController extends AbstractMemberListController { List<BusinessGroupMembershipChange> allModifications = changes.generateBusinessGroupMembershipChange(members); MailPackage bgMailing = new MailPackage(template, result, getWindowControl().getBusinessControl().getAsString(), template != null); businessGroupService.updateMemberships(getIdentity(), allModifications, bgMailing); - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } } diff --git a/src/main/java/org/olat/repository/ui/author/wizard/UnpublishResourceCallback.java b/src/main/java/org/olat/repository/ui/author/wizard/UnpublishResourceCallback.java index 4f3e301cb60..09b580a1524 100644 --- a/src/main/java/org/olat/repository/ui/author/wizard/UnpublishResourceCallback.java +++ b/src/main/java/org/olat/repository/ui/author/wizard/UnpublishResourceCallback.java @@ -102,7 +102,7 @@ public class UnpublishResourceCallback implements StepRunnerCallback { StringBuilder errorMessage = new StringBuilder(); StringBuilder warningMessage = new StringBuilder(); - MailHelper.appendErrorsAndWarnings(result, errorMessage, warningMessage, ureq.getLocale()); + MailHelper.appendErrorsAndWarnings(result, errorMessage, warningMessage, ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); if (warningMessage.length() > 0) { wControl.setWarning(warningMessage.toString()); } -- GitLab