From f21d52abe14f02d4e739f33aadce7f80de46cf93 Mon Sep 17 00:00:00 2001 From: Dirk Furrer <none@none> Date: Tue, 9 Jun 2015 19:49:07 +0200 Subject: [PATCH] OO-1535: changed ContactFrom/Controller to accept email addresses by the user --- .../impressum/ImpressumAdminController.java | 2 +- .../impressum/_i18n/LocalStrings_de.properties | 1 + .../impressum/_i18n/LocalStrings_en.properties | 3 ++- .../BGEmailCompositionStepController.java | 2 +- .../java/org/olat/modules/co/ContactForm.java | 18 ++++++++++++++---- .../olat/modules/co/ContactFormController.java | 18 ++++++++++++++---- .../co/_i18n/LocalStrings_de.properties | 3 ++- .../co/_i18n/LocalStrings_en.properties | 1 + 8 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumAdminController.java b/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumAdminController.java index 4f504b39699..a90bf4feb3b 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumAdminController.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumAdminController.java @@ -89,7 +89,7 @@ public class ImpressumAdminController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { setFormTitle("menu.impressum"); - + setFormDescription("config.hint"); boolean enabled = impressumModule.isEnabled(); String[] enableKeys = new String[]{ "on" }; diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/controllers/impressum/_i18n/LocalStrings_de.properties index 2c3af471e3d..611cbed9727 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/commons/controllers/impressum/_i18n/LocalStrings_de.properties @@ -18,3 +18,4 @@ impressum.file=Impressum auf termofuse.file=Term of use enable=ein enable.impressum=Impressum einschalten +config.hint=Hier k\u00F6nnen Sie das Impressum ein- und ausschalten, positionieren und den Impressumstext \u00E4ndern. diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/controllers/impressum/_i18n/LocalStrings_en.properties index 7bbe81ae54e..f8a14138982 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/commons/controllers/impressum/_i18n/LocalStrings_en.properties @@ -10,11 +10,12 @@ contactform.intro=Contact form for general requests. contactform.title=Contact enable=on enable.impressum=Enable imprint -impressum.file=Impressum in +impressum.file=Imprint in main.menu.title=$\:menu.impressum main.menu.title.alt=$\:menu.impressum menu.impressum=Imprint menu.impressum.alt=$\:menu.impressum +config.hint=Here you can enable or disable the imprint page, choose the position and change the Impress text. position=Position position.footer=Footer position.top=Top 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 373e6f04410..4e5e22e3ddf 100644 --- a/src/main/java/org/olat/group/ui/wizard/BGEmailCompositionStepController.java +++ b/src/main/java/org/olat/group/ui/wizard/BGEmailCompositionStepController.java @@ -126,7 +126,7 @@ public class BGEmailCompositionStepController extends StepFormBasicController MailBundle ccBundle = new MailBundle(); ccBundle.setContext(context); ccBundle.setFromId(getIdentity()); - ccBundle.setCc(contactForm.getEmailFrom()); + ccBundle.setCc(getIdentity()); ccBundle.setContent(contactForm.getSubject(), contactForm.getBody(), attachments); MailerResult ccResult = mailService.sendMessage(ccBundle); diff --git a/src/main/java/org/olat/modules/co/ContactForm.java b/src/main/java/org/olat/modules/co/ContactForm.java index fd30b0c8fd4..f9ae81ed195 100644 --- a/src/main/java/org/olat/modules/co/ContactForm.java +++ b/src/main/java/org/olat/modules/co/ContactForm.java @@ -57,6 +57,7 @@ import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.filter.FilterFactory; import org.olat.core.util.mail.ContactList; +import org.olat.core.util.mail.EmailAddressValidator; import org.olat.core.util.mail.MailModule; import org.olat.user.UserManager; @@ -196,6 +197,14 @@ public class ContactForm extends FormBasicController { if(readOnly){ return true; } + boolean fromMailAddOk = true; + if(tfrom.isEnabled()) { + String mailInputValue = tfrom.getValue().trim(); + fromMailAddOk = EmailAddressValidator.isValidEmailAddress(mailInputValue); + if(!fromMailAddOk){ + tfrom.setErrorKey("error.field.not.valid.email",null); + } + } boolean subjectOk = !tsubject.isEmpty("error.field.not.empty"); boolean bodyOk = !tbody.isEmpty("error.field.not.empty"); // the body message may not be longer than about 4 pages or 10000 @@ -211,14 +220,14 @@ public class ContactForm extends FormBasicController { //toOk = toOk && ttoBig.notLongerThan(30000, "input.toolong"); } boolean fromOk = !tfrom.isEmpty("error.field.not.empty"); - return subjectOk && bodyOk && toOk && fromOk; + return subjectOk && bodyOk && toOk && fromOk && fromMailAddOk; } /** * @return */ - public Identity getEmailFrom() { - return emailFrom; + public String getEmailFrom() { + return tfrom.getValue().trim(); } /** @@ -374,7 +383,8 @@ public class ContactForm extends FormBasicController { } tfrom = uifactory.addTextElement("ttfrom", NLS_CONTACT_FROM, 255, fullName, formLayout); tfrom.setElementCssClass("o_sel_contact_to"); - tfrom.setEnabled(false); + // When no identity is set, let user enter a valid email address + tfrom.setEnabled((this.emailFrom == null)); tto = uifactory.addTextElement("tto", NLS_CONTACT_TO, 255, "", formLayout); tto.setEnabled(false); diff --git a/src/main/java/org/olat/modules/co/ContactFormController.java b/src/main/java/org/olat/modules/co/ContactFormController.java index 5d6b6dce61a..f3cc843a5de 100644 --- a/src/main/java/org/olat/modules/co/ContactFormController.java +++ b/src/main/java/org/olat/modules/co/ContactFormController.java @@ -203,12 +203,16 @@ public class ContactFormController extends BasicController { boolean success = false; try { File[] attachments = cntctForm.getAttachments(); - //fxdiff VCRP-16: intern mail system MailContext context = new MailContextImpl(getWindowControl().getBusinessControl().getAsString()); MailBundle bundle = new MailBundle(); bundle.setContext(context); - bundle.setFromId(emailFrom); + if (emailFrom == null) { + // in case the user provides his own email in form + bundle.setFrom(cntctForm.getEmailFrom()); + } else { + bundle.setFromId(emailFrom); + } bundle.setContactLists(cntctForm.getEmailToContactLists()); bundle.setContent(cntctForm.getSubject(), cntctForm.getBody(), attachments); @@ -218,8 +222,14 @@ public class ContactFormController extends BasicController { MailBundle ccBundle = new MailBundle(); ccBundle.setContext(context); - ccBundle.setFromId(emailFrom); - ccBundle.setCc(cntctForm.getEmailFrom()); + if (emailFrom == null) { + // in case the user provides his own email in form + ccBundle.setFrom(cntctForm.getEmailFrom()); + ccBundle.setTo(cntctForm.getEmailFrom()); + } else { + ccBundle.setFromId(emailFrom); + ccBundle.setCc(emailFrom); + } ccBundle.setContent(cntctForm.getSubject(), cntctForm.getBody(), attachments); MailerResult ccResult = mailService.sendMessage(ccBundle); diff --git a/src/main/java/org/olat/modules/co/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/co/_i18n/LocalStrings_de.properties index ae053a10a31..4835911e3d0 100644 --- a/src/main/java/org/olat/modules/co/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/co/_i18n/LocalStrings_de.properties @@ -8,7 +8,8 @@ contact.to=An contact.to.groupname.undisclosedrecipients=Vordefinierte Empf\u00E4nger contact.attachment=Anhang contact.attachment.maxsize={0} MB ist die maximal Gr\u00F6sse f\u00FCr Anhänge -error.field.not.empty=Dieses Feld darf nicht leer sein. +error.field.not.empty=Dieses Feld darf nicht leer sein +error.field.not.valid.email=Es muss eine valide E-Mailadresse sein. error.msg.content.nok=Die Betreffzeile oder die Nachricht sind ung\u00FCltig. error.msg.notconnectto.smtp=Die Verbindung zum SMTP-Server <i>{0}</i> konnte nicht hergestellt werden. error.msg.nousers=Die gew\u00E4hlte Empf\u00E4ngergruppe enth\u00E4lt keine Teilnehmer. Die E-Mail kann nicht abgeschickt werden. diff --git a/src/main/java/org/olat/modules/co/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/co/_i18n/LocalStrings_en.properties index e41eb723db0..24ce33743da 100644 --- a/src/main/java/org/olat/modules/co/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/co/_i18n/LocalStrings_en.properties @@ -9,6 +9,7 @@ contact.subject=Subject contact.to=To contact.to.groupname.undisclosedrecipients=Predefined recipients error.field.not.empty=This field is mandatory. +error.field.not.valid.email=Must be a valid E-Mail address error.msg.content.nok=Your message or its subject is invalid. error.msg.notconnectto.smtp=A connection to the SMTP server <i>{0}</i> could not be established. error.msg.nousers=The selected recipient group has no participants. Your e-mail cannot be sent. -- GitLab