branch develop updated (3cc449cd -> b1bbd56f)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git from 3cc449cd correction des permission en cas d'ajout de vote ou de commentaire pour des sondage restreint + correction style pour les choix new 84d92fd3 refs #14 création du flux atom à la création du sondage + ajout des entrées dans le flux pour l'ajout, la suppression et la modification d'un vote + ajout du bouton pour lire le flux à partir du sondage new 023a6f7b refs #14 add feed content in poll + migration new 9ac68cf4 refs #14 add permission to feed url new 6533396c modification des emails (pas d'affichage du contenu du vote) new a48ef556 refs #14 do not display user name if the vote is anonymous new 8362eed3 refs #14 fix tests new b1bbd56f fixes #14 add the missing events in the feed The 7 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 b1bbd56f8c8bf2ad336311d985d802c6d5cdb865 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 17:39:57 2017 +0200 fixes #14 add the missing events in the feed commit 8362eed38ece5cacc4e980227c650dcd11fc99dc Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 10:09:31 2017 +0200 refs #14 fix tests commit a48ef55638b40fee8c7eb59567f187a04546da3e Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 10:09:03 2017 +0200 refs #14 do not display user name if the vote is anonymous commit 6533396ca12a22822751e06053d0809bb0a4352b Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 10:08:06 2017 +0200 modification des emails (pas d'affichage du contenu du vote) commit 9ac68cf471e58834bdf2963473186360a311a811 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 10:06:10 2017 +0200 refs #14 add permission to feed url commit 023a6f7ba765615c3c5466ed1f0630065cf85b3f Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 10:03:43 2017 +0200 refs #14 add feed content in poll + migration commit 84d92fd3eec9fd5eb04f338f2704b012c1bf732f Author: Kevin Morin <morin@codelutin.com> Date: Fri May 12 09:26:40 2017 +0200 refs #14 création du flux atom à la création du sondage + ajout des entrées dans le flux pour l'ajout, la suppression et la modification d'un vote + ajout du bouton pour lire le flux à partir du sondage Summary of changes: .../db/migration/common/V3_0_0_1__exemple.sql | 2 - .../h2/V3_0_0_1__add_feed_content_in_poll.sql | 2 + .../db/migration/h2/V3_0_0_2__exemple.sql | 2 - .../V3_0_0_1__add_feed_content_in_poll.sql | 2 + .../db/migration/postgresql/V3_0_0_2__exemple.sql | 3 - pollen-persistence/src/main/xmi/pollen.properties | 3 +- pollen-persistence/src/main/xmi/pollen.zargo | Bin 24262 -> 24351 bytes .../org/chorem/pollen/rest/api/v1/PollApi.java | 6 + pollen-rest-api/src/main/resources/mapping | 2 + .../pollen/rest/api/AbstractPollenRestApiTest.java | 3 +- .../org/chorem/pollen/rest/api/PollApiTest.java | 10 +- pollen-services/pom.xml | 6 +- .../pollen/services/service/ChoiceService.java | 1 + .../pollen/services/service/CommentService.java | 3 + .../pollen/services/service/FeedService.java | 158 +++++++++++++++++++++ .../services/service/NotificationService.java | 2 +- .../pollen/services/service/PollService.java | 4 + .../services/service/PollenServiceSupport.java | 28 ++++ .../pollen/services/service/VoteService.java | 3 + .../services/service/mail/AbstractVoteEmail.java | 36 ++--- .../pollen/services/service/mail/EmailService.java | 62 ++------ .../services/service/mail/VoteAddedEmail.java | 15 +- .../services/service/mail/VoteDeletedEmail.java | 15 +- .../services/service/mail/VoteEditedEmail.java | 15 +- .../main/resources/email/VoteAddedEmail.mustache | 12 +- .../resources/email/VoteAddedEmail_fr.mustache | 12 +- .../main/resources/email/VoteDeletedEmail.mustache | 12 +- .../resources/email/VoteDeletedEmail_fr.mustache | 12 +- .../main/resources/email/VoteEditedEmail.mustache | 12 +- .../resources/email/VoteEditedEmail_fr.mustache | 10 -- .../main/resources/email/VoteSummaryEmail.mustache | 26 ---- .../resources/email/VoteSummaryEmail_fr.mustache | 26 ---- .../i18n/pollen-services_en_GB.properties | 13 ++ .../i18n/pollen-services_fr_FR.properties | 14 +- pollen-ui-riot-js/src/main/web/conf.js | 2 +- .../src/main/web/tag/poll/Poll.tag.html | 3 +- pom.xml | 8 +- 37 files changed, 284 insertions(+), 261 deletions(-) delete mode 100644 pollen-persistence/src/main/resources/db/migration/common/V3_0_0_1__exemple.sql create mode 100644 pollen-persistence/src/main/resources/db/migration/h2/V3_0_0_1__add_feed_content_in_poll.sql delete mode 100644 pollen-persistence/src/main/resources/db/migration/h2/V3_0_0_2__exemple.sql create mode 100644 pollen-persistence/src/main/resources/db/migration/postgresql/V3_0_0_1__add_feed_content_in_poll.sql delete mode 100644 pollen-persistence/src/main/resources/db/migration/postgresql/V3_0_0_2__exemple.sql create mode 100644 pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java delete mode 100644 pollen-services/src/main/resources/email/VoteSummaryEmail.mustache delete mode 100644 pollen-services/src/main/resources/email/VoteSummaryEmail_fr.mustache -- 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 https://gitlab.nuiton.org/chorem/pollen.git commit 84d92fd3eec9fd5eb04f338f2704b012c1bf732f Author: Kevin Morin <morin@codelutin.com> Date: Fri May 12 09:26:40 2017 +0200 refs #14 création du flux atom à la création du sondage + ajout des entrées dans le flux pour l'ajout, la suppression et la modification d'un vote + ajout du bouton pour lire le flux à partir du sondage --- pollen-persistence/src/main/xmi/pollen.properties | 1 + .../org/chorem/pollen/rest/api/v1/PollApi.java | 6 ++ pollen-rest-api/src/main/resources/mapping | 2 + pollen-services/pom.xml | 6 +- .../pollen/services/service/FeedService.java | 116 +++++++++++++++++++++ .../pollen/services/service/PollService.java | 1 + .../services/service/PollenServiceSupport.java | 28 +++++ .../pollen/services/service/VoteService.java | 3 + .../pollen/services/service/mail/EmailService.java | 35 +------ .../i18n/pollen-services_en_GB.properties | 5 + .../i18n/pollen-services_fr_FR.properties | 5 + .../src/main/web/tag/poll/Poll.tag.html | 3 +- pom.xml | 8 +- 13 files changed, 181 insertions(+), 38 deletions(-) diff --git a/pollen-persistence/src/main/xmi/pollen.properties b/pollen-persistence/src/main/xmi/pollen.properties index dec4909a..73dd47bf 100644 --- a/pollen-persistence/src/main/xmi/pollen.properties +++ b/pollen-persistence/src/main/xmi/pollen.properties @@ -27,6 +27,7 @@ model.tagValue.hibernateAttributeType.String=string package.org.chorem.pollen.persistence.entity.stereotype=entity # Text org.chorem.pollen.persistence.entity.Poll.attribute.description.tagValue.hibernateAttributeType=text +org.chorem.pollen.persistence.entity.Poll.attribute.feedContent.tagValue.hibernateAttributeType=text org.chorem.pollen.persistence.entity.Choice.attribute.description.tagValue.hibernateAttributeType=text org.chorem.pollen.persistence.entity.Comment.attribute.text.tagValue.hibernateAttributeType=text # Blob 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 988304f7..7df49fc3 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 @@ -32,9 +32,11 @@ import org.chorem.pollen.services.bean.PollenEntityId; import org.chorem.pollen.services.bean.PollenEntityRef; import org.chorem.pollen.services.bean.VoterListBean; import org.chorem.pollen.services.bean.VoterListMemberBean; +import org.chorem.pollen.services.service.FeedService; import org.chorem.pollen.services.service.InvalidFormException; import org.chorem.pollen.services.service.PollService; import org.debux.webmotion.server.WebMotionController; +import org.debux.webmotion.server.render.Render; import java.io.File; import java.util.List; @@ -135,4 +137,8 @@ public class PollApi extends WebMotionController { public PollBean assignPoll(PollService pollService, PollenEntityId<Poll> pollId) { return pollService.assignPollToConnectedUser(pollId.getEntityId()); } + + public Render getFeedForPoll(FeedService feedService, PollenEntityId<Poll> pollId) { + return renderAtom(feedService.getFeedForPoll(pollId.getEntityId())); + } } diff --git a/pollen-rest-api/src/main/resources/mapping b/pollen-rest-api/src/main/resources/mapping index b15faba8..96658bae 100644 --- a/pollen-rest-api/src/main/resources/mapping +++ b/pollen-rest-api/src/main/resources/mapping @@ -125,6 +125,8 @@ PUT /v1/polls/{pollId}/close PollApi.closePoll PUT /v1/polls/{pollId}/reopen PollApi.reopenPoll PUT /v1/polls/{pollId}/assign PollApi.assignPoll +GET /v1/polls/{pollId}/feed PollApi.getFeedForPoll + # PollenResourceApi GET /v1/resources/{resourceId} PollenResourceApi.getResource diff --git a/pollen-services/pom.xml b/pollen-services/pom.xml index 1df904ca..49951934 100644 --- a/pollen-services/pom.xml +++ b/pollen-services/pom.xml @@ -127,10 +127,10 @@ <artifactId>guava</artifactId> </dependency> - <!--dependency> - <groupId>rome</groupId> + <dependency> + <groupId>com.rometools</groupId> <artifactId>rome</artifactId> - </dependency--> + </dependency> <dependency> <groupId>junit</groupId> diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java new file mode 100644 index 00000000..96239861 --- /dev/null +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java @@ -0,0 +1,116 @@ +package org.chorem.pollen.services.service; + +import com.rometools.rome.feed.synd.SyndContent; +import com.rometools.rome.feed.synd.SyndContentImpl; +import com.rometools.rome.feed.synd.SyndEntry; +import com.rometools.rome.feed.synd.SyndEntryImpl; +import com.rometools.rome.feed.synd.SyndFeed; +import com.rometools.rome.feed.synd.SyndFeedImpl; +import com.rometools.rome.io.FeedException; +import com.rometools.rome.io.SyndFeedInput; +import com.rometools.rome.io.SyndFeedOutput; +import org.chorem.pollen.persistence.entity.Poll; +import org.chorem.pollen.persistence.entity.Vote; +import org.chorem.pollen.services.PollenTechnicalException; +import org.chorem.pollen.services.service.security.PermissionVerb; + +import java.io.StringReader; +import java.text.DateFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + * @since 3.0 + */ +public class FeedService extends PollenServiceSupport { + + public static final String FEED_TYPE = "atom_1.0"; + public static final String DESCRIPTION_TYPE = "text/plain"; + + public void onPollCreated(Poll poll) { + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(FEED_TYPE); + + feed.setTitle(poll.getTitle()); + String voteUrl = getPollVoteUrl(poll); + feed.setLink(voteUrl); + feed.setDescription(poll.getDescription()); + + SyndEntry entry = new SyndEntryImpl(); + entry.setTitle(t("pollen.service.feed.pollCreated.title", poll.getCreator().getName(), poll.getTitle())); + entry.setLink(voteUrl); + entry.setPublishedDate(poll.getTopiaCreateDate()); + + SyndContent description = new SyndContentImpl(); + description.setType(DESCRIPTION_TYPE); + description.setValue(t("pollen.service.feed.pollCreated.description", + DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(poll.getTopiaCreateDate()), + poll.getCreator().getName(), + poll.getTitle())); + entry.setDescription(description); + + List<SyndEntry> feedEntries = Collections.singletonList(entry); + feed.setEntries(feedEntries); + + saveFeed(poll, feed); + } + + public void onVoteAdded(Poll poll, Vote vote) { + addVoteFeedEntry(poll, vote, n("pollen.service.feed.voteAdded.title")); + } + + public void onVoteEdited(Poll poll, Vote vote) { + addVoteFeedEntry(poll, vote, n("pollen.service.feed.voteEdited.title")); + } + + public void onVoteDeleted(Poll poll, Vote vote) { + addVoteFeedEntry(poll, vote, n("pollen.service.feed.voteDeleted.title")); + } + + public SyndFeed getFeedForPoll(String pollId) { + checkNotNull(pollId); + checkPermission(PermissionVerb.readPoll, pollId); + + Poll poll = getPollService().getPoll0(pollId); + + try { + SyndFeedInput feedInput = new SyndFeedInput(true, getLocale()); + return feedInput.build(new StringReader(poll.getFeedContent())); + + } catch (FeedException e) { + throw new PollenTechnicalException("Error while reading the feed", e); + } + } + + private void addVoteFeedEntry(Poll poll, Vote vote, String messageKey) { + SyndFeed feed = getFeedForPoll(poll.getTopiaId()); + List<SyndEntry> entries = new ArrayList<>(feed.getEntries()); + + SyndEntry entry = new SyndEntryImpl(); + entry.setTitle(t(messageKey, vote.getVoter().getName())); + entry.setLink(getPollVoteUrl(poll)); + entry.setPublishedDate(vote.getTopiaCreateDate()); + + entries.add(entry); + feed.setEntries(entries); + + saveFeed(poll, feed); + } + + private void saveFeed(Poll poll, SyndFeed feed) { + try { + SyndFeedOutput output = new SyndFeedOutput(); + String feedContent = output.outputString(feed); + poll.setFeedContent(feedContent); + commit(); + + } catch (FeedException e) { + throw new PollenTechnicalException("Error while creating the feed", e); + } + } +} 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 143408d4..45bf43df 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 @@ -227,6 +227,7 @@ public class PollService extends PollenServiceSupport { commit(); getNotificationService().onPollCreated(savedPoll); + getFeedService().onPollCreated(savedPoll); return PollenEntityRef.of(savedPoll); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java index f6076a60..62704bd4 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java @@ -33,6 +33,7 @@ import org.chorem.pollen.persistence.entity.ChoiceTopiaDao; import org.chorem.pollen.persistence.entity.CommentTopiaDao; import org.chorem.pollen.persistence.entity.FavoriteListMemberTopiaDao; import org.chorem.pollen.persistence.entity.FavoriteListTopiaDao; +import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.PollTopiaDao; import org.chorem.pollen.persistence.entity.PollenPrincipalTopiaDao; import org.chorem.pollen.persistence.entity.PollenResourceTopiaDao; @@ -49,6 +50,7 @@ import org.chorem.pollen.services.PollenUIContext; import org.chorem.pollen.services.bean.PaginationResultBean; import org.chorem.pollen.services.bean.PollenBean; import org.chorem.pollen.services.bean.PollenBeans; +import org.chorem.pollen.services.bean.PollenEntityId; import org.chorem.pollen.services.config.PollenServicesConfig; import org.chorem.pollen.services.service.mail.EmailService; import org.chorem.pollen.services.service.security.PermissionVerb; @@ -128,6 +130,10 @@ public abstract class PollenServiceSupport implements PollenService { return newService(NotificationService.class); } + protected FeedService getFeedService() { + return newService(FeedService.class); + } + protected PollService getPollService() { return newService(PollService.class); } @@ -447,4 +453,26 @@ public abstract class PollenServiceSupport implements PollenService { } + protected <E extends TopiaEntity> PollenEntityId<E> getPollenEntityId(E entity) { + PollenEntityId<E> pollenEntityId = PollenEntityId.newId((Class<E>) entity.getClass()); + pollenEntityId.setEntityId(entity.getTopiaId()); + pollenEntityId.encode(serviceContext.getTopiaApplicationContext().getTopiaIdFactory()); + return pollenEntityId; + } + + protected String getPollVoteUrl(Poll poll) { + return getPollVoteUrl(getPollenEntityId(poll), null); + } + + protected String getPollVoteUrl(Poll poll, String token) { + return getPollVoteUrl(getPollenEntityId(poll), token); + } + + protected String getPollVoteUrl(PollenEntityId<Poll> pollId, String token) { + return getPollenUIUrlRenderService().getPollVoteUrl + (getUIContext().getPollVoteUrl(), + pollId.getReducedId(), + token); + } + } 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 75ddd952..ab933ac4 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 @@ -142,6 +142,7 @@ public class VoteService extends PollenServiceSupport { commit(); getNotificationService().onVoteAdded(poll, result); + getFeedService().onVoteAdded(poll, result); return PollenEntityRef.of(result); @@ -163,6 +164,7 @@ public class VoteService extends PollenServiceSupport { commit(); getNotificationService().onVoteEdited(poll, result); + getFeedService().onVoteEdited(poll, result); return toBean(VoteBean.class, result); @@ -182,6 +184,7 @@ public class VoteService extends PollenServiceSupport { commit(); getNotificationService().onVoteDeleted(poll, vote); + getFeedService().onVoteDeleted(poll, vote); } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java index d8192600..b2809702 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java @@ -138,10 +138,7 @@ public class EmailService extends PollenServiceSupport { email.setPollenUrl(getUIContext().getUiEndPoint()); - PollenEntityId<Poll> pollId = PollenEntityId.newId(Poll.class); - pollId.setEntityId(poll.getTopiaId()); - pollId.encode(serviceContext.getTopiaApplicationContext().getTopiaIdFactory()); - + PollenEntityId<Poll> pollId = getPollenEntityId(poll); email.setUrl(getPollenUIUrlRenderService().getPollEditUrl(getUIContext().getPollEditUrl(), pollId.getReducedId(), poll.getCreator().getPermission().getToken())); @@ -188,15 +185,7 @@ public class EmailService extends PollenServiceSupport { public PollInvitationEmail newPollInvitationEmail(Poll poll) { PollInvitationEmail email = new PollInvitationEmail(getLocale()); email.setPoll(poll); - - PollenEntityId<Poll> pollId = PollenEntityId.newId(Poll.class); - pollId.setEntityId(poll.getTopiaId()); - pollId.encode(serviceContext.getTopiaApplicationContext().getTopiaIdFactory()); - - email.setVoteUrl(getPollenUIUrlRenderService().getPollVoteUrl - (getUIContext().getPollVoteUrl(), - pollId.getReducedId(), - null)); + email.setVoteUrl(getPollVoteUrl(poll)); return email; } @@ -205,15 +194,7 @@ public class EmailService extends PollenServiceSupport { RestrictedPollInvitationEmail email = new RestrictedPollInvitationEmail(getLocale()); email.setPoll(poll); email.setPrincipal(principal); - - PollenEntityId<Poll> pollId = PollenEntityId.newId(Poll.class); - pollId.setEntityId(poll.getTopiaId()); - pollId.encode(serviceContext.getTopiaApplicationContext().getTopiaIdFactory()); - - email.setVoteUrl(getPollenUIUrlRenderService().getPollVoteUrl - (getUIContext().getPollVoteUrl(), - pollId.getReducedId(), - principal.getPermission().getToken())); + email.setVoteUrl(getPollVoteUrl(poll, principal.getPermission().getToken())); email.setToken(principal.getPermission().getToken()); @@ -226,10 +207,7 @@ public class EmailService extends PollenServiceSupport { email.setPollenUrl(pollenUIContext.getUiEndPoint()); - PollenEntityId<PollenUser> userId = PollenEntityId.newId(PollenUser.class); - userId.setEntityId(user.getTopiaId()); - userId.encode(serviceContext.getTopiaApplicationContext().getTopiaIdFactory()); - + PollenEntityId<PollenUser> userId = getPollenEntityId(user); email.setValidateUrl(getPollenUIUrlRenderService().getUserValidateUrl(pollenUIContext.getUserValidateUrl(), userId.getReducedId(), user.getEmailActivationToken().getToken())); @@ -242,10 +220,7 @@ public class EmailService extends PollenServiceSupport { email.setUser(user); email.setPollenUrl(pollenUIContext.getUiEndPoint()); - PollenEntityId<PollenUser> userId = PollenEntityId.newId(PollenUser.class); - userId.setEntityId(user.getTopiaId()); - userId.encode(serviceContext.getTopiaApplicationContext().getTopiaIdFactory()); - + PollenEntityId<PollenUser> userId = getPollenEntityId(user); email.setValidateUrl(getPollenUIUrlRenderService().getUserValidateUrl(pollenUIContext.getUserValidateUrl(), userId.getReducedId(), user.getEmailActivationToken().getToken())); 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 15c319c9..472f0ee8 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 @@ -102,6 +102,11 @@ pollen.error.voterList.member.weight.greaterThan0=member weight must be greater 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.feed.pollCreated.description=On the %s, %s created the poll "%s". +pollen.service.feed.pollCreated.title=%s created the poll "%s" +pollen.service.feed.voteAdded.title=%s voted +pollen.service.feed.voteDeleted.title=%s deleted his vote +pollen.service.feed.voteEdited.title=%s edited his vote 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 58016941..3e8bc045 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 @@ -101,6 +101,11 @@ pollen.error.voterList.member.weight.greaterThan0=Le membre doit avoir un poid s 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.feed.pollCreated.description=Le %s, %s a créé le sondage %s. +pollen.service.feed.pollCreated.title=%s a créé le sondage "%s" +pollen.service.feed.voteAdded.title=%s a voté +pollen.service.feed.voteDeleted.title=%s a supprimé son vote +pollen.service.feed.voteEdited.title=%s a modifié son vote 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-ui-riot-js/src/main/web/tag/poll/Poll.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html index c354261c..144f1b74 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/Poll.tag.html @@ -120,7 +120,8 @@ require("../popup/QrCodeButton.tag.html"); <h1> <QrCodeButton if={poll.pollType === "FREE"} value="{window.location.origin}{window.location.pathname}#poll/{poll.id}/vote"/> {poll.title} - <h1> + <a href="{session.configuration.endPoint}/v1/polls/{poll.id}/feed" class="fa fa-rss-square" aria-hidden="true"></a> + </h1> <h3>{poll.description}</h3> diff --git a/pom.xml b/pom.xml index 603652d7..f7b20abc 100644 --- a/pom.xml +++ b/pom.xml @@ -470,11 +470,11 @@ <!-- Rome (rss) --> - <!--dependency> - <groupId>rome</groupId> + <dependency> + <groupId>com.rometools</groupId> <artifactId>rome</artifactId> - <version>1.0</version> - </dependency--> + <version>1.7.2</version> + </dependency> <!-- Logging --> -- 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 https://gitlab.nuiton.org/chorem/pollen.git commit 6533396ca12a22822751e06053d0809bb0a4352b Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 10:08:06 2017 +0200 modification des emails (pas d'affichage du contenu du vote) --- .../services/service/NotificationService.java | 2 +- .../services/service/mail/AbstractVoteEmail.java | 36 +++++----------------- .../pollen/services/service/mail/EmailService.java | 27 ++-------------- .../services/service/mail/VoteAddedEmail.java | 15 ++------- .../services/service/mail/VoteDeletedEmail.java | 15 ++------- .../services/service/mail/VoteEditedEmail.java | 15 ++------- .../main/resources/email/VoteAddedEmail.mustache | 12 +------- .../resources/email/VoteAddedEmail_fr.mustache | 12 +------- .../main/resources/email/VoteDeletedEmail.mustache | 12 +------- .../resources/email/VoteDeletedEmail_fr.mustache | 12 +------- .../main/resources/email/VoteEditedEmail.mustache | 12 +------- .../resources/email/VoteEditedEmail_fr.mustache | 10 ------ .../main/resources/email/VoteSummaryEmail.mustache | 26 ---------------- .../resources/email/VoteSummaryEmail_fr.mustache | 26 ---------------- .../i18n/pollen-services_en_GB.properties | 1 + .../i18n/pollen-services_fr_FR.properties | 2 +- 16 files changed, 28 insertions(+), 207 deletions(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/NotificationService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/NotificationService.java index 325f1831..54adbbfd 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/NotificationService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/NotificationService.java @@ -147,7 +147,7 @@ public class NotificationService extends PollenServiceSupport { List<VoterListMember> allMembers = getVoterListDao().getAllMembers(mainVoterList); allMembers.stream() - .map(member -> member.getMember()) + .map(VoterListMember::getMember) .distinct() .forEach(pollenPrincipal -> { RestrictedPollInvitationEmail mail = emailService.newRestrictedPollInvitationEmail(poll, pollenPrincipal); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/AbstractVoteEmail.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/AbstractVoteEmail.java index 1251865a..aa200a1c 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/AbstractVoteEmail.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/AbstractVoteEmail.java @@ -22,51 +22,31 @@ package org.chorem.pollen.services.service.mail; */ import org.chorem.pollen.persistence.entity.Poll; -import org.chorem.pollen.persistence.entity.VoteVisibility; -import org.chorem.pollen.votecounting.VoteCounting; -import org.chorem.pollen.votecounting.model.ChoiceToVoteRenderType; +import org.chorem.pollen.persistence.entity.Vote; import java.util.Locale; -import java.util.function.Function; /** * @author Kevin Morin */ public abstract class AbstractVoteEmail extends PollenMail { - protected Poll poll; + protected final Poll poll; - protected Function<String, String> voteCountingDisplayVoteValueFunction; + protected final Vote vote; - protected boolean voteCountingCheckboxEditorType; - - protected AbstractVoteEmail(Locale locale) { + protected AbstractVoteEmail(Locale locale, Poll poll, Vote vote) { super(locale); + this.poll = poll; + this.vote = vote; } public Poll getPoll() { return poll; } - public void setPoll(Poll poll) { - this.poll = poll; - } - - public Function<String, String> getVoteCountingDisplayVoteValue() { - return voteCountingDisplayVoteValueFunction; + public Vote getVote() { + return vote; } - public boolean isVoteCountingCheckboxEditorType() { - return voteCountingCheckboxEditorType; - } - - public void setVoteCounting(VoteCounting voteCounting) { - this.voteCountingDisplayVoteValueFunction = - voteValue -> voteCounting.getDisplayVoteValue(Double.parseDouble(voteValue)); - this.voteCountingCheckboxEditorType = voteCounting.getVoteValueEditorType() == ChoiceToVoteRenderType.CHECKBOX; - } - - public boolean isVoteVisible() { - return poll.getVoteVisibility() == VoteVisibility.CREATOR || poll.getVoteVisibility() == VoteVisibility.EVERYBODY; - } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java index b2809702..d47eff68 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/EmailService.java @@ -26,7 +26,6 @@ import com.github.mustachejava.Mustache; import com.github.mustachejava.MustacheException; import com.github.mustachejava.MustacheFactory; import com.google.common.base.Charsets; -import com.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.mail.Email; @@ -43,8 +42,6 @@ import org.chorem.pollen.services.PollenUIContext; import org.chorem.pollen.services.bean.PollenEntityId; import org.chorem.pollen.services.config.PollenServicesConfig; import org.chorem.pollen.services.service.PollenServiceSupport; -import org.chorem.pollen.votecounting.VoteCounting; -import org.chorem.pollen.votecounting.VoteCountingFactory; import java.io.StringWriter; import java.util.Locale; @@ -103,33 +100,15 @@ public class EmailService extends PollenServiceSupport { } public VoteAddedEmail newVoteAddedEmail(Poll poll, Vote vote) { - VoteAddedEmail email = new VoteAddedEmail(getLocale()); - initAbstractVoteEmail(email, poll); - email.setVote(vote); - return email; + return new VoteAddedEmail(getLocale(), poll, vote); } public VoteEditedEmail newVoteEditedEmail(Poll poll, Vote vote) { - VoteEditedEmail email = new VoteEditedEmail(getLocale()); - initAbstractVoteEmail(email, poll); - email.setVote(vote); - return email; + return new VoteEditedEmail(getLocale(), poll, vote); } public VoteDeletedEmail newVoteDeletedEmail(Poll poll, Vote vote) { - VoteDeletedEmail email = new VoteDeletedEmail(getLocale()); - email.setPoll(poll); - email.setVote(vote); - return email; - } - - private void initAbstractVoteEmail(AbstractVoteEmail email, Poll poll) { - email.setPoll(poll); - VoteCountingFactory voteCountingFactory = serviceContext.getVoteCountingFactory(); - VoteCounting voteCounting = voteCountingFactory.getVoteCounting(poll.getVoteCountingType()); - Preconditions.checkNotNull( - voteCounting, "Could not find vote counting for id " + poll.getVoteCountingType()); - email.setVoteCounting(voteCounting); + return new VoteDeletedEmail(getLocale(), poll, vote); } public PollCreatedEmail newPollCreatedEmail(Poll poll) { diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteAddedEmail.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteAddedEmail.java index 82000f0d..20d6725e 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteAddedEmail.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteAddedEmail.java @@ -21,6 +21,7 @@ package org.chorem.pollen.services.service.mail; * #L% */ +import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.Vote; import org.nuiton.i18n.I18n; @@ -34,10 +35,8 @@ import java.util.Locale; */ public class VoteAddedEmail extends AbstractVoteEmail { - protected Vote vote; - - protected VoteAddedEmail(Locale locale) { - super(locale); + protected VoteAddedEmail(Locale locale, Poll poll, Vote vote) { + super(locale, poll, vote); } @Override @@ -45,12 +44,4 @@ public class VoteAddedEmail extends AbstractVoteEmail { return I18n.l(locale, "pollen.service.mail.VoteAddedEmail.subject", poll.getTitle()); } - public Vote getVote() { - return vote; - } - - public void setVote(Vote vote) { - this.vote = vote; - } - } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteDeletedEmail.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteDeletedEmail.java index c12841f6..3fa17def 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteDeletedEmail.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteDeletedEmail.java @@ -21,6 +21,7 @@ package org.chorem.pollen.services.service.mail; * #L% */ +import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.Vote; import org.nuiton.i18n.I18n; @@ -34,10 +35,8 @@ import java.util.Locale; */ public class VoteDeletedEmail extends AbstractVoteEmail { - protected Vote vote; - - protected VoteDeletedEmail(Locale locale) { - super(locale); + protected VoteDeletedEmail(Locale locale, Poll poll, Vote vote) { + super(locale, poll, vote); } @Override @@ -45,12 +44,4 @@ public class VoteDeletedEmail extends AbstractVoteEmail { return I18n.l(locale, "pollen.service.mail.VoteDeletedEmail.subject", poll.getTitle()); } - public Vote getVote() { - return vote; - } - - public void setVote(Vote vote) { - this.vote = vote; - } - } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteEditedEmail.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteEditedEmail.java index eeac3b65..cb3b22b9 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteEditedEmail.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/mail/VoteEditedEmail.java @@ -21,6 +21,7 @@ package org.chorem.pollen.services.service.mail; * #L% */ +import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.Vote; import org.nuiton.i18n.I18n; @@ -34,22 +35,12 @@ import java.util.Locale; */ public class VoteEditedEmail extends AbstractVoteEmail { - protected Vote vote; - - protected VoteEditedEmail(Locale locale) { - super(locale); + protected VoteEditedEmail(Locale locale, Poll poll, Vote vote) { + super(locale, poll, vote); } @Override public String getSubject() { return I18n.l(locale, "pollen.service.mail.VoteEditedEmail.subject", poll.getTitle()); } - - public Vote getVote() { - return vote; - } - - public void setVote(Vote vote) { - this.vote = vote; - } } \ No newline at end of file diff --git a/pollen-services/src/main/resources/email/VoteAddedEmail.mustache b/pollen-services/src/main/resources/email/VoteAddedEmail.mustache index 89008dff..21a76ad1 100644 --- a/pollen-services/src/main/resources/email/VoteAddedEmail.mustache +++ b/pollen-services/src/main/resources/email/VoteAddedEmail.mustache @@ -5,14 +5,4 @@ Someone answered your poll '{{poll.title}}'. {{/vote.anonymous}} {{^vote.anonymous}} {{vote.voter.name}} answered your poll '{{poll.title}}'. -{{/vote.anonymous}} -{{#voteVisible}} -{{#vote.voteToChoice}} -{{#voteCountingCheckboxEditorType}} -{{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} {{choice.choiceValue}} -{{/voteCountingCheckboxEditorType}} -{{^voteCountingCheckboxEditorType}} -- {{choice.choiceValue}}: {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} -{{/voteCountingCheckboxEditorType}} -{{/vote.voteToChoice}} -{{/voteVisible}} \ No newline at end of file +{{/vote.anonymous}} \ No newline at end of file diff --git a/pollen-services/src/main/resources/email/VoteAddedEmail_fr.mustache b/pollen-services/src/main/resources/email/VoteAddedEmail_fr.mustache index f908540c..62958101 100644 --- a/pollen-services/src/main/resources/email/VoteAddedEmail_fr.mustache +++ b/pollen-services/src/main/resources/email/VoteAddedEmail_fr.mustache @@ -5,14 +5,4 @@ Quelqu'un a répondu à votre sondage '{{poll.title}}'. {{/vote.anonymous}} {{^vote.anonymous}} {{vote.voter.name}} a répondu à votre sondage '{{poll.title}}'. -{{/vote.anonymous}} -{{#voteVisible}} -{{#vote.voteToChoice}} -{{#voteCountingCheckboxEditorType}} -{{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} {{choice.choiceValue}} -{{/voteCountingCheckboxEditorType}} -{{^voteCountingCheckboxEditorType}} -- {{choice.choiceValue}} : {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} -{{/voteCountingCheckboxEditorType}} -{{/vote.voteToChoice}} -{{/voteVisible}} \ No newline at end of file +{{/vote.anonymous}} \ No newline at end of file diff --git a/pollen-services/src/main/resources/email/VoteDeletedEmail.mustache b/pollen-services/src/main/resources/email/VoteDeletedEmail.mustache index eb7aa228..509377bd 100644 --- a/pollen-services/src/main/resources/email/VoteDeletedEmail.mustache +++ b/pollen-services/src/main/resources/email/VoteDeletedEmail.mustache @@ -5,14 +5,4 @@ Someone deleted his vote on your poll '{{poll.title}}'. {{/vote.anonymous}} {{^vote.anonymous}} {{vote.voter.name}} deleted his vote on your poll '{{poll.title}}'. -{{/vote.anonymous}} -{{#voteVisible}} -{{#vote.voteToChoice}} -{{#voteCountingCheckboxEditorType}} -{{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} {{choice.choiceValue}} -{{/voteCountingCheckboxEditorType}} -{{^voteCountingCheckboxEditorType}} -- {{choice.choiceValue}}: {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} -{{/voteCountingCheckboxEditorType}} -{{/vote.voteToChoice}} -{{/voteVisible}} \ No newline at end of file +{{/vote.anonymous}} \ No newline at end of file diff --git a/pollen-services/src/main/resources/email/VoteDeletedEmail_fr.mustache b/pollen-services/src/main/resources/email/VoteDeletedEmail_fr.mustache index dfeef3b4..8eab06ae 100644 --- a/pollen-services/src/main/resources/email/VoteDeletedEmail_fr.mustache +++ b/pollen-services/src/main/resources/email/VoteDeletedEmail_fr.mustache @@ -5,14 +5,4 @@ Bonjour {{poll.creator.name}}, {{/vote.anonymous}} {{^vote.anonymous}} {{vote.voter.name}} a supprimé son vote sur votre sondage '{{poll.title}}'. -{{/vote.anonymous}} -{{#voteVisible}} - {{#vote.voteToChoice}} - {{#voteCountingCheckboxEditorType}} - {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} {{choice.choiceValue}} - {{/voteCountingCheckboxEditorType}} - {{^voteCountingCheckboxEditorType}} - - {{choice.choiceValue}} : {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} - {{/voteCountingCheckboxEditorType}} - {{/vote.voteToChoice}} -{{/voteVisible}} \ No newline at end of file +{{/vote.anonymous}} \ No newline at end of file diff --git a/pollen-services/src/main/resources/email/VoteEditedEmail.mustache b/pollen-services/src/main/resources/email/VoteEditedEmail.mustache index 482feddd..b48433a9 100644 --- a/pollen-services/src/main/resources/email/VoteEditedEmail.mustache +++ b/pollen-services/src/main/resources/email/VoteEditedEmail.mustache @@ -5,14 +5,4 @@ Someone edited his vote on your poll '{{poll.title}}'. {{/vote.anonymous}} {{^vote.anonymous}} {{vote.voter.name}} edited his vote on your poll '{{poll.title}}'. -{{/vote.anonymous}} -{{#voteVisible}} -{{#vote.voteToChoice}} -{{#voteCountingCheckboxEditorType}} -{{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} {{choice.choiceValue}} -{{/voteCountingCheckboxEditorType}} -{{^voteCountingCheckboxEditorType}} -- {{choice.choiceValue}}: {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} -{{/voteCountingCheckboxEditorType}} -{{/vote.voteToChoice}} -{{/voteVisible}} \ No newline at end of file +{{/vote.anonymous}} \ No newline at end of file diff --git a/pollen-services/src/main/resources/email/VoteEditedEmail_fr.mustache b/pollen-services/src/main/resources/email/VoteEditedEmail_fr.mustache index 4f9c6f6a..6ec8a8e5 100644 --- a/pollen-services/src/main/resources/email/VoteEditedEmail_fr.mustache +++ b/pollen-services/src/main/resources/email/VoteEditedEmail_fr.mustache @@ -5,14 +5,4 @@ Quelqu'un a modifié son vote sur votre sondage '{{poll.title}}'. {{/vote.anonymous}} {{^vote.anonymous}} {{vote.voter.name}} a modifié son vote sur votre sondage '{{poll.title}}'. -{{#voteVisible}} -{{#vote.voteToChoice}} -{{#voteCountingCheckboxEditorType}} -{{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} {{choice.choiceValue}} -{{/voteCountingCheckboxEditorType}} -{{^voteCountingCheckboxEditorType}} -- {{choice.choiceValue}} : {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} -{{/voteCountingCheckboxEditorType}} -{{/vote.voteToChoice}} -{{/voteVisible}} {{/vote.anonymous}} \ No newline at end of file diff --git a/pollen-services/src/main/resources/email/VoteSummaryEmail.mustache b/pollen-services/src/main/resources/email/VoteSummaryEmail.mustache deleted file mode 100644 index 5367b60c..00000000 --- a/pollen-services/src/main/resources/email/VoteSummaryEmail.mustache +++ /dev/null @@ -1,26 +0,0 @@ -Hello {{poll.creator.name}}, - -Since {{lastVoteNotification}}, {{votes.size}} person(s) answered your poll '{{poll.title}}' -{{#votes}} -{{#voteVisible}} -{{#anonymous}} -Someone answered: -{{/anonymous}} -{{^anonymous}} -{{voter.name}} answered: -{{/anonymous}} -{{#voteToChoice}} -{{#voteCountingCheckboxEditorType}} -{{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} {{choice.choiceValue}} -{{/voteCountingCheckboxEditorType}} -{{^voteCountingCheckboxEditorType}} -- {{choice.choiceValue}}: {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} -{{/voteCountingCheckboxEditorType}} -{{/voteToChoice}} -{{/voteVisible}} -{{^voteVisible}} -{{^anonymous}} -- {{voter.name}} -{{/anonymous}} -{{/voteVisible}} -{{/votes}} \ No newline at end of file diff --git a/pollen-services/src/main/resources/email/VoteSummaryEmail_fr.mustache b/pollen-services/src/main/resources/email/VoteSummaryEmail_fr.mustache deleted file mode 100644 index 6bf86b3b..00000000 --- a/pollen-services/src/main/resources/email/VoteSummaryEmail_fr.mustache +++ /dev/null @@ -1,26 +0,0 @@ -Bonjour {{poll.creator.name}}, - -Depuis le {{lastVoteNotification}}, {{votes.size}} personne(s) a(ont) répondu à votre sondage '{{poll.title}}' -{{#votes}} -{{#voteVisible}} -{{#anonymous}} -Quelqu'un a répondu : -{{/anonymous}} -{{^anonymous}} -{{voter.name}} a répondu : -{{/anonymous}} -{{#voteToChoice}} -{{#voteCountingCheckboxEditorType}} -{{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} {{choice.choiceValue}} -{{/voteCountingCheckboxEditorType}} -{{^voteCountingCheckboxEditorType}} -- {{choice.choiceValue}} : {{#voteCountingDisplayVoteValueFunction}}{{voteValue}}{{/voteCountingDisplayVoteValueFunction}} -{{/voteCountingCheckboxEditorType}} -{{/voteToChoice}} -{{/voteVisible}} -{{^voteVisible}} -{{^anonymous}} -- {{voter.name}} -{{/anonymous}} -{{/voteVisible}} -{{/votes}} \ No newline at end of file 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 472f0ee8..6293aeb4 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 @@ -102,6 +102,7 @@ pollen.error.voterList.member.weight.greaterThan0=member weight must be greater 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.feed.anonymous= pollen.service.feed.pollCreated.description=On the %s, %s created the poll "%s". pollen.service.feed.pollCreated.title=%s created the poll "%s" pollen.service.feed.voteAdded.title=%s voted 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 3e8bc045..5189223c 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 @@ -101,6 +101,7 @@ pollen.error.voterList.member.weight.greaterThan0=Le membre doit avoir un poid s 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.feed.anonymous=Quelqu'un pollen.service.feed.pollCreated.description=Le %s, %s a créé le sondage %s. pollen.service.feed.pollCreated.title=%s a créé le sondage "%s" pollen.service.feed.voteAdded.title=%s a voté @@ -127,4 +128,3 @@ pollen.service.mail.UserAccountCreatedEmail.subject=[Pollen] Confirmation de cr pollen.service.mail.VoteAddedEmail.subject=[Pollen] Un nouveau vote a été ajouté au sondage %s pollen.service.mail.VoteDeletedEmail.subject=[Pollen] Un vote a été supprimé sur le sondage %s pollen.service.mail.VoteEditedEmail.subject=[Pollen] Un vote a été modifié du sondage %s -pollen.service.mail.VoteSummaryEmail.subject=[Pollen] Résumé des votes depuis le %s pour 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 https://gitlab.nuiton.org/chorem/pollen.git commit a48ef55638b40fee8c7eb59567f187a04546da3e Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 10:09:03 2017 +0200 refs #14 do not display user name if the vote is anonymous --- .../java/org/chorem/pollen/services/service/FeedService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java index 96239861..f6570f63 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java @@ -91,8 +91,15 @@ public class FeedService extends PollenServiceSupport { SyndFeed feed = getFeedForPoll(poll.getTopiaId()); List<SyndEntry> entries = new ArrayList<>(feed.getEntries()); + String voterName; + if (vote.isAnonymous()) { + voterName = t("pollen.service.feed.anonymous"); + } else { + voterName = vote.getVoter().getName(); + } + SyndEntry entry = new SyndEntryImpl(); - entry.setTitle(t(messageKey, vote.getVoter().getName())); + entry.setTitle(t(messageKey, voterName)); entry.setLink(getPollVoteUrl(poll)); entry.setPublishedDate(vote.getTopiaCreateDate()); -- 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 https://gitlab.nuiton.org/chorem/pollen.git commit 8362eed38ece5cacc4e980227c650dcd11fc99dc Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 10:09:31 2017 +0200 refs #14 fix tests --- .../org/chorem/pollen/rest/api/AbstractPollenRestApiTest.java | 3 ++- .../src/test/java/org/chorem/pollen/rest/api/PollApiTest.java | 10 ++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/AbstractPollenRestApiTest.java b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/AbstractPollenRestApiTest.java index 74037f7c..1f8b29b7 100644 --- a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/AbstractPollenRestApiTest.java +++ b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/AbstractPollenRestApiTest.java @@ -70,7 +70,8 @@ public class AbstractPollenRestApiTest extends WebMotionTest { TopiaIdFactory topiaIdFactory = application.getTopiaApplicationContext().getTopiaIdFactory(); - jsonHelper = new JsonHelper(topiaIdFactory, true); + // do not pretty print otherwise adding a pretty print json in header fails (last '}' missing) + jsonHelper = new JsonHelper(topiaIdFactory, false); } return jsonHelper; diff --git a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollApiTest.java b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollApiTest.java index 269d1d6e..da278766 100644 --- a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollApiTest.java +++ b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollApiTest.java @@ -32,7 +32,6 @@ import org.chorem.pollen.persistence.entity.PollType; import org.chorem.pollen.persistence.entity.ResultVisibility; import org.chorem.pollen.persistence.entity.VoteVisibility; import org.chorem.pollen.services.PollenFixtures; -import org.chorem.pollen.services.PollenUIContext; import org.chorem.pollen.services.bean.ChoiceBean; import org.junit.Before; import org.junit.Ignore; @@ -55,7 +54,6 @@ public class PollApiTest extends AbstractPollenRestApiTest { @Before public void setUp() throws Exception { - loadFixtures("fixtures"); } @@ -147,8 +145,8 @@ public class PollApiTest extends AbstractPollenRestApiTest { .addParameter("choices", choiceStr) .addParameter("voterLists", "[]") .addParameter("voterListMembers", "[]") - .addParameter("pollenUIContext", getJsonHelper().toJson(new PollenUIContext())) - .Post(); + .Post().setHeader(PollenRestApiRequestFilter.REQUEST_HEADER_UI_CONTEXT, + getJsonHelper().toJson(fixture("pollenUIContext_chorem"))); String content = request.execute().returnContent().asString(); showTestResult(content); @@ -177,8 +175,8 @@ public class PollApiTest extends AbstractPollenRestApiTest { .addParameter("choices", choiceStr) .addParameter("voterLists", "[]") .addParameter("voterListMembers", "[]") - .addParameter("pollenUIContext", getJsonHelper().toJson(new PollenUIContext())) - .Post(); + .Post().setHeader(PollenRestApiRequestFilter.REQUEST_HEADER_UI_CONTEXT, + getJsonHelper().toJson(fixture("pollenUIContext_chorem"))); String content = request.execute().returnContent().asString(); showTestResult(content); -- 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 https://gitlab.nuiton.org/chorem/pollen.git commit b1bbd56f8c8bf2ad336311d985d802c6d5cdb865 Author: Kevin Morin <morin@codelutin.com> Date: Fri Jun 2 17:39:57 2017 +0200 fixes #14 add the missing events in the feed --- .../pollen/services/service/ChoiceService.java | 1 + .../pollen/services/service/CommentService.java | 3 ++ .../pollen/services/service/FeedService.java | 45 +++++++++++++++++++--- .../pollen/services/service/PollService.java | 3 ++ .../i18n/pollen-services_en_GB.properties | 9 ++++- .../i18n/pollen-services_fr_FR.properties | 7 ++++ 6 files changed, 62 insertions(+), 6 deletions(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java index ef396dc0..a35790aa 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java @@ -107,6 +107,7 @@ public class ChoiceService extends PollenServiceSupport { commit(); getNotificationService().onChoiceAdded(poll, result); + getFeedService().onChoiceAdded(poll, result); return PollenEntityRef.of(result); 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 9631fd69..eb2a2cd1 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 @@ -125,6 +125,7 @@ public class CommentService extends PollenServiceSupport { commit(); getNotificationService().onCommentAdded(poll, result); + getFeedService().onCommentAdded(poll, result); return PollenEntityRef.of(result); @@ -145,6 +146,7 @@ public class CommentService extends PollenServiceSupport { commit(); getNotificationService().onCommentEdited(poll, result); + getFeedService().onCommentEdited(poll, result); return toBean(CommentBean.class, result); @@ -164,6 +166,7 @@ public class CommentService extends PollenServiceSupport { commit(); getNotificationService().onCommentDeleted(poll, comment); + getFeedService().onCommentDeleted(poll, comment); } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java index f6570f63..5f94dcf5 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FeedService.java @@ -9,6 +9,8 @@ import com.rometools.rome.feed.synd.SyndFeedImpl; import com.rometools.rome.io.FeedException; import com.rometools.rome.io.SyndFeedInput; import com.rometools.rome.io.SyndFeedOutput; +import org.chorem.pollen.persistence.entity.Choice; +import org.chorem.pollen.persistence.entity.Comment; import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.Vote; import org.chorem.pollen.services.PollenTechnicalException; @@ -18,7 +20,9 @@ import java.io.StringReader; import java.text.DateFormat; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -60,6 +64,22 @@ public class FeedService extends PollenServiceSupport { saveFeed(poll, feed); } + public void onPollEdited(Poll poll, Set<String> newParticipants) { + addFeedEntry(poll, t("pollen.service.feed.pollEdited.title")); + } + + public void onPollClosed(Poll poll) { + addFeedEntry(poll, t("pollen.service.feed.pollClosed.title")); + } + + public void onPollReopened(Poll poll) { + addFeedEntry(poll, t("pollen.service.feed.pollReopened.title")); + } + + public void onChoiceAdded(Poll poll, Choice choice) { + addFeedEntry(poll, t("pollen.service.feed.choiceAdded.title")); + } + public void onVoteAdded(Poll poll, Vote vote) { addVoteFeedEntry(poll, vote, n("pollen.service.feed.voteAdded.title")); } @@ -72,6 +92,18 @@ public class FeedService extends PollenServiceSupport { addVoteFeedEntry(poll, vote, n("pollen.service.feed.voteDeleted.title")); } + public void onCommentAdded(Poll poll, Comment comment) { + addFeedEntry(poll, t("pollen.service.feed.commentAdded.title", comment.getAuthor())); + } + + public void onCommentEdited(Poll poll, Comment comment) { + addFeedEntry(poll, t("pollen.service.feed.commentEdited.title", comment.getAuthor())); + } + + public void onCommentDeleted(Poll poll, Comment comment) { + addFeedEntry(poll, t("pollen.service.feed.commentDeleted.title", comment.getAuthor())); + } + public SyndFeed getFeedForPoll(String pollId) { checkNotNull(pollId); checkPermission(PermissionVerb.readPoll, pollId); @@ -88,20 +120,23 @@ public class FeedService extends PollenServiceSupport { } private void addVoteFeedEntry(Poll poll, Vote vote, String messageKey) { - SyndFeed feed = getFeedForPoll(poll.getTopiaId()); - List<SyndEntry> entries = new ArrayList<>(feed.getEntries()); - String voterName; if (vote.isAnonymous()) { voterName = t("pollen.service.feed.anonymous"); } else { voterName = vote.getVoter().getName(); } + addFeedEntry(poll, t(messageKey, voterName)); + } + + private void addFeedEntry(Poll poll, String title) { + SyndFeed feed = getFeedForPoll(poll.getTopiaId()); + List<SyndEntry> entries = new ArrayList<>(feed.getEntries()); SyndEntry entry = new SyndEntryImpl(); - entry.setTitle(t(messageKey, voterName)); + entry.setTitle(title); entry.setLink(getPollVoteUrl(poll)); - entry.setPublishedDate(vote.getTopiaCreateDate()); + entry.setPublishedDate(new Date()); entries.add(entry); feed.setEntries(entries); 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 45bf43df..4e572fa9 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 @@ -256,6 +256,7 @@ public class PollService extends PollenServiceSupport { commit(); getNotificationService().onPollEdited(savedPoll, newParticipants); + getFeedService().onPollEdited(savedPoll, newParticipants); return toBean(PollBean.class, savedPoll, pollBeanFunction); @@ -343,6 +344,7 @@ public class PollService extends PollenServiceSupport { commit(); getNotificationService().onPollClosed(poll); + getFeedService().onPollClosed(poll); } @@ -361,6 +363,7 @@ public class PollService extends PollenServiceSupport { commit(); getNotificationService().onPollReopened(poll); + getFeedService().onPollReopened(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 6293aeb4..7b86cbd5 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 @@ -102,9 +102,16 @@ pollen.error.voterList.member.weight.greaterThan0=member weight must be greater 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.feed.anonymous= +pollen.service.feed.anonymous=Someone +pollen.service.feed.choiceAdded.title=A choice has been added to the poll +pollen.service.feed.commentAdded.title=A new comment has been published +pollen.service.feed.commentDeleted.title=A comment has been deleted +pollen.service.feed.commentEdited.title=A comment has been edited +pollen.service.feed.pollClosed.title=The poll is closed pollen.service.feed.pollCreated.description=On the %s, %s created the poll "%s". pollen.service.feed.pollCreated.title=%s created the poll "%s" +pollen.service.feed.pollEdited.title=The poll has been edited +pollen.service.feed.pollReopened.title=The poll has been reopened pollen.service.feed.voteAdded.title=%s voted pollen.service.feed.voteDeleted.title=%s deleted his vote pollen.service.feed.voteEdited.title=%s edited his vote 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 5189223c..7d57b9bd 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 @@ -102,8 +102,15 @@ 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.feed.anonymous=Quelqu'un +pollen.service.feed.choiceAdded.title=Un choix a été ajouté au sondage +pollen.service.feed.commentAdded.title=Un nouveau commentaire a été publié +pollen.service.feed.commentDeleted.title=Un commentaire a été supprimé +pollen.service.feed.commentEdited.title=Un commentaire a été modifié +pollen.service.feed.pollClosed.title=Le sondage est clos pollen.service.feed.pollCreated.description=Le %s, %s a créé le sondage %s. pollen.service.feed.pollCreated.title=%s a créé le sondage "%s" +pollen.service.feed.pollEdited.title=Le sondage a été modifié +pollen.service.feed.pollReopened.title=Le sondage a été réouvert pollen.service.feed.voteAdded.title=%s a voté pollen.service.feed.voteDeleted.title=%s a supprimé son vote pollen.service.feed.voteEdited.title=%s a modifié son vote -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm