This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository pollen. See http://git.chorem.org/pollen.git commit d4bb26cd5d176c63fe7ad7b9add4c8f89dafaed0 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 13:42:27 2014 +0200 PollService verify date --- .../pollen/services/service/PollService.java | 48 ++++++++++++++++++---- .../services/service/security/SecurityService.java | 5 +-- .../i18n/pollen-services_en_GB.properties | 3 ++ .../i18n/pollen-services_fr_FR.properties | 3 ++ pollen-ui-angular/bower.json | 2 +- .../src/main/webapp/partials/poll-info.html | 6 +-- 6 files changed, 51 insertions(+), 16 deletions(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java index f8bc99e..4a83ae3 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java @@ -26,6 +26,7 @@ package org.chorem.pollen.services.service; import com.google.common.base.Function; import org.apache.commons.collections4.CollectionUtils; import org.chorem.pollen.persistence.entity.*; +import org.chorem.pollen.services.PollenApplicationContext; import org.chorem.pollen.services.bean.*; import org.chorem.pollen.services.service.security.PermissionVerb; import org.nuiton.util.pagination.PaginationParameter; @@ -62,7 +63,7 @@ public class PollService extends PollenServiceSupport { input.setResultIsVisible(isPermitted(PermissionVerb.readPollResult, input.getEntityId())); - input.setCanVote(isPermitted(PermissionVerb.addVote, input.getEntityId())); + input.setCanVote(isPermitted(PermissionVerb.addVote, input.getEntityId()) && (!input.isClosed() && getNow().compareTo(input.getEndDate()) == -1)); return input; } @@ -343,20 +344,35 @@ public class PollService extends PollenServiceSupport { toSave.setVoteVisibility(poll.getVoteVisibility()); toSave.setCommentVisibility(poll.getCommentVisibility()); toSave.setResultVisibility(poll.getResultVisibility()); - toSave.setAnonymousVoteAllowed(poll.isAnonymousVoteAllowed()); - toSave.setChoiceAddAllowed(poll.isChoiceAddAllowed()); - toSave.setBeginChoiceDate(poll.getBeginChoiceDate()); - toSave.setBeginDate(poll.getBeginDate()); - toSave.setContinuousResults(poll.isContinuousResults()); toSave.setDescription(poll.getDescription()); - toSave.setEndDate(poll.getEndDate()); - toSave.setEndChoiceDate(poll.getEndChoiceDate()); toSave.setPollType(poll.getPollType()); toSave.setMaxChoiceNumber(poll.getMaxChoiceNumber()); toSave.setTitle(poll.getTitle()); + if (poll.getBeginDate() == null) { + toSave.setBeginDate(getNow()); + } else { + toSave.setBeginDate(poll.getBeginDate()); + } + + toSave.setEndDate(poll.getEndDate()); + + toSave.setChoiceAddAllowed(poll.isChoiceAddAllowed()); + if (poll.isChoiceAddAllowed()) { + + if (poll.getBeginChoiceDate() == null || poll.getBeginChoiceDate().compareTo(toSave.getBeginDate()) == -1) { + // correction Date + toSave.setBeginChoiceDate(toSave.getBeginDate()); + } + else { + toSave.setBeginChoiceDate(poll.getBeginChoiceDate()); + } + + toSave.setEndChoiceDate(poll.getEndChoiceDate()); + } + // -- choice -- // if (CollectionUtils.isNotEmpty(choices)) { @@ -394,6 +410,22 @@ public class PollService extends PollenServiceSupport { checkNotBlank(errors, Poll.PROPERTY_TITLE, poll.getTitle(), l(getLocale(), "pollen.error.poll.title.mandatory")); + if (poll.getEndDate() != null) { + check(errors, Poll.PROPERTY_END_DATE, poll.getEndDate().compareTo(poll.getBeginDate()) == 1, l(getLocale(), "pollen.error.poll.endDate.beforeBeginDate")); + } + + if (poll.isChoiceAddAllowed()) { + if (poll.getBeginChoiceDate() != null) { + if (poll.getEndDate() != null) { + check(errors, Poll.PROPERTY_BEGIN_CHOICE_DATE, poll.getBeginChoiceDate().compareTo(poll.getEndDate()) == -1, l(getLocale(), "pollen.error.poll.beginChoiceDate.afterEndDate")); + } + + if (poll.getEndChoiceDate() != null ) { + check(errors, Poll.PROPERTY_END_CHOICE_DATE, poll.getEndChoiceDate().compareTo(poll.getBeginChoiceDate()) == 1, l(getLocale(), "pollen.error.poll.endChoiceDate.beforeBeginChoiceDate")); + } + } + } + return errors; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java index 09c9d23..6afeadc 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java @@ -482,10 +482,7 @@ public class SecurityService extends PollenServiceSupport { protected void generatePollPublicPermission(Set<String> permissions, Poll poll) { permissions.add(createSubjectPermission(PermissionVerb.readPoll, poll)); permissions.add(createSubjectPermission(PermissionVerb.addComment, poll)); - - if (!poll.isClosed()) { - permissions.add(createSubjectPermission(PermissionVerb.addVote, poll)); - } + permissions.add(createSubjectPermission(PermissionVerb.addVote, poll)); if (poll.getCommentVisibility() == CommentVisibility.EVERYBODY) { permissions.add(createSubjectPermission(PermissionVerb.readComment, poll)); diff --git a/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties b/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties index be4953d..41bdce0 100644 --- a/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties +++ b/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties @@ -31,6 +31,8 @@ pollen.error.favoriteListMember.name.already.used=member name already used pollen.error.favoriteListMember.name.empty=member name can not be empty pollen.error.poll.choice.mandatory=At least a choice is mandatory pollen.error.poll.commentVisibility.mandatory=comment visiblity is mandatory +pollen.error.poll.endChoiceDate.beforeBeginChoiceDate=The end date of adding choice is before the begin date +pollen.error.poll.endDate.beforeBeginDate=The end date of vote is before the begin date pollen.error.poll.mismatch.freePoll=cant' have a voter list for a free poll pollen.error.poll.pollType.mandatory=poll type is mandatory pollen.error.poll.resultVisibility.mandatory=result visibility is mandatory @@ -66,3 +68,4 @@ pollen.service.mail.UserAccountCreatedEmail.subject=[Pollen] Confirmation of acc pollen.service.mail.VoteAddedEmail.subject=[Pollen] A vote was added in poll %s pollen.service.mail.VoteDeletedEmail.subject=[Pollen] A vote was edited in poll %s pollen.service.mail.VoteEditedEmail.subject=[Pollen] A vote was deleted in poll %s +pollen.error.poll.beginChoiceDate.afterEndDate=the begin date of adding choice is after the end of poll diff --git a/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties b/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties index 137807f..0eae21b 100644 --- a/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties +++ b/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties @@ -29,8 +29,11 @@ pollen.error.favoriteListMember.email.empty=Le courriel est obligatoire pollen.error.favoriteListMember.email.invalid=Le courriel du membre est invalide pollen.error.favoriteListMember.name.already.used=Le nom du membre est déjà utilisé dans cette liste pollen.error.favoriteListMember.name.empty=Le nom du membre est obligatoire +pollen.error.poll.beginChoiceDate.afterEndDate=La date de début d'ajout de choix est après la date de fin du sondage pollen.error.poll.choice.mandatory=Au moins un choix est nécessaire pollen.error.poll.commentVisibility.mandatory=la visibilité des commentaires est obligatoire +pollen.error.poll.endChoiceDate.beforeBeginChoiceDate=La date de fin d'ajout de choix est avant la date de début +pollen.error.poll.endDate.beforeBeginDate=La date de fin des votes est avant la date de début pollen.error.poll.pollType.mandatory=le type de sondage est obligatoire pollen.error.poll.resultVisibility.mandatory=la visibilité des résultats est obligatoire pollen.error.poll.title.mandatory=le titre du sondage est obligatoire diff --git a/pollen-ui-angular/bower.json b/pollen-ui-angular/bower.json index 500a4db..3d6dc32 100644 --- a/pollen-ui-angular/bower.json +++ b/pollen-ui-angular/bower.json @@ -22,7 +22,7 @@ "jqplot-bower": "1.0.8", "spin.js": "2.0.1", "moment": "2.8.1", - "bootstrap-datetimepicker": "dralagen/bootstrap-datetimepicker" + "bootstrap-datetimepicker": "dralagen/bootstrap-datetimepicker#development" }, "devDependencies": { "angular-mocks": "1.2.16" diff --git a/pollen-ui-angular/src/main/webapp/partials/poll-info.html b/pollen-ui-angular/src/main/webapp/partials/poll-info.html index 5c13b50..f37ea54 100644 --- a/pollen-ui-angular/src/main/webapp/partials/poll-info.html +++ b/pollen-ui-angular/src/main/webapp/partials/poll-info.html @@ -3,9 +3,9 @@ <h4>Début des votes : {{timeToBeginVote}} </h4> </div> -<div ng-if="data.poll.endDate && timeToEndVote.value < 100" class="anim"> +<div ng-if="data.poll.endDate && data.poll.beginDate < data.poll.endDate && timeToEndVote.value < 100" class="anim"> <h4>Fin des votes : {{timeToEndVote.label}} </h4> - <div ng-if="timeToEndVote.value >= 0" class="anim"> + <div ng-if="timeToEndVote.value > 0" class="anim"> <progressbar max="100" value="timeToEndVote.value" type="{{timeToEndVote.type}}"></progressbar> </div> </div> @@ -20,7 +20,7 @@ <div ng-if="data.poll.choiceAddAllowed && timeToAddChoice.value < 100" class="anim"> <h4>Fin d'ajout de choix : {{timeToAddChoice.label}} </h4> - <div ng-if="timeToAddChoice.value >= 0" class="anim"> + <div ng-if="timeToAddChoice.value > 0" class="anim"> <progressbar max="100" value="timeToAddChoice.value" type="{{timeToAddChoice.type}}"></progressbar> </div> </div> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.