Index: lams_tool_assessment/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r2d760fc4af01f96960c448eb638c99d5c642a78d -r0f91c5ccc4cb27ccd6afa12a7be94f071247c99f --- lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 2d760fc4af01f96960c448eb638c99d5c642a78d) +++ lams_tool_assessment/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 0f91c5ccc4cb27ccd6afa12a7be94f071247c99f) @@ -244,6 +244,7 @@ label.submit = Finish label.authoring.advance.numbered.questions = Enable questions' numbering label.learning.draft.autosaved = Draft autosaved +label.learning.draft.autosave.error = Lost connection to the server. The page will reload. Check your connection and close any other opened tabs with LAMS. If this keeps happening, inform your teacher. label.waiting.for.leader = Please, wait while somebody will become a group leader and enter this activity. label.users.from.group = Other learners in your group: label.use.select.leader.tool.output = Use leaders from Select Leader tool Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java =================================================================== diff -u -r0064b9c51de455391610c9305c6f5a16c9ccc524 -r0f91c5ccc4cb27ccd6afa12a7be94f071247c99f --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision 0064b9c51de455391610c9305c6f5a16c9ccc524) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision 0f91c5ccc4cb27ccd6afa12a7be94f071247c99f) @@ -699,22 +699,28 @@ /** * auto saves responses + * + * @throws IOException */ @RequestMapping("/autoSaveAnswers") @ResponseStatus(HttpStatus.OK) - public void autoSaveAnswers(HttpServletRequest request) - throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + @ResponseBody + public String autoSaveAnswers(HttpServletRequest request, HttpServletResponse response) + throws IllegalAccessException, InvocationTargetException, NoSuchMethodException, IOException { SessionMap sessionMap = getSessionMap(request); if (sessionMap == null) { log.warn("No sessionMap found in session for user: " + request.getRemoteUser()); - return; + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "No session found for the user"); + return null; } int pageNumber = (Integer) sessionMap.get(AssessmentConstants.ATTR_PAGE_NUMBER); //get user answers from request and store them into sessionMap storeUserAnswersIntoSessionMap(request, pageNumber); //store results from sessionMap into DB storeUserAnswersIntoDatabase(sessionMap, true); + + return "ok"; } @RequestMapping("/vsaAutocomplete") Index: lams_tool_assessment/web/pages/learning/learning.jsp =================================================================== diff -u -r5a579db63172ae32b83984fb7cde499217bbcdd4 -r0f91c5ccc4cb27ccd6afa12a7be94f071247c99f --- lams_tool_assessment/web/pages/learning/learning.jsp (.../learning.jsp) (revision 5a579db63172ae32b83984fb7cde499217bbcdd4) +++ lams_tool_assessment/web/pages/learning/learning.jsp (.../learning.jsp) (revision 0f91c5ccc4cb27ccd6afa12a7be94f071247c99f) @@ -331,16 +331,28 @@ //ajax form submit $('#answers').ajaxSubmit({ url: "?sessionMapID=${sessionMapID}&date=" + new Date().getTime(), - success: function() { + success: function(response) { + if (response != 'ok') { + onLearnerAutosaveError(); + return; + } + $.jGrowl( " ", { life: 2000, closeTemplate: '' } ); - } + }, + error : onLearnerAutosaveError }); } + var autosaveInterval = "30000"; // 30 seconds interval window.setInterval(learnerAutosave, autosaveInterval); + + function onLearnerAutosaveError() { + alert(''); + location.reload(); + } //check if we came back due to failed answers' validation (missing required question's answer or min words limit not reached)