Index: lams_build/lib/lams/lams-central.jar =================================================================== diff -u -r77f108435765d310d43b07e7c31bfc8b30922868 -rae0a5d613505479be85b878a5bf701be9709076a Binary files differ Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r77f108435765d310d43b07e7c31bfc8b30922868 -rae0a5d613505479be85b878a5bf701be9709076a Binary files differ Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/AuthoringController.java =================================================================== diff -u -r433c3dff4f4c7961e4f90f7d370a399bedaadaf6 -rae0a5d613505479be85b878a5bf701be9709076a --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/AuthoringController.java (.../AuthoringController.java) (revision 433c3dff4f4c7961e4f90f7d370a399bedaadaf6) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/AuthoringController.java (.../AuthoringController.java) (revision ae0a5d613505479be85b878a5bf701be9709076a) @@ -48,15 +48,18 @@ import org.lamsfoundation.lams.tool.vote.util.VoteUtils; import org.lamsfoundation.lams.tool.vote.web.form.VoteAuthoringForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; -import org.springframework.validation.Errors; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/authoring") @@ -67,6 +70,10 @@ @Qualifier("voteService") private IVoteService voteService; + @Autowired + @Qualifier("lavoteMessageService") + private MessageService messageService; + /** * repopulateRequestParameters reads and saves request parameters */ @@ -127,7 +134,7 @@ /** * moves a nomination down in the authoring list */ - @RequestMapping("/moveNominationDown") + @RequestMapping(path = "/moveNominationDown", method = RequestMethod.POST) @SuppressWarnings("unchecked") public String moveNominationDown(VoteAuthoringForm voteAuthoringForm, HttpServletRequest request) { String httpSessionID = voteAuthoringForm.getHttpSessionID(); @@ -183,7 +190,7 @@ /** * moves a nomination up in the authoring list */ - @RequestMapping("/moveNominationUp") + @RequestMapping(path = "/moveNominationUp", method = RequestMethod.POST) @SuppressWarnings("unchecked") public String moveNominationUp(VoteAuthoringForm voteAuthoringForm, HttpServletRequest request) { String httpSessionID = voteAuthoringForm.getHttpSessionID(); @@ -239,7 +246,7 @@ /** * removes a nomination from the authoring list */ - @RequestMapping("/removeNomination") + @RequestMapping(path = "/removeNomination", method = RequestMethod.POST) @SuppressWarnings("unchecked") public String removeNomination(VoteAuthoringForm voteAuthoringForm, HttpServletRequest request) { String httpSessionID = voteAuthoringForm.getHttpSessionID(); @@ -393,7 +400,7 @@ /** * enables adding a new nomination to the authoring nominations list */ - @RequestMapping("/addSingleNomination") + @RequestMapping(path = "/addSingleNomination", method = RequestMethod.POST) @SuppressWarnings("unchecked") public String addSingleNomination(VoteAuthoringForm voteAuthoringForm, HttpServletRequest request) { String httpSessionID = voteAuthoringForm.getHttpSessionID(); @@ -457,7 +464,7 @@ /** * saves a new or updated nomination in the authoring nominations list */ - @RequestMapping("/saveSingleNomination") + @RequestMapping(path = "/saveSingleNomination", method = RequestMethod.POST) @SuppressWarnings("unchecked") public String saveSingleNomination(VoteAuthoringForm voteAuthoringForm, HttpServletRequest request) { String httpSessionID = voteAuthoringForm.getHttpSessionID(); @@ -575,9 +582,9 @@ /** * persists the nominations list and other user selections in the db. */ - @RequestMapping("/submitAllContent") + @RequestMapping(path = "/submitAllContent", method = RequestMethod.POST) @SuppressWarnings("unchecked") - public String submitAllContent(VoteAuthoringForm voteAuthoringForm, Errors errors, HttpServletRequest request) { + public String submitAllContent(VoteAuthoringForm voteAuthoringForm, HttpServletRequest request) { String httpSessionID = voteAuthoringForm.getHttpSessionID(); SessionMap sessionMap = (SessionMap) request.getSession() @@ -590,23 +597,24 @@ List questionDTOs = (List) sessionMap.get(VoteAppConstants.LIST_QUESTION_DTO); + MultiValueMap errorMap = new LinkedMultiValueMap<>(); if (questionDTOs.isEmpty() && (voteAuthoringForm.getAssignedDataFlowObject() == null || voteAuthoringForm.getAssignedDataFlowObject() == 0)) { - errors.rejectValue("nominations", "nominations.none.submitted"); + errorMap.add("nominations", messageService.getMessage("nominations.none.submitted")); logger.error("Nominations not submitted"); } String maxNomCount = voteAuthoringForm.getMaxNominationCount(); if (maxNomCount != null) { if (maxNomCount.equals("0") || maxNomCount.contains("-")) { - errors.rejectValue("maxNominationCount", "maxNomination.invalid"); + errorMap.add("maxNominationCount", messageService.getMessage("maxNomination.invalid")); logger.error("Maximum votes in Advance tab is invalid"); } try { //int intMaxNomCount = new Integer(maxNomCount).intValue(); } catch (NumberFormatException e) { - errors.rejectValue("maxNominationCount", "maxNomination.invalid"); + errorMap.add("maxNominationCount", messageService.getMessage("maxNomination.invalid")); logger.error("Maximum votes in Advance tab is invalid"); } } @@ -635,7 +643,7 @@ } if (isNominationsDuplicate == true) { - errors.rejectValue("nominations", "nominations.duplicate"); + errorMap.add("nominations", messageService.getMessage("nominations.duplicate")); logger.error("There are duplicate nomination entries."); } @@ -682,7 +690,7 @@ VoteContent voteContentTest = voteService.getVoteContent(new Long(strToolContentID)); - if (!errors.hasErrors()) { + if (errorMap.isEmpty()) { ToolAccessMode mode = WebUtil.readToolAccessModeAuthorDefaulted(request); request.setAttribute(AttributeNames.ATTR_MODE, mode.toString()); @@ -741,6 +749,8 @@ // standard authoring close request.setAttribute(AuthoringConstants.LAMS_AUTHORING_SUCCESS_FLAG, Boolean.TRUE); + } else { + request.setAttribute("errorMap", errorMap); } voteAuthoringForm.resetUserAction(); @@ -762,7 +772,7 @@ } @RequestMapping("/start") - public String start(VoteAuthoringForm voteAuthoringForm, Errors errors, HttpServletRequest request) { + public String start(VoteAuthoringForm voteAuthoringForm, HttpServletRequest request) { VoteGeneralAuthoringDTO voteGeneralAuthoringDTO = new VoteGeneralAuthoringDTO(); request.setAttribute(VoteAppConstants.VOTE_GENERAL_AUTHORING_DTO, voteGeneralAuthoringDTO); @@ -784,9 +794,11 @@ voteAuthoringForm.setExceptionMaxNominationInvalid(new Boolean(false).toString()); voteGeneralAuthoringDTO.setExceptionMaxNominationInvalid(new Boolean(false).toString()); - boolean validateSignature = validateDefaultContent(voteAuthoringForm, errors); + MultiValueMap errorMap = new LinkedMultiValueMap<>(); + boolean validateSignature = validateDefaultContent(voteAuthoringForm, errorMap); if (!validateSignature) { - return "/VoteErrorBox"; + request.setAttribute("errorMap", errorMap); + return "/error"; } //no problems getting the default content, will render authoring screen @@ -797,8 +809,9 @@ voteGeneralAuthoringDTO.setToolContentID(new Long(strToolContentId).toString()); if (strToolContentId == null || strToolContentId.equals("")) { - errors.reject("error.contentId.required"); - return "/VoteErrorBox"; + errorMap.add("GLOBAL", messageService.getMessage("error.contentId.required")); + request.setAttribute("errorMap", errorMap); + return "/error"; } ToolAccessMode mode = WebUtil.readToolAccessModeAuthorDefaulted(request); @@ -894,7 +907,8 @@ * @param mapping * @return ActionForward */ - private boolean validateDefaultContent(VoteAuthoringForm voteAuthoringForm, Errors errors) { + private boolean validateDefaultContent(VoteAuthoringForm voteAuthoringForm, + MultiValueMap errorMap) { /* * retrieve the default content id based on tool signature */ @@ -903,12 +917,12 @@ defaultContentID = voteService.getToolDefaultContentIdBySignature(VoteAppConstants.MY_SIGNATURE); if (defaultContentID == 0) { logger.error("Exception occured: No default content"); - errors.reject("error.defaultContent.notSetup"); + errorMap.add("GLOBAL", messageService.getMessage("error.defaultContent.notSetup")); return false; } } catch (Exception e) { logger.error("error getting the default content id: " + e.getMessage()); - errors.reject("error.defaultContent.notSetup"); + errorMap.add("GLOBAL", messageService.getMessage("error.defaultContent.notSetup")); return false; } @@ -917,13 +931,13 @@ VoteContent voteContent = voteService.getVoteContent(new Long(defaultContentID)); if (voteContent == null) { logger.error("Exception occured: No default content"); - errors.reject("error.defaultContent.notSetup"); + errorMap.add("GLOBAL", messageService.getMessage("error.defaultContent.notSetup")); return false; } } catch (Exception e) { logger.error("other problems: " + e); logger.error("Exception occured: No default question content"); - errors.reject("error.defaultContent.notSetup"); + errorMap.add("GLOBAL", messageService.getMessage("error.defaultContent.notSetup")); return false; } Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/LearningController.java =================================================================== diff -u -r9349bab097150a4a15cf4c6c10b7946400c3fbd0 -rae0a5d613505479be85b878a5bf701be9709076a --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/LearningController.java (.../LearningController.java) (revision 9349bab097150a4a15cf4c6c10b7946400c3fbd0) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/LearningController.java (.../LearningController.java) (revision ae0a5d613505479be85b878a5bf701be9709076a) @@ -56,15 +56,18 @@ import org.lamsfoundation.lams.tool.vote.web.form.VoteLearningForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.DateUtil; +import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; -import org.springframework.validation.Errors; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.WebApplicationContext; @@ -83,6 +86,10 @@ private WebApplicationContext applicationContext; @Autowired + @Qualifier("lavoteMessageService") + private MessageService messageService; + + @Autowired @Qualifier("voteService") private IVoteService voteService; @@ -321,8 +328,7 @@ } @RequestMapping("/continueOptionsCombined") - public String continueOptionsCombined(VoteLearningForm voteLearningForm, Errors errors, - HttpServletRequest request) { + public String continueOptionsCombined(VoteLearningForm voteLearningForm, HttpServletRequest request) { VoteGeneralLearnerFlowDTO voteGeneralLearnerFlowDTO = new VoteGeneralLearnerFlowDTO(); @@ -370,7 +376,9 @@ if (castVoteCount > intMaxNominationCount) { voteLearningForm.setMaxNominationCountReached(new Boolean(true).toString()); voteGeneralLearnerFlowDTO.setMaxNominationCountReached(new Boolean(true).toString()); - errors.reject("error.maxNominationCount.reached"); + MultiValueMap errorMap = new LinkedMultiValueMap<>(); + errorMap.add("GLOBAL", messageService.getMessage("error.maxNominationCount.reached")); + request.setAttribute("errorMap", errorMap); logger.error("You have selected too many nominations."); return "/learning/AnswersContent"; } @@ -506,7 +514,7 @@ return objectNode.toString(); } - @RequestMapping("/submitReflection") + @RequestMapping(path = "/submitReflection", method = RequestMethod.POST) public String submitReflection(VoteLearningForm voteLearningForm, HttpServletRequest request) { LearningController.repopulateRequestParameters(request, voteLearningForm); @@ -522,13 +530,13 @@ String reflectionEntry = request.getParameter(ENTRY_TEXT); // check for existing notebook entry - NotebookEntry entry = voteService.getEntry(toolSessionID, CoreNotebookConstants.NOTEBOOK_TOOL, - MY_SIGNATURE, userID); + NotebookEntry entry = voteService.getEntry(toolSessionID, CoreNotebookConstants.NOTEBOOK_TOOL, MY_SIGNATURE, + userID); if (entry == null) { // create new entry - voteService.createNotebookEntry(toolSessionID, CoreNotebookConstants.NOTEBOOK_TOOL, MY_SIGNATURE, - userID, reflectionEntry); + voteService.createNotebookEntry(toolSessionID, CoreNotebookConstants.NOTEBOOK_TOOL, MY_SIGNATURE, userID, + reflectionEntry); } else { // update existing entry entry.setEntry(reflectionEntry); @@ -630,7 +638,7 @@ * make sure this session exists in tool's session table by now. */ @RequestMapping("/start") - public String start(VoteLearningForm voteLearningForm, Errors errors, HttpServletRequest request) { + public String start(VoteLearningForm voteLearningForm, HttpServletRequest request) { VoteGeneralLearnerFlowDTO voteGeneralLearnerFlowDTO = new VoteGeneralLearnerFlowDTO(); @@ -646,7 +654,7 @@ boolean validateParameters = LearningController.validateParameters(request, voteLearningForm); if (!validateParameters) { - return "/VoteErrorBox"; + return "/error"; } String toolSessionID = voteLearningForm.getToolSessionID(); @@ -661,7 +669,7 @@ if (voteSession == null) { logger.error("error: The tool expects voteSession."); - return "/VoteErrorBox"; + return "/error"; } /* @@ -672,8 +680,10 @@ if (voteContent == null) { logger.error("error: The tool expects voteContent."); - errors.reject("error.content.doesNotExist"); - return "/VoteErrorBox"; + MultiValueMap errorMap = new LinkedMultiValueMap<>(); + errorMap.add("GLOBAL", messageService.getMessage("error.content.doesNotExist")); + request.setAttribute("errorMap", errorMap); + return "/error"; } /* Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/MonitoringController.java =================================================================== diff -u -r9349bab097150a4a15cf4c6c10b7946400c3fbd0 -rae0a5d613505479be85b878a5bf701be9709076a --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/MonitoringController.java (.../MonitoringController.java) (revision 9349bab097150a4a15cf4c6c10b7946400c3fbd0) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/web/action/MonitoringController.java (.../MonitoringController.java) (revision ae0a5d613505479be85b878a5bf701be9709076a) @@ -360,7 +360,7 @@ boolean validateParameters = validateParameters(request, voteMonitoringForm); if (!validateParameters) { - return "/VoteErrorBox"; + return "/error"; } // initialiseMonitoringData @@ -375,7 +375,7 @@ logger.error("Vote Content does not exist"); voteGeneralMonitoringDTO.setUserExceptionContentDoesNotExist(Boolean.TRUE.toString()); - return "/VoteErrorBox"; + return "/error"; } voteGeneralMonitoringDTO.setActivityTitle(voteContent.getTitle()); Index: lams_tool_vote/web/WEB-INF/tlds/lams/lams.tld =================================================================== diff -u -r60d9a173d5590295376322fc3e857ae2dca37717 -rae0a5d613505479be85b878a5bf701be9709076a --- lams_tool_vote/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 60d9a173d5590295376322fc3e857ae2dca37717) +++ lams_tool_vote/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision ae0a5d613505479be85b878a5bf701be9709076a) @@ -211,192 +211,6 @@ - - - STRUTS-textarea - org.lamsfoundation.lams.web.tag.MultiLinesTextareaTag - empty - - accesskey - false - true - - - alt - false - true - - - altKey - false - true - - - bundle - false - true - - - cols - false - true - - - disabled - false - true - - - errorKey - false - true - - - errorStyle - false - true - - - errorStyleClass - false - true - - - errorStyleId - false - true - - - index - false - true - - - indexed - false - true - - - name - false - true - - - onblur - false - true - - - onchange - false - true - - - onclick - false - true - - - ondblclick - false - true - - - onfocus - false - true - - - onkeydown - false - true - - - onkeypress - false - true - - - onkeyup - false - true - - - onmousedown - false - true - - - onmousemove - false - true - - - onmouseout - false - true - - - onmouseover - false - true - - - onmouseup - false - true - - - property - true - true - - - readonly - false - true - - - rows - false - true - - - style - false - true - - - styleClass - false - true - - - styleId - false - true - - - tabindex - false - true - - - title - false - true - - - titleKey - false - true - - - value - false - true - - Small portrait of a user Index: lams_tool_vote/web/common/messages.jsp =================================================================== diff -u -r433c3dff4f4c7961e4f90f7d370a399bedaadaf6 -rae0a5d613505479be85b878a5bf701be9709076a --- lams_tool_vote/web/common/messages.jsp (.../messages.jsp) (revision 433c3dff4f4c7961e4f90f7d370a399bedaadaf6) +++ lams_tool_vote/web/common/messages.jsp (.../messages.jsp) (revision ae0a5d613505479be85b878a5bf701be9709076a) @@ -1,12 +1,8 @@ <%-- Error Messages --%> - - -<%-- Success Messages - - - - - - - - ---%> \ No newline at end of file + + + + + + + \ No newline at end of file