Author: tchemit Date: 2012-06-03 22:59:00 +0200 (Sun, 03 Jun 2012) New Revision: 3418 Url: http://chorem.org/repositories/revision/pollen/3418 Log: refs #582: Make the resume page bookmarkeable reuse the AbstractPollUriIdAction action for attachPoll one Added: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/ResumePoll.java Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/bean/PollUri.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/AbstractPollUriIdAction.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AttachPoll.java 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/security/PollCreatorRequired.java trunk/pollen-ui-struts2/src/main/resources/config/struts-poll.xml trunk/pollen-ui-struts2/src/main/resources/shiro.ini trunk/pollen-ui-struts2/src/main/resources/struts.xml trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/user/createdList.jsp Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/bean/PollUri.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/bean/PollUri.java 2012-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/bean/PollUri.java 2012-06-03 20:59:00 UTC (rev 3418) @@ -25,6 +25,7 @@ import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; +import org.chorem.pollen.business.persistence.Poll; import java.io.Serializable; 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-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java 2012-06-03 20:59:00 UTC (rev 3418) @@ -193,18 +193,18 @@ return pollType == PollType.GROUP; } - public String getPollVoteUrl() { - return getPollUrlService().getPollVoteUrl(poll, false).getUrl(); - } +// public String getPollVoteUrl() { +// return getPollUrlService().getPollVoteUrl(poll, false).getUrl(); +// } +// +// public String getPollModerateUrl() { +// return getPollUrlService().getPollVoteUrl(poll, true).getUrl(); +// } +// +// public String getPollEditUrl() { +// return getPollUrlService().getPollEditUrl(poll).getUrl(); +// } - public String getPollModerateUrl() { - return getPollUrlService().getPollVoteUrl(poll, true).getUrl(); - } - - public String getPollEditUrl() { - return getPollUrlService().getPollEditUrl(poll).getUrl(); - } - public int getSelectedTab() { int result = 0; return result; Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollUriIdAction.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollUriIdAction.java 2012-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollUriIdAction.java 2012-06-03 20:59:00 UTC (rev 3418) @@ -77,11 +77,11 @@ } public final String getPollId() { - return pollUri != null ? pollUri.getPollId() : null; + return pollUri == null ? null : pollUri.getPollId(); } public final String getAccountId() { - return pollUri != null ? pollUri.getAccountId() : null; + return pollUri == null ? null : pollUri.getAccountId(); } protected void preparePollUri(Map<String, String[]> parameters) { Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AttachPoll.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AttachPoll.java 2012-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AttachPoll.java 2012-06-03 20:59:00 UTC (rev 3418) @@ -24,12 +24,10 @@ import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; -import org.chorem.pollen.bean.PollUri; import org.chorem.pollen.business.persistence.Poll; import org.chorem.pollen.business.persistence.UserAccount; import org.chorem.pollen.services.exceptions.PollNotFoundException; import org.chorem.pollen.ui.actions.PageSkin; -import org.chorem.pollen.ui.actions.PollenActionSupport; /** * To attach a anonymous poll to a connected user account. @@ -37,25 +35,10 @@ * @author tchemit <chemit@codelutin.com> * @since 1.4 */ -public class AttachPoll extends PollenActionSupport { +public class AttachPoll extends AbstractPollUriIdAction { private static final long serialVersionUID = 1L; - /** - * Id of the poll to attach to connected user account. - * - * @since 1.4 - */ - private PollUri pollUri; - - public void setPollUri(PollUri pollUri) { - this.pollUri = pollUri; - } - - public String getPollId() { - return pollUri == null ? null : pollUri.getPollId(); - } - @Override public PageSkin getSkin() { return PageSkin.EDITION; @@ -64,9 +47,9 @@ @Override public String execute() throws Exception { - Preconditions.checkNotNull(pollUri); + String pollId = getPollId(); - String pollId = pollUri.getPollId(); + Preconditions.checkNotNull(pollId); Poll poll = getPollService().getExistingPollByPollId(pollId); @@ -82,12 +65,11 @@ @Override public void validate() { - - if (pollUri == null || StringUtils.isEmpty(pollUri.getPollId())) { - addFieldError("pollUri", _("pollen.error.pollId.empty")); + if (StringUtils.isEmpty(getPollId())) { + addFieldError("uriId", _("pollen.error.pollId.empty")); } else { - String pollId = pollUri.getPollId(); + String pollId = getPollId(); try { @@ -99,12 +81,12 @@ UserAccount userAccount = poll.getCreator().getUserAccount(); if (userAccount != null) { - addFieldError("pollUri", + addFieldError("uriId", _("pollen.error.pollAlreadyAttached")); } } catch (PollNotFoundException e) { - addFieldError("pollUri", _("pollen.error.pollNotFound")); + addFieldError("uriId", _("pollen.error.pollNotFound")); } } Added: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/ResumePoll.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/ResumePoll.java (rev 0) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/ResumePoll.java 2012-06-03 20:59:00 UTC (rev 3418) @@ -0,0 +1,84 @@ +/* + * #%L + * Pollen :: UI (struts2) + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2012 CodeLutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package org.chorem.pollen.ui.actions.poll; + +import com.google.common.base.Preconditions; +import org.chorem.pollen.business.persistence.Poll; +import org.chorem.pollen.common.PollType; +import org.chorem.pollen.ui.actions.PageSkin; + +/** + * Action to display all resume link for a given poll. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.4 + */ +public class ResumePoll extends AbstractPollUriIdAction { + + private static final long serialVersionUID = 1L; + + /** + * Loade poll. + * + * @since 1.4 + */ + private Poll poll; + + public Poll getPoll() { + return poll; + } + + @Override + public PageSkin getSkin() { + return PageSkin.EDITION; + } + + public String getPollVoteUrl() { + return getPollUrlService().getPollVoteUrl(poll, false).getUrl(); + } + + public String getPollModerateUrl() { + return getPollUrlService().getPollVoteUrl(poll, true).getUrl(); + } + + public String getPollEditUrl() { + return getPollUrlService().getPollEditUrl(poll).getUrl(); + } + + public boolean isFreePoll() { + PollType pollType = poll.getPollType(); + return pollType == PollType.FREE; + } + + @Override + public String execute() throws Exception { + + Preconditions.checkNotNull(getUriId()); + + String pollId = getUriId().getPollId(); + + poll = getPollService().getExistingPollByPollId(pollId); + + return SUCCESS; + } +} Property changes on: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/ResumePoll.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native 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-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/SavePoll.java 2012-06-03 20:59:00 UTC (rev 3418) @@ -38,6 +38,7 @@ import org.chorem.pollen.bean.ChoiceHelper; import org.chorem.pollen.bean.PollDateChoice; import org.chorem.pollen.bean.PollImageChoice; +import org.chorem.pollen.bean.PollUri; import org.chorem.pollen.business.persistence.Choice; import org.chorem.pollen.business.persistence.ChoiceImpl; import org.chorem.pollen.business.persistence.PersonToList; @@ -185,6 +186,10 @@ } } + public PollUri getUriId() { + return PollUri.newPollUri(poll.getAdminId()); + } + @Override public String input() { Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/security/PollCreatorRequired.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/security/PollCreatorRequired.java 2012-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/security/PollCreatorRequired.java 2012-06-03 20:59:00 UTC (rev 3418) @@ -44,7 +44,6 @@ adminFilter = new AdminUserRequired(); } - @Override protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, @@ -54,7 +53,7 @@ if (adminFilter.isAccessAllowed(request, response, mappedValue)) { - // user is connected ans admin, so + // user is connected and admin, so access granted isAccessAllowed = true; } else { Modified: trunk/pollen-ui-struts2/src/main/resources/config/struts-poll.xml =================================================================== --- trunk/pollen-ui-struts2/src/main/resources/config/struts-poll.xml 2012-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/resources/config/struts-poll.xml 2012-06-03 20:59:00 UTC (rev 3418) @@ -33,6 +33,8 @@ <package name="poll" extends="default" namespace="/poll"> <result-types> + + <result-type name="redirectToVote" class="org.chorem.pollen.ui.results.PollenServletActionRedirectResult"> <param name="namespace">/poll</param> @@ -47,7 +49,8 @@ </action> <!-- display * --> - <action name="display*" class="org.chorem.pollen.ui.actions.poll.Display{1}"> + <action name="display*" + class="org.chorem.pollen.ui.actions.poll.Display{1}"> <result>/WEB-INF/jsp/poll/display{1}.jsp</result> </action> @@ -59,8 +62,7 @@ </action> <!-- clone poll --> - <action name="clone/*" - class="org.chorem.pollen.ui.actions.poll.LoadPoll"> + <action name="clone/*" class="org.chorem.pollen.ui.actions.poll.LoadPoll"> <param name="uriId">{1}</param> <param name="clone">true</param> <result>/WEB-INF/jsp/poll/create.jsp</result> @@ -69,6 +71,16 @@ <!-- save poll --> <action name="save" class="org.chorem.pollen.ui.actions.poll.SavePoll"> <result name="input">/WEB-INF/jsp/poll/create.jsp</result> + <result type="pollenRedirectAction"> + <param name="namespace">/poll</param> + <param name="actionName">resume/${uriId}</param> + </result> + </action> + + <!-- resume poll --> + <action name="resume/*" method="execute" + class="org.chorem.pollen.ui.actions.poll.ResumePoll"> + <param name="uriId">{1}</param> <result>/WEB-INF/jsp/poll/resume.jsp</result> </action> @@ -95,8 +107,7 @@ </action> <!-- close poll --> - <action name="close/*" - class="org.chorem.pollen.ui.actions.poll.ClosePoll"> + <action name="close/*" class="org.chorem.pollen.ui.actions.poll.ClosePoll"> <param name="uriId">{1}</param> <result type="redirect2"/> </action> Modified: trunk/pollen-ui-struts2/src/main/resources/shiro.ini =================================================================== --- trunk/pollen-ui-struts2/src/main/resources/shiro.ini 2012-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/resources/shiro.ini 2012-06-03 20:59:00 UTC (rev 3418) @@ -50,4 +50,5 @@ # is pollCreator (can admin a poll) /poll/modification/**=poll,pollCreator /poll/clone/**=poll,pollCreator -/poll/resultLink/**=poll,pollCreator \ No newline at end of file +/poll/resultLink/**=poll,pollCreator +/poll/resume/**=poll,pollCreator \ No newline at end of file Modified: trunk/pollen-ui-struts2/src/main/resources/struts.xml =================================================================== --- trunk/pollen-ui-struts2/src/main/resources/struts.xml 2012-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/resources/struts.xml 2012-06-03 20:59:00 UTC (rev 3418) @@ -58,6 +58,9 @@ <param name="actionName">home</param> </result-type> + <result-type name="pollenRedirectAction" + class="org.chorem.pollen.ui.results.PollenServletActionRedirectResult"/> + <result-type name="redirect2" class="org.apache.struts2.dispatcher.ServletRedirectResult"> <param name="location">${redirectUrl}</param> 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-06-03 19:26:50 UTC (rev 3417) +++ trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/user/createdList.jsp 2012-06-03 20:59:00 UTC (rev 3418) @@ -87,7 +87,7 @@ <s:form namespace="/user" method="POST"> - <s:textfield key="pollUri" label='%{getText("pollen.common.pollId")}' + <s:textfield key="uriId" label='%{getText("pollen.common.pollId")}' required="true" size="80" value='%{pollId}' tooltip='%{getText("poll.help.pollId")}' tooltipIconPath="/img/tooltip.png"/>