Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/AuthoringController.java =================================================================== diff -u -re570134b86338055e4fabad4761e69fbb47a57e0 -r3c1a078fa0607bbbe0f78641ffebb16ebbb3114a --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/AuthoringController.java (.../AuthoringController.java) (revision e570134b86338055e4fabad4761e69fbb47a57e0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 3c1a078fa0607bbbe0f78641ffebb16ebbb3114a) @@ -46,7 +46,8 @@ 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.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; @@ -68,10 +69,6 @@ * *
* Define later will use this method to initial page as well. - * - * @see org.apache.struts.actions.DispatchAction#unspecified(org.apache.struts.action.ActionMapping, - * org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, - * javax.servlet.http.HttpServletResponse) */ @RequestMapping("/authoring") @@ -113,24 +110,18 @@ /** * Update all content for submit tool except online/offline instruction files list. - * - * @param request - * @param response - * @return - * @throws IllegalAccessException - * @throws NoSuchMethodException - * @throws InvocationTargetException - * @throws Exception */ - public String updateContent(@ModelAttribute AuthoringForm authoringForm, Errors errors, HttpServletRequest request) + @RequestMapping("authoring/updateContent") + public String updateContent(@ModelAttribute AuthoringForm authoringForm, HttpServletRequest request) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { SessionMap sessionMap = (SessionMap) request.getSession() .getAttribute(authoringForm.getSessionMapID()); ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.PARAM_MODE); - validate(authoringForm, errors, request); - if (errors.hasErrors()) { + MultiValueMap errorMap = new LinkedMultiValueMap<>(); + errorMap = validate(authoringForm, request); + if (!errorMap.isEmpty()) { return "redirect:/"; } @@ -178,9 +169,6 @@ // *********************************************************** /** * The private method to get content from ActionForm parameters (web page). - * - * @param form - * @return */ private SubmitFilesContent getContent(AuthoringForm authoringForm) { Long contentId = authoringForm.getToolContentID(); @@ -200,18 +188,19 @@ return content; } - private void validate(AuthoringForm authoringForm, Errors errors, HttpServletRequest request) { + private MultiValueMap validate(AuthoringForm authoringForm, HttpServletRequest request) { // if (StringUtils.isBlank(sbmtForm.getTitle())) { // ActionMessage error = new ActionMessage("error.title.blank"); // errors.add(ActionMessages.GLOBAL_MESSAGE, error); // } // define it later mode(TEACHER) skip below validation. + MultiValueMap errorMap = new LinkedMultiValueMap<>(); String modeStr = request.getParameter(AttributeNames.ATTR_MODE); if (StringUtils.equals(modeStr, ToolAccessMode.TEACHER.toString())) { - errors.reject("error.title.blank"); + return errorMap; } - + return errorMap; } } \ No newline at end of file Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/LearnerController.java =================================================================== diff -u -re570134b86338055e4fabad4761e69fbb47a57e0 -r3c1a078fa0607bbbe0f78641ffebb16ebbb3114a --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/LearnerController.java (.../LearnerController.java) (revision e570134b86338055e4fabad4761e69fbb47a57e0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/LearnerController.java (.../LearnerController.java) (revision 3c1a078fa0607bbbe0f78641ffebb16ebbb3114a) @@ -63,6 +63,7 @@ import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.FileUtil; +import org.lamsfoundation.lams.util.FileValidatorSpringUtil; import org.lamsfoundation.lams.util.FileValidatorUtil; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; @@ -73,6 +74,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -84,7 +87,6 @@ * @author Steve.Ni */ @Controller -@RequestMapping("/learner") public class LearnerController implements SbmtConstants { private static final boolean MODE_OPTIONAL = false; @@ -105,7 +107,7 @@ /** * The initial page of learner in Submission tool. This page will list all uploaded files and learn */ - @RequestMapping("") + @RequestMapping("/learner") public String unspecified(@ModelAttribute LearnerForm learnerForm, HttpServletRequest request) { // initial session Map SessionMap sessionMap = new SessionMap(); @@ -120,14 +122,14 @@ mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, LearnerController.MODE_OPTIONAL); } catch (Exception e) { } - if (mode == null) { - mode = ToolAccessMode.LEARNER; - } - + String sessionIDStr = WebUtil.readStrParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); Long sessionID = Long.valueOf(sessionIDStr); request.setAttribute("toolSessionID", sessionID); - + + if (mode == null) { + mode = ToolAccessMode.LEARNER; + } // get session from shared session. HttpSession ss = SessionManager.getSession(); @@ -270,6 +272,7 @@ /** * Loads the main learner page with the details currently in the session map */ + @RequestMapping("/refresh") public String refresh(@ModelAttribute LearnerForm learnerForm, HttpServletRequest request) { String sessionMapID = WebUtil.readStrParam(request, SbmtConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); @@ -301,7 +304,7 @@ String sessionMapID = learnerForm.getSessionMapID(); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - request.setAttribute(SbmtConstants.ATTR_SESSION_MAP_ID, sessionMapID); + request.setAttribute("sessionMapID", sessionMapID); // set the mode into http session Long sessionID = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); @@ -356,6 +359,7 @@ * Learner choose finish upload button, will invoke this function. This function will mark the finished * field by special toolSessionID and userID. */ + @RequestMapping("/finish") public void finish(HttpServletRequest request, HttpServletResponse response) { String sessionMapID = WebUtil.readStrParam(request, SbmtConstants.ATTR_SESSION_MAP_ID); @@ -403,29 +407,30 @@ // validate uploaded form private boolean validateUploadForm(LearnerForm learnerForm, HttpServletRequest request) { Locale preferredLocale = (Locale) request.getSession().getAttribute(LocaleFilter.PREFERRED_LOCALE_KEY); - List messages = new ArrayList<>(); + + MultiValueMap errorMap = new LinkedMultiValueMap(); if (learnerForm.getFile() == null || StringUtils.isBlank(learnerForm.getFile().getName())) { - messages.add(this.messageService.getMessage("learner.form.filepath.displayname")); + errorMap.add("GLOBAL", messageService.getMessage("learner.form.filepath.displayname")); } if (StringUtils.isBlank(learnerForm.getDescription())) { - messages.add(this.messageService.getMessage("label.learner.fileDescription")); + errorMap.add("GLOBAL", messageService.getMessage("label.learner.fileDescription")); } else if (learnerForm.getDescription().length() > LearnerForm.DESCRIPTION_LENGTH) { - messages.add("errors.maxdescsize"); + errorMap.add("GLOBAL", "errors.maxdescsize"); } -// FileValidatorSpringUtil.validateFileSize(learnerForm.getFile(), false, errors); + FileValidatorSpringUtil.validateFileSize(learnerForm.getFile(), false); if (learnerForm.getFile() != null) { LearnerController.logger.debug("Learner submit file : " + learnerForm.getFile().getName()); } if (learnerForm.getFile() != null && FileUtil.isExecutableFile(learnerForm.getFile().getName())) { LearnerController.logger.debug("File is executatable : " + learnerForm.getFile().getName()); - messages.add("error.attachment.executable"); + errorMap.add("GLOBAL", "error.attachment.executable"); } - if (messages != null && !messages.isEmpty()) { - request.setAttribute("messages", messages); + if (!errorMap.isEmpty()) { + request.setAttribute("errorMap", errorMap); return true; } return false; @@ -503,6 +508,7 @@ return learner; } + @RequestMapping("/delete") public void deleteLearnerFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession ss = SessionManager.getSession(); Index: lams_tool_sbmt/web/authoring/authoring.jsp =================================================================== diff -u -re570134b86338055e4fabad4761e69fbb47a57e0 -r3c1a078fa0607bbbe0f78641ffebb16ebbb3114a --- lams_tool_sbmt/web/authoring/authoring.jsp (.../authoring.jsp) (revision e570134b86338055e4fabad4761e69fbb47a57e0) +++ lams_tool_sbmt/web/authoring/authoring.jsp (.../authoring.jsp) (revision 3c1a078fa0607bbbe0f78641ffebb16ebbb3114a) @@ -23,12 +23,11 @@ - + - Index: lams_tool_sbmt/web/learner/notebook.jsp =================================================================== diff -u -ra8328bd7083a98162fe2ea19193a08ca16de51d4 -r3c1a078fa0607bbbe0f78641ffebb16ebbb3114a --- lams_tool_sbmt/web/learner/notebook.jsp (.../notebook.jsp) (revision a8328bd7083a98162fe2ea19193a08ca16de51d4) +++ lams_tool_sbmt/web/learner/notebook.jsp (.../notebook.jsp) (revision 3c1a078fa0607bbbe0f78641ffebb16ebbb3114a) @@ -26,7 +26,7 @@
- + Index: lams_tool_sbmt/web/learner/sbmtlearner.jsp =================================================================== diff -u -re570134b86338055e4fabad4761e69fbb47a57e0 -r3c1a078fa0607bbbe0f78641ffebb16ebbb3114a --- lams_tool_sbmt/web/learner/sbmtlearner.jsp (.../sbmtlearner.jsp) (revision e570134b86338055e4fabad4761e69fbb47a57e0) +++ lams_tool_sbmt/web/learner/sbmtlearner.jsp (.../sbmtlearner.jsp) (revision 3c1a078fa0607bbbe0f78641ffebb16ebbb3114a) @@ -287,7 +287,7 @@ - + Index: lams_tool_sbmt/web/learner/submissionDeadline.jsp =================================================================== diff -u -re570134b86338055e4fabad4761e69fbb47a57e0 -r3c1a078fa0607bbbe0f78641ffebb16ebbb3114a --- lams_tool_sbmt/web/learner/submissionDeadline.jsp (.../submissionDeadline.jsp) (revision e570134b86338055e4fabad4761e69fbb47a57e0) +++ lams_tool_sbmt/web/learner/submissionDeadline.jsp (.../submissionDeadline.jsp) (revision 3c1a078fa0607bbbe0f78641ffebb16ebbb3114a) @@ -11,7 +11,7 @@