From 59515e907ea4b96267701b07eef8960693eebd72 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 24 Nov 2015 21:43:02 +0100 Subject: [PATCH] OO-1801: in the batch emails to groups, show the list of groups in the field "To" --- .../elements/table/FlexiTableElementImpl.java | 1 + .../org/olat/core/util/mail/ContactList.java | 3 -- .../AbstractBusinessGroupListController.java | 20 +++++++++---- .../BGEmailCompositionStepController.java | 29 +++++++++++++------ .../wizard/_i18n/LocalStrings_de.properties | 1 + .../wizard/_i18n/LocalStrings_en.properties | 1 + 6 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java index 9f040928bab..ad3d2162679 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java @@ -1312,6 +1312,7 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle @Override public void deselectAll() { + component.setDirty(true); multiSelectedIndex = null; } 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 3aec991115d..252a394c0b6 100644 --- a/src/main/java/org/olat/core/util/mail/ContactList.java +++ b/src/main/java/org/olat/core/util/mail/ContactList.java @@ -120,7 +120,6 @@ public class ContactList extends LogDelegator { */ public void add(Identity identity) { String email = identity.getUser().getProperty(UserConstants.EMAIL, null); - //fxdiff VCRP-5 if (email == null) { logError("No email available for identity::" + identity.getName() + " - can not add to contact list", null); return; @@ -130,7 +129,6 @@ public class ContactList extends LogDelegator { public void remove(Identity identity) { String email = identity.getUser().getProperty(UserConstants.EMAIL, null); - //fxdiff VCRP-5 if (email == null) { logError("No email available for identity::" + identity.getName() + " - can not remove from contact list", null); return; @@ -203,7 +201,6 @@ public class ContactList extends LogDelegator { * * @return */ - //fxdiff VCRP-16: intern mail system public List<String> getEmailsAsStrings() { List<String> ret = new ArrayList<String>(stringEmails.values()); /* 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 c73979c254c..62a0fc2c502 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java @@ -145,7 +145,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr private BGUserManagementController userManagementController; private BGMailNotificationEditController userManagementSendMailController; private BusinessGroupDeleteDialogBoxController deleteDialogBox; - private StepsMainRunController businessGroupWizard; + private StepsMainRunController emailWizard, businessGroupWizard; protected BusinessGroupSearchController searchCtrl; protected CloseableModalController cmc; @@ -459,6 +459,15 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr reloadModel(); } } + } else if(source == emailWizard) { + if(event == Event.CANCELLED_EVENT || event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) { + getWindowControl().pop(); + removeAsListenerAndDispose(emailWizard); + emailWizard = null; + if(event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) { + tableEl.deselectAll(); + } + } } else if (source == userManagementController) { cmc.deactivate(); if(event == Event.DONE_EVENT) { @@ -782,7 +791,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr * @param items */ private void doEmails(UserRequest ureq, List<? extends BusinessGroupRef> selectedItems) { - removeAsListenerAndDispose(businessGroupWizard); + removeAsListenerAndDispose(emailWizard); if(selectedItems == null || selectedItems.isEmpty()) { showWarning("error.select.one"); return; @@ -799,9 +808,9 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr } }; - businessGroupWizard = new StepsMainRunController(ureq, getWindowControl(), start, finish, null, translate("email.group"), "o_sel_groups_email_wizard"); - listenTo(businessGroupWizard); - getWindowControl().pushAsModalDialog(businessGroupWizard.getInitialComponent()); + emailWizard = new StepsMainRunController(ureq, getWindowControl(), start, finish, null, translate("email.group"), "o_sel_groups_email_wizard"); + listenTo(emailWizard); + getWindowControl().pushAsModalDialog(emailWizard.getInitialComponent()); } /** @@ -1057,6 +1066,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr protected abstract List<BGTableItem> searchTableItems(BusinessGroupQueryParams params); protected final int loadModel(BusinessGroupQueryParams params) { + this.lastSearchParams = params; if(params == null) { groupTableModel.setEntries(Collections.<BGTableItem>emptyList()); tableEl.reset(); diff --git a/src/main/java/org/olat/group/ui/wizard/BGEmailCompositionStepController.java b/src/main/java/org/olat/group/ui/wizard/BGEmailCompositionStepController.java index 4e5e22e3ddf..3d2d1b3ba1a 100644 --- a/src/main/java/org/olat/group/ui/wizard/BGEmailCompositionStepController.java +++ b/src/main/java/org/olat/group/ui/wizard/BGEmailCompositionStepController.java @@ -23,7 +23,6 @@ import java.io.File; import java.util.List; import org.olat.basesecurity.GroupRoles; -import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; @@ -44,6 +43,7 @@ import org.olat.core.util.mail.MailerResult; import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroupService; import org.olat.modules.co.ContactForm; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -53,25 +53,36 @@ public class BGEmailCompositionStepController extends StepFormBasicController private ContactForm contactForm; private final List<BusinessGroup> groups; - private final MailManager mailService; - private final BusinessGroupService businessGroupService; + + @Autowired + private MailManager mailService; + @Autowired + private BusinessGroupService businessGroupService; public BGEmailCompositionStepController(UserRequest ureq, WindowControl wControl, Form rootForm, StepsRunContext runContext, List<BusinessGroup> groups) { super(ureq, wControl, rootForm, runContext, LAYOUT_CUSTOM, "wrapper"); - - mailService = CoreSpringFactory.getImpl(MailManager.class); - businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); this.groups = groups; - initForm(ureq); } @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - - ContactList contacts = new ContactList("mails"); + StringBuilder groupNames = new StringBuilder(); + for(int i=0; i<5 && i<groups.size(); i++) { + if(groupNames.length() > 0) groupNames.append(" - "); + groupNames.append(groups.get(i).getName()); + } + + String contactsName; + if(groups.size() > 5) { + String otherGroups = Integer.toString(groups.size() - 5); + contactsName = translate("email.other.groups", new String[] { groupNames.toString(), otherGroups }); + } else { + contactsName = groupNames.toString(); + } + ContactList contacts = new ContactList(contactsName); Boolean sendToTutorObj = (Boolean)getFromRunContext("tutors"); boolean sendToTutors = sendToTutorObj == null ? false : sendToTutorObj.booleanValue(); diff --git a/src/main/java/org/olat/group/ui/wizard/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/group/ui/wizard/_i18n/LocalStrings_de.properties index 1e7478b56ce..c7de4831357 100644 --- a/src/main/java/org/olat/group/ui/wizard/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/group/ui/wizard/_i18n/LocalStrings_de.properties @@ -65,6 +65,7 @@ email.write.description=Email schreiben email.select.receivers=E-Mail verschicken email.select.receiver.tutor=Betreuer email.select.receiver.participant=Teilnehmer +email.other.groups={0} und {1} anderen Gruppen users.manage.title=Benutzer verwalten users.manage.desc=Benutzer verwalten users.email.title=Email versenden diff --git a/src/main/java/org/olat/group/ui/wizard/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/group/ui/wizard/_i18n/LocalStrings_en.properties index 8b7aedf48de..6d3d751e6b6 100644 --- a/src/main/java/org/olat/group/ui/wizard/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/group/ui/wizard/_i18n/LocalStrings_en.properties @@ -34,6 +34,7 @@ copy.wizard.bgstep=Copy "{0}" create.form.error.emptylist=Please indicate at least one group name create.form.error.numberOrNull=Only figures, please\! (Or else leave blank) create.form.title.max=Intended number of <br>participants +email.other.groups={0} and {1} other groups email.select.receiver.description=Recipient email.select.receiver.participant=Participants email.select.receiver.title=Recipient -- GitLab