[pollen] branch develop updated (90e6c7c -> 5d56b2d)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository pollen. See http://git.chorem.org/pollen.git from 90e6c7c add form creator information in poll-settings new 118da7b upgrade bootstrap datetimepicker and use momentjs 2.8.1 new d3cb162 add information of poll in UI new 95b5038 update dateTimePicker new 057498f print info conflit between endChoiceDate and beginDate new 036512a stop event for popup editChoice, edit transition popup new 47eddd1 update style with new import from bootstrap for transition and opacity new 97c1cf9 remove unused parameter and add end statement new 53376be Merge branch 'feature/printPollInformation' into develop new d4bb26c PollService verify date new 2bdb75d translate VoteService error message new a8446d8 translate comment error message new 5d56b2d translate voterlist error messages, add somme test for VoterListService The 12 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 5d56b2d902e584b7e2252dc2b4dbf5ae3bedcb13 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 15:26:56 2014 +0200 translate voterlist error messages, add somme test for VoterListService commit a8446d8f171ade6292b8dcba9da502e33e219287 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 14:26:30 2014 +0200 translate comment error message commit 2bdb75d0936199c44d387ce3594695c90aa4c11f Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 14:20:43 2014 +0200 translate VoteService error message commit d4bb26cd5d176c63fe7ad7b9add4c8f89dafaed0 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 13:42:27 2014 +0200 PollService verify date commit 53376bef11c0e990192b42c869b5e9099ee549c8 Merge: 90e6c7c 97c1cf9 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 15:31:23 2014 +0200 Merge branch 'feature/printPollInformation' into develop commit 97c1cf9aa56dafb384f7bb153b31c82277f2a381 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 11:35:37 2014 +0200 remove unused parameter and add end statement commit 47eddd178662b86763fb408cecdb351697284cda Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Aug 8 17:00:55 2014 +0200 update style with new import from bootstrap for transition and opacity commit 036512a2c647c1d7695b1edcc8fa16cca4cf2a39 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Aug 8 16:55:31 2014 +0200 stop event for popup editChoice, edit transition popup commit 057498f4c8a8a2cb43e09f719e77d6f165155e61 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Aug 8 16:08:40 2014 +0200 print info conflit between endChoiceDate and beginDate commit 95b50385033f0c9eb19945bc8f23c02e2cfa3cac Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Aug 8 16:07:28 2014 +0200 update dateTimePicker commit d3cb162294cff9532d815c909675fc7e04c5e633 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Thu Aug 7 17:26:44 2014 +0200 add information of poll in UI commit 118da7b7f46d271c82f121952cb00f363b6dbecc Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Thu Aug 7 12:57:07 2014 +0200 upgrade bootstrap datetimepicker and use momentjs 2.8.1 Summary of changes: .../pollen/services/service/CommentService.java | 6 +- .../pollen/services/service/PollService.java | 56 +++++- .../services/service/VoteCountingService.java | 6 +- .../pollen/services/service/VoteService.java | 12 +- .../pollen/services/service/VoterListService.java | 27 ++- .../services/service/security/SecurityService.java | 5 +- .../i18n/pollen-services_en_GB.properties | 21 ++ .../i18n/pollen-services_fr_FR.properties | 21 ++ .../services/service/VoterListServiceTest.java | 74 ++++++- pollen-ui-angular/bower.json | 3 +- pollen-ui-angular/src/main/webapp/index.html | 6 +- pollen-ui-angular/src/main/webapp/js/app.js | 2 +- .../src/main/webapp/js/conf.js.exemple | 3 +- .../src/main/webapp/js/controllers/alertCtrl.js | 14 +- .../main/webapp/js/controllers/favoriteListCtrl.js | 22 +-- .../src/main/webapp/js/controllers/localeCtrl.js | 6 +- .../src/main/webapp/js/controllers/mainCtrl.js | 2 +- .../src/main/webapp/js/controllers/pollCtrl.js | 214 +++++++++++++-------- .../src/main/webapp/js/controllers/userCtrl.js | 30 +-- pollen-ui-angular/src/main/webapp/js/directives.js | 98 +++++----- pollen-ui-angular/src/main/webapp/js/services.js | 54 +++--- pollen-ui-angular/src/main/webapp/less/style.less | 73 +++++-- .../src/main/webapp/less/variables.less | 26 +-- .../src/main/webapp/partials/dateTimePicker.html | 6 +- .../src/main/webapp/partials/inline-poll.html | 10 +- .../src/main/webapp/partials/poll-info.html | 33 ++++ .../src/main/webapp/partials/poll-settings.html | 3 +- .../src/main/webapp/partials/poll.html | 2 + 28 files changed, 562 insertions(+), 273 deletions(-) create mode 100644 pollen-ui-angular/src/main/webapp/partials/poll-info.html -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 118da7b7f46d271c82f121952cb00f363b6dbecc Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Thu Aug 7 12:57:07 2014 +0200 upgrade bootstrap datetimepicker and use momentjs 2.8.1 --- pollen-ui-angular/bower.json | 3 ++- pollen-ui-angular/src/main/webapp/index.html | 4 ++-- pollen-ui-angular/src/main/webapp/js/directives.js | 5 ++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pollen-ui-angular/bower.json b/pollen-ui-angular/bower.json index 3df46f2..a3e2dbb 100644 --- a/pollen-ui-angular/bower.json +++ b/pollen-ui-angular/bower.json @@ -21,7 +21,8 @@ "less": "1.7.3", "jqplot-bower": "1.0.8", "spin.js": "2.0.1", - "eonasdan-bootstrap-datetimepicker": "3.0.0" + "moment": "2.8.1", + "bootstrap-datetimepicker": "dralagen/bootstrap-datetimepicker#3.0.3" }, "devDependencies": { "angular-mocks": "1.2.16" diff --git a/pollen-ui-angular/src/main/webapp/index.html b/pollen-ui-angular/src/main/webapp/index.html index 708d13f..0925d08 100644 --- a/pollen-ui-angular/src/main/webapp/index.html +++ b/pollen-ui-angular/src/main/webapp/index.html @@ -59,9 +59,9 @@ <script language="javascript" type="text/javascript" src="lib/angular-bootstrap/ui-bootstrap-tpls.min.js"></script> <script language="javascript" type="text/javascript" src="lib/moment/min/moment.min.js"></script> - <script language="javascript" type="text/javascript" src="lib/moment/min/langs.min.js"></script> + <script language="javascript" type="text/javascript" src="lib/moment/min/locales.min.js"></script> <script language="javascript" type="text/javascript" src="lib/bootstrap/dist/js/bootstrap.min.js"></script> - <script language="javascript" type="text/javascript" src="lib/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js"></script> + <script language="javascript" type="text/javascript" src="lib/bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js"></script> <script language="javascript" type="text/javascript" src="js/app.js"></script> <script language="javascript" type="text/javascript" src="js/directives.js"></script> diff --git a/pollen-ui-angular/src/main/webapp/js/directives.js b/pollen-ui-angular/src/main/webapp/js/directives.js index 92b4eb7..b7dc0db 100644 --- a/pollen-ui-angular/src/main/webapp/js/directives.js +++ b/pollen-ui-angular/src/main/webapp/js/directives.js @@ -242,7 +242,6 @@ angular.module('pollenDirective', []) }); element.bind('dp.show', function() { - console.log('is open'); scope.lock = true; }) @@ -538,7 +537,7 @@ angular.module('pollenDirective', []) var setMinDate = function () { if (angular.isDefined(scope.minDate)) { - scope.dateTimePicker.data("DateTimePicker").setMinDate(moment(scope.minDate).subtract('day', 1)); + scope.dateTimePicker.data("DateTimePicker").setMinDate(moment(scope.minDate)); } }; setMinDate(); @@ -552,7 +551,7 @@ angular.module('pollenDirective', []) var setMaxDate = function () { if (angular.isDefined(scope.maxDate)) { - scope.dateTimePicker.data("DateTimePicker").setMaxDate(moment(scope.maxDate).add('day', 1)); + scope.dateTimePicker.data("DateTimePicker").setMaxDate(moment(scope.maxDate)); } }; setMaxDate(); -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 d3cb162294cff9532d815c909675fc7e04c5e633 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Thu Aug 7 17:26:44 2014 +0200 add information of poll in UI --- .../src/main/webapp/js/controllers/localeCtrl.js | 2 + .../src/main/webapp/js/controllers/pollCtrl.js | 59 ++++++++++++++++++++ pollen-ui-angular/src/main/webapp/less/style.less | 65 +++++++++++++++++----- .../src/main/webapp/less/variables.less | 3 +- .../src/main/webapp/partials/poll-info.html | 26 +++++++++ .../src/main/webapp/partials/poll.html | 2 + 6 files changed, 142 insertions(+), 15 deletions(-) diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/localeCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/localeCtrl.js index 47667e8..b8d1f35 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/localeCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/localeCtrl.js @@ -32,9 +32,11 @@ angular.module('localeControllers', []) var loadLocale = function () { if ($scope.locale == "fr" && angular.isDefined(i18n_FR)) { angular.copy(i18n_FR, $locale); + moment.locale("fr"); } else if (angular.isDefined(i18n_EN)) { angular.copy(i18n_EN, $locale); + moment.locale("en"); } } diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js index 86182c5..125cdb7 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js @@ -341,6 +341,65 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr }]) +.controller('PollInfoCtrl', ['$scope', '$timeout', '$interval', + function($scope, $timeout, $interval) { + + var setPollInfo = function() { + if (angular.isUndefined( $scope.data.poll)) { + return ; + } + var poll = $scope.data.poll; + var now = new Date(); + + $scope.timeToBeginVote = moment(poll.beginDate).fromNow(); + + $scope.timeToEndVote = {}; + $scope.timeToEndVote.value = (now.getTime() - poll.beginDate) / (poll.endDate - poll.beginDate) * 100; + $scope.timeToEndVote.label = moment(poll.endDate).fromNow(); + $scope.timeToEndVote.type = getType($scope.timeToEndVote.value); + + if (angular.isUndefined(poll.beginChoiceDate)) { + poll.beginChoiceDate = poll.beginDate; + } + + if (angular.isUndefined(poll.endChoiceDate)) { + poll.endChoiceDate = poll.endChoiceDate; + } + + $scope.timeToBeginAddChoice = moment(poll.beginChoiceDate).fromNow(); + + $scope.timeToAddChoice = {}; + $scope.timeToAddChoice.value = (now.getTime() - poll.beginChoiceDate) / (poll.endChoiceDate - poll.beginChoiceDate) * 100; + $scope.timeToAddChoice.label = moment(poll.endChoiceDate).fromNow(); + $scope.timeToAddChoice.type = getType($scope.timeToAddChoice.value); + + $scope.now = now; + } + + var getType = function (value) { + var type; + if (value < 25) { + type = 'success'; + } else if (value < 50) { + type = 'info'; + } else if (value < 75) { + type = 'warning'; + } else { + type = 'danger'; + } + return type; + } + + $interval(setPollInfo, 5000); + + $timeout(function() { + $scope.$watch('data.poll.beginDate', setPollInfo); + $scope.$watch('data.poll.endDate', setPollInfo); + $scope.$watch('data.poll.beginChoiceDate', setPollInfo); + $scope.$watch('data.poll.endChoiceDate', setPollInfo); + }) + +}]) ////////////////////////////////// // Admin choice controller // diff --git a/pollen-ui-angular/src/main/webapp/less/style.less b/pollen-ui-angular/src/main/webapp/less/style.less index 126a8de..713be4c 100644 --- a/pollen-ui-angular/src/main/webapp/less/style.less +++ b/pollen-ui-angular/src/main/webapp/less/style.less @@ -95,7 +95,7 @@ body { padding-top:60px; padding-left:5px; padding-right:5px; - border-right:2px solid @borderColor; + border-right:2px solid @border-color; background-color: @gray-lighter; overflow:hidden; z-index:50; @@ -180,7 +180,7 @@ body { left:0px; width:100%; height:@foot-height; - border-top:2px solid @borderColor; + border-top:2px solid @border-color; background-color:@gray-lighter; overflow:hidden; z-index:50; @@ -219,10 +219,47 @@ body { font-weight: bold; border-left: 8px solid; padding-left: 4px; - color: #555; + color: @title-setting-color; } } + .poll-info { + background-color: #eee; + border-bottom:1px solid @border-color; + padding:10px 15px 5px 10px; + color: @help-color; + + .anim { + max-height:100px; + overflow:hidden; + + @time:@long-time-transition; + + &.ng-enter { + .transition(all @time linear); + } + + &.ng-leave { + .transition(all @time linear); + } + + &.ng-leave { + max-height:0px; + } + + &.ng-enter, + &.ng-leave.ng-leave-active { + max-height:0px; + } + + &.ng-leave, + &.ng-enter.ng-enter-active { + max-height:100px; + } + } + + } + .pollTitle, .pollDesc { margin-top:15px; min-height:60px; @@ -246,7 +283,7 @@ body { } &:hover { - background:@borderColor; + background:@border-color; .transition(background @time-transition ease); .voteTrue { @@ -289,7 +326,7 @@ body { } .pollBigChoice { - border-bottom:1px solid @borderColor; + border-bottom:1px solid @border-color; text-align:right; h3 { @@ -330,7 +367,7 @@ body { padding-top:10px; padding-bottom:5px; text-align:center; - border:1px solid @borderColor; + border:1px solid @border-color; input[type=text]{ width:140px; @@ -414,12 +451,12 @@ a { .transition-duration(@time-transition); &:hover { - background:@borderColor; + background:@border-color; .transition-duration(@time-transition); } td { - border-bottom:1px solid @borderColor; + border-bottom:1px solid @border-color; padding-top:5px; padding-bottom:15px; padding-left:5px; @@ -429,7 +466,7 @@ a { &>td:first-child { width:200px; - border-right:1px solid @borderColor; + border-right:1px solid @border-color; } } } @@ -446,14 +483,14 @@ a { width:100%; margin-top:25px; margin-bottom:15px; - border:3px solid @borderColor; + border:3px solid @border-color; tr th, tr td { padding-top:8px; padding-bottom:8px; padding-left:5px; padding-right:5px; - border:1px solid @borderColor; + border:1px solid @border-color; &.weight { width: @width-input; @@ -482,12 +519,12 @@ label.label-block { tr { td, th { padding:8px; - border: 1px solid @borderColor; + border: 1px solid @border-color; } .transition-duration(@time-transition); &:hover { - background: @borderColor; + background: @border-color; .transition-duration(@time-transition); } } @@ -554,7 +591,7 @@ footer { margin-left:1.25%; margin-right:1.25%; padding:8px; - background-color:@borderColor; + background-color:@border-color; border-radius:8px; .transition(width @time-transition linear 0); diff --git a/pollen-ui-angular/src/main/webapp/less/variables.less b/pollen-ui-angular/src/main/webapp/less/variables.less index f616224..c823952 100644 --- a/pollen-ui-angular/src/main/webapp/less/variables.less +++ b/pollen-ui-angular/src/main/webapp/less/variables.less @@ -25,11 +25,12 @@ @short-time-transition : 0.2s; @long-time-transition : 1.6s; -@borderColor : #dddddd; +@border-color : #dddddd; @danger-color : @brand-danger; @danger-hover-color : darken(@danger-color, 15%); @help-color: #666; +@title-setting-color: #555; @height-pollen-menu : 50px; @height-footer: 20px; diff --git a/pollen-ui-angular/src/main/webapp/partials/poll-info.html b/pollen-ui-angular/src/main/webapp/partials/poll-info.html new file mode 100644 index 0000000..8fd6892 --- /dev/null +++ b/pollen-ui-angular/src/main/webapp/partials/poll-info.html @@ -0,0 +1,26 @@ + +<div ng-if="data.poll.beginDate >= now" class="anim"> + <h4>Début des votes : {{timeToBeginVote}} </h4> +</div> + +<div ng-if="data.poll.endDate && timeToEndVote.value < 100" class="anim"> + <h4>Fin des votes : {{timeToEndVote.label}} </h4> + <div ng-if="timeToEndVote.value >= 0" class="anim"> + <progressbar max="100" value="timeToEndVote.value" type="{{timeToEndVote.type}}"></progressbar> + </div> +</div> + +<div ng-if="!data.poll.endDate" class="anim"> + <h4> Aucune date de fin de vote fixé. </h4> +</div> + +<div ng-if="data.poll.choiceAddAllowed && data.poll.beginChoiceDate >= now" class="anim"> + <h4>Début d'ajout de choix : {{timeToBeginAddChoice}} </h4> +</div> + +<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"> + <progressbar max="100" value="timeToAddChoice.value" type="{{timeToAddChoice.type}}"></progressbar> + </div> +</div> \ No newline at end of file diff --git a/pollen-ui-angular/src/main/webapp/partials/poll.html b/pollen-ui-angular/src/main/webapp/partials/poll.html index ff2c9dd..cb99bc0 100644 --- a/pollen-ui-angular/src/main/webapp/partials/poll.html +++ b/pollen-ui-angular/src/main/webapp/partials/poll.html @@ -33,6 +33,8 @@ <li ng-class="{active: tab == 'participant'}" ng-show="globalVariables.create"><a href="#/poll/create/participant" ng-click="tab = 'participant'">{{ 'poll.tab.participant' | translate }}</a></li> </ul> + <div ng-include="'./partials/poll-info.html'" ng-controller="PollInfoCtrl" class="poll-info"></div> + <div ng-include="'./partials/poll-poll.html'" ng-if="tab == 'vote'" ng-controller="PollVoteCtrl" class="anim-fade"></div> <div ng-if="!globalVariables.create && (tab == 'edit' || tab == 'conf' || tab == 'participant')" ng-controller="PollEditCtrl"> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 95b50385033f0c9eb19945bc8f23c02e2cfa3cac Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Aug 8 16:07:28 2014 +0200 update dateTimePicker --- pollen-ui-angular/bower.json | 2 +- pollen-ui-angular/src/main/webapp/index.html | 2 +- pollen-ui-angular/src/main/webapp/js/directives.js | 31 +++++++++++++++++----- .../src/main/webapp/partials/dateTimePicker.html | 6 ++++- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/pollen-ui-angular/bower.json b/pollen-ui-angular/bower.json index a3e2dbb..500a4db 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#3.0.3" + "bootstrap-datetimepicker": "dralagen/bootstrap-datetimepicker" }, "devDependencies": { "angular-mocks": "1.2.16" diff --git a/pollen-ui-angular/src/main/webapp/index.html b/pollen-ui-angular/src/main/webapp/index.html index 0925d08..ee23285 100644 --- a/pollen-ui-angular/src/main/webapp/index.html +++ b/pollen-ui-angular/src/main/webapp/index.html @@ -25,7 +25,7 @@ <meta charset="utf-8" /> <link rel="stylesheet" type="text/css" href="lib/bootstrap/dist/css/bootstrap.min.css" /> - <link rel="stylesheet" type="text/css" href="lib/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css" /> + <link rel="stylesheet" type="text/css" href="lib/bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css" /> <link rel="stylesheet" type="text/css" href="lib/jqplot-bower/dist//jquery.jqplot.min.css" /> <!-- TODO : compile less to css $ lessc -x less/style.less css/style.css diff --git a/pollen-ui-angular/src/main/webapp/js/directives.js b/pollen-ui-angular/src/main/webapp/js/directives.js index b7dc0db..dd40593 100644 --- a/pollen-ui-angular/src/main/webapp/js/directives.js +++ b/pollen-ui-angular/src/main/webapp/js/directives.js @@ -526,7 +526,8 @@ angular.module('pollenDirective', []) link: function(scope, element, attrs) { scope.dateTimePicker = $(element).find(".datetimepicker"); scope.dateTimePicker.datetimepicker({ - language: SessionStorage.get().locale + language: SessionStorage.get().locale, + showPickOnFocus: true }); var setDate = function () { @@ -575,20 +576,36 @@ angular.module('pollenDirective', []) }); }); - scope.dateTimePicker.on("dp.show", function (e) { - if (angular.isUndefined(scope.ngModel) || scope.ngModel == null) { - scope.ngModel = scope.dateTimePicker.data("DateTimePicker").setDate(moment()); + scope.dateTimePicker.on("change", function(e) { + var newDate = scope.dateTimePicker.data("DateTimePicker").getDate(); + if (newDate != null) { + scope.ngModel = new Date(scope.dateTimePicker.data("DateTimePicker").getDate().format()).getTime(); + } else { + scope.ngModel = null; } - }) + }); - scope.dateTimePicker.on("dp.change", function(e) { - scope.ngModel = new Date(scope.dateTimePicker.data("DateTimePicker").getDate().format()).getTime(); + scope.dateTimePicker.on("dp.show", function() { + // hide other datetimepicker + var id = scope.dateTimePicker.data("DateTimePicker").id; + var allDp = $('.datetimepicker'); + for (var i = 0; i < allDp.length; i++) { + var dp = $(allDp[i]).data("DateTimePicker") + if (dp.id == id) { + continue; + } + dp.hide(); + } }); scope.exit = function() { element.trigger("blur"); } + scope.remove = function () { + scope.ngModel = null; + scope.dateTimePicker.data("DateTimePicker").setDate(null); + } } }; diff --git a/pollen-ui-angular/src/main/webapp/partials/dateTimePicker.html b/pollen-ui-angular/src/main/webapp/partials/dateTimePicker.html index 857fb78..a4d7693 100644 --- a/pollen-ui-angular/src/main/webapp/partials/dateTimePicker.html +++ b/pollen-ui-angular/src/main/webapp/partials/dateTimePicker.html @@ -1,6 +1,10 @@ <div class="input-group date datetimepicker"> <input type="text" class="form-control" focus-me="focus" ng-exit="exit()" id="{{forId}}" /> - <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span> + <span class="input-group-addon datepickerbutton"> + <span class="glyphicon glyphicon-calendar"></span> + </span> + <span class="input-group-addon" ng-click="remove()"> + <span class="glyphicon glyphicon-remove"></span> </span> </div> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 057498f4c8a8a2cb43e09f719e77d6f165155e61 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Aug 8 16:08:40 2014 +0200 print info conflit between endChoiceDate and beginDate --- pollen-ui-angular/src/main/webapp/partials/poll-info.html | 7 +++++++ pollen-ui-angular/src/main/webapp/partials/poll-settings.html | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) 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 8fd6892..5c13b50 100644 --- a/pollen-ui-angular/src/main/webapp/partials/poll-info.html +++ b/pollen-ui-angular/src/main/webapp/partials/poll-info.html @@ -23,4 +23,11 @@ <div ng-if="timeToAddChoice.value >= 0" class="anim"> <progressbar max="100" value="timeToAddChoice.value" type="{{timeToAddChoice.type}}"></progressbar> </div> +</div> + +<div ng-if="data.poll.choiceAddAllowed && (!data.poll.endChoiceDate || data.poll.endChoiceDate > data.poll.beginDate)" class="anim"> + <h4>La période d'ajout de choix et de vote se superpose</h4> + <p> + Les votes peuvent ne pas être représatif de la réalité. + </p> </div> \ No newline at end of file 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 c8a4bc5..fc00fc2 100644 --- a/pollen-ui-angular/src/main/webapp/partials/poll-settings.html +++ b/pollen-ui-angular/src/main/webapp/partials/poll-settings.html @@ -111,8 +111,7 @@ <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 min-date="data.poll.beginDate" - max-date="data.poll.endChoiceDate" + <datetimepicker max-date="data.poll.endChoiceDate" ng-model="data.poll.beginChoiceDate" auto-save="autoSavePoll()" for-id="beginChoiceDate"></datetimepicker> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 036512a2c647c1d7695b1edcc8fa16cca4cf2a39 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Aug 8 16:55:31 2014 +0200 stop event for popup editChoice, edit transition popup --- pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js | 6 +++++- pollen-ui-angular/src/main/webapp/less/style.less | 6 ++++++ pollen-ui-angular/src/main/webapp/less/variables.less | 3 ++- pollen-ui-angular/src/main/webapp/partials/inline-poll.html | 10 +++++----- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js index 125cdb7..bc82cc7 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js @@ -432,8 +432,12 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr popupChoice(choice, 'Ajout d\'un Choix'); } - $scope.editChoice = function (choice) { + $scope.editChoice = function (choice, e) { popupChoice(choice, 'Edition du Choix'); + if (e) { + e.stopPropagation(); + e.preventDefault(); + } } diff --git a/pollen-ui-angular/src/main/webapp/less/style.less b/pollen-ui-angular/src/main/webapp/less/style.less index 713be4c..59e1e95 100644 --- a/pollen-ui-angular/src/main/webapp/less/style.less +++ b/pollen-ui-angular/src/main/webapp/less/style.less @@ -609,3 +609,9 @@ footer { } } } + +.modal { + &.fade .modal-dialog { + .translate(0, 0); + } +} \ No newline at end of file diff --git a/pollen-ui-angular/src/main/webapp/less/variables.less b/pollen-ui-angular/src/main/webapp/less/variables.less index c823952..2ff3a53 100644 --- a/pollen-ui-angular/src/main/webapp/less/variables.less +++ b/pollen-ui-angular/src/main/webapp/less/variables.less @@ -20,6 +20,7 @@ */ @import "../lib/bootstrap/less/variables.less"; +@import "../lib/bootstrap/less/mixins.less"; @time-transition : 0.8s; @short-time-transition : 0.2s; @@ -112,4 +113,4 @@ } } -} \ No newline at end of file +} diff --git a/pollen-ui-angular/src/main/webapp/partials/inline-poll.html b/pollen-ui-angular/src/main/webapp/partials/inline-poll.html index 4ecd5fa..1da8c67 100644 --- a/pollen-ui-angular/src/main/webapp/partials/inline-poll.html +++ b/pollen-ui-angular/src/main/webapp/partials/inline-poll.html @@ -30,28 +30,28 @@ <div ng-hide="showEdit && ((data.poll.addChoiceAllowed && (choice.permission || !choice.id)) || globalVariables.editMode)" class="fixe-input" title="{{choice.description}}"> {{ choice.choiceValue || ('poll.edit' | translate) }} <info-error error="choice.restError.choiceValue[0]" data="choice.choiceValue"></info-error> - <input type="button" class="btn btn-default" ng-if="(data.poll.choiceAddAllowed && (choice.permission || !choice.id)) || globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice)" value="..."/></div> + <input type="button" class="btn btn-default" ng-if="(data.poll.choiceAddAllowed && (choice.permission || !choice.id)) || globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice, $event);" value="..."/></div> <div ng-show="showEdit && ((data.poll.addChoiceAllowed && (choice.permission || !choice.id)) || globalVariables.editMode)"> <input type="text" class="form-control" ng-model="choice.choiceValue" focus-me="showEdit" ng-exit="showEdit = false;" auto-save="saveChoice(choice)" required/> - <input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice)" value="..."/> + <input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice, $event);" value="..."/> </div> </div> <div ng-if="choice.choiceType == 'DATE'" edit-me="showEdit" > <div ng-hide="showEdit && (data.poll.addChoiceAllowed && (choice.permission || !choice.id) || globalVariables.editMode)" class="fixe-input" title="{{choice.description}}"> {{ (choice.choiceValue | date:globalVariables.dateTimeFormat) || ('poll.edit' | translate) }} <info-error error="choice.restError.choiceValue[0]" data="choice.choiceValue"></info-error> - <input type="button" class="btn btn-default" ng-if="(data.poll.choiceAddAllowed && (choice.permission || !choice.id)) || globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice)" value="..."/> + <input type="button" class="btn btn-default" ng-if="(data.poll.choiceAddAllowed && (choice.permission || !choice.id)) || globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice, $event);" value="..."/> </div> <div ng-show="showEdit && (data.poll.choiceAddAllowed && (choice.permission || !choice.id) || globalVariables.editMode)" > <datetimepicker ng-model="choice.choiceValue" focus="showEdit" ng-exit="showEdit = false" ng-save="saveChoice(choice)"></datetimepicker> - <input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice)" value="..."/> + <input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice, $event);" value="..."/> </div> </div> <div ng-if="choice.choiceType == 'RESOURCE'"> <div class="fixe-input" title="{{choice.description}}"> {{choice.choiceValue.meta.name}} <info-error error="choice.restError.choiceValue[0]" data="choice.choiceValue"></info-error> - <input type="button" class="btn btn-default" ng-if="data.poll.choiceAddAllowed && (choice.permission || !choice.id) || globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice)" value="..."/> + <input type="button" class="btn btn-default" ng-if="data.poll.choiceAddAllowed && (choice.permission || !choice.id) || globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice, $event);" value="..."/> <br/> <print-resource image="choice.choiceValue.id" name="choice.choiceValue.meta.name"></print-resource> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 47eddd178662b86763fb408cecdb351697284cda Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Aug 8 17:00:55 2014 +0200 update style with new import from bootstrap for transition and opacity --- pollen-ui-angular/src/main/webapp/less/style.less | 2 +- .../src/main/webapp/less/variables.less | 20 ++++---------------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/pollen-ui-angular/src/main/webapp/less/style.less b/pollen-ui-angular/src/main/webapp/less/style.less index 59e1e95..d2ced80 100644 --- a/pollen-ui-angular/src/main/webapp/less/style.less +++ b/pollen-ui-angular/src/main/webapp/less/style.less @@ -105,7 +105,7 @@ body { ul li .text, ul li input { display: none; - opacity:0; + .opacity(0); } } diff --git a/pollen-ui-angular/src/main/webapp/less/variables.less b/pollen-ui-angular/src/main/webapp/less/variables.less index 2ff3a53..fc204ab 100644 --- a/pollen-ui-angular/src/main/webapp/less/variables.less +++ b/pollen-ui-angular/src/main/webapp/less/variables.less @@ -42,18 +42,6 @@ @preview-size:200px; -.transition(@style) { - -webkit-transition : @style; - -moz-transition : @style; - transition : @style; -} - -.transition-duration(@time) { - -webkit-transition-duration : @time; - -moz-transition-duration : @time; - transition-duration : @time; -} - .fade(@time) { &.ng-enter { .transition(all @time ease @time); @@ -69,12 +57,12 @@ &.ng-enter, &.ng-leave.ng-leave-active { - opacity:0; + .opacity(0); } &.ng-leave, &.ng-enter.ng-enter-active { - opacity:1; + .opacity(1); } } @@ -88,12 +76,12 @@ font-weight:bold; .alert { - opacity:0.9; + .opacity(0.9); .transition(opacity @short-time-transition ease); &:hover { - opacity:1; + .opacity(1); .transition(opacity @short-time-transition ease); } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 97c1cf9aa56dafb384f7bb153b31c82277f2a381 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 11:35:37 2014 +0200 remove unused parameter and add end statement --- pollen-ui-angular/src/main/webapp/js/app.js | 2 +- .../src/main/webapp/js/conf.js.exemple | 3 +- .../src/main/webapp/js/controllers/alertCtrl.js | 14 +- .../main/webapp/js/controllers/favoriteListCtrl.js | 22 +-- .../src/main/webapp/js/controllers/localeCtrl.js | 4 +- .../src/main/webapp/js/controllers/mainCtrl.js | 2 +- .../src/main/webapp/js/controllers/pollCtrl.js | 157 ++++++++++----------- .../src/main/webapp/js/controllers/userCtrl.js | 30 ++-- pollen-ui-angular/src/main/webapp/js/directives.js | 66 ++++----- pollen-ui-angular/src/main/webapp/js/services.js | 54 +++---- 10 files changed, 173 insertions(+), 181 deletions(-) diff --git a/pollen-ui-angular/src/main/webapp/js/app.js b/pollen-ui-angular/src/main/webapp/js/app.js index 6e9954c..9f64313 100644 --- a/pollen-ui-angular/src/main/webapp/js/app.js +++ b/pollen-ui-angular/src/main/webapp/js/app.js @@ -88,5 +88,5 @@ angular.module('pollen', ['pollenDirective', 'pollenServices', 'ngRoute', 'Polle $translateProvider.preferredLanguage('en'); // $translateProvider.fallbackLanguage('en'); } -}]) +}]); diff --git a/pollen-ui-angular/src/main/webapp/js/conf.js.exemple b/pollen-ui-angular/src/main/webapp/js/conf.js.exemple index 4135a7c..6d89a32 100644 --- a/pollen-ui-angular/src/main/webapp/js/conf.js.exemple +++ b/pollen-ui-angular/src/main/webapp/js/conf.js.exemple @@ -1,5 +1,6 @@ var conf = { // Rest-API Base Url + // This value is Mandatory restURL : "http://exemple.com/pollen-rest-api/v1", // Poll number per page @@ -44,4 +45,4 @@ var conf = { // Format DateTime // preference : short, medium defaultDateTimeFormat: "short", -} \ No newline at end of file +}; \ No newline at end of file diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/alertCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/alertCtrl.js index 6f81b28..06bf08f 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/alertCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/alertCtrl.js @@ -78,7 +78,7 @@ angular.module('alertControllers', []) poolAlert = $scope.data.persistentAlerts; } - angular.forEach(poolAlert, function (oneAlert, key) { + angular.forEach(poolAlert, function (oneAlert) { if (angular.equals(oneAlert.msg, alert.msg) && angular.equals(oneAlert.type, alert.type)) { $timeout.cancel(oneAlert.timeoutPromise); alert = oneAlert; @@ -91,14 +91,14 @@ angular.module('alertControllers', []) } if (angular.isDefined(timeout) && timeout >= 0) { - alert.timeout = timeout + alert.timeout = timeout; alert.timeoutPromise = $timeout(function () { $scope.hideAlert(alert) }, timeout); } else { alert.timeout = -1; } - } + }; $scope.hideAlert = function (alert) { var poolAlert; @@ -112,13 +112,13 @@ angular.module('alertControllers', []) if (index >= 0) { poolAlert.splice(index, 1); } - } + }; $scope.hoverAlert = function (alert) { if (alert.timeout >= 0) { $timeout.cancel(alert.timeoutPromise); } - } + }; $scope.leaveAlert = function (alert) { if (alert.timeout >= 0) { @@ -126,9 +126,9 @@ angular.module('alertControllers', []) $scope.hideAlert(alert); }, alert.timeout); } - } + }; $scope.toHTML = function (msg) { return $sce.trustAsHtml($filter('translate')(msg)); } -}]) \ No newline at end of file +}]); \ No newline at end of file diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/favoriteListCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/favoriteListCtrl.js index 1477c4b..a0fe4b7 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/favoriteListCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/favoriteListCtrl.js @@ -82,7 +82,7 @@ angular.module('favoriteListControllers', []) var getEmptyFavoriteList = function () { return {name:'', members: []}; - } + }; var initFavoriteList = function () { if ($routeParams.favoriteListId) { @@ -107,7 +107,7 @@ angular.module('favoriteListControllers', []) }); return deferred.promise; - } + }; $scope.addMember = function () { if (angular.isDefined($scope.data.favoriteListMemberPagination) && $scope.data.favoriteListMemberPagination.currentPage < $scope.data.favoriteListMemberPagination.lastPage) { @@ -121,7 +121,7 @@ angular.module('favoriteListControllers', []) $scope.saveFavoriteList = function () { var FavoriteListPromise; if (angular.isDefined($scope.data.favoriteList.id)) { // edit - FavoriteListPromise = FavoriteList.update({id:$scope.data.favoriteList.id, name:$scope.data.favoriteList.name}, function (data) { + FavoriteListPromise = FavoriteList.update({id:$scope.data.favoriteList.id, name:$scope.data.favoriteList.name}, function () { delete $scope.data.favoriteList.restError; }, function (error) { $scope.data.favoriteList.restError = error.data; @@ -130,9 +130,9 @@ angular.module('favoriteListControllers', []) FavoriteListPromise = FavoriteList.add({name:$scope.data.favoriteList.name}, function (data) { $scope.data.favoriteList.id = data.id; delete $scope.data.favoriteList.restError; - angular.forEach($scope.data.favoriteList.members, function (member, key) { + angular.forEach($scope.data.favoriteList.members, function (member) { $scope.saveMember(member); - }) + }); $location.url('/favoriteList/'+data.id); }, function (error) { $scope.data.favoriteList.restError = error.data; @@ -168,7 +168,7 @@ angular.module('favoriteListControllers', []) } } } - } + }; $scope.deleteFavoriteList = function () { if (angular.isDefined($scope.data.favoriteList.id)) { @@ -178,7 +178,7 @@ angular.module('favoriteListControllers', []) }).then( function () { var confirmDelete = confirm(confirmMessage); if (confirmDelete == true) { - FavoriteList.remove({favoriteListId:$scope.data.favoriteList.id}, function (data) { + FavoriteList.remove({favoriteListId:$scope.data.favoriteList.id}, function () { $location.url('/favoriteList'); }); } @@ -197,7 +197,7 @@ angular.module('favoriteListControllers', []) }).then( function () { var confirmDelete = confirm(confirmMessage); if (confirmDelete == true) { - FavoriteListMember.remove({favoriteListId:$scope.data.favoriteList.id, memberId:member.id}, function (data) { + FavoriteListMember.remove({favoriteListId:$scope.data.favoriteList.id, memberId:member.id}, function () { var index = $scope.data.favoriteList.members.indexOf(member); $scope.data.favoriteList.members.splice(index, 1); }); @@ -213,13 +213,13 @@ angular.module('favoriteListControllers', []) $scope.newFavoriteList = function () { $scope.data.favoriteList = getEmptyFavoriteList(); $location.url('/favoriteList/new'); - } + }; var lastRoute = $route.current; - $scope.$on('$locationChangeSuccess', function(event) { + $scope.$on('$locationChangeSuccess', function() { if (lastRoute.$$route.controller == $route.current.$$route.controller) { $route.current = lastRoute; } }); -}]) +}]); diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/localeCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/localeCtrl.js index b8d1f35..a6ba707 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/localeCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/localeCtrl.js @@ -38,7 +38,7 @@ angular.module('localeControllers', []) angular.copy(i18n_EN, $locale); moment.locale("en"); } - } + }; if (angular.isUndefined($scope.locale)) { // set locale with browser preference @@ -68,4 +68,4 @@ angular.module('localeControllers', []) } } -}]) +}]); diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/mainCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/mainCtrl.js index aacd075..c945de4 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/mainCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/mainCtrl.js @@ -31,5 +31,5 @@ angular.module('PollenMainControllers', ['pollenServices']) $scope.$on('titleChange', function () { $scope.title = Page.title(); }) -}]) +}]); diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js index bc82cc7..29d2336 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js @@ -92,9 +92,9 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } $scope.toggleMinify = function () { - $scope.globalVariables.minify = ! $scope.globalVariables.minify + $scope.globalVariables.minify = ! $scope.globalVariables.minify; SessionStorage.save({'menuMinify': $scope.globalVariables.minify}); - } + }; var setDateFormat = function () { $scope.globalVariables.dateFormat = DateFormat.getDateFormat(); @@ -114,7 +114,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.pollDeferred.resolve(); }) }); - } + }; if (angular.isDefined($routeParams.pollId)) { var pollDeferred = $scope.pollDeferred; @@ -140,7 +140,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr pollDeferred.promise.then(function () { setVoteCountingType(); - }) + }); pollDeferred.promise.then(function () { var baseUrl = $scope.globalVariables.baseUrl; @@ -170,17 +170,17 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.toHTML = function (data) { return $sce.trustAsHtml(data); - } + }; $scope.inlineVersion = function () { $scope.data.poll.template = 'inline'; $scope.templateURL = './partials/inline-poll.html'; - } + }; $scope.bigVersion = function () { $scope.data.poll.template = 'big'; $scope.templateURL = './partials/big-poll.html'; - } + }; var initTemplateURL = function () { if (angular.isDefined($scope.data.poll.template)) { @@ -198,7 +198,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr var lastRoute = $route.current; $timeout(function() { - $scope.$on('$locationChangeSuccess', function(event) { + $scope.$on('$locationChangeSuccess', function() { if (lastRoute.$$route.controller == $route.current.$$route.controller) { $scope.tab = $scope.setTab(); $route.current = lastRoute; @@ -212,7 +212,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr return $scope.data.voteCountingType.renderType == 'checkbox'; } return false; - } + }; $scope.getVoteValue = function (voteValue) { if ($scope.voteCountingIsBoolean()) { @@ -229,7 +229,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr return voteValue; } } - } + }; $scope.preSendChoice = function (choice) { if (choice.choiceType == 'DATE') { @@ -249,7 +249,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } return choice; - } + }; $scope.postReceiveChoice = function (choice) { if (choice.choiceType == 'DATE') { @@ -264,7 +264,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } return choice; - } + }; $timeout(function () { $scope.$watch('data.poll.voteCountingType', function (newVal, oldVal) { @@ -273,17 +273,17 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } }); - $scope.$watch('data.voteCountingType.renderType', function (newVal, oldVal) { + $scope.$watch('data.voteCountingType.renderType', function (newVal) { if (newVal !== undefined) { - angular.forEach($scope.data.votants, function(votant, key) { + angular.forEach($scope.data.votants, function(votant) { angular.forEach(votant.choice, function (choice) { choice.voteValue = $scope.getVoteValue(choice.voteValue); }); }); } - }) + }); - $scope.$watch('data.poll.title', function (newVal) { + $scope.$watch('data.poll.title', function () { Page.setValue($scope.data.poll.title); }); }); @@ -362,8 +362,8 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr poll.beginChoiceDate = poll.beginDate; } - if (angular.isUndefined(poll.endChoiceDate)) { - poll.endChoiceDate = poll.endChoiceDate; + if (angular.isUndefined(poll.endChoiceDate) && angular.isUndefined(poll.endDate)) { + poll.endChoiceDate = poll.endDate; } $scope.timeToBeginAddChoice = moment(poll.beginChoiceDate).fromNow(); @@ -374,7 +374,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.timeToAddChoice.type = getType($scope.timeToAddChoice.value); $scope.now = now; - } + }; var getType = function (value) { var type; @@ -388,7 +388,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr type = 'danger'; } return type; - } + }; $interval(setPollInfo, 5000); @@ -421,7 +421,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr choiceValue : '', choiceIsDeletable: true }; - } + }; $scope.addChoice = function () { var index = $scope.data.choices.push(initChoice()); @@ -430,7 +430,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr delete $scope.restError.choice; } popupChoice(choice, 'Ajout d\'un Choix'); - } + }; $scope.editChoice = function (choice, e) { popupChoice(choice, 'Edition du Choix'); @@ -438,7 +438,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr e.stopPropagation(); e.preventDefault(); } - } + }; $scope.saveAddChoice = function (choice) { @@ -465,7 +465,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr choice.restError = error.data; }); } - } + }; $scope.saveEditChoice = function (choice) { if (angular.isDefined($routeParams.pollId)) { @@ -480,7 +480,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr choice.restError = error.data; }); } - } + }; $scope.deleteChoice = function (choice) { if (angular.isDefined($routeParams.pollId) && angular.isDefined(choice.id)) { @@ -508,7 +508,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr if (index > -1) { $scope.data.choices.splice(index,1); } - } + }; $scope.saveChoice = function (choice) { if (angular.isDefined(choice)) { @@ -519,7 +519,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.saveAddChoice(choice); } } - } + }; var popupChoice = function (choiceEdit, title) { var choice = angular.copy(choiceEdit); @@ -537,7 +537,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.saveChoice(choiceEdit); } - } + }; var modalInstance = $modal.open({ templateUrl : 'partials/poll-popupChoice.html', @@ -566,7 +566,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } }); - modalInstance.result.then(function (returnChoice) { + modalInstance.result.then(function () { $scope.deleteChoice(choiceEdit); }, function () { $scope.globalVariables.lastType = choice.choiceType; @@ -616,7 +616,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } } }); - } + }; var PollPopChoiceCtrl = function ($scope, $modalInstance, title, choice, dateFormat) { @@ -629,14 +629,14 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.saveChoice = function () { $modalInstance.dismiss(); - } + }; $scope.cancelChoice = function () { if (angular.isDefined(oldChoice)) { angular.copy(oldChoice, $scope.choice); } $modalInstance.dismiss(); - } + }; $scope.deleteChoice = function (ch) { $modalInstance.close(ch); @@ -669,7 +669,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr var newMember = function () { return {name:'', email:'', weight:1.0}; - } + }; var newGroup = function () { var members = []; @@ -677,7 +677,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr members.push(newMember()); } return {group:{name:'', weight:1.0}, members:members} - } + }; $scope.data.voterList = []; $scope.data.voterList.push(newGroup()); @@ -708,11 +708,11 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.addVoter = function (index) { $scope.data.voterList[index].members.push(newMember()); - } + }; $scope.addGroup = function () { $scope.data.voterList.push(newGroup()); - } + }; //////////////////////////////// //// VOTE COUNTING TYPE ///// @@ -740,7 +740,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr }); $timeout(function () { - $scope.$watch('data.poll.voteCountingType', function (newVal) { + $scope.$watch('data.poll.voteCountingType', function () { setHelper(); }) }); @@ -764,14 +764,14 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr var initPoll = function () { Poll.skeletonNew(function (poll) { $scope.data.poll = poll; - }, function (error) { + }, function () { $scope.data.poll = {}; }); $scope.data.choices = []; $scope.data.vote = {}; $scope.data.vote.choices = $scope.data.choices; - } + }; initPoll(); $scope.savePoll = function () { @@ -806,7 +806,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr , -1); $rootScope.$broadcast('newSuccess', 'poll.saved'); if ($scope.data.poll.pollType != 'FREE') { - SessionStorage.save({'voterList':$scope.data.voterList}) + SessionStorage.save({'voterList':$scope.data.voterList}); $location.url('/poll/edit/'+data.id+'/'+data.permission); } else { @@ -828,7 +828,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $rootScope.$broadcast('newError', error.data.choice[0]); } }); - } + }; $scope.deletePoll = function () { $scope.data.poll = initPoll(); @@ -886,7 +886,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr catch (e) { } return isEmpty; - } + }; var initFavoriteList = function () { if (angular.isDefined(SessionStorage.get().user)) { @@ -922,7 +922,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.saveVoterList = function (voterList) { if (angular.isDefined(voterList.group.id)) { - PollVoterList.update({pollId:$routeParams.pollId, permission:$scope.globalVariables.pollToken, voterListId:voterList.group.id}, voterList.group, function (data) { + PollVoterList.update({pollId:$routeParams.pollId, permission:$scope.globalVariables.pollToken, voterListId:voterList.group.id}, voterList.group, function () { $rootScope.$broadcast('newSuccess', 'poll.saved'); delete voterList.group.restError; }, function (error) { @@ -950,7 +950,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr // Get member Id PollVoterListMember.query({pollId:$routeParams.pollId, permission:$scope.globalVariables.pollToken, voterListId: data.id}, function (voterListMember) { - angular.forEach(voterListMember, function(member, key) { + angular.forEach(voterListMember, function(member) { for (var i = 0; i < voterList.members.length; i++) { if (member.email == voterList.members[i].email) { voterList.members[i] = member; @@ -1017,7 +1017,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } } } - } + }; $scope.deleteVoterList = function (voterList) { if (angular.isDefined(voterList) && angular.isDefined(voterList.group.id)) { @@ -1054,7 +1054,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr }).then( function () { var confirmDelete = confirm(confirmMessage); if (confirmDelete == true) { - member.$remove({pollId:$routeParams.pollId, permission:$scope.globalVariables.pollToken, voterListId:voterList.group.id}, function (data) { + member.$remove({pollId:$routeParams.pollId, permission:$scope.globalVariables.pollToken, voterListId:voterList.group.id}, function () { var index = voterList.members.indexOf(member); voterList.members.splice(index, 1); }); @@ -1078,7 +1078,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.data.choices = choices; angular.forEach(choices, function (ch) { ch = $scope.postReceiveChoice(ch); - }) + }); $scope.data.vote = {}; $scope.data.vote.choice = angular.copy($scope.data.choices); }); @@ -1090,7 +1090,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } else { $location.path('/'); } - }, function (error) { + }, function () { $location.path('/'); }); @@ -1123,7 +1123,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr savePoll.endChoiceDate = savePoll.endChoiceDate.getTime(); } - Poll.update({permission:$scope.globalVariables.pollToken}, savePoll, function (data) { + Poll.update({permission:$scope.globalVariables.pollToken}, savePoll, function () { $rootScope.$broadcast('newSuccess', 'poll.saved'); }, function (error) { angular.extend($scope.restError, error.data); @@ -1177,7 +1177,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr initVote(); $scope.pollDeferred.resolve(); }); - } + }; $scope.pollDeferred.promise.then(initPoll); var initAuthor = function () { @@ -1206,10 +1206,10 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.data.vote.choice.push({'choiceId':$scope.data.choices[i].id, 'voteValue': defaultValue}); } - }, function (error) { + }, function () { $scope.data.poll.canVote = false; }); - } + }; $scope.voter = function () { var sendVote = angular.copy($scope.data.vote); @@ -1232,9 +1232,9 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr PollVote.get({pollId:$routeParams.pollId, voteId:returnRequest.id, permission:returnRequest.permission}, function (newVote) { angular.forEach(newVote.choice, function (choice) { choice.voteValue = $scope.getVoteValue(choice.voteValue); - }) + }); $scope.data.votants.push(newVote); - }) + }); var redirect = '/poll/vote/' + $routeParams.pollId; if (angular.isDefined($scope.globalVariables.pollToken)) { @@ -1262,7 +1262,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $rootScope.$broadcast('newError', error.data["vote.totalVoteValue"][0]); } - angular.forEach($scope.data.vote.choice, function (choice, key) { + angular.forEach($scope.data.vote.choice, function (choice) { if (angular.isDefined(error.data["vote.voteValue["+choice.choiceId+"]"])) { choice.restError = error.data["vote.voteValue["+choice.choiceId+"]"]; } @@ -1271,9 +1271,9 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } }); }); - } + }; - var oldVote + var oldVote; $scope.editVote = function (vote) { if (angular.isDefined(oldVote)) { @@ -1286,7 +1286,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr oldVote = angular.copy(vote); vote.onEdit = true; - } + }; $scope.cancelVote = function (vote) { if (angular.isDefined(oldVote) && vote.id == oldVote.id) { @@ -1296,7 +1296,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr vote.choice[i].voteValue = oldVote.choice[i].voteValue; } } - } + }; $scope.saveVote = function (vote) { var sendVote = angular.copy(vote); @@ -1332,7 +1332,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr }, function (error) { $scope.data.vote.restError = { voterName : error.data["voter.name"]}; }) - } + }; $scope.toggleVoteValue = function (choice, onEdit, event) { if (onEdit) { @@ -1348,7 +1348,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } } } - } + }; $scope.deleteVote = function (vote) { var confirmMessage; @@ -1363,13 +1363,12 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } var index = $scope.data.votants.indexOf(vote); - PollVote.remove({pollId:$routeParams.pollId}, vote, function (data) { + PollVote.remove({pollId:$routeParams.pollId}, vote, function () { $scope.data.votants.splice(index, 1); }) } }); - - } + }; $scope.toggleValue = function (choice, event) { if ($scope.voteCountingIsBoolean()) { @@ -1435,7 +1434,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr paginationParameter.pageNumber = $scope.data.commentsPagination.lastPage - $scope.data.commentsPagination.currentPage; } initComments(); - } + }; var paginationParameter = {pageSize: $scope.pageSize, order: 'postDate', desc: $scope.desc}; if (angular.isDefined($routeParams.page)) { @@ -1448,12 +1447,10 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr } var initComments = function () { - var commentPromise = PollComment.get({pollId:$routeParams.pollId, permission:$scope.commentToken, paginationParameter:paginationParameter}, function (data) { + return PollComment.get({pollId: $routeParams.pollId, permission: $scope.commentToken, paginationParameter: paginationParameter}, function (data) { $scope.data.comments = data.elements; $scope.data.commentsPagination = data.pagination; }).$promise; - - return commentPromise; }; initComments(); $timeout(function () { @@ -1469,10 +1466,10 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.postComment = function () { delete $scope.restError; - var commentPromise + var commentPromise; if (angular.isDefined($scope.comment.id)) { // edit - commentPromise = PollComment.update({pollId:$routeParams.pollId}, $scope.comment, function (data) { + commentPromise = PollComment.update({pollId:$routeParams.pollId}, $scope.comment, function () { paginationParameter.pageNumber = $scope.comment.page; initComments(); initAuthor(); @@ -1530,7 +1527,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.editPost = function (comment) { $scope.comment = angular.copy(comment); $scope.comment.page = paginationParameter.pageNumber; - } + }; $scope.deletePost = function (comment) { var confirmMessage; @@ -1548,7 +1545,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr delete $scope.comment.permission; } - PollComment.remove({pollId:$routeParams.pollId, commentId:comment.id}, function (data) { + PollComment.remove({pollId:$routeParams.pollId, commentId:comment.id}, function () { // reload comments initComments().then(function () { // if no comment then change page if it's possible @@ -1579,7 +1576,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.translateTitle = { '0' : "{{ 'poll.result.title.zero' | translate }}", 'one' : "{{ 'poll.result.title.one' | translate }}", - 'other' : "{{ 'poll.result.title.other' | translate:{nbVoter:data.result.nbVotant} }}", + 'other' : "{{ 'poll.result.title.other' | translate:{nbVoter:data.result.nbVotant} }}" }; $scope.plot = 'chart'; @@ -1642,7 +1639,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr i = $scope.data.choices.length; } } - }) + }); resultDeferred.resolve('result load'); votesDeferred.promise.then(function () { @@ -1666,7 +1663,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr $scope.toHTML = function (data) { return $sce.trustAsHtml(data); - } + }; $scope.toggleSelect = function (poll, event) { if (angular.isUndefined(poll.selected)) { @@ -1679,7 +1676,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr if (angular.isDefined(event)) { event.stopPropagation(); } - } + }; $scope.selectAll = function () { angular.forEach($scope.data.polls, function (poll) { @@ -1711,7 +1708,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr }); } }) - } + }; Page.setTitle('title.poll.list'); @@ -1734,7 +1731,7 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr var initPolls = function () { Poll.get({paginationParameter:paginationParameter, cmd:$routeParams.cmd}, function (data) { - $scope.data.polls = data.elements + $scope.data.polls = data.elements; $scope.data.pollsPagination = data.pagination; // check if has elements @@ -1769,6 +1766,4 @@ angular.module('pollControllers', ['ngRoute', 'pollenServices', 'pascalprecht.tr }); }) -}]) - -; \ No newline at end of file +}]); \ No newline at end of file diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/userCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/userCtrl.js index 9e8984b..a0b8dd4 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/userCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/userCtrl.js @@ -37,7 +37,7 @@ angular.module('userControllers', []) $scope.submit = function () { if ($scope.data.user.password == $scope.data.user.password2) { - User.add({}, $scope.data.user, function (data) { + User.add({}, $scope.data.user, function () { $rootScope.$broadcast('newSuccess', 'user.register.success'); $scope.data.user = {email:'', password:'', password2:''}; }, function (error) { @@ -59,10 +59,10 @@ angular.module('userControllers', []) $scope.email = ''; $scope.submit = function () { if ($scope.email != '') { - UserLostPassword.send({login:$scope.email}, function (data) { + UserLostPassword.send({login:$scope.email}, function () { $rootScope.$broadcast('newSuccess', 'user.forgotPassword.success'); $scope.email = ''; - }, function (error) { + }, function () { $translate('user.error.mail.notFound').then(function (error) { $scope.restError = {email: [error]}; }) @@ -105,17 +105,17 @@ angular.module('userControllers', []) }, function (error) { $scope.restError = error.data; }); - } + }; $scope.editPassword = function () { if ($scope.data.user.newPassword == $scope.data.user.newPassword2) { - User.editPassword($scope.data.user, function (data) { + User.editPassword($scope.data.user, function () { $rootScope.$broadcast('newSuccess', 'user.edit.success'); }, function (error) { $scope.restError = error.data; }); } - } + }; $scope.disableUser = function () { var confirmMessage; @@ -124,7 +124,7 @@ angular.module('userControllers', []) }).then( function () { var confirmDelete = confirm(confirmMessage); if (confirmDelete == true) { - User.ban({userId: $scope.data.user.id, anonymize:true}, function (data) { + User.ban({userId: $scope.data.user.id, anonymize:true}, function () { $rootScope.$broadcast('newSuccess', 'user.disableMe.success'); $rootScope.$broadcast('sessionExpired'); }) @@ -170,20 +170,20 @@ angular.module('userControllers', []) }); $scope.saveUser = function (user) { - User.admin(user, function(data) { + User.admin(user, function() { $rootScope.$broadcast('newSuccess', 'user.edit.success'); }); }; $scope.generatePassword = function (user) { - UserLostPassword.send({login: user.email}, function (data) { + UserLostPassword.send({login: user.email}, function () { $rootScope.$broadcast('newSuccess', 'user.generatePassword.success'); user.isDisabled = false; }); - } + }; $scope.deleteUser = function (user) { - User.remove({userId:user.id, anonymize:true}, function (data) { + User.remove({userId:user.id, anonymize:true}, function () { $rootScope.$broadcast('newSuccess', 'user.delete.success'); var userIndex = $scope.data.users.indexOf(user); if (userIndex >= 0) { @@ -193,7 +193,7 @@ angular.module('userControllers', []) }; $scope.banUser = function (user) { - User.ban({userId : user.id, anonymize:true}, function (data) { + User.ban({userId : user.id, anonymize:true}, function () { user.isDisabled = true; $rootScope.$broadcast('newSuccess', 'user.disableUser.success'); }); @@ -226,12 +226,12 @@ angular.module('userControllers', []) // reload page for right user $route.reload(); }) - }, function (error) { + }, function () { $translate('user.error.login').then(function (error) { $scope.restError = {connexion: error}; }) }); - } + }; $scope.logout = function () { UserLogout.logout(); @@ -244,4 +244,4 @@ angular.module('userControllers', []) //got to the home $route.reload(); } -}]) \ No newline at end of file +}]); \ No newline at end of file diff --git a/pollen-ui-angular/src/main/webapp/js/directives.js b/pollen-ui-angular/src/main/webapp/js/directives.js index dd40593..8d32590 100644 --- a/pollen-ui-angular/src/main/webapp/js/directives.js +++ b/pollen-ui-angular/src/main/webapp/js/directives.js @@ -81,7 +81,7 @@ angular.module('pollenDirective', []) ck.setData(ngModel.$modelValue); }); - ngModel.$render = function(value) { + ngModel.$render = function() { ck.setData(ngModel.$modelValue); }; @@ -134,7 +134,7 @@ angular.module('pollenDirective', []) forData: '=data' }, template: '<span class="glyphicon glyphicon-exclamation-sign danger" tooltip="{{error}}" ng-if="error"></span>', - link: function (scope, element, attrs) { + link: function (scope) { scope.$watch('forData', function (newVal, oldVal) { if (newVal != oldVal) { delete scope.error; @@ -164,7 +164,7 @@ angular.module('pollenDirective', []) delete scope.error; } }); - scope.$watch('error', function (newVal, oldVal) { + scope.$watch('error', function (newVal) { attrs.tooltip = newVal; if (angular.isDefined(newVal)) { $(element[0]).addClass('has-error'); @@ -186,7 +186,7 @@ angular.module('pollenDirective', []) .directive('selectOnClick', [function () { return { restrict: 'A', - link: function (scope, element, attrs) { + link: function (scope, element) { element.on('click', function () { this.select(); }); @@ -204,15 +204,11 @@ angular.module('pollenDirective', []) link : function (scope, element, attrs) { scope.oldVal = {}; scope.change = false; - scope.timeout; + scope.timeout = null; $timeout(function () { scope.oldVal[attrs.ngModel] = scope.$eval(attrs.ngModel); - scope.$watch(attrs.ngModel, function (newVal, oldVal) { - if (scope.$eval(attrs.ngModel) != scope.oldVal[attrs.ngModel]) { - scope.change = true; - } else { - scope.change = false; - } + scope.$watch(attrs.ngModel, function () { + scope.change = scope.$eval(attrs.ngModel) != scope.oldVal[attrs.ngModel]; }, true); }); @@ -220,7 +216,7 @@ angular.module('pollenDirective', []) if (scope.change && !scope.lock) { scope.$apply(function () { scope.change = false; - scope.oldVal[attrs.ngModel] = scope.$eval(attrs.ngModel);; + scope.oldVal[attrs.ngModel] = scope.$eval(attrs.ngModel); scope.$eval(attrs.autoSave); }); } @@ -233,7 +229,7 @@ angular.module('pollenDirective', []) scope.timeout = $timeout(save,1000); }); - element.bind('dp.change', function(newDate) { + element.bind('dp.change', function() { try { scope.$digest(); } @@ -244,7 +240,7 @@ angular.module('pollenDirective', []) element.bind('dp.show', function() { scope.lock = true; - }) + }); element.bind('dp.hide', function () { scope.lock = false; @@ -253,7 +249,7 @@ angular.module('pollenDirective', []) } scope.timeout = $timeout(save, 100); - }) + }); element.bind('blur', function () { if (scope.timeout) { @@ -278,8 +274,8 @@ angular.module('pollenDirective', []) pageSize: '=' }, templateUrl: 'partials/pagination.html', - link: function (scope, element, attrs) { - var setNavPage = function (pageNumber) { + link: function (scope) { + var setNavPage = function () { if (scope.currentPage > 0) { scope.previousPage = scope.currentPage - 1; } else { @@ -291,7 +287,7 @@ angular.module('pollenDirective', []) } else { scope.nextPage = scope.lastPage; } - } + }; //set pageList scope.pageList = []; @@ -324,7 +320,7 @@ angular.module('pollenDirective', []) data:'=' }, template:'<div class="jqplot-target"></div>', - link: function(scope, element, attrs) { + link: function(scope, element) { var initChart = function () { if (angular.isDefined(scope.data)) { @@ -344,15 +340,15 @@ angular.module('pollenDirective', []) tickOptions: { showGridline: false, show:true, - showLabel: true, + showLabel: true } }, axes: { xaxis: { - renderer: $.jqplot.CategoryAxisRenderer, + renderer: $.jqplot.CategoryAxisRenderer }, yaxis: { - label:'Vote', + label:'Vote' } } }); @@ -384,10 +380,10 @@ angular.module('pollenDirective', []) return { restrict : 'E', scope : { - data:'=', + data:'=' }, template:'<div class="jqplot-target"></div>', - link: function(scope, element, attrs) { + link: function(scope, element) { var initChart = function () { if (angular.isDefined(scope.data)) { $.jqplot.config.enablePlugins = true; @@ -436,10 +432,10 @@ angular.module('pollenDirective', []) ngModel: "=" }, template:'<form><input type="file" name="resource" /></form>', - link: function (scope, element, attrs) { + link: function (scope, element) { element.bind("change", function (changeEvent) { var reader = new FileReader(); - reader.onload = function (loadEvent) { + reader.onload = function () { var formData = new FormData(element[0].firstChild); scope.$apply(function () { scope.ngModel = { meta: changeEvent.target.files[0] }; @@ -452,7 +448,7 @@ angular.module('pollenDirective', []) scope.ngModel.id = response.id; scope.ngModel.data = conf.restURL+'/resources/'+response.id; }); - } + }; reader.readAsDataURL( changeEvent.target.files[0] ); }); @@ -473,7 +469,7 @@ angular.module('pollenDirective', []) }, transclude : true, templateUrl : "partials/printResource.html", - link : function (scope, element, attrs) { + link : function (scope, element) { scope.showImage = false; $timeout(function () { @@ -501,7 +497,7 @@ angular.module('pollenDirective', []) }); }; - element.bind("click", function (event) { + element.bind("click", function () { toggleZoom(); }); } @@ -523,7 +519,7 @@ angular.module('pollenDirective', []) forId: '@' }, templateUrl:"partials/dateTimePicker.html", - link: function(scope, element, attrs) { + link: function(scope, element) { scope.dateTimePicker = $(element).find(".datetimepicker"); scope.dateTimePicker.datetimepicker({ language: SessionStorage.get().locale, @@ -548,7 +544,7 @@ angular.module('pollenDirective', []) language: SessionStorage.get().locale }); setDate(); - }) + }); var setMaxDate = function () { if (angular.isDefined(scope.maxDate)) { @@ -576,7 +572,7 @@ angular.module('pollenDirective', []) }); }); - scope.dateTimePicker.on("change", function(e) { + scope.dateTimePicker.on("change", function() { var newDate = scope.dateTimePicker.data("DateTimePicker").getDate(); if (newDate != null) { scope.ngModel = new Date(scope.dateTimePicker.data("DateTimePicker").getDate().format()).getTime(); @@ -590,7 +586,7 @@ angular.module('pollenDirective', []) var id = scope.dateTimePicker.data("DateTimePicker").id; var allDp = $('.datetimepicker'); for (var i = 0; i < allDp.length; i++) { - var dp = $(allDp[i]).data("DateTimePicker") + var dp = $(allDp[i]).data("DateTimePicker"); if (dp.id == id) { continue; } @@ -600,7 +596,7 @@ angular.module('pollenDirective', []) scope.exit = function() { element.trigger("blur"); - } + }; scope.remove = function () { scope.ngModel = null; @@ -609,4 +605,4 @@ angular.module('pollenDirective', []) } }; -}]) \ No newline at end of file +}]); \ No newline at end of file diff --git a/pollen-ui-angular/src/main/webapp/js/services.js b/pollen-ui-angular/src/main/webapp/js/services.js index 6be865b..f7ab222 100644 --- a/pollen-ui-angular/src/main/webapp/js/services.js +++ b/pollen-ui-angular/src/main/webapp/js/services.js @@ -38,7 +38,7 @@ angular.module('pollenServices', ['ngResource']) }, 'add' : { method : 'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { var poll = angular.copy(data); delete poll.choice; var choices = angular.copy(data.choice); @@ -47,7 +47,7 @@ angular.module('pollenServices', ['ngResource']) }, 'update' : { method : 'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return 'poll='+encodeURIComponent(JSON.stringify(data)); } }, @@ -80,14 +80,14 @@ angular.module('pollenServices', ['ngResource']) { 'add' : { method:'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return transformParam(data); } }, 'update' : { method:'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return transformParam(data); } } @@ -108,14 +108,14 @@ angular.module('pollenServices', ['ngResource']) }, 'add' : { method:'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return transformParam(data); } }, 'update' : { method:'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return transformParam(data); } } @@ -132,14 +132,14 @@ angular.module('pollenServices', ['ngResource']) { 'add' : { method:'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return transformParam(data); } }, 'update' : { method:'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return transformParam(data); } } @@ -153,13 +153,13 @@ angular.module('pollenServices', ['ngResource']) { 'add' : { method : 'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return 'voterList='+encodeURIComponent(JSON.stringify(data.group))+'&members='+encodeURIComponent(JSON.stringify(data.members)); } }, 'update' : { method : 'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return 'voterList='+encodeURIComponent(JSON.stringify(data)); } }, @@ -183,13 +183,13 @@ angular.module('pollenServices', ['ngResource']) { 'add' : { method : 'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } }, 'update' : { method : 'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } } @@ -205,33 +205,33 @@ angular.module('pollenServices', ['ngResource']) var transformParam = function (data) { var generatePassword = (data.password == ''); return 'user='+encodeURIComponent(JSON.stringify(data))+'&generatePassword='+generatePassword; - } + }; return $resource(conf.restURL+'/users/:userId', {userId : '@id'}, { 'add' : { method : 'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } }, 'admin': { method : 'POST', url: conf.restURL+'/users/:userId/admin', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } }, 'update' : { method:'POST', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return transformParam(data); } }, 'editPassword' : { method:'POST', url: conf.restURL+'/users/:userId/password', - transformRequest : function (data, headersGetter) { + transformRequest : function (data) { return 'oldPassword='+encodeURIComponent(data.password)+ '&newPassword='+encodeURIComponent(data.newPassword); } @@ -255,12 +255,12 @@ angular.module('pollenServices', ['ngResource']) query += "false"; } return query; - } + }; return $resource(conf.restURL+'/login', {}, { 'login' : { method: 'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } } @@ -294,19 +294,19 @@ angular.module('pollenServices', ['ngResource']) .factory('FavoriteList', ['$resource', function ($resource) { var transformParam = function (data) { return 'favoriteList='+encodeURIComponent(JSON.stringify(data)); - } + }; return $resource(conf.restURL+'/favoriteLists/:favoriteListId', {favoriteListId:'@id'}, { 'add' : { method:'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } }, 'update' : { method:'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } } @@ -316,19 +316,19 @@ angular.module('pollenServices', ['ngResource']) .factory('FavoriteListMember', ['$resource', function ($resource) { var transformParam = function (data) { return 'member='+encodeURIComponent(JSON.stringify(data)); - } + }; return $resource(conf.restURL+'/favoriteLists/:favoriteListId/members/:memberId', {memberId:'@id'}, { 'add' : { method:'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } }, 'update' : { method:'POST', - transformRequest: function (data, headersGetter) { + transformRequest: function (data) { return transformParam(data); } } @@ -370,7 +370,7 @@ angular.module('pollenServices', ['ngResource']) save: function (data) { angular.forEach(data, function (value,key) { session[key] = value; - }) + }); localStorage.setItem(storageId, JSON.stringify(session)); }, append: function (data) { @@ -469,4 +469,4 @@ angular.module('pollenServices', ['ngResource']) $rootScope.$broadcast('titleChange'); } }; -}]) \ No newline at end of file +}]); \ No newline at end of file -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 53376bef11c0e990192b42c869b5e9099ee549c8 Merge: 90e6c7c 97c1cf9 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 15:31:23 2014 +0200 Merge branch 'feature/printPollInformation' into develop pollen-ui-angular/bower.json | 3 +- pollen-ui-angular/src/main/webapp/index.html | 6 +- pollen-ui-angular/src/main/webapp/js/app.js | 2 +- .../src/main/webapp/js/conf.js.exemple | 3 +- .../src/main/webapp/js/controllers/alertCtrl.js | 14 +- .../main/webapp/js/controllers/favoriteListCtrl.js | 22 +-- .../src/main/webapp/js/controllers/localeCtrl.js | 6 +- .../src/main/webapp/js/controllers/mainCtrl.js | 2 +- .../src/main/webapp/js/controllers/pollCtrl.js | 214 +++++++++++++-------- .../src/main/webapp/js/controllers/userCtrl.js | 30 +-- pollen-ui-angular/src/main/webapp/js/directives.js | 98 +++++----- pollen-ui-angular/src/main/webapp/js/services.js | 54 +++--- pollen-ui-angular/src/main/webapp/less/style.less | 73 +++++-- .../src/main/webapp/less/variables.less | 26 +-- .../src/main/webapp/partials/dateTimePicker.html | 6 +- .../src/main/webapp/partials/inline-poll.html | 10 +- .../src/main/webapp/partials/poll-info.html | 33 ++++ .../src/main/webapp/partials/poll-settings.html | 3 +- .../src/main/webapp/partials/poll.html | 2 + 19 files changed, 376 insertions(+), 231 deletions(-) -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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>.
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 2bdb75d0936199c44d387ce3594695c90aa4c11f Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 14:20:43 2014 +0200 translate VoteService error message --- .../java/org/chorem/pollen/services/service/PollService.java | 10 +++++++++- .../chorem/pollen/services/service/VoteCountingService.java | 6 ++++-- .../java/org/chorem/pollen/services/service/VoteService.java | 12 ++++++------ .../src/main/resources/i18n/pollen-services_en_GB.properties | 8 +++++++- .../src/main/resources/i18n/pollen-services_fr_FR.properties | 6 ++++++ 5 files changed, 32 insertions(+), 10 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 4a83ae3..dc37162 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 @@ -63,7 +63,15 @@ public class PollService extends PollenServiceSupport { input.setResultIsVisible(isPermitted(PermissionVerb.readPollResult, input.getEntityId())); - input.setCanVote(isPermitted(PermissionVerb.addVote, input.getEntityId()) && (!input.isClosed() && getNow().compareTo(input.getEndDate()) == -1)); + boolean canVote = !input.isClosed(); + if (canVote && input.getEndDate() != null) { + canVote = getNow().compareTo(input.getEndDate()) == -1; + } + if (canVote) { + canVote = isPermitted(PermissionVerb.addVote, input.getEntityId()); + } + + input.setCanVote(canVote); return input; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java index 5471f15..e469da1 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java @@ -51,6 +51,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import static org.nuiton.i18n.I18n.l; + /** * TODO * @@ -267,14 +269,14 @@ public class VoteCountingService extends PollenServiceSupport { check(errors, "voteValue[" + choice.getChoiceId().getReducedId() + "]", voteCounting.isVoteValueValid(choice.getVoteValue()), - "Value is invalid"); + l(getLocale(), "pollen.error.vote.voteValue.invalid")); } } check(errors, "totalVoteValue", voteCounting.isTotalVoteValueValid(total), - "Total vote value is invalid"); + l(getLocale(), "pollen.error.vote.totalVote.invalid")); return errors; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java index 441c2ba..97910a1 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java @@ -34,6 +34,8 @@ import org.chorem.pollen.services.service.security.PermissionVerb; import java.util.*; +import static org.nuiton.i18n.I18n.l; + /** * TODO * @@ -178,16 +180,14 @@ public class VoteService extends PollenServiceSupport { boolean voteExists = vote.isPersisted(); Set<String> voterNames = new HashSet<>(); - // poll can't be closed - boolean notClosed = checkNot(errors, "poll", poll.isClosed(), "poll can not be closed"); + boolean notClosed = checkNot(errors, "poll", poll.isClosed(), l(getLocale(), "pollen.error.vote.poll.isClosed")); if (notClosed) { Date now = serviceContext.getNow(); - // poll must be started - check(errors, "poll", Polls.isStarted(poll, now), "poll is not started"); + check(errors, "poll", Polls.isStarted(poll, now), l(getLocale(), "pollen.error.vote.poll.notStarted")); - boolean voteNameNotBlank = checkNotBlank(errors, "voter.name", vote.getVoterName(), "voter name can not be empty"); + boolean voteNameNotBlank = checkNotBlank(errors, "voter.name", vote.getVoterName(), l(getLocale(), "pollen.error.vote.voterName.mandatory")); if ( voteNameNotBlank ) { List<Vote> existingVote = getVoteDao().findAll(poll); @@ -208,7 +208,7 @@ public class VoteService extends PollenServiceSupport { } boolean voterNameAdded = voterNames.add(vote.getVoterName()); - check(errors, "voter.name", voterNameAdded, "voter name is already used"); + check(errors, "voter.name", voterNameAdded, l(getLocale(), "pollen.error.vote.voterName.alreadyExist")); } 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 41bdce0..6c772c0 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 @@ -29,6 +29,7 @@ pollen.error.favoriteListMember.email.empty=member email can not be empty pollen.error.favoriteListMember.email.invalid=member email is not valid pollen.error.favoriteListMember.name.already.used=member name already used pollen.error.favoriteListMember.name.empty=member name can not be empty +pollen.error.poll.beginChoiceDate.afterEndDate=the begin date of adding choice is after the end of poll 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 @@ -49,6 +50,12 @@ pollen.error.user.mailExist=email already exists pollen.error.user.mailInvalid=email is not valid pollen.error.user.passwordEmpty=password can not be empty pollen.error.user.passwordInvalid=password is not valid +pollen.error.vote.poll.isClosed=poll is closed, you can't vote +pollen.error.vote.poll.notStarted=poll is not started +pollen.error.vote.totalVote.invalid=Total vote value is invalid +pollen.error.vote.voteValue.invalid=Value is invalid +pollen.error.vote.voterName.alreadyExist=voter name is already used +pollen.error.vote.voterName.mandatory=voter name can not be empty pollen.service.mail.ChoiceAddedEmail.subject=[Pollen] A choice was added in poll %s pollen.service.mail.ChoiceDeletedEmail.subject=[Pollen] A choice was deleted in poll %s pollen.service.mail.ChoiceEditedEmail.subject=[Pollen] A choice was edited in poll %s @@ -68,4 +75,3 @@ 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 0eae21b..bd143c7 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 @@ -49,6 +49,12 @@ pollen.error.user.mailExist=Courriel existe déjà pollen.error.user.mailInvalid=Courriel est invalide pollen.error.user.passwordEmpty=Mot de passe ne peut pas être vide pollen.error.user.passwordInvalid=Mot de passe est invalide +pollen.error.vote.poll.isClosed=Le sondage est clos, vous pouvez voter +pollen.error.vote.poll.notStarted=les votes n'ont pas commencé +pollen.error.vote.totalVote.invalid=le total des valuers est invalide +pollen.error.vote.voteValue.invalid=la valeur est invalid +pollen.error.vote.voterName.alreadyExist=le nom existe déjà +pollen.error.vote.voterName.mandatory=le nom est obligatoire pollen.service.mail.ChoiceAddedEmail.subject=[Pollen] Un choix a été ajouté au sondage %s pollen.service.mail.ChoiceDeletedEmail.subject=[Pollen] Un choix a été supprimé du sondage %s pollen.service.mail.ChoiceEditedEmail.subject=[Pollen] Un choix a été modifié sur le sondage %s -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 a8446d8f171ade6292b8dcba9da502e33e219287 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 14:26:30 2014 +0200 translate comment error message --- .../java/org/chorem/pollen/services/service/CommentService.java | 6 ++++-- .../src/main/resources/i18n/pollen-services_en_GB.properties | 2 ++ .../src/main/resources/i18n/pollen-services_fr_FR.properties | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java index c9437d2..ae57670 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java @@ -37,6 +37,8 @@ import org.chorem.pollen.services.service.security.SecurityService; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; +import static org.nuiton.i18n.I18n.l; + /** * TODO * @@ -162,8 +164,8 @@ public class CommentService extends PollenServiceSupport { ErrorMap errors = new ErrorMap(); - checkNotBlank(errors, "text", comment.getText(), "textcan not be empty"); - checkNotBlank(errors, "author.name", comment.getAuthorName(), "author name can not be empty"); + checkNotBlank(errors, "text", comment.getText(), l(getLocale(), "pollen.error.comment.text.mandatory")); + checkNotBlank(errors, "author.name", comment.getAuthorName(), l(getLocale(), "pollen.error.comment.author.name.mandatory")); return errors; 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 6c772c0..72a447f 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 @@ -16,6 +16,8 @@ pollen.error.choice.choiceDateExist=choice date already used in this list pollen.error.choice.choiceNameEmpty=choice name can not be empty pollen.error.choice.choiceNameExist=choice name already used in this list pollen.error.choice.choiceTypeEmpty=choiceType can not be null +pollen.error.comment.author.name.mandatory=author name can not be empty +pollen.error.comment.text.mandatory=text can not be empty pollen.error.favoriteList.import.csv.already.used.email= pollen.error.favoriteList.import.csv.already.used.name= pollen.error.favoriteList.import.csv.invalid.email= 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 bd143c7..244987a 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 @@ -16,6 +16,8 @@ pollen.error.choice.choiceDateExist=La date exist déjà utilisé sur ce sondage pollen.error.choice.choiceNameEmpty=Le nom du choix ne peut pas être vide pollen.error.choice.choiceNameExist=Le nom du choix est déjà utilisé sur ce sondage pollen.error.choice.choiceTypeEmpty=Le type du choix doit être défini +pollen.error.comment.author.name.mandatory=Le nom est obligatoire +pollen.error.comment.text.mandatory=le text est obligatoire pollen.error.favoriteList.import.csv.already.used.email= pollen.error.favoriteList.import.csv.already.used.name= pollen.error.favoriteList.import.csv.invalid.email= -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 5d56b2d902e584b7e2252dc2b4dbf5ae3bedcb13 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Mon Aug 11 15:26:56 2014 +0200 translate voterlist error messages, add somme test for VoterListService --- .../pollen/services/service/VoterListService.java | 27 ++++---- .../i18n/pollen-services_en_GB.properties | 10 +++ .../i18n/pollen-services_fr_FR.properties | 10 +++ .../services/service/VoterListServiceTest.java | 74 ++++++++++++++++++++-- 4 files changed, 101 insertions(+), 20 deletions(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java index 6a26ba5..559e8b4 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java @@ -36,6 +36,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import static org.nuiton.i18n.I18n.l; + /** * TODO * @@ -104,11 +106,6 @@ public class VoterListService extends PollenServiceSupport { existingVoterListMembers = getVoterListMembers0(result); } - VoterListMemberTopiaDao voterListMemberDao = - getVoterListMemberDao(); - PollenPrincipalTopiaDao pollenPrincipalDao = - getPollenPrincipalDao(); - List<FavoriteListMember> favoriteListMembers = getFavoriteListService().getFavoriteListMembers0(favoriteList); for (FavoriteListMember favoriteListMember : favoriteListMembers) { @@ -473,13 +470,13 @@ public class VoterListService extends PollenServiceSupport { } - checkNotBlank(errors, VoterList.PROPERTY_NAME, voterList.getName(), "voterList name can not be empty"); - check(errors, VoterList.PROPERTY_WEIGHT, voterList.getWeight() > 0, "voterList weight must be greater than 0"); - checkNotEmpty(errors, "member", members, "voterList must contains at least one member"); + checkNotBlank(errors, VoterList.PROPERTY_NAME, voterList.getName(), l(getLocale(), "pollen.error.voterList.name.mandatory")); + check(errors, VoterList.PROPERTY_WEIGHT, voterList.getWeight() > 0, l(getLocale(), "pollen.error.voterList.weight.greaterThan0")); + checkNotEmpty(errors, "member", members, l(getLocale(), "pollen.error.voterList.member.mandatory")); boolean added = voterListNames.add(voterList.getName()); - check(errors, VoterList.PROPERTY_NAME, added, "voterList name already used"); + check(errors, VoterList.PROPERTY_NAME, added, l(getLocale(), "pollen.error.voterList.name.alreadyUsed")); int voterListMemberIndex = 0; @@ -527,28 +524,28 @@ public class VoterListService extends PollenServiceSupport { } String voterListMemberName = voterListMember.getName(); - boolean nameNotblank = checkNotBlank(errors, PollenPrincipal.PROPERTY_NAME, voterListMemberName, "member name can not be empty"); + boolean nameNotblank = checkNotBlank(errors, PollenPrincipal.PROPERTY_NAME, voterListMemberName, l(getLocale(), "pollen.error.voterList.member.name.mandatory")); if (nameNotblank) { boolean nameAdded = voterListMemberNames.add(voterListMemberName); - check(errors, PollenPrincipal.PROPERTY_NAME, nameAdded, "member name already used in this list"); + check(errors, PollenPrincipal.PROPERTY_NAME, nameAdded, l(getLocale(), "pollen.error.voterList.member.name.alreadyUsed")); } String voterListMemberEmail = getCleanMail(voterListMember.getEmail()); - boolean emailNotBlank = checkNotBlank(errors, PollenPrincipal.PROPERTY_EMAIL, voterListMemberEmail, "member email can not be empty"); + boolean emailNotBlank = checkNotBlank(errors, PollenPrincipal.PROPERTY_EMAIL, voterListMemberEmail, l(getLocale(), "pollen.error.voterList.member.email.mandatory")); if (emailNotBlank) { - checkValidEmail(errors, PollenPrincipal.PROPERTY_EMAIL, voterListMemberEmail, "member email is not valid"); + checkValidEmail(errors, PollenPrincipal.PROPERTY_EMAIL, voterListMemberEmail, l(getLocale(), "pollen.error.voterList.member.email.invalid")); boolean emailAdded = voterListMemberEmails.add(voterListMemberEmail); - check(errors, PollenPrincipal.PROPERTY_EMAIL, emailAdded, "member email already used in this list"); + check(errors, PollenPrincipal.PROPERTY_EMAIL, emailAdded, l(getLocale(), "pollen.error.voterList.member.email.alreadyUsed")); } - check(errors, VoterListMember.PROPERTY_WEIGHT, voterListMember.getWeight() > 0, "member weight must be greater than 0"); + check(errors, VoterListMember.PROPERTY_WEIGHT, voterListMember.getWeight() > 0, l(getLocale(), "pollen.error.voterList.member.weight.greaterThan0")); return errors; 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 72a447f..a1cfeb7 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 @@ -58,6 +58,16 @@ pollen.error.vote.totalVote.invalid=Total vote value is invalid pollen.error.vote.voteValue.invalid=Value is invalid pollen.error.vote.voterName.alreadyExist=voter name is already used pollen.error.vote.voterName.mandatory=voter name can not be empty +pollen.error.voterList.member.email.alreadyUsed=member email already used in this list +pollen.error.voterList.member.email.invalid=member email is not valid +pollen.error.voterList.member.email.mandatory=member email can not be empty +pollen.error.voterList.member.mandatory=voterList must contains at least one member +pollen.error.voterList.member.name.alreadyUsed=member name already used in this list +pollen.error.voterList.member.name.mandatory=member name can not be empty +pollen.error.voterList.member.weight.greaterThan0=member weight must be greater than 0 +pollen.error.voterList.name.alreadyUsed=voterList name already used +pollen.error.voterList.name.mandatory=voterList name can not be empty +pollen.error.voterList.weight.greaterThan0=voterList weight must be greater than 0 pollen.service.mail.ChoiceAddedEmail.subject=[Pollen] A choice was added in poll %s pollen.service.mail.ChoiceDeletedEmail.subject=[Pollen] A choice was deleted in poll %s pollen.service.mail.ChoiceEditedEmail.subject=[Pollen] A choice was edited in poll %s 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 244987a..f72b463 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 @@ -57,6 +57,16 @@ pollen.error.vote.totalVote.invalid=le total des valuers est invalide pollen.error.vote.voteValue.invalid=la valeur est invalid pollen.error.vote.voterName.alreadyExist=le nom existe déjà pollen.error.vote.voterName.mandatory=le nom est obligatoire +pollen.error.voterList.member.email.alreadyUsed=L'email du membre est déjà utilisé dans cette liste +pollen.error.voterList.member.email.invalid=L'email du membre est invalide +pollen.error.voterList.member.email.mandatory=l'email du membre est obligatoire +pollen.error.voterList.member.mandatory=la liste de votant doit comporter au moins un membre +pollen.error.voterList.member.name.alreadyUsed=Le nom du membre est déjà utilisé +pollen.error.voterList.member.name.mandatory=Le nom du membre est obligatoire +pollen.error.voterList.member.weight.greaterThan0=Le membre doit avoir un poid supérieur à 0 +pollen.error.voterList.name.alreadyUsed=Le nom de la liste de votant existe déjà +pollen.error.voterList.name.mandatory=Nom de la liste de votant est obligatoire +pollen.error.voterList.weight.greaterThan0=Poid de la liste de votant doit être supérieur à 0 pollen.service.mail.ChoiceAddedEmail.subject=[Pollen] Un choix a été ajouté au sondage %s pollen.service.mail.ChoiceDeletedEmail.subject=[Pollen] Un choix a été supprimé du sondage %s pollen.service.mail.ChoiceEditedEmail.subject=[Pollen] Un choix a été modifié sur le sondage %s diff --git a/pollen-services/src/test/java/org/chorem/pollen/services/service/VoterListServiceTest.java b/pollen-services/src/test/java/org/chorem/pollen/services/service/VoterListServiceTest.java index 44ba4c1..063afbd 100644 --- a/pollen-services/src/test/java/org/chorem/pollen/services/service/VoterListServiceTest.java +++ b/pollen-services/src/test/java/org/chorem/pollen/services/service/VoterListServiceTest.java @@ -9,11 +9,7 @@ import org.chorem.pollen.persistence.entity.PollType; import org.chorem.pollen.persistence.entity.PollenUser; import org.chorem.pollen.persistence.entity.VoterList; import org.chorem.pollen.services.AbstractPollenServiceTest; -import org.chorem.pollen.services.bean.ChoiceBean; -import org.chorem.pollen.services.bean.FavoriteListBean; -import org.chorem.pollen.services.bean.PollBean; -import org.chorem.pollen.services.bean.PollenEntityRef; -import org.chorem.pollen.services.bean.VoterListMemberBean; +import org.chorem.pollen.services.bean.*; import org.chorem.pollen.services.service.security.PollenAuthenticationException; import org.chorem.pollen.services.service.security.PollenInvalidSessionTokenException; import org.junit.Assert; @@ -122,4 +118,72 @@ public class VoterListServiceTest extends AbstractPollenServiceTest { Assert.assertEquals(2, voterListMembers.size()); } + + @Test + public void createVoterList() throws InvalidFormException, PollenInvalidSessionTokenException, PollenAuthenticationException { + + login("jean@pollen.fake", "fake"); + + PollBean poll = pollService.getNewPoll(); + + poll.setPollType(PollType.RESTRICTED); + poll.setTitle("poll1"); + + List<ChoiceBean> choices = new ArrayList<>(); + + ChoiceBean choice1 = new ChoiceBean(); + choices.add(choice1); + choice1.setChoiceType(ChoiceType.TEXT); + choice1.setChoiceValue("A"); + choice1.setDescription("Choice A"); + + ChoiceBean choice2 = new ChoiceBean(); + choice2.setChoiceType(ChoiceType.TEXT); + choice2.setChoiceValue("B"); + choice2.setDescription("Choice B"); + choices.add(choice2); + + PollenEntityRef<Poll> createdPoll = pollService.createPoll(poll, choices); + Assert.assertNotNull(createdPoll); + + String pollId = createdPoll.getEntityId(); + + VoterListBean voterList = new VoterListBean(); + try { + voterListService.addVoterList(pollId, voterList, null); + Assert.fail(); + } catch (InvalidFormException e) { + // missing name + // missing member + // missing weight + assertErrorKeyFound(e, "name", "member", "weight"); + } + voterList.setWeight(1); + try { + voterListService.addVoterList(pollId, voterList, null); + Assert.fail(); + } catch (InvalidFormException e) { + // missing name + // missing member + assertErrorKeyFound(e, "name", "member"); + } + voterList.setName("voterList1"); + List<VoterListMemberBean> listMember = new ArrayList<>(); + try { + voterListService.addVoterList(pollId, voterList, listMember); + Assert.fail(); + } catch (InvalidFormException e) { + // missing member + assertErrorKeyFound(e, "member"); + } + VoterListMemberBean member = new VoterListMemberBean(); + member.setName("member1"); + member.setEmail("member1@pollen.org"); + member.setWeight(1); + + listMember.add(member); + PollenEntityRef<VoterList> voterListPersisted = voterListService.addVoterList(pollId, voterList, listMember); + Assert.assertNotNull(voterListPersisted); + + } } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm