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 31ff0ef6ddeab72884286d12e160ae72631a06d1..b61bf7547f416d6401062f1118bcfedc1a58e069 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 8e34b8f8185c310274fa3843e1926696df107c04..bf53fee27e9a43a82686da2928e3385dc7b737c2 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 60837ade1aa1a9fc703a9440774485523200e2f2..9cd14621658ea6111218d620407741e38ce9ef53 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> diff --git a/src/main/java/org/olat/modules/portfolio/ui/AccessRightsEditController.java b/src/main/java/org/olat/modules/portfolio/ui/AccessRightsEditController.java index 495108c8ef9e68e4205a2f2a3d08cd88d35a8493..6fdfc7e3187e5d016c1273ccfb5f9c2f109f9311 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/AccessRightsEditController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/AccessRightsEditController.java @@ -368,6 +368,10 @@ public class AccessRightsEditController extends FormBasicController { page.setReviewer(); } } + + for(PortfolioElementAccessRightsRow page:pages) { + page.recalculate(); + } } } }