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 75da148fe63ed0573999f5f09c4998ffcc0b80c2 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Tue Jul 1 17:34:28 2014 +0200 clone poll --- .../org/chorem/pollen/rest/api/v1/PollApi.java | 4 ++-- pollen-rest-api/src/main/resources/mapping | 2 +- .../pollen/services/service/PollService.java | 26 +++++++++++++++++----- .../pollen/services/service/VoteService.java | 9 ++++++++ .../src/main/webapp/js/controllers/pollCtrl.js | 10 +++++++++ pollen-ui-angular/src/main/webapp/js/services.js | 4 ++++ .../src/main/webapp/partials/poll-link.html | 8 +++---- 7 files changed, 51 insertions(+), 12 deletions(-) diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java index 9a6f671..6d90b52 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java @@ -112,9 +112,9 @@ public class PollApi extends WebMotionController { } - public PollBean clonePoll(PollService pollService, PollenEntityId<Poll> pollId) { + public PollenEntityRef<Poll> clonePoll(PollService pollService, PollenEntityId<Poll> pollId) { - PollBean clonedPoll = pollService.clonePoll(pollId.getEntityId()); + PollenEntityRef<Poll> clonedPoll = pollService.clonePoll(pollId.getEntityId()); return clonedPoll; } diff --git a/pollen-rest-api/src/main/resources/mapping b/pollen-rest-api/src/main/resources/mapping index 22f2d98..4340a23 100644 --- a/pollen-rest-api/src/main/resources/mapping +++ b/pollen-rest-api/src/main/resources/mapping @@ -109,7 +109,7 @@ POST /v1/polls/{pollId}/edit PollApi.editPoll GET /v1/polls/{pollId} PollApi.getPoll DELETE /v1/polls/{pollId} PollApi.deletePoll -# POST /v1/polls/{pollId} PollApi.clonePoll +POST /v1/polls/{pollId}/clone PollApi.clonePoll GET /v1/polls/{pollId}/export PollApi.exportPoll PUT /v1/polls/{pollId}/close PollApi.closePoll 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 0ed03c6..a33d04c 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 @@ -214,19 +214,35 @@ public class PollService extends PollenServiceSupport { } - public PollBean clonePoll(String pollId) { + public PollenEntityRef<Poll> clonePoll(String pollId) { checkNotNull(pollId); checkPermission(PermissionVerb.clonePoll, pollId); - Poll poll = getPoll0(pollId); + PollBean clonedPoll = toBean(PollBean.class, getPoll0(pollId)); - //TODO + clonedPoll.setEntityId(null); + clonedPoll.setPermission(null); + clonedPoll.setClosed(false); + clonedPoll.setBeginDate(serviceContext.getNow()); + clonedPoll.setEndDate(null); + clonedPoll.setBeginChoiceDate(null); + clonedPoll.setEndChoiceDate(null); + + List<ChoiceBean> clonedChoices = getChoiceService().getChoices(pollId); + for (ChoiceBean choice : clonedChoices) { + choice.setEntityId(null); + choice.setPermission(null); + } + + Poll savedPoll = savePoll(clonedPoll, clonedChoices); commit(); - getNotificationService().onPollCreated(poll); + getNotificationService().onPollCreated(savedPoll); + + PollenEntityRef<Poll> createBeanRef = PollenEntityRef.of(savedPoll); - return toBean(PollBean.class, poll); + return createBeanRef; } 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 90c6331..dad35e2 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 @@ -241,6 +241,15 @@ public class VoteService extends PollenServiceSupport { // toSave.getVoter().setEmail(getCleanMail(vote.getVoter().getEmail())); // } + PollenUser connectedUser = getConnectedUser(); + + if (connectedUser != null) { + + // link to connected user + toSave.getVoter().setPollenUser(connectedUser); + + } + // -- List of VoteToChoice -- // Set<VoteToChoice> choicesToSave = new HashSet<>(); 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 a6820e8..09c8e9e 100644 --- a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js +++ b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js @@ -236,6 +236,16 @@ angular.module('pollControllers', []) } }; + $scope.clonePoll = function () { + if (angular.isDefined($scope.data.poll.id)) { + Poll.clone({pollId: $scope.data.poll.id, permission: $scope.globalVariables.pollToken}, {}, function (data) { + console.log(data); + $rootScope.$broadcast('newSuccess', 'poll.cloned'); + $location.url('/poll/edit/'+data.id); + }); + } + } + }]) .controller('PollAdminCtrl', ['$scope', '$controller', '$modal', '$timeout', '$routeParams', function ($scope, $controller, $modal, $timeout, $routeParams) { diff --git a/pollen-ui-angular/src/main/webapp/js/services.js b/pollen-ui-angular/src/main/webapp/js/services.js index fc3ff51..1333cae 100644 --- a/pollen-ui-angular/src/main/webapp/js/services.js +++ b/pollen-ui-angular/src/main/webapp/js/services.js @@ -52,6 +52,10 @@ angular.module('pollenServices', ['ngResource']) 'close' : { method : 'PUT', url : conf.restURL+'/polls/:pollId/close' + }, + 'clone' : { + method : 'POST', + url : conf.restURL+'/polls/:pollId/clone' } }); }]) diff --git a/pollen-ui-angular/src/main/webapp/partials/poll-link.html b/pollen-ui-angular/src/main/webapp/partials/poll-link.html index 4c867da..73822bc 100644 --- a/pollen-ui-angular/src/main/webapp/partials/poll-link.html +++ b/pollen-ui-angular/src/main/webapp/partials/poll-link.html @@ -55,9 +55,9 @@ </li> <li> - <a class="fakeLink"> + <a class="fakeLink" ng-click="clonePoll()" href=""> <span class="glyphicon glyphicon-transfer" title="{{ 'poll.link.clone' | translate }}"></span> - <span class="text">{{ 'poll.link.clone' | translate }} (disabled)</span> + <span class="text">{{ 'poll.link.clone' | translate }}</span> </a> </li> @@ -71,14 +71,14 @@ <ul ng-if="data.poll.permission"> <li ng-if="!data.poll.isClosed"> - <a class="fakeLink danger" ng-click="closePoll()"> + <a class="fakeLink danger" href="" ng-click="closePoll()"> <span class="glyphicon glyphicon-remove" title="{{ 'poll.link.close' | translate }}"></span> <span class="text">{{ 'poll.link.close' | translate }}</span> </a> </li> <li> - <a class="fakeLink danger" ng-click="deletePoll()"> + <a class="fakeLink danger" href="" ng-click="deletePoll()"> <span class="glyphicon glyphicon-trash" title="{{ 'poll.link.delete' | translate }}"></span> <span class="text">{{ 'poll.link.delete' | translate }}</span> </a> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.