diff --git a/src/main/java/org/olat/core/util/mail/MailModule.java b/src/main/java/org/olat/core/util/mail/MailModule.java index d14044263bdf82890e63381b4cac24ff4a611072..f34b790533aea63cd41aede2b467946b56f56ba0 100644 --- a/src/main/java/org/olat/core/util/mail/MailModule.java +++ b/src/main/java/org/olat/core/util/mail/MailModule.java @@ -47,6 +47,7 @@ public class MailModule extends AbstractSpringModule { private static final String INTERN_MAIL_SYSTEM = "internSystem"; private static final String SHOW_RECIPIENT_NAMES = "showRecipientNames"; private static final String SHOW_MAIL_ADDRESSES = "showMailAddresses"; + private static final String SHOW_RECIPIENTS_IN_INBOX = "showRecipientsInInbox"; private static final String RECEIVE_REAL_MAIL_USER_DEFAULT_SETTING = "receiveRealMailUserDefaultSetting"; @Value("${mail.intern:false}") @@ -55,6 +56,8 @@ public class MailModule extends AbstractSpringModule { private boolean showRecipientNames; @Value("${mail.showMailAddresses:false}") private boolean showMailAddresses; + @Value("${mail.showRecipientsInInbox:true}") + private boolean showRecipientsInInbox; @Value("${mail.receiveRealMailUserDefaultSetting:true}") private boolean receiveRealMailUserDefaultSetting; @@ -137,7 +140,16 @@ public class MailModule extends AbstractSpringModule { setStringProperty(SHOW_MAIL_ADDRESSES, showMailAddressesStr, true); } + public boolean isShowRecipientsInInbox() { + return showRecipientsInInbox; + } + public void setShowRecipientsInInbox(boolean showRecipientsInInbox) { + this.showRecipientsInInbox = showRecipientsInInbox; + String showRecipientsInInboxStr = showRecipientsInInbox ? "true" : "false"; + setStringProperty(SHOW_RECIPIENTS_IN_INBOX, showRecipientsInInboxStr, true); + } + /** * Users can receive real e-mail too. This setting is the default for * users. They can change it in Preferences Panel. @@ -189,4 +201,5 @@ public class MailModule extends AbstractSpringModule { public String getMailhost() { return WebappHelper.getMailConfig("mailhost"); } + } \ No newline at end of file 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 003333d24eff8251788bdcec61f8046a75592b5d..d73005f5bda5a1e333d40b80b76c842321887cac 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 @@ -53,6 +53,7 @@ mail.admin.intern.only=E-Mails an das interne OLAT Postfach zustellen mail.admin.intern.real.mail=E-Mails an das interne OLAT Postfach und die pers\u00f6nliche E-Mail Adresse zustellen mail.admin.show.mail.addresses=E-Mail Adressen anzeigen mail.admin.show.recipient.names=Namen der Empf\u00E4nger anzeigen +mail.admin.show.recipient.inbox=Empf\u00E4nger im Eingang anzeigen mail.settings=Einstellungen mail.template=E-Mail Vorlage mail.template.title=E-Mail Vorlage bearbeiten 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 5a0326411297d56da9d0a853df16f1f10af6cd14..ee80dfacf9dd502b8440a64b4d4f6d65967ae0fa 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 @@ -18,6 +18,7 @@ mail.admin.intern.only=Send e-mails to the internal OLAT inbox mail.admin.intern.real.mail=Send e-Mails to the internal OLAT inbox and the personal e-mail address mail.admin.show.mail.addresses=Show Email address mail.admin.show.recipient.names=Show the name of the recipient +mail.admin.show.recipient.inbox=Show recipients in the inbox mail.admin.title=E-mail inbox and outbox mail.attachments=Attachment mail.body=Message diff --git a/src/main/java/org/olat/core/util/mail/ui/MailContextResolver.java b/src/main/java/org/olat/core/util/mail/ui/MailContextResolver.java index 4214a38d442a762f374b63982c8a4700ac3d04d2..b5ca22395bf8e486188d4d299d63a6b7da787658 100644 --- a/src/main/java/org/olat/core/util/mail/ui/MailContextResolver.java +++ b/src/main/java/org/olat/core/util/mail/ui/MailContextResolver.java @@ -27,7 +27,6 @@ import org.olat.core.gui.control.WindowControl; /** * * Description:<br> - * TODO: srosse Class Description for MailContextResolver * * <P> * Initial Date: 30 mars 2011 <br> diff --git a/src/main/java/org/olat/core/util/mail/ui/MailController.java b/src/main/java/org/olat/core/util/mail/ui/MailController.java index e9e557cd4a644c8df367f8e72006d399eb6e73ec..a742eb6b39a226d3b73efc06d67687c84e514a9e 100644 --- a/src/main/java/org/olat/core/util/mail/ui/MailController.java +++ b/src/main/java/org/olat/core/util/mail/ui/MailController.java @@ -62,6 +62,7 @@ public class MailController extends FormBasicController { private String mapperBaseURI; private final boolean back; + private final boolean outbox; private final DBMail mail; private final List<DBMailAttachment> attachments; private boolean showAllRecipients = false; @@ -73,11 +74,12 @@ public class MailController extends FormBasicController { @Autowired private MailManager mailManager; - public MailController(UserRequest ureq, WindowControl wControl, DBMail mail, boolean back) { + public MailController(UserRequest ureq, WindowControl wControl, DBMail mail, boolean back, boolean outbox) { super(ureq, wControl, LAYOUT_VERTICAL); setTranslator(Util.createPackageTranslator(MailModule.class, ureq.getLocale())); this.mail = mail; this.back = back; + this.outbox = outbox; attachments = mailManager.getAttachments(mail); if(!attachments.isEmpty()) { mapperBaseURI = registerMapper(ureq, new MailAttachmentMapper(mailManager)); @@ -149,7 +151,7 @@ public class MailController extends FormBasicController { private String getRecipients() { StringBuilder sb = new StringBuilder(); - Set<String> groups = new HashSet<String>(); + Set<String> groups = new HashSet<>(); int recipientsCounter = 0; int groupCounter = 0; sb.append("<ul class='list-inline'>"); @@ -173,27 +175,29 @@ public class MailController extends FormBasicController { groups.add(group); groupCounter = 0; } - if (mailModule.isShowRecipientNames()) { - if (recipient.getRecipient() != null) { - // recipient is an individual - Identity repicientIdentity = recipient.getRecipient(); - sb.append("<li class='o_recipient'>"); - if(groupCounter> 0) sb.append(", "); - sb.append("<span>").append(getFullName(recipient)).append("</span>"); - if (mailModule.isShowMailAddresses()) { - sb.append(" <").append(repicientIdentity.getUser().getEmail()).append(">"); + if (outbox || mailModule.isShowRecipientsInInbox()) { + if (mailModule.isShowRecipientNames()) { + if (recipient.getRecipient() != null) { + // recipient is an individual + Identity repicientIdentity = recipient.getRecipient(); + sb.append("<li class='o_recipient'>"); + if(groupCounter> 0) sb.append(", "); + sb.append("<span>").append(getFullName(recipient)).append("</span>"); + if (mailModule.isShowMailAddresses()) { + sb.append(" <").append(repicientIdentity.getUser().getEmail()).append(">"); + } + sb.append("</li>"); + groupCounter++; + } + if (recipient.getEmailAddress() != null) { + // recipient is not an OpenOLAT identity but an external email + sb.append("<li class='o_mail'>"); + if(groupCounter > 0) sb.append(", "); + sb.append("<"); + sb.append(recipient.getEmailAddress()); + sb.append("></li>"); + groupCounter++; } - sb.append("</li>"); - groupCounter++; - } - if (recipient.getEmailAddress() != null) { - // recipient is not an OpenOLAT identity but an external email - sb.append("<li class='o_mail'>"); - if(groupCounter > 0) sb.append(", "); - sb.append("<"); - sb.append(recipient.getEmailAddress()); - sb.append("></li>"); - groupCounter++; } } } 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 779e95923760dae0e5b536b6f7d065a36fdc1fc8..0cc95811eef5d0ac4ef90b4acbd4ddc11d505ba7 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 @@ -238,7 +238,7 @@ public class MailListController extends BasicController implements Activateable2 } //strip meta emails - Set<String> metaIds = new HashSet<String>(); + Set<String> metaIds = new HashSet<>(); for(Iterator<DBMailLight> it=mails.iterator(); it.hasNext(); ) { DBMailLight mail = it.next(); if(StringHelper.containsNonWhitespace(mail.getMetaId())) { @@ -254,7 +254,7 @@ public class MailListController extends BasicController implements Activateable2 } //extract contexts - Map<String, String> bpToContexts = new HashMap<String, String>(); + Map<String, String> bpToContexts = new HashMap<>(); for(DBMailLight mail:mails) { String businessPath = mail.getContext().getBusinessPath(); if(StringHelper.containsNonWhitespace(businessPath) && !bpToContexts.containsKey(businessPath)) { @@ -266,8 +266,8 @@ public class MailListController extends BasicController implements Activateable2 } if(!bpToContexts.isEmpty()) { - List<ShortName> filters = new ArrayList<ShortName>(); - Map<String, MailContextShortName> uniqueNames = new HashMap<String,MailContextShortName>(); + List<ShortName> filters = new ArrayList<>(); + Map<String, MailContextShortName> uniqueNames = new HashMap<>(); ShortName allContextFilter = new MailContextShortName("-"); filters.add(allContextFilter); for(Map.Entry<String, String> entry:bpToContexts.entrySet()) { @@ -462,7 +462,7 @@ public class MailListController extends BasicController implements Activateable2 boolean back = !StringHelper.containsNonWhitespace(mail.getMetaId()) || !outbox; OLATResourceable ores = OresHelper.createOLATResourceableInstance(DBMail.class, mail.getKey()); WindowControl bwControl = addToHistory(ureq, ores, null); - mailCtr = new MailController(ureq, bwControl, mail, back); + mailCtr = new MailController(ureq, bwControl, mail, back, outbox); listenTo(mailCtr); mainVC.put(MAIN_CMP, mailCtr.getInitialComponent()); diff --git a/src/main/java/org/olat/core/util/mail/ui/MailSettingsAdminController.java b/src/main/java/org/olat/core/util/mail/ui/MailSettingsAdminController.java index af226332baa93f450d3fc99c003fef9a35d59268..dbe29f1a69ee8cc7d3ba226f38d13b235117d706 100644 --- a/src/main/java/org/olat/core/util/mail/ui/MailSettingsAdminController.java +++ b/src/main/java/org/olat/core/util/mail/ui/MailSettingsAdminController.java @@ -44,7 +44,10 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class MailSettingsAdminController extends FormBasicController { - private MultipleSelectionElement enabled, showRecipientNamesEl, showMailAddressesEl; + private MultipleSelectionElement enabled; + private MultipleSelectionElement showRecipientNamesEl; + private MultipleSelectionElement showMailAddressesEl; + private MultipleSelectionElement showRecipientsInInboxEl; private SingleSelection userDefaultSettingEl; private String[] values = {""}; @@ -99,6 +102,11 @@ public class MailSettingsAdminController extends FormBasicController { showMailAddressesEl.addActionListener(FormEvent.ONCHANGE); showMailAddressesEl.setEnabled(internEnabled); + showRecipientsInInboxEl = uifactory.addCheckboxesHorizontal("mail.admin.show.recipient.inbox", formLayout, keys, values); + showRecipientsInInboxEl.select(keys[0], mailModule.isShowRecipientsInInbox()); + showRecipientsInInboxEl.addActionListener(FormEvent.ONCHANGE); + showRecipientsInInboxEl.setEnabled(internEnabled); + final FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttonLayout", getTranslator()); buttonGroupLayout.setRootForm(mainForm); formLayout.add(buttonGroupLayout); @@ -130,6 +138,10 @@ public class MailSettingsAdminController extends FormBasicController { boolean showMailaddresses = !showMailAddressesEl.getSelectedKeys().isEmpty(); mailModule.setShowMailAddresses(showMailaddresses); showMailAddressesEl.setEnabled(on); + // recipients in inbox + boolean showRecipientsInInbox = !showRecipientsInInboxEl.getSelectedKeys().isEmpty(); + mailModule.setShowRecipientsInInbox(showRecipientsInInbox); + showRecipientsInInboxEl.setEnabled(on); getWindowControl().setInfo("saved"); } @@ -141,6 +153,7 @@ public class MailSettingsAdminController extends FormBasicController { userDefaultSettingEl.setEnabled(on); showMailAddressesEl.setEnabled(on); showRecipientNamesEl.setEnabled(on); + showRecipientsInInboxEl.setEnabled(on); } super.formInnerEvent(ureq, source, event); } diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index 901ea2421d320d6c7174f2e6cf06fad61a3aed90..20dcd4ec50e1378cc26f0f3a28dcd1a804d5c716 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -147,6 +147,7 @@ mail.attachment.maxsize=5 mail.intern=false mail.showRecipientNames=true mail.showMailAddresses=false +mail.showRecipientsInInbox=true mail.receiveRealMailUserDefaultSetting=true ########################################################################