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 ede73121bde3627bb426ef1f983bd0bc4a538d72 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 17:52:33 2014 +0200 print error in poll settings --- .../pollen/services/service/PollService.java | 8 +- .../main/webapp/partials/poll-listParticipant.html | 5 +- .../src/main/webapp/partials/poll-settings.html | 169 +++++++++++++++------ 3 files changed, 132 insertions(+), 50 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 dc37162..8cd8baf 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 @@ -29,6 +29,7 @@ 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.chorem.pollen.votecounting.VoteCountingNotFound; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; @@ -414,7 +415,12 @@ public class PollService extends PollenServiceSupport { checkNotNull(errors, Poll.PROPERTY_COMMENT_VISIBILITY, poll.getCommentVisibility(), l(getLocale(), "pollen.error.poll.commentVisibility.mandatory")); checkNotNull(errors, Poll.PROPERTY_VOTE_VISIBILITY, poll.getVoteVisibility(), l(getLocale(), "pollen.error.poll.voteVisibility.mandatory")); checkNotNull(errors, Poll.PROPERTY_RESULT_VISIBILITY, poll.getResultVisibility(), l(getLocale(), "pollen.error.poll.resultVisibility.mandatory")); - checkNotNull(errors, Poll.PROPERTY_VOTE_COUNTING_TYPE, poll.getVoteCountingType(), l(getLocale(), "pollen.error.poll.voteCountingType.mandatory")); + + try { + serviceContext.getVoteCountingFactory().getVoteCounting(poll.getVoteCountingType()); + } catch (VoteCountingNotFound e) { + check(errors, Poll.PROPERTY_VOTE_COUNTING_TYPE, false, l(getLocale(), "pollen.error.poll.voteCountingType.mandatory")); + } checkNotBlank(errors, Poll.PROPERTY_TITLE, poll.getTitle(), l(getLocale(), "pollen.error.poll.title.mandatory")); diff --git a/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html b/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html index 6f6200f..4264be7 100644 --- a/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html +++ b/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html @@ -19,7 +19,10 @@ #L% --> <h1>{{data.poll.title}}</h1> -<h2>{{ 'poll.restricted.pollType' | translate }}</h2> +<h2> + {{ 'poll.restricted.pollType' | translate }} + <info-error error="restError.pollType" data="data.poll.pollType"></info-error> +</h2> <div> <label for="formFree"> <input type="radio" ng-model="data.poll.pollType" name="type" value="FREE" id="formFree" auto-save="autoSavePoll()"/> diff --git a/pollen-ui-angular/src/main/webapp/partials/poll-settings.html b/pollen-ui-angular/src/main/webapp/partials/poll-settings.html index fc00fc2..789cecf 100644 --- a/pollen-ui-angular/src/main/webapp/partials/poll-settings.html +++ b/pollen-ui-angular/src/main/webapp/partials/poll-settings.html @@ -23,17 +23,31 @@ <h4>{{ 'poll.config.title.creator' | translate }}</h4> <div class="form-group row"> - <label class="col-sm-4 control-label" for="formCreatorName">{{ 'poll.config.label.creatorName' | translate }}</label> - <div class="col-sm-8"> - <input type="text" class="form-control" id="formCreatorName" ng-model="data.poll.creatorName" auto-save="autoSavePoll()" /> + <label class="col-sm-4 control-label" for="formCreatorName"> + {{ 'poll.config.label.creatorName' | translate }} + </label> + <div class="col-sm-6"> + <input-error error="restError['creator.name'][0]" data="data.poll.creatorName"> + <input type="text" class="form-control" id="formCreatorName" ng-model="data.poll.creatorName" auto-save="autoSavePoll()" /> + </input-error> + </div> + <div class="col-sm-2"> + <info-error error="restError['creator.name'][0]"></info-error> </div> </div> <div class="form-group row"> - <label class="col-sm-4 control-label" for="formCreatorEmail">{{ 'poll.config.label.creatorEmail' | translate }}</label> - <div class="col-sm-8"> - <input type="text" class="form-control" id="formCreatorEmail" ng-model="data.poll.creatorEmail" auto-save="autoSavePoll()" /> - <span class="text-help">{{ 'poll.config.label.creatorEmail.help' | translate }}</span> + <label class="col-sm-4 control-label" for="formCreatorEmail"> + {{ 'poll.config.label.creatorEmail' | translate }} + </label> + <div class="col-sm-6"> + <input-error error="restError['creator.email'][0]" data="data.poll.creatorEmail"> + <input type="text" class="form-control" id="formCreatorEmail" ng-model="data.poll.creatorEmail" auto-save="autoSavePoll()" /> + <span class="text-help">{{ 'poll.config.label.creatorEmail.help' | translate }}</span> + </input-error> + </div> + <div class="col-sm-2"> + <info-error error="restError['creator.email'][0]"></info-error> </div> </div> @@ -41,28 +55,40 @@ <div class="form-group row"> <label class="col-sm-4 control-label" for="formBeginDate">{{ 'poll.config.label.beginDate' | translate }}</label> - <div class="col-sm-8"> - <datetimepicker min-date="globalVariables.toDay" - max-date="data.poll.endDate" - ng-model="data.poll.beginDate" - auto-save="autoSavePoll()" - for-id="formBeginDate"></datetimepicker> + <div class="col-sm-6"> + <input-error error="restError.beginDate[0]" data="data.poll.beginDate"> + <datetimepicker min-date="globalVariables.toDay" + max-date="data.poll.endDate" + ng-model="data.poll.beginDate" + auto-save="autoSavePoll()" + for-id="formBeginDate"></datetimepicker> + </input-error> + </div> + <div class="col-sm-2"> + <info-error error="restError.beginDate[0]" data="data.poll.beginDate"></info-error> </div> </div> <div class="form-group row"> <label class="col-sm-4 control-label" for="formEndDate">{{ 'poll.config.label.endDate' | translate }}</label> - <div class="col-sm-8"> - <datetimepicker min-date="data.poll.beginDate" - ng-model="data.poll.endDate" - auto-save="autoSavePoll()" - for-id="formEndDate"></datetimepicker> + <div class="col-sm-6"> + <input-error error="restError.endDate[0]" data="data.poll.endDate"> + <datetimepicker min-date="data.poll.beginDate" + ng-model="data.poll.endDate" + auto-save="autoSavePoll()" + for-id="formEndDate"></datetimepicker> + </input-error> + </div> + <div class="col-sm-2"> + <info-error error="restError.endDate[0]" data="data.poll.endDate"></info-error> </div> </div> <div class="form-group row"> - <label class="col-sm-4 control-label">{{ 'poll.config.label.resultVisibility' | translate }}</label> - <div class="col-sm-8"> + <label class="col-sm-4 control-label"> + {{ 'poll.config.label.resultVisibility' | translate }} + </label> + <div class="col-sm-6"> <label class="label-block"> <input type="radio" ng-model="data.poll.resultVisibility" @@ -90,62 +116,94 @@ {{ 'poll.config.value.visibility.creator' | translate }} </label> </div> + <div class="col-sm-2"> + <info-error error="restError.resultVisibility[0]" data="data.poll.resultVisibility"></info-error> + </div> </div> <div class="form-group row"> - <label class="col-sm-4 control-label" for="formContinuousResults">{{ 'poll.config.label.continuousResults' | translate }}</label> - <div class="col-sm-8"> + <label class="col-sm-4 control-label" for="formContinuousResults"> + {{ 'poll.config.label.continuousResults' | translate }} + </label> + <div class="col-sm-6"> <input type="checkbox" id="formContinuousResults" ng-model="data.poll.continuousResults" auto-save="autoSavePoll()" /> </div> + <div class="col-sm-2"></div> </div> <h4>{{ 'poll.config.title.choice' | translate }}</h4> <div class="form-group row"> - <label class="col-sm-4 control-label" for="formChoiceAddAllowed">{{ 'poll.config.label.choiceAddAllowed' | translate }}</label> - <div class="col-sm-8 btn-group"> + <label class="col-sm-4 control-label" for="formChoiceAddAllowed"> + {{ 'poll.config.label.choiceAddAllowed' | translate }} + </label> + <div class="col-sm-6 btn-group"> <input type="checkbox" id="formChoiceAddAllowed" ng-model="data.poll.choiceAddAllowed" auto-save="autoSavePoll()" /> </div> + <div class="col-sm-2"></div> </div> <div class="form-group row" ng-show="data.poll.choiceAddAllowed"> - <label class="col-sm-4 control-label" for="beginChoiceDate">{{ 'poll.config.label.beginChoiceDate' | translate }}</label> - <div class="col-sm-8"> - <datetimepicker max-date="data.poll.endChoiceDate" - ng-model="data.poll.beginChoiceDate" - auto-save="autoSavePoll()" for-id="beginChoiceDate"></datetimepicker> - + <label class="col-sm-4 control-label" for="beginChoiceDate"> + {{ 'poll.config.label.beginChoiceDate' | translate }} + </label> + <div class="col-sm-6"> + <input-error error="restError.beginChoiceDate[0]" data="data.poll.beginChoiceDate"> + <datetimepicker max-date="data.poll.endChoiceDate" + ng-model="data.poll.beginChoiceDate" + auto-save="autoSavePoll()" for-id="beginChoiceDate"></datetimepicker> + </input-error> + </div> + <div class="col-sm-2"> + <info-error error="restError.beginChoiceDate[0]" data="data.poll.beginChoiceDate"></info-error> </div> </div> <div class="form-group row" ng-if="data.poll.choiceAddAllowed"> - <label class="col-sm-4 control-label" for="endChoiceDate">{{ 'poll.config.label.endChoiceDate' | translate }}</label> - <div class="col-sm-8"> - <datetimepicker min-date="data.poll.beginChoiceDate" - max-date="data.poll.endDate" - ng-model="data.poll.endChoiceDate" - auto-save="autoSavePoll()" - for-id="endChoiceDate"></datetimepicker> + <label class="col-sm-4 control-label" for="endChoiceDate"> + {{ 'poll.config.label.endChoiceDate' | translate }} + </label> + <div class="col-sm-6"> + <input-error error="restError.endChoiceDate[0]" data="data.poll.endChoiceDate"> + <datetimepicker min-date="data.poll.beginChoiceDate" + max-date="data.poll.endDate" + ng-model="data.poll.endChoiceDate" + auto-save="autoSavePoll()" + for-id="endChoiceDate"></datetimepicker> + </input-error> + </div> + <div class="col-sm-2"> + <info-error error="restError.endChoiceDate[0]" data="data.poll.endChoiceDate"></info-error> </div> </div> <div class="form-group row"> - <label class="col-sm-4 control-label" for="formLimitedVote">{{ 'poll.config.label.limitedVote' | translate }}</label> - <div class="col-sm-8"> + <label class="col-sm-4 control-label" for="formLimitedVote"> + {{ 'poll.config.label.limitedVote' | translate }} + </label> + <div class="col-sm-6"> <input type="checkbox" id="formLimitedVote" ng-model="data.poll.limitedVote" auto-save="autoSavePoll()" /> </div> + <div class="col-sm-2"></div> </div> <div class="form-group row" ng-show="data.poll.limitedVote"> <label class="col-sm-4 control-label" for="popMaxChoiceNumber">{{ 'poll.config.label.maxChoiceNumber' | translate }}</label> <div class="col-sm-6"> - <input type="text" class="form-control" id="popMaxChoiceNumber" ng-model="data.poll.maxChoiceNumber" auto-save="autoSavePoll()" /> + <input-error error="restError.maxChoiceNumber[0]" data="data.poll.maxChoiceNumber"> + <input type="text" class="form-control" id="popMaxChoiceNumber" ng-model="data.poll.maxChoiceNumber" auto-save="autoSavePoll()" /> + </input-error> + </div> + <div class="col-sm-2"> + <info-error error="restError.maxChoiceNumber[0]" data="data.poll.maxChoiceNumber"></info-error> </div> </div> <h4>{{ 'poll.config.title.vote' | translate }}</h4> <div class="form-group row"> - <label class="col-sm-4 control-label">{{ 'poll.config.label.voteCountingType' | translate }}</label> - <div class="col-sm-8"> + <label class="col-sm-4 control-label"> + {{ 'poll.config.label.voteCountingType' | translate }} + </label> + <div class="col-sm-6"> <label class="label-block" ng-repeat="voteCountingType in data.allVoteCountingType"> <input type="radio" ng-model="data.poll.voteCountingType" @@ -156,11 +214,16 @@ <hr/> <p ng-bind-html="toHTML(voteCountingTypeHelper)"></p> </div> + <div class="col-sm-2"> + <info-error error="restError.voteCountingType[0]" data="data.poll.voteCountingType"></info-error> + </div> </div> <div class="form-group row"> - <label class="col-sm-4 control-label">{{ 'poll.config.label.voteVisibility' | translate }}</label> - <div class="col-sm-8"> + <label class="col-sm-4 control-label"> + {{ 'poll.config.label.voteVisibility' | translate }} + </label> + <div class="col-sm-6"> <label class="label-block"> <input type="radio" ng-model="data.poll.voteVisibility" @@ -193,18 +256,25 @@ {{ 'poll.config.value.visibility.anonymous' | translate }} </label> </div> + <div class="col-sm-2"> + <info-error error="restError.voteVisibility[0]" data="data.poll.voteVisibility"></info-error> + </div> </div> <div class="form-group row"> - <label class="col-sm-4 control-label" for="formAnonymousVoteAllowed">{{ 'poll.config.label.anonymousVoteAllowed' | translate }}</label> - <div class="col-sm-8 btn-group"> + <label class="col-sm-4 control-label" for="formAnonymousVoteAllowed"> + {{ 'poll.config.label.anonymousVoteAllowed' | translate }} + </label> + <div class="col-sm-6 btn-group"> <input type="checkbox" id="formAnonymousVoteAllowed" ng-model="data.poll.anonymousVoteAllowed" auto-save="autoSavePoll()" /> </div> </div> <div class="form-group row"> - <label class="col-sm-4 control-label">{{ 'poll.config.label.commentVisibility' | translate }}</label> - <div class="col-sm-8"> + <label class="col-sm-4 control-label"> + {{ 'poll.config.label.commentVisibility' | translate }} + </label> + <div class="col-sm-6"> <label class="label-block"> <input type="radio" ng-model="data.poll.commentVisibility" @@ -232,5 +302,8 @@ {{ 'poll.config.value.visibility.nobody' | translate }} </label> </div> + <div class="col-sm-2"> + <info-error error="restError.commentVisibility[0]" data="data.poll.commentVisibility"></info-error> + </div> </div> </form> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.