Author: fdesbois Date: 2012-04-30 17:52:29 +0200 (Mon, 30 Apr 2012) New Revision: 3332 Url: http://chorem.org/repositories/revision/pollen/3332 Log: fixes #196 : add moderate link for votes. But for the moment the creator can't remove votes or comments. Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/PollenNotifierWorker.java trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/EmailService.java trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollCommentService.java trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java trunk/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties trunk/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/PollenActionSupport.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetCreatedPolls.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetPolls.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java 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/SavePoll.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 trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/resume.jsp trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/vote.jsp trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/pollListHelper.jsp trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/user/createdList.jsp Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/PollenNotifierWorker.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/services/PollenNotifierWorker.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/PollenNotifierWorker.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -90,7 +90,7 @@ for (Poll poll : polls) { - PollUrl pollVoteUrl = pollService.getPollVoteUrl(poll); + PollUrl pollVoteUrl = pollService.getPollVoteUrl(poll, false); preventRuleService.onPollToRemind(poll, pollVoteUrl); Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/EmailService.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/EmailService.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/EmailService.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -37,6 +37,7 @@ 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.common.PollType; import org.chorem.pollen.services.PollenServiceSupport; import org.nuiton.util.StringUtil; @@ -124,7 +125,7 @@ } } - public void onPollCreated(Poll poll, PollUrl voteURL, PollUrl modifURL) { + public void onPollCreated(Poll poll, PollUrl voteURL, PollUrl moderateUrl, PollUrl modifURL) { URL url = serviceContext.getApplicationURL(); @@ -136,11 +137,21 @@ // Mail au créateur if (StringUtils.isNotEmpty(poll.getCreator().getEmail())) { - String subject = l_(locale, "pollen.email.creatorEmail.subject", - pollTitle); - String content = l_(locale, "pollen.email.creatorEmail.content", - pollTitle, voteURL, modifURL); + + String subject, content; + if (PollType.FREE == poll.getPollType()) { + subject = l_(locale, "pollen.email.createPoll.subject", + pollTitle); + content = l_(locale, "pollen.email.createPoll.content", + pollTitle, voteURL, moderateUrl, modifURL); + } else { + subject = l_(locale, "pollen.email.createRestrictedPoll.subject", + pollTitle); + content = l_(locale, "pollen.email.createRestrictedPoll.content", + pollTitle, moderateUrl, modifURL); + } + PollenEmail pollenEmail = createPollenEmail( poll.getCreator().getEmail(), subject, content); Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollCommentService.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollCommentService.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollCommentService.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -92,7 +92,7 @@ PollService pollService = newService(PollService.class); - PollUrl pollVoteUrl = pollService.getPollVoteUrl(poll); + PollUrl pollVoteUrl = pollService.getPollVoteUrl(poll, false); PollFeedService pollFeedService = newService(PollFeedService.class); pollFeedService.onAddComment(commentCreated, pollVoteUrl); Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -197,18 +197,14 @@ Iterable<Choice> choices = Iterables.transform(source.getChoice(), choiceCreator); - // Ensure iteration with a new ArrayList instead of TransformingSequentialList - // from guava Lists#transform() that doesn't support add() method - result.setChoice(Lists.newArrayList(choices)); + for (Choice choiceLoaded : choices) { + // Reset topiaId for clone case + if (clone) { + choiceLoaded.setTopiaId(null); + } + result.addChoice(choiceLoaded); + } -// for (Choice choiceLoaded : source.getChoice()) { -// Choice choiceEditable = newInstance(choiceDAO); -// result.addChoice(choiceEditable); -// // Do not keep choices topiaId, to simplify the update will delete old choices and create new ones -// PollenBinderHelper.simpleCopy( -// choiceLoaded, choiceEditable, false); -// } - // -- VotingList -- // VotingListDAO votingListDAO = getDAO(VotingList.class); PersonToListDAO personToListDAO = getDAO(PersonToList.class); @@ -318,12 +314,13 @@ commitTransaction("Could not create poll " + poll.getTitle()); - PollUrl pollVoteUrl = getPollVoteUrl(poll); + PollUrl pollVoteUrl = getPollVoteUrl(poll, false); + PollUrl pollModerateUrl = getPollVoteUrl(poll, true); PollUrl pollEditUrl = getPollEditUrl(poll); // email notification EmailService emailService = newService(EmailService.class); - emailService.onPollCreated(result, pollVoteUrl, pollEditUrl); + emailService.onPollCreated(result, pollVoteUrl, pollModerateUrl, pollEditUrl); // feed notification // XXX-fdesbois-2012-04-12 : if the feed is the same for everybody maybe @@ -402,12 +399,12 @@ commitTransaction("Could not update poll [" + poll.getTopiaId() + "]"); } - public PollUrl getPollVoteUrl(Poll poll) { + public PollUrl getPollVoteUrl(Poll poll, boolean moderate) { URL applicationUrl = serviceContext.getApplicationURL(); String baseUrl = applicationUrl + "/poll/votefor/"; PollUri pollUri = PollUri.newPollUri(poll.getPollId()); - if (poll.getPollType() != PollType.FREE) { + if (moderate) { String creatorId = poll.getCreator().getAccountId(); pollUri.setAccountId(creatorId); } @@ -976,7 +973,7 @@ // Send notification if necessary PreventRuleService preventRuleService = newService(PreventRuleService.class); - PollUrl pollVoteUrl = getPollVoteUrl(pollToUpdate); + PollUrl pollVoteUrl = getPollVoteUrl(pollToUpdate, false); PollUrl modifUrl = getPollEditUrl(pollToUpdate); preventRuleService.onVoteAdded(poll, pollVoteUrl, modifUrl); } @@ -1019,7 +1016,7 @@ result.setName(votingList.getName()); result.setWeight(votingList.getWeight()); - PollUrl voteURL = getPollVoteUrl(poll); + PollUrl voteURL = getPollVoteUrl(poll, false); // Merge PersonToList List<PersonToList> personToListsUpdated = Lists.newArrayList(); Modified: trunk/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties =================================================================== --- trunk/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-services/src/main/resources/i18n/pollen-services_en_GB.properties 2012-04-30 15:52:29 UTC (rev 3332) @@ -8,8 +8,10 @@ pollen.common.numberVote-blank-votes=Number of blank votes pollen.common.numberVote-total=Sum of numbers pollen.common.numberVote-total-votes=Total votes -pollen.email.creatorEmail.content=You had just created the new poll\: "%s".\nYou can access to this poll by following the links below.\n\nVote page\: \n%s\nEdit page\: \n%s -pollen.email.creatorEmail.subject=[Pollen] Poll creation (%s) +pollen.email.createPoll.content=You had just created the new poll\: "%s".\nYou can access to this poll by following the links below.\n\nVote page\: \n%s\nModerate votes page\: \n%s\nEdit page\: \n%s +pollen.email.createPoll.subject=[Pollen] Poll creation (%s) +pollen.email.createRestrictedPoll.content=You had just created the new poll\: "%s".\nYou can access to this poll by following the links below.\n\nModerate votes page\: \n%s\nEdit page\: \n%s +pollen.email.createRestrictedPoll.subject=[Pollen] Restricted poll creation (%s) pollen.email.lostPassword.content=Hello %1$s. You have just asked for a new password generation for your Pollen account.\n\nLogin\: %2$s\nPassword\: %3$s\n\nYou can now manage your polls by logging on the website \: \n%4$s pollen.email.lostPassword.subject=[Pollen] Lost password for %s pollen.email.reminderEmail.content=You have not yet voted for the poll "%s".\nYou can still participate with the identifier %s by following this link\: \n%s Modified: trunk/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties =================================================================== --- trunk/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-services/src/main/resources/i18n/pollen-services_fr_FR.properties 2012-04-30 15:52:29 UTC (rev 3332) @@ -10,8 +10,8 @@ pollen.common.numberVote-total-votes=Nombre total de votes pollen.email.createPoll.content=Vous venez de créer le sondage "%1$s".\nVous pouvez y accéder en suivant les liens ci-dessous.\n\nPage de vote \: \n%2$s\nModération des votes \: \n%3$s\nPage de modification \: \n%4$s pollen.email.createPoll.subject=[Pollen] Création d'un sondage (%1$s) -pollen.email.creatorEmail.content=Vous venez de créer le sondage "%s".\nVous pouvez y accéder en suivant les liens ci-dessous.\n\nPage de vote \: \n%s\nPage de modification \: \n%s -pollen.email.creatorEmail.subject=[Pollen] Création d'un sondage (%s) +pollen.email.createRestrictedPoll.content=Vous venez de créer le sondage "%s".\nVous pouvez y accéder en suivant les liens ci-dessous.\n\nModération des votes \: \n%s\nPage de modification \: \n%s +pollen.email.createRestrictedPoll.subject=[Pollen] Création d'un sondage restreint (%s) pollen.email.lostPassword.content=Bonjour %1$s. Vous venez de demander la génération d'un nouveau mot de passe d'accès à votre compte Pollen.\n\nIdentifiant \: %2$s\nMot de passe \: %3$s\n\nVous pouvez dès maintenant gérer vos sondages en vous identifiant sur le site \: \n%4$s pollen.email.lostPassword.subject=[Pollen] Mot de passe perdu du compte %s pollen.email.reminderEmail.content=Vous n'avez pas encore voté pour le sondage "%s".\nVous pouvez encore y participer avec l'identifiant %s à l'adresse suivante \: \n%s Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/PollenActionSupport.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/PollenActionSupport.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/PollenActionSupport.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -117,6 +117,11 @@ return userAccount != null; } + public boolean isUserAdmin() { + UserAccount userAccount = getPollenUserAccount(); + return userAccount != null && userAccount.isAdministrator(); + } + public static String getApplicationVersion() { return getPollenApplicationContext().getConfiguration().getVersion().toString(); } Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetCreatedPolls.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetCreatedPolls.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetCreatedPolls.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -94,7 +94,8 @@ ); map.put("id", poll.getTopiaId()); - map.put("voteId", getVoteId(poll)); + map.put("voteId", poll.getPollId()); + map.put("moderateId", poll.getAdminId()); map.put("resultId", getResultId(poll)); map.put("adminId", poll.getAdminId()); @@ -107,7 +108,12 @@ protected Set<String> getPollFunctions(Poll poll) { Set<String> result = Sets.newHashSet(); - result.add("vote"); + if (PollType.FREE == poll.getPollType()) { + + // only free poll could have vote action because creator can't vote + result.add("vote"); + } + result.add("moderate"); result.add("result"); if (!poll.isClosed()) { @@ -120,17 +126,6 @@ result.add("delete"); return result; } - - protected String getVoteId(Poll poll) { - String result; - if (PollType.FREE == poll.getPollType()) { - result = poll.getPollId(); - - } else { - result = poll.getAdminId(); - } - return result; - } /** * Retrieve the id for result page depends on {@code poll}. Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetPolls.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetPolls.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/json/GetPolls.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -92,7 +92,7 @@ Poll.PROPERTY_END_DATE ); map.put("id", poll.getTopiaId()); - map.put("voteId", poll.getAdminId()); + map.put("moderateId", poll.getAdminId()); map.put("resultId", poll.getAdminId()); map.put("adminId", poll.getAdminId()); @@ -106,7 +106,7 @@ protected Set<String> getPollFunctions(Poll poll) { Set<String> result = Sets.newHashSet(); - result.add("vote"); + result.add("moderate"); result.add("result"); if (!poll.isClosed()) { Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -204,9 +204,13 @@ } public String getPollVoteUrl() { - return getPollService().getPollVoteUrl(poll).getUrl(); + return getPollService().getPollVoteUrl(poll, false).getUrl(); } + public String getPollModerateUrl() { + return getPollService().getPollVoteUrl(poll, true).getUrl(); + } + public String getPollEditUrl() { return getPollService().getPollEditUrl(poll).getUrl(); } 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-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -371,8 +371,8 @@ return result; } - public boolean isModifAllowed(String voteId) { - return getVoteService().isUpdateAllowed(getPoll(), voteId, getAccountId(), getPollenUserAccount()); + public boolean isModifAllowed(Vote vote) { + return getVoteService().isUpdateAllowed(getPoll(), vote.getTopiaId(), getAccountId(), getPollenUserAccount()); } public boolean isVoteAllowed() { @@ -380,8 +380,12 @@ } public boolean isDeleteCommentAllowed(Comment comment) { - return isCreatorUser() || getPollCommentService().isCanDeleteComment(comment, getPollAccount(), getPollenUserAccount()); + return getPollCommentService().isCanDeleteComment(comment, getPollAccount(), getPollenUserAccount()); } + + public boolean isDeleteVoteAllowed(Vote vote) { + return isUserAdmin(); + } public String escapeLineBreak(String text) { return text; Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/SavePoll.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/SavePoll.java 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/SavePoll.java 2012-04-30 15:52:29 UTC (rev 3332) @@ -120,20 +120,6 @@ */ private Map<Integer, VotingList> votingLists; - /** - * This message is used in {@code resume.jsp} to display text before vote - * page url. For a restricted poll, the message is different because the - * url contains the creator accountId. - * - * @return the message to display to explain vote page url depends on - * {@code pollType}. - */ - public String getMessagePollVotePage() { - String result = isFreePoll() ? _("pollen.label.pollVotePage") : - _("pollen.label.pollVotePage.restricted"); - return result; - } - @Override public void prepare() throws Exception { 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-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_en_GB.properties 2012-04-30 15:52:29 UTC (rev 3332) @@ -36,6 +36,7 @@ pollen.action.pollDelete=Delete the poll pollen.action.pollEdit=Edit poll pollen.action.pollExport=Export poll +pollen.action.pollModerateVote=Administrate votes pollen.action.pollPersonToListDelete=Delete this voter pollen.action.pollResult=Display poll results pollen.action.pollVote=Vote @@ -237,10 +238,10 @@ 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 \: +pollen.label.pollModerateVotePage=The link below leads to the page to vote for your poll. This access is available only for you as poll's creator \: pollen.label.pollRegisterPage=If you are a logged user, you can find these links on the page pollen.label.pollResultPage=The link below leads to the page to count the votes. Save it to be able to count the vote later \: pollen.label.pollVotePage=The link below leads to the page to vote for your poll. Save it and send it to the people that you want to vote \: -pollen.label.pollVotePage.restricted=The link below leads to the page to vote for your poll. This access is available only for you as poll's creator \: pollen.legend.login=Login pollen.legend.select.favoriteList.to.add=Sélectionner la liste de favoris à ajouter pollen.legend.select.personList.to.create.votingList=Sélectionner la liste des votant à importer dans le nouveau groupe 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-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/resources/i18n/pollen-ui-struts2_fr_FR.properties 2012-04-30 15:52:29 UTC (rev 3332) @@ -38,6 +38,7 @@ pollen.action.pollDelete=Supprimer le sondage pollen.action.pollEdit=Editer le sondage pollen.action.pollExport=Exporter le sondage +pollen.action.pollModerateVote=Administrer les votes pollen.action.pollPersonToListDelete=Supprimer ce votant pollen.action.pollResult=Afficher les résultats du sondage pollen.action.pollVote=Voter @@ -240,10 +241,10 @@ 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 \: +pollen.label.pollModerateVotePage=Le lien ci-dessous mène à la page de vote. Cet accès n'est valable que pour vous en tant que créateur du sondage \: pollen.label.pollRegisterPage=Si vous êtes un utilisateur identifié, vous pouvez retrouver ces liens dans la page pollen.label.pollResultPage=Le lien ci-dessous mène à la page de dépouillement. Enregistrez-le pour pouvoir accéder au dépouillement plus tard \: pollen.label.pollVotePage=Le lien ci-dessous mène à la page de vote. Enregistrez-le et envoyez-le à ceux que vous voulez voir voter \: -pollen.label.pollVotePage.restricted=Le lien ci-dessous mène à la page de vote. Cet accès n'est valable que pour vous en tant que créateur du sondage \: pollen.legend.login=Login pollen.legend.select.favoriteList.to.add=Sélectionner la liste de favoris à ajouter pollen.legend.select.personList.to.create.votingList=Sélectionner la liste des votant à importer dans le nouveau groupe Modified: trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/resume.jsp =================================================================== --- trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/resume.jsp 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/resume.jsp 2012-04-30 15:52:29 UTC (rev 3332) @@ -28,15 +28,28 @@ <h3><s:property value="poll.title"/> <s:text name="pollen.common.by"/> <s:property value="poll.creator.votingId"/></h3> +<s:if test="freePoll"> + <div style="margin-top: 10px;"> + <img src="<s:url value='/img/vote.png'/>" + alt="<s:text name='pollen.common.voteAction'/>" + style="margin-right: 18px;"/> + <s:property value="pollen.label.pollVotePage"/> + <br/> + <s:set name="voteUrl" value="%{pollVoteUrl}"/> + <s:a href="%{voteUrl}" cssStyle="margin-left:50px;"> + <s:property value="voteUrl"/> + </s:a> + </div> +</s:if> <div style="margin-top: 10px;"> - <img src="<s:url value='/img/vote.png'/>" - alt="<s:text name='pollen.common.voteAction'/>" - style="margin-right: 18px;"/> - <s:property value="%{messagePollVotePage}"/> + <img src="<s:url value='/img/moderate.png'/>" + alt="<s:text name='pollen.action.pollModerateVote'/>" + style="margin-right: 20px;"/> + <s:text name='pollen.label.pollModerateVotePage'/> <br/> - <s:set name="voteUrl" value="%{pollVoteUrl}"/> - <s:a href="%{voteUrl}" cssStyle="margin-left:50px;"> - <s:property value="voteUrl"/> + <s:set name="moderateUrl" value="%{pollModerateUrl}"/> + <s:a href="%{moderateUrl}" cssStyle="margin-left:50px;"> + <s:property value="moderateUrl"/> </s:a> </div> <div style="margin-top: 10px;"> Modified: trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/vote.jsp =================================================================== --- trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/vote.jsp 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/vote.jsp 2012-04-30 15:52:29 UTC (rev 3332) @@ -321,7 +321,7 @@ </s:else> </s:if> <s:if test="!poll.anonymous"> - <s:if test="isModifAllowed(#vote.topiaId)"> + <s:if test="isModifAllowed(#vote)"> <s:a action="editVote" namespace="/poll"> <s:param name="pollId" value="%{pollId}"/> <s:param name="accountId" value="%{#vote.pollAccount.accountId}"/> @@ -330,7 +330,7 @@ alt="<s:text name="pollen.action.editVote"/>"/> </s:a> </s:if> - <s:if test="creatorUser"> + <s:if test="isDeleteVoteAllowed(#vote)"> <s:a action="deleteVote" namespace="/poll" href="#" onclick="return openDeleteVoteDialog('%{#vote.topiaId}');"> <img src="<s:url value="/img/delete.png"/>" Modified: trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/pollListHelper.jsp =================================================================== --- trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/pollListHelper.jsp 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/pollListHelper.jsp 2012-04-30 15:52:29 UTC (rev 3332) @@ -34,6 +34,9 @@ <s:url id='voteImg' value='/img/vote.png'/> <s:set id='voteTitle'><s:text name="pollen.action.pollVote"/></s:set> +<s:url id='moderateImg' value='/img/moderate.png'/> +<s:set id='moderateTitle'><s:text name="pollen.action.pollModerateVote"/></s:set> + <s:url id="resultUrl" action="results/" namespace="/poll"/> <s:url id='resultImg' value='/img/count.png'/> <s:set id='resultTitle'><s:text name="pollen.action.pollResult"/></s:set> @@ -84,6 +87,7 @@ var id = rowObject.pollId; var voteId = rowObject.voteId; + var moderateId = rowObject.moderateId; var resultId = rowObject.resultId; var adminId = rowObject.adminId; @@ -92,6 +96,9 @@ if (cellvalue.indexOf('vote') > -1) { result += formatLink("${voteUrl}" + voteId, "${voteImg}", "Vote", "${voteTitle}") } + if (cellvalue.indexOf('moderate') > -1) { + result += formatLink("${voteUrl}" + moderateId, "${moderateImg}", "Moderate", "${moderateTitle}") + } if (cellvalue.indexOf('result') > -1) { result += formatLink("${resultUrl}" + resultId, "${resultImg}", "Result", "${resultTitle}") } Modified: trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/user/createdList.jsp =================================================================== --- trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/user/createdList.jsp 2012-04-30 10:45:25 UTC (rev 3331) +++ trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/user/createdList.jsp 2012-04-30 15:52:29 UTC (rev 3332) @@ -55,5 +55,5 @@ <sjg:gridColumn name="beginDate" title='%{getText("pollen.common.beginDate")}'/> <sjg:gridColumn name="endDate" title='%{getText("pollen.common.endDate")}'/> <sjg:gridColumn name="functions" title='%{getText("pollen.common.functions")}' - formatter="pollFunctions" width="180" sortable="false"/> + formatter="pollFunctions" width="200" sortable="false"/> </sjg:grid>