Skip to content
Snippets Groups Projects
Commit 3d1be942 authored by srosse's avatar srosse
Browse files

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
parent 0e1251a6
No related branches found
No related tags found
No related merge requests found
......@@ -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)) {
......
......@@ -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
......@@ -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
......@@ -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(";","_");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment