From 1ed517d3a5f8d912e41d90088b5bfab4990d73e2 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 18 May 2018 10:45:39 +0200 Subject: [PATCH] OO-3483: ensure that the email form in member list course element (or group) as at least one recipient --- .../memberlist/ui/MembersMailController.java | 54 ++++++++++++++++++- .../mail/_i18n/LocalStrings_de.properties | 2 +- .../mail/_i18n/LocalStrings_en.properties | 1 + 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java index 31ff0ef6dde..b61bf7547f4 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java +++ b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java @@ -231,7 +231,7 @@ public class MembersMailController extends FormBasicController { @Override protected boolean validateFormLogic(UserRequest ureq) { - boolean allOk = true; + boolean allOk = super.validateFormLogic(ureq); subjectEl.clearError(); if(!StringHelper.containsNonWhitespace(subjectEl.getValue())) { @@ -245,6 +245,16 @@ public class MembersMailController extends FormBasicController { allOk &= false; } + allOk &= validateRecipients(); + + return allOk; + } + + private boolean validateRecipients() { + boolean allOk = true; + + boolean atLeastOne = false; + externalAddressesEl.clearError(); if(externalEl != null && externalEl.isAtLeastSelected(1)) { String value = externalAddressesEl.getValue(); @@ -257,6 +267,7 @@ public class MembersMailController extends FormBasicController { errors.append(email); } } + atLeastOne |= true; } if(errors.length() > 0) { @@ -265,7 +276,46 @@ public class MembersMailController extends FormBasicController { } } - return allOk & super.validateFormLogic(ureq); + + if(ownerEl != null) ownerEl.clearError(); + if(coachEl != null) coachEl.clearError(); + if(participantEl != null) participantEl.clearError(); + if(waitingEl != null) waitingEl.clearError(); + if(individualEl != null) individualEl.clearError(); + + if((ownerEl != null && ownerEl.isAtLeastSelected(1)) + || (coachEl != null && coachEl.isAtLeastSelected(1)) + || (participantEl != null && participantEl.isAtLeastSelected(1)) + || (waitingEl != null && waitingEl.isAtLeastSelected(1))) { + atLeastOne |= true; + } + + //check if there is an individual email + if(!atLeastOne && individualEl != null && individualEl.isAtLeastSelected(1) && !selectedMembers.isEmpty()) { + atLeastOne |= true; + } + + if(!atLeastOne) { + if(externalEl != null && externalEl.isAtLeastSelected(1) && !StringHelper.containsNonWhitespace(externalAddressesEl.getValue())) { + externalEl.setErrorKey("at.least.one.recipient", null); + } else if(individualEl != null && individualEl.isAtLeastSelected(1) && selectedMembers.isEmpty()) { + individualEl.setErrorKey("at.least.one.recipient", null); + } else if(ownerEl != null && !ownerEl.isAtLeastSelected(1)) { + ownerEl.setErrorKey("at.least.one.recipient", null); + } else if(coachEl != null && !coachEl.isAtLeastSelected(1)) { + coachEl.setErrorKey("at.least.one.recipient", null); + } else if(participantEl != null && !participantEl.isAtLeastSelected(1)) { + participantEl.setErrorKey("at.least.one.recipient", null); + } else if(waitingEl != null && !waitingEl.isAtLeastSelected(1)) { + waitingEl.setErrorKey("at.least.one.recipient", null); + } else if (individualEl != null && !individualEl.isAtLeastSelected(1)) { + individualEl.setErrorKey("at.least.one.recipient", null); + } else if (externalEl != null && !externalEl.isAtLeastSelected(1)) { + individualEl.setErrorKey("at.least.one.recipient", null); + } + } + + return allOk && atLeastOne; } private File[] getAttachments() { 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 8e34b8f8185..bf53fee27e9 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 @@ -1,5 +1,5 @@ #Mon Mar 02 09:54:04 CET 2009 - +at.least.one.recipient=Sie m\u00FCssen mindesten ein Empf\u00E4nger w\u00E4hlen. 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 60837ade1aa..9cd14621658 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 @@ -1,5 +1,6 @@ #Tue Nov 15 09:58:15 CET 2016 add.email=Add +at.least.one.recipient=You need to choose at least one recipient. contact.cp.from=Copy sent to addresser error.too.long=the template is too big. The maximal size is {0}\! footer.no.userdata=<p>This message has been sent automatically via the learning platform OpenOLAT\: {0}</p> -- GitLab