From 3d1be942522b4ffd661f8d6b3dad3746617b247a Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Thu, 28 Jun 2018 18:11:37 +0200 Subject: [PATCH] OO-3561: add informations about the group of recipients especially for the outbox of the email sender in the member list course element and group tool --- .../memberlist/ui/MembersMailController.java | 47 ++++++++++++------- .../ui/_i18n/LocalStrings_de.properties | 6 +++ .../ui/_i18n/LocalStrings_en.properties | 8 +++- .../org/olat/core/util/mail/ContactList.java | 12 +++-- 4 files changed, 52 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java index 1b9898e9d7b..b82f12ecd25 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java +++ b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java @@ -21,7 +21,6 @@ package org.olat.commons.memberlist.ui; import java.io.File; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -112,8 +111,8 @@ public class MembersMailController extends FormBasicController { public MembersMailController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv, List<Member> ownerList, List<Member> coachList, List<Member> participantList, List<Member> waitingList, String bodyTemplate) { - super(ureq, wControl); - setTranslator(Util.createPackageTranslator(translator, MailHelper.class, ureq.getLocale())); + super(ureq, wControl, Util.createPackageTranslator(translator, MailHelper.class, ureq.getLocale())); + this.courseEnv = courseEnv; this.ownerList = ownerList; @@ -477,7 +476,7 @@ public class MembersMailController extends FormBasicController { } private void doSend(UserRequest ureq) { - ContactList contactList = new ContactList(""); + List<ContactList> contactList = new ArrayList<>(); if (courseEnv == null) { if(coachEl != null && coachEl.isAtLeastSelected(1)) { List<Long> identityKeys = new ArrayList<>(coachList.size()); @@ -485,7 +484,9 @@ public class MembersMailController extends FormBasicController { identityKeys.add(coach.getKey()); } List<Identity> coaches = securityManager.loadIdentityByKeys(identityKeys); - contactList.addAllIdentites(coaches); + ContactList coachList = new ContactList(translate("contact.list.coaches")); + coachList.addAllIdentites(coaches); + contactList.add(coachList); } if(participantEl != null && participantEl.isAtLeastSelected(1)) { @@ -494,7 +495,9 @@ public class MembersMailController extends FormBasicController { identityKeys.add(participant.getKey()); } List<Identity> participants = securityManager.loadIdentityByKeys(identityKeys); - contactList.addAllIdentites(participants); + ContactList participantList = new ContactList(translate("contact.list.participants")); + participantList.addAllIdentites(participants); + contactList.add(participantList); } if(waitingEl != null && waitingEl.isAtLeastSelected(1)) { @@ -503,13 +506,17 @@ public class MembersMailController extends FormBasicController { identityKeys.add(waiter.getKey()); } List<Identity> waiters = securityManager.loadIdentityByKeys(identityKeys); - contactList.addAllIdentites(waiters); + ContactList waitingList = new ContactList(translate("contact.list.waiting")); + waitingList.addAllIdentites(waiters); + contactList.add(waitingList); } } else { if(ownerEl != null && ownerEl.isAtLeastSelected(1)) { RepositoryEntry courseRepositoryEntry = courseEnv.getCourseGroupManager().getCourseEntry(); List<Identity> owners = repositoryService.getMembers(courseRepositoryEntry, GroupRoles.owner.name()); - contactList.addAllIdentites(owners); + ContactList ownerList = new ContactList(translate("contact.list.owners")); + ownerList.addAllIdentites(owners); + contactList.add(ownerList); } if(coachEl != null && coachEl.isAtLeastSelected(1)) { @@ -518,8 +525,10 @@ public class MembersMailController extends FormBasicController { sendToWhatYouSee.add(coach.getKey()); } CourseGroupManager cgm = courseEnv.getCourseGroupManager(); - avoidInvisibleMember(cgm.getCoachesFromBusinessGroups(), contactList, sendToWhatYouSee); - avoidInvisibleMember(cgm.getCoaches(), contactList, sendToWhatYouSee); + ContactList coachList = new ContactList(translate("contact.list.coaches")); + avoidInvisibleMember(cgm.getCoachesFromBusinessGroups(), coachList, sendToWhatYouSee); + avoidInvisibleMember(cgm.getCoaches(), coachList, sendToWhatYouSee); + contactList.add(coachList); } if(participantEl != null && participantEl.isAtLeastSelected(1)) { @@ -528,8 +537,10 @@ public class MembersMailController extends FormBasicController { sendToWhatYouSee.add(participant.getKey()); } CourseGroupManager cgm = courseEnv.getCourseGroupManager(); - avoidInvisibleMember(cgm.getParticipantsFromBusinessGroups(), contactList, sendToWhatYouSee); - avoidInvisibleMember(cgm.getParticipants(), contactList, sendToWhatYouSee); + ContactList participantList = new ContactList(translate("contact.list.participants")); + avoidInvisibleMember(cgm.getParticipantsFromBusinessGroups(), participantList, sendToWhatYouSee); + avoidInvisibleMember(cgm.getParticipants(), participantList, sendToWhatYouSee); + contactList.add(participantList); } } @@ -540,23 +551,27 @@ public class MembersMailController extends FormBasicController { identityKeys.add(member.getKey()); } List<Identity> selectedIdentities = securityManager.loadIdentityByKeys(identityKeys); - contactList.addAllIdentites(selectedIdentities); + ContactList otherList = new ContactList(translate("contact.list.others")); + otherList.addAllIdentites(selectedIdentities); + contactList.add(otherList); } if(externalEl != null && externalEl.isAtLeastSelected(1)) { String value = externalAddressesEl.getValue(); if(StringHelper.containsNonWhitespace(value)) { + ContactList externalList = new ContactList(translate("contact.list.external")); for(StringTokenizer tokenizer= new StringTokenizer(value, ",\r\n", false); tokenizer.hasMoreTokens(); ) { String email = tokenizer.nextToken().trim(); - contactList.add(email); + externalList.add(email); } + contactList.add(externalList); } } doSendEmailToMember(ureq, contactList); } - private void doSendEmailToMember(UserRequest ureq, ContactList contactList) { + private void doSendEmailToMember(UserRequest ureq, List<ContactList> contactList) { boolean success = false; try { File[] attachmentArr = getAttachments(); @@ -564,7 +579,7 @@ public class MembersMailController extends FormBasicController { MailBundle bundle = new MailBundle(); bundle.setContext(context); bundle.setFromId(getIdentity()); - bundle.setContactLists(Collections.singletonList(contactList)); + bundle.setContactLists(contactList); bundle.setContent(subjectEl.getValue(), bodyEl.getValue(), attachmentArr); MailerResult result = mailService.sendMessage(bundle); if(copyFromEl.isAtLeastSelected(1)) { diff --git a/src/main/java/org/olat/commons/memberlist/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/commons/memberlist/ui/_i18n/LocalStrings_de.properties index c1d6e89cbe9..e47919630ff 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/commons/memberlist/ui/_i18n/LocalStrings_de.properties @@ -3,3 +3,9 @@ table.header.firstTime=Beitritt table.header.lastTime=Zuletzt besucht table.header.online=$org.olat.group.ui.main\:table.header.online nomembers=Keine Mitglieder +contact.list.external=Externe Empf\u00E4nger +contact.list.others=Diverse +contact.list.participants=Teilnehmer +contact.list.coaches=Betreuer +contact.list.owners=Besitzer +contact.list.waiting=Warteliste diff --git a/src/main/java/org/olat/commons/memberlist/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/commons/memberlist/ui/_i18n/LocalStrings_en.properties index 3ffdcd55cdd..95178e11b1e 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/commons/memberlist/ui/_i18n/LocalStrings_en.properties @@ -2,4 +2,10 @@ table.header.firstTime=Registration table.header.lastTime=Last visit table.header.online=$org.olat.group.ui.main\:table.header.online -nomembers=No members \ No newline at end of file +nomembers=No members +contact.list.external=External recipients +contact.list.others=Divers +contact.list.participants=Participants +contact.list.coaches=Coaches +contact.list.owners=Owners +contact.list.waiting=Waiting list \ No newline at end of file diff --git a/src/main/java/org/olat/core/util/mail/ContactList.java b/src/main/java/org/olat/core/util/mail/ContactList.java index 75ec7da502a..01e516f469a 100644 --- a/src/main/java/org/olat/core/util/mail/ContactList.java +++ b/src/main/java/org/olat/core/util/mail/ContactList.java @@ -38,7 +38,8 @@ import javax.mail.internet.InternetAddress; import org.olat.core.id.Identity; import org.olat.core.id.UserConstants; -import org.olat.core.logging.LogDelegator; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; /** @@ -56,7 +57,10 @@ import org.olat.core.util.StringHelper; * @author patrick */ -public class ContactList extends LogDelegator { +public class ContactList { + + private static final OLog log = Tracing.createLoggerFor(ContactList.class); + private String name; private String description; //container for addresses contributed as strings @@ -152,7 +156,7 @@ public class ContactList extends LogDelegator { rfc2047name = javax.mail.internet.MimeUtility.encodeWord(name, "UTF-8", null); } catch (java.io.UnsupportedEncodingException e) { - logWarn("Error MIME-encoding name: " + e, e); + log.warn("Error MIME-encoding name: " + e, e); rfc2047name = name; } @@ -303,7 +307,7 @@ public class ContactList extends LogDelegator { private void setName(String nameP) { if (!StringHelper.containsNoneOfCoDouSemi(nameP)){ - logWarn("Contact list name \"" + nameP + "\" doesn't match "+ StringHelper.ALL_WITHOUT_COMMA_2POINT_STRPNT, null); + log.warn("Contact list name \"" + nameP + "\" doesn't match "+ StringHelper.ALL_WITHOUT_COMMA_2POINT_STRPNT, null); //replace bad chars with bad char in rfc compliant comments nameP = nameP.replaceAll(":","¦"); nameP = nameP.replaceAll(";","_"); -- GitLab