r3234 - in branches/pollen-1.2.6-struts2: pollen-services/src/main/java/org/chorem/pollen/services/impl pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll pollen-ui-struts2/src/main/resources/config pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll
Author: fdesbois Date: 2012-04-05 09:50:42 +0200 (Thu, 05 Apr 2012) New Revision: 3234 Url: http://chorem.org/repositories/revision/pollen/3234 Log: - move validation methods in SavePoll - use prepare in LoadPoll, SUCCESS is used by default - manage existing userAccount for clone Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/LoadPoll.java branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/SavePoll.java branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/config/struts-poll.xml branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/create.jsp Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java 2012-04-05 07:50:32 UTC (rev 3233) +++ branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java 2012-04-05 07:50:42 UTC (rev 3234) @@ -98,13 +98,16 @@ PollAccount creator = newInstance(pollAccountDAO); creator.setAccountId(serviceContext.createPollenUrlId()); // creator.setAdmin(true); + if (user != null) { + // Link the creator with the user creator.setVotingId(user.getDisplayName()); creator.setEmail(user.getEmail()); creator.setUserAccount(user); } result.setCreator(creator); + // Generate Uid to have a unique poll. Will avoid multi-submit, existing // poll will be check by its uid. result.setPollId(serviceContext.createPollenUrlId()); Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java 2012-04-05 07:50:32 UTC (rev 3233) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractPollForm.java 2012-04-05 07:50:42 UTC (rev 3234) @@ -1,16 +1,13 @@ package org.chorem.pollen.ui.actions.poll; -import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.interceptor.ParameterAware; -import org.chorem.pollen.bean.ChoiceHelper; import org.chorem.pollen.bean.PollDateChoice; import org.chorem.pollen.bean.PollImageChoice; import org.chorem.pollen.business.persistence.Choice; @@ -29,7 +26,6 @@ import org.chorem.pollen.services.impl.PollService; import org.chorem.pollen.ui.actions.FileUploadAware; import org.chorem.pollen.ui.actions.PollenActionSupport; -import org.nuiton.util.StringUtil; import java.io.File; import java.text.ParseException; @@ -107,20 +103,20 @@ /** Uploaded images name (from use desktop) (for choice type poll). */ private List<String> imageChoiceFileName; - private boolean informationsError; - - private boolean optionsError; - private String actionLabel; + private transient PollService pollService; + /** * All the parameters send by request used to build back choices of the * poll. */ protected Map<String, String[]> parameters; - private transient PollService pollService; + protected boolean informationsError; + protected boolean optionsError; + protected abstract Poll initPoll(); @Override @@ -128,6 +124,13 @@ return "Creation"; } + protected PollService getPollService() { + if (pollService == null) { + pollService = newService(PollService.class); + } + return pollService; + } + public Poll getPoll() { if (poll == null) { poll = initPoll(); @@ -247,14 +250,6 @@ return imageChoiceFileName; } - public boolean isInformationsError() { - return informationsError; - } - - public boolean isOptionsError() { - return optionsError; - } - public boolean isFreePoll() { PollType pollType = poll.getPollType(); return pollType == PollType.FREE; @@ -273,6 +268,14 @@ return getPollService().getPollEditUrl(poll); } + public boolean isInformationsError() { + return informationsError; + } + + public boolean isOptionsError() { + return optionsError; + } + public int getSelectedTab() { int result; if (isInformationsError()) { @@ -291,6 +294,15 @@ return actionLabel; } + public boolean isVoteStarted() { + return isEdit() && getPoll().sizeVote() > 0; + } + + public boolean isCreatorUserAccountDefined() { + PollAccount creator = getPoll().getCreator(); + return creator.getUserAccount() != null; + } + protected int getNbChoices() { //TODO tchemit-2012-03-05 use a default value from configuration return 5; @@ -301,7 +313,7 @@ } protected boolean isEdit() { - return getPoll().getTopiaId() != null; + return StringUtils.isNotEmpty(getPoll().getTopiaId()); } public void prepareFormPage() throws Exception { @@ -373,297 +385,10 @@ } @Override - public void validate() { - - Preconditions.checkNotNull(poll); - - informationsError = false; - - // poll must have a title - if (StringUtils.isEmpty(poll.getTitle())) { - addFieldError("poll.title", _("pollen.error.poll.required.title")); - } - - - // validate choices - Map<Integer, Choice> orderedChoices = getOrderedChoices(); - - if (MapUtils.isEmpty(orderedChoices)) { - - // poll must have at least one choice - addFieldError("poll.choices", - _("pollen.error.poll.required.one.choice")); - } else { -// -// //TODO tchemit improve this (from different cases text-date-image) -// // check there is no choice with same name -// boolean duplicateNameDetected = false; -// Set<String> names = Sets.newHashSet(); -// for (Choice choice : orderedChoices.values()) { -// String choiceName = choice.getName(); -// if (!names.add(choiceName)) { -// duplicateNameDetected = true; -// break; -// } -// } -// if (duplicateNameDetected) { -// addFieldError("poll.choices", -// _("pollen.error.poll.detected.duplicate.choice.name")); -// } - - ChoiceType choiceType = poll.getChoiceType(); - int inputChoicesSize = orderedChoices.size(); - Set<Object> choiceValues = - Sets.newHashSet(ChoiceHelper.toValues(orderedChoices.values(), choiceType)); - - if (inputChoicesSize > choiceValues.size()) { - addFieldError("poll.choices", - _("pollen.error.poll.detected.duplicate.choice.name")); - } - } - - - optionsError = false; - - // validate security stuff - - if (isFreePoll()) { - - // nothing to validate - - } else { - Map<Integer, VotingList> votingLists = getOrderedVotingLists(); - - Set<String> groups = Sets.newHashSet(); - Set<String> voters = Sets.newHashSet(); - Set<String> emails = Sets.newHashSet(); - - for (Map.Entry<Integer, VotingList> entry : votingLists.entrySet()) { - optionsError |= validateVotingList(entry.getKey(), - entry.getValue(), - groups, - voters, - emails); - } - } - - informationsError = hasFieldErrors(); - - if (!informationsError && optionsError) { - - // trick to force to go back to form - addFieldError("", ""); - } - } - - protected boolean validateVotingList(int votingListNumber, - VotingList votingList, - Set<String> groups, - Set<String> voters, - Set<String> emails) { - - boolean result = false; - Map<String, String> errors = Maps.newHashMap(); - - String votingListErrorPrefix = "poll.votingList_" + votingListNumber; - - if (isGroupPoll()) { - - // group poll - - // check there is at least one group - // check no doublon on group names - // check there is at least one voter on each group - // check no doublon on voter names - // check no doublon on voter emails - - { // validate votingList name - String votingListName = votingList.getName(); - - if (StringUtils.isEmpty(votingListName)) { - - errors.put(votingListErrorPrefix + ".name", - _("pollen.error.poll.required.votingList.name")); - } else { - - // check no votingList name doublon - boolean add = groups.add(votingListName); - if (!add) { - - // name doublon - errors.put( - votingListErrorPrefix + ".name", - _("pollen.error.poll.votingList.name.doublon")); - } - - } - } - - { // validate votingList weight - - if (votingList.getWeight() == 0) { - - // no weight filled (can be a bad conversion) - errors.put( - votingListErrorPrefix + ".weight", - _("pollen.error.poll.votingList.weight.not.valid")); - } - } - } - - // check there is at least one voter - - String persontoListToken = DisplayPersonToList.getPersonToListTokenId( - votingListTokenId, votingListNumber); - - Map<Integer, PersonToList> personToLists = - getPollenSession().getDynamicData(persontoListToken); - - if (MapUtils.isEmpty(personToLists)) { - - // no personToList found for unique votingList 0 - errors.put(votingListErrorPrefix, - _("pollen.error.poll.required.one.personToList")); - } else { - - // check no doublon on voter names - // check no doublon on voter emails - - for (Map.Entry<Integer, PersonToList> entry : - personToLists.entrySet()) { - - result |= validatePersonList(entry.getKey(), entry.getValue(), - voters, emails); - } - } - - if (MapUtils.isNotEmpty(errors)) { - - // keep errors to display them in correct action - String errorToken = DisplayVotingList.getVotingListErrorTokenId( - votingListTokenId, votingListNumber); - if (log.isInfoEnabled()) { - log.info("Add " + errors.size() + " errors to " + errorToken); - } - getPollenSession().putDynamicData(errorToken, errors); - result = true; - } - return result; - } - - protected boolean validatePersonList(int personToListNumber, - PersonToList personToList, - Set<String> voters, - Set<String> emails) { - - boolean result = false; - Map<String, String> errors = Maps.newHashMap(); - String fieldNamePrefix = - "personToList_0_" + personToListNumber; - PollAccount pollAccount = personToList.getPollAccount(); - - { // validate votingId - - String votingId = pollAccount.getVotingId(); - // check voter is not doublon - boolean add = voters.add(votingId); - if (!add) { - - // voter doublon - errors.put( - fieldNamePrefix + ".votingId", - _("pollen.error.poll.personToList.votingId.doublon")); - } - } - { // validate email - String email = pollAccount.getEmail(); - - if (StringUtils.isEmpty(email)) { - errors.put( - fieldNamePrefix + ".email", - _("pollen.error.poll.personToList.email.required")); - } else { - - - boolean validEmail = StringUtil.isEmail(email); - if (!validEmail) { - - // not a valid email - errors.put( - fieldNamePrefix + ".email", - _("pollen.error.poll.personToList.email.not.valid")); - } else { - - // check email not doublon - boolean add = emails.add(email); - if (!add) { - - // email doublon - errors.put( - fieldNamePrefix + ".email", - _("pollen.error.poll.personToList.email.doublon")); - } - } - } - } - { // validate weight - if (personToList.getWeight() == 0) { - - // no weight filled (can be a bad conversion) - errors.put( - fieldNamePrefix + ".weight", - _("pollen.error.poll.personToList.weight.not.valid")); - } - } - - if (MapUtils.isNotEmpty(errors)) { - String errorToken = - DisplayPersonToList.getPersonToListErrorTokenId( - votingListTokenId, 0, personToListNumber); - if (log.isInfoEnabled()) { - log.info("Add " + errors.size() + " errors to " + errorToken); - } - getPollenSession().putDynamicData(errorToken, errors); - result = true; - } - return result; - } - - @Override public void setParameters(Map<String, String[]> parameters) { this.parameters = parameters; } - protected PollService getPollService() { - if (pollService == null) { - pollService = newService(PollService.class); - } - return pollService; - } - - protected Map<Integer, Choice> getOrderedChoices() { - Map<Integer, Choice> result = null; - switch (poll.getChoiceType()) { - case TEXT: - result = getPollenSession().getDynamicData(textChoiceTokenId); - break; - case DATE: - result = getPollenSession().getDynamicData(dateChoiceTokenId); - break; - case IMAGE: - result = getPollenSession().getDynamicData(imageChoiceTokenId); - break; - } - return result; - } - - protected Map<Integer, VotingList> getOrderedVotingLists() { - - Map<Integer, VotingList> result = getPollenSession().getDynamicData( - votingListTokenId); - return result; - } - protected Map<Integer, Choice> buildTextChoices(int nbDefault) { Map<Integer, Choice> result = Maps.newTreeMap(); @@ -1026,7 +751,6 @@ } } - private <T> Map<Integer, T> reindexMap(Map<Integer, T> result, int maxNumber) { Map<Integer, T> result2; @@ -1052,15 +776,6 @@ return result2; } - private <O> void addtoList(List<O> list, int index, O object) { - - while (list.size() < index) { - list.add(null); - } - list.add(index, object); - } - - private String getNonEmptyParameterValue(String paramName) { String[] paramValues = parameters.get(paramName); String result = null; Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/LoadPoll.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/LoadPoll.java 2012-04-05 07:50:32 UTC (rev 3233) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/LoadPoll.java 2012-04-05 07:50:42 UTC (rev 3234) @@ -3,6 +3,7 @@ import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; +import com.opensymphony.xwork2.Preparable; import org.chorem.pollen.bean.PollImageChoice; import org.chorem.pollen.bean.PollUri; import org.chorem.pollen.business.persistence.Choice; @@ -21,7 +22,7 @@ * * @author fdesbois <desbois@codelutin.com> */ -public class LoadPoll extends AbstractPollForm { +public class LoadPoll extends AbstractPollForm implements Preparable { private static final String PREFIX_CHOICE = "%sChoice_%d"; @@ -57,14 +58,15 @@ if (clone) { result.setTopiaId(null); + result.setPollId(serviceContext.createPollenUrlId()); - // Use a new pollUid - String pollUid = serviceContext.createPollenUrlId(); - result.setPollId(pollUid); + // Reset creator but keep userAccount link + PollAccount creator = result.getCreator(); + creator.setTopiaId(null); + creator.setAccountId(serviceContext.createPollenUrlId()); } } else { - UserAccount userAccount = getPollenUserAccount(); result = getPollService().getNewPoll(userAccount); } @@ -72,7 +74,7 @@ } @Override - public String input() throws Exception { + public void prepare() throws Exception { if (pollUri != null) { @@ -87,8 +89,6 @@ } prepareFormPage(); - - return INPUT; } private Function<Choice, String> withChoicePrefix(final ChoiceType choiceType) { Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/SavePoll.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/SavePoll.java 2012-04-05 07:50:32 UTC (rev 3233) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/SavePoll.java 2012-04-05 07:50:42 UTC (rev 3234) @@ -23,18 +23,29 @@ */ package org.chorem.pollen.ui.actions.poll; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import com.opensymphony.xwork2.Preparable; +import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.chorem.pollen.bean.ChoiceHelper; import org.chorem.pollen.business.persistence.Choice; +import org.chorem.pollen.business.persistence.PersonToList; import org.chorem.pollen.business.persistence.Poll; +import org.chorem.pollen.business.persistence.PollAccount; import org.chorem.pollen.business.persistence.PreventRule; import org.chorem.pollen.business.persistence.UserAccount; import org.chorem.pollen.business.persistence.VotingList; +import org.chorem.pollen.common.ChoiceType; import org.chorem.pollen.services.impl.PollService; import org.chorem.pollen.services.impl.PreventRuleService; +import org.chorem.pollen.services.impl.UserService; +import org.nuiton.util.StringUtil; import java.util.Map; +import java.util.Set; /** * Creates a new poll. @@ -48,10 +59,16 @@ /** Logger. */ private static final Log log = LogFactory.getLog(SavePoll.class); + + private String userId; + public void setUserId(String userId) { + this.userId = userId; + } + @Override protected Poll initPoll() { - UserAccount userAccount = getPollenUserAccount(); + UserAccount userAccount = getPollenUserAccount(); Poll result = getPollService().getNewPoll(userAccount); return result; } @@ -63,10 +80,86 @@ } @Override + public void validate() { + + Poll poll = getPoll(); + + informationsError = false; + + // poll must have a title + if (StringUtils.isEmpty(poll.getTitle())) { + addFieldError("poll.title", _("pollen.error.poll.required.title")); + } + + + // validate choices + Map<Integer, Choice> orderedChoices = getOrderedChoices(); + + if (MapUtils.isEmpty(orderedChoices)) { + + // poll must have at least one choice + addFieldError("poll.choices", + _("pollen.error.poll.required.one.choice")); + } else { + + ChoiceType choiceType = poll.getChoiceType(); + int inputChoicesSize = orderedChoices.size(); + Set<Object> choiceValues = + Sets.newHashSet(ChoiceHelper.toValues(orderedChoices.values(), choiceType)); + + if (inputChoicesSize > choiceValues.size()) { + addFieldError("poll.choices", + _("pollen.error.poll.detected.duplicate.choice.name")); + } + } + + optionsError = false; + + // validate security stuff + + if (isFreePoll()) { + + // nothing to validate + + } else { + Map<Integer, VotingList> votingLists = getOrderedVotingLists(); + + Set<String> groups = Sets.newHashSet(); + Set<String> voters = Sets.newHashSet(); + Set<String> emails = Sets.newHashSet(); + + for (Map.Entry<Integer, VotingList> entry : votingLists.entrySet()) { + optionsError |= validateVotingList(entry.getKey(), + entry.getValue(), + groups, + voters, + emails); + } + } + + informationsError = hasFieldErrors(); + + if (!informationsError && optionsError) { + + // trick to force to go back to form + addFieldError("", ""); + } + } + + @Override public String execute() throws Exception { Poll poll = getPoll(); + // Load userAccount from the form + if (!isCreatorUserAccountDefined() && StringUtils.isNotBlank(userId)) { + + UserService userService = newService(UserService.class); + UserAccount userAccount = userService.getEntityById(UserAccount.class, userId); + + poll.getCreator().setUserAccount(userAccount); + } + Map<Integer, Choice> orderedChoices = getOrderedChoices(); for (Integer index : orderedChoices.keySet()) { @@ -119,4 +212,200 @@ addActionMessage(_("pollen.information.poll.created")); return SUCCESS; } + + protected Map<Integer, Choice> getOrderedChoices() { + Map<Integer, Choice> result = null; + switch (getPoll().getChoiceType()) { + case TEXT: + result = getPollenSession().getDynamicData(getTextChoiceTokenId()); + break; + case DATE: + result = getPollenSession().getDynamicData(getDateChoiceTokenId()); + break; + case IMAGE: + result = getPollenSession().getDynamicData(getImageChoiceTokenId()); + break; + } + return result; + } + + protected Map<Integer, VotingList> getOrderedVotingLists() { + + Map<Integer, VotingList> result = getPollenSession().getDynamicData( + getVotingListTokenId()); + return result; + } + + protected boolean validateVotingList(int votingListNumber, + VotingList votingList, + Set<String> groups, + Set<String> voters, + Set<String> emails) { + + boolean result = false; + Map<String, String> errors = Maps.newHashMap(); + + String votingListErrorPrefix = "poll.votingList_" + votingListNumber; + + if (isGroupPoll()) { + + // group poll + + // check there is at least one group + // check no doublon on group names + // check there is at least one voter on each group + // check no doublon on voter names + // check no doublon on voter emails + + { // validate votingList name + String votingListName = votingList.getName(); + + if (StringUtils.isEmpty(votingListName)) { + + errors.put(votingListErrorPrefix + ".name", + _("pollen.error.poll.required.votingList.name")); + } else { + + // check no votingList name doublon + boolean add = groups.add(votingListName); + if (!add) { + + // name doublon + errors.put( + votingListErrorPrefix + ".name", + _("pollen.error.poll.votingList.name.doublon")); + } + + } + } + + { // validate votingList weight + + if (votingList.getWeight() == 0) { + + // no weight filled (can be a bad conversion) + errors.put( + votingListErrorPrefix + ".weight", + _("pollen.error.poll.votingList.weight.not.valid")); + } + } + } + + // check there is at least one voter + + String persontoListToken = DisplayPersonToList.getPersonToListTokenId( + getVotingListTokenId(), votingListNumber); + + Map<Integer, PersonToList> personToLists = + getPollenSession().getDynamicData(persontoListToken); + + if (MapUtils.isEmpty(personToLists)) { + + // no personToList found for unique votingList 0 + errors.put(votingListErrorPrefix, + _("pollen.error.poll.required.one.personToList")); + } else { + + // check no doublon on voter names + // check no doublon on voter emails + + for (Map.Entry<Integer, PersonToList> entry : + personToLists.entrySet()) { + + result |= validatePersonList(entry.getKey(), entry.getValue(), + voters, emails); + } + } + + if (MapUtils.isNotEmpty(errors)) { + + // keep errors to display them in correct action + String errorToken = DisplayVotingList.getVotingListErrorTokenId( + getVotingListTokenId(), votingListNumber); + if (log.isInfoEnabled()) { + log.info("Add " + errors.size() + " errors to " + errorToken); + } + getPollenSession().putDynamicData(errorToken, errors); + result = true; + } + return result; + } + + protected boolean validatePersonList(int personToListNumber, + PersonToList personToList, + Set<String> voters, + Set<String> emails) { + + boolean result = false; + Map<String, String> errors = Maps.newHashMap(); + String fieldNamePrefix = + "personToList_0_" + personToListNumber; + PollAccount pollAccount = personToList.getPollAccount(); + + { // validate votingId + + String votingId = pollAccount.getVotingId(); + // check voter is not doublon + boolean add = voters.add(votingId); + if (!add) { + + // voter doublon + errors.put( + fieldNamePrefix + ".votingId", + _("pollen.error.poll.personToList.votingId.doublon")); + } + } + { // validate email + String email = pollAccount.getEmail(); + + if (StringUtils.isEmpty(email)) { + errors.put( + fieldNamePrefix + ".email", + _("pollen.error.poll.personToList.email.required")); + } else { + + + boolean validEmail = StringUtil.isEmail(email); + if (!validEmail) { + + // not a valid email + errors.put( + fieldNamePrefix + ".email", + _("pollen.error.poll.personToList.email.not.valid")); + } else { + + // check email not doublon + boolean add = emails.add(email); + if (!add) { + + // email doublon + errors.put( + fieldNamePrefix + ".email", + _("pollen.error.poll.personToList.email.doublon")); + } + } + } + } + { // validate weight + if (personToList.getWeight() == 0) { + + // no weight filled (can be a bad conversion) + errors.put( + fieldNamePrefix + ".weight", + _("pollen.error.poll.personToList.weight.not.valid")); + } + } + + if (MapUtils.isNotEmpty(errors)) { + String errorToken = + DisplayPersonToList.getPersonToListErrorTokenId( + getVotingListTokenId(), 0, personToListNumber); + if (log.isInfoEnabled()) { + log.info("Add " + errors.size() + " errors to " + errorToken); + } + getPollenSession().putDynamicData(errorToken, errors); + result = true; + } + return result; + } } Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/config/struts-poll.xml =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/config/struts-poll.xml 2012-04-05 07:50:32 UTC (rev 3233) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/resources/config/struts-poll.xml 2012-04-05 07:50:42 UTC (rev 3234) @@ -43,9 +43,8 @@ <!-- create poll --> <action name="create" - class="org.chorem.pollen.ui.actions.poll.LoadPoll" - method="input"> - <result name="input">/WEB-INF/jsp/poll/create.jsp</result> + class="org.chorem.pollen.ui.actions.poll.LoadPoll"> + <result>/WEB-INF/jsp/poll/create.jsp</result> </action> <!-- display * --> @@ -86,19 +85,17 @@ <!-- edit poll --> <action name="modification/*" - class="org.chorem.pollen.ui.actions.poll.LoadPoll" - method="input"> + class="org.chorem.pollen.ui.actions.poll.LoadPoll"> <param name="uriId">{1}</param> - <result name="input">/WEB-INF/jsp/poll/create.jsp</result> + <result>/WEB-INF/jsp/poll/create.jsp</result> </action> <!-- clone poll --> <action name="clone/*" - class="org.chorem.pollen.ui.actions.poll.LoadPoll" - method="input"> + class="org.chorem.pollen.ui.actions.poll.LoadPoll"> <param name="uriId">{1}</param> <param name="clone">true</param> - <result name="input">/WEB-INF/jsp/poll/create.jsp</result> + <result>/WEB-INF/jsp/poll/create.jsp</result> </action> <!-- save poll --> Modified: branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/create.jsp =================================================================== --- branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/create.jsp 2012-04-05 07:50:32 UTC (rev 3233) +++ branches/pollen-1.2.6-struts2/pollen-ui-struts2/src/main/webapp/WEB-INF/jsp/poll/create.jsp 2012-04-05 07:50:42 UTC (rev 3234) @@ -201,7 +201,7 @@ required="true" size="80"/> <s:textarea key="poll.description" rows="3" cols="54" label="%{getText('pollen.common.description')}"/> - <s:hidden key="poll.pollId" label=''/> + <s:hidden key="poll.pollId"/> </fieldset> <br/> @@ -244,7 +244,11 @@ label="%{getText('pollen.common.login')}"/> <s:textfield key="poll.creator.email" size="80" label="%{getText('pollen.common.email')}"/> - <s:hidden key="poll.creator.accountId" label=''/> + <s:hidden key="poll.creator.accountId"/> + <s:hidden key="poll.creator.topiaId"/> + <s:if test="creatorUserAccountDefined"> + <s:hidden name="userId" value="%{poll.creator.userAccount.topiaId}"/> + </s:if> </fieldset> <br/>
participants (1)
-
fdesbois@users.chorem.org