Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java =================================================================== diff -u -r3eb1b2702379b4c680006a724a0370b9c7d922a1 -r0ebe2a9625e896e58700f9e6aaacab2190e6e348 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 3eb1b2702379b4c680006a724a0370b9c7d922a1) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 0ebe2a9625e896e58700f9e6aaacab2190e6e348) @@ -76,12 +76,14 @@ import org.lamsfoundation.lams.web.util.SessionMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.util.HtmlUtils; @@ -290,7 +292,7 @@ // ************************* Handle assessment questions ******************* List newRandomQuestions = getRandomPoolQuestions(sessionMap); - Set newReferences = updateQuestionReferencesMaxMarks(request, sessionMap, true); + Set newReferences = cacheReferencesMaxMarks(request, sessionMap, true); TreeSet newQuestions = new TreeSet<>(); newQuestions.addAll(newRandomQuestions); @@ -358,6 +360,17 @@ request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); return "pages/authoring/authoring"; } + + /** + * Caches references MaxMarks. Invoked on clicking import button. + */ + @RequestMapping("/cacheReferencesMaxMarks") + @ResponseStatus(HttpStatus.OK) + public void cacheReferencesMaxMarks(HttpServletRequest request) + throws ServletException, IOException { + SessionMap sessionMap = getSessionMap(request); + cacheReferencesMaxMarks(request, sessionMap, false); + } /** * Display empty page for new assessment question. @@ -366,7 +379,7 @@ public String initNewReference(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { SessionMap sessionMap = getSessionMap(request); - updateQuestionReferencesMaxMarks(request, sessionMap, false); + cacheReferencesMaxMarks(request, sessionMap, false); Integer type = NumberUtils.toInt(request.getParameter(QbConstants.ATTR_QUESTION_TYPE)); if (type.equals(-1)) {//randomQuestion case @@ -398,7 +411,7 @@ public String editReference(HttpServletRequest request, HttpServletResponse response, @RequestParam int questionReferenceIndex) throws ServletException, IOException { SessionMap sessionMap = getSessionMap(request); - updateQuestionReferencesMaxMarks(request, sessionMap, false); + cacheReferencesMaxMarks(request, sessionMap, false); SortedSet questionReferences = getQuestionReferences(sessionMap); List rList = new ArrayList<>(questionReferences); @@ -638,7 +651,7 @@ @RequestMapping("/removeQuestionReference") public String removeQuestionReference(HttpServletRequest request) { SessionMap sessionMap = getSessionMap(request); - updateQuestionReferencesMaxMarks(request, sessionMap, false); + cacheReferencesMaxMarks(request, sessionMap, false); int questionReferenceIdx = NumberUtils .toInt(request.getParameter(AssessmentConstants.PARAM_QUESTION_REFERENCE_INDEX), -1); @@ -674,7 +687,7 @@ private String switchQuestionReferences(HttpServletRequest request, boolean up) { SessionMap sessionMap = getSessionMap(request); - updateQuestionReferencesMaxMarks(request, sessionMap, false); + cacheReferencesMaxMarks(request, sessionMap, false); int questionReferenceIdx = NumberUtils .toInt(request.getParameter(AssessmentConstants.PARAM_QUESTION_REFERENCE_INDEX), -1); @@ -881,7 +894,7 @@ return list; } - private Set updateQuestionReferencesMaxMarks(HttpServletRequest request, + private Set cacheReferencesMaxMarks(HttpServletRequest request, SessionMap sessionMap, boolean isFormSubmit) { Map paramMap = splitRequestParameter(request, AssessmentConstants.ATTR_QUESTION_REFERENCES_MAX_MARKS); Index: lams_tool_assessment/web/pages/authoring/basic.jsp =================================================================== diff -u -r475b1970be027a5c59a08d33ad1aa1f6b2443402 -r0ebe2a9625e896e58700f9e6aaacab2190e6e348 --- lams_tool_assessment/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 475b1970be027a5c59a08d33ad1aa1f6b2443402) +++ lams_tool_assessment/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 0ebe2a9625e896e58700f9e6aaacab2190e6e348) @@ -41,6 +41,18 @@ } ); }) + + //handler for "Import" button. Caches references maxMarks. + $(document).on("click", '#import-button[disabled!=disabled]', function() { + $.ajax({ + url: '', + type: 'POST', + data: { + sessionMapID: "${sessionMapID}", + referenceMaxMarks: serializeReferenceMaxMarks() + } + }); + }); }); //The panel of assessment list panel