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 9f040928bab8fefd8a616825b314ef4c90fa7d3e..ad3d21626795d2275891443268ffdbcd007c5cb2 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 3aec991115d4d3f05237b499e93c5070001def6a..252a394c0b64a86c8d0d8283e8148732dcd1051a 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 c73979c254cb6287ee9144b69b0a26808106d38a..62a0fc2c5022b9529b78d55e2b2520d7fc162857 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 4e5e22e3ddf3038ef54a93ef68fafcf654dfac8e..3d2d1b3ba1a1ba14392e9c49b281f431847eb5c9 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 1e7478b56ce1b6b0623fe134d9fc42e76202ca2f..c7de4831357990d02c498ce6dc94bfd69a253c0d 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 8b7aedf48de01e5d846983805d59c4a659824bc8..6d3d751e6b6f8992279873624207b3395e7f69ff 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