Author: fdesbois Date: 2012-04-27 12:24:54 +0200 (Fri, 27 Apr 2012) New Revision: 3328 Url: http://chorem.org/repositories/revision/pollen/3328 Log: fixes #533 : - comment author must be the connecter user if exists - improve creator treatment, the creator can't vote when identified by token (pollUid:creatorAccountUid) Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-04-26 18:29:22 UTC (rev 3327) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-04-27 10:24:54 UTC (rev 3328) @@ -362,7 +362,8 @@ * poll. The account must be defined previously using * {@link PollService#getPollAccountEditable(String, UserAccount, Poll)} to * have a proper link between userAccount and pollAccount even if not already - * created in dabase. + * created in dabase. The poll creator can't vote. The token is just use + * for moderate purpose. * * @param poll Poll * @param accountEditable Account to check @@ -374,15 +375,24 @@ Preconditions.checkNotNull(accountEditable); Date now = serviceContext.getCurrentTime(); - - boolean result = poll.isRunning(now); - if (poll.getPollType() != PollType.FREE) { - PersonToListDAO personToListDAO = getDAO(PersonToList.class); - PersonToList personToList = personToListDAO.findByPollAndAccount(poll, accountEditable); + boolean result; + if (poll.getCreator().equals(accountEditable)) { - result &= personToList != null; - } + // The creator user can't vote + result = false; + } else { + + // The poll must be running and account allowed for restricted poll + result = poll.isRunning(now); + if (poll.getPollType() != PollType.FREE) { + + PersonToListDAO personToListDAO = getDAO(PersonToList.class); + PersonToList personToList = personToListDAO.findByPollAndAccount(poll, accountEditable); + + result &= personToList != null; + } + } return result; } Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-04-26 18:29:22 UTC (rev 3327) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-04-27 10:24:54 UTC (rev 3328) @@ -34,6 +34,7 @@ import org.chorem.pollen.business.persistence.Comment; import org.chorem.pollen.business.persistence.Poll; import org.chorem.pollen.business.persistence.PollAccount; +import org.chorem.pollen.business.persistence.UserAccount; import org.chorem.pollen.business.persistence.Vote; import org.chorem.pollen.business.persistence.VoteToChoice; import org.chorem.pollen.common.ChoiceType; @@ -256,8 +257,18 @@ public String getCommentAuthor() { if (commentAuthor == null) { - // Use current pollAccount name for comment - commentAuthor = getPollAccount().getVotingId(); + + UserAccount user = getPollenUserAccount(); + if (user == null) { + + // Use current pollAccount name for comment + commentAuthor = getPollAccount().getVotingId(); + + } else { + + // Connecter user name + commentAuthor = user.getDisplayName(); + } } return commentAuthor; } @@ -289,11 +300,19 @@ PollFeedService pollFeedService = newService(PollFeedService.class); feedFileExisting = pollFeedService.isFeedExists(poll); + + PollAccount pollCreator = poll.getCreator(); + if (getPollenUserAccount() == null) { - //TODO Deal the case of the not loggued poll (using the pollAccountId - creatorUser = getPollenUserAccount() != null && - getPollenUserAccount().equals(poll.getCreator().getUserAccount()); + // User is creator if loaded pollAccount is the creator + creatorUser = pollCreator.equals(pollAccount); + + } else { + // User is creator if the userAccount is the same + creatorUser = getPollenUserAccount().equals(pollCreator.getUserAccount()); + } + // Messages if (poll.isClosed()) { addActionMessage(_("pollen.information.pollClosed")); @@ -301,6 +320,8 @@ addActionMessage(_("pollen.information.pollNotStarted")); } else if (isPollFinished()) { addActionMessage(_("pollen.information.pollFinished")); + } else if (pollCreator.equals(pollAccount)) { + addActionMessage(_("pollen.information.vote.creatorUser")); } if (isPollChoiceRunning()) { addActionMessage(_("pollen.information.pollChoiceRunning")); Modified: trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties =================================================================== --- trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties 2012-04-26 18:29:22 UTC (rev 3327) +++ trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties 2012-04-27 10:24:54 UTC (rev 3328) @@ -233,6 +233,7 @@ pollen.information.user.updated=User %s updated. pollen.information.vote.created=Vote saved pollen.information.vote.createdWithUpdateUrl=Vote saved, you can modify it using this address \: <br/> <a href\="%1$s">%1$s</a> +pollen.information.vote.creatorUser=You are identified as the poll's creator. You can't vote with this URL. pollen.information.your.are.loggued=You are logged. pollen.label.contact.administrator=Send an email to an administrator pollen.label.pollEditPage=The link below leads to the page to modify your poll. Save it to be able to modify your poll later if you need it or to close it \: Modified: trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties =================================================================== --- trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties 2012-04-26 18:29:22 UTC (rev 3327) +++ trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties 2012-04-27 10:24:54 UTC (rev 3328) @@ -236,6 +236,7 @@ pollen.information.user.updated=L'utilisateur %s a été mis à jour. pollen.information.vote.created=Vote enregistré pollen.information.vote.createdWithUpdateUrl=Vote enregistré, vous pourrez le modifier à l'adresse suivante \: <br/> <a href\="%1$s">%1$s</a> +pollen.information.vote.creatorUser=Vous êtes identifié comme le créateur du sondage. Vous ne pouvez pas voter avec cette URL. pollen.information.your.are.loggued=Vous êtes connecté. pollen.label.contact.administrator=Contacter un administrateur pollen.label.pollEditPage=Le lien ci-dessous mène à la page de modification du sondage. Enregistrez-le pour pouvoir modifier votre sondage au besoin ou le clore \: