Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/CompleteItemServlet.java =================================================================== diff -u -rdaf00a52f630e4b979227c958b7d1e70e0a9b466 -rc325b5f32102c66679ed0d7827c89bcc7671895d --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/CompleteItemServlet.java (.../CompleteItemServlet.java) (revision daf00a52f630e4b979227c958b7d1e70e0a9b466) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/CompleteItemServlet.java (.../CompleteItemServlet.java) (revision c325b5f32102c66679ed0d7827c89bcc7671895d) @@ -79,48 +79,29 @@ * if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String mode = request.getParameter(AttributeNames.ATTR_MODE); - String sessionMapID = request.getParameter(ResourceConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - - Long resourceItemUid = new Long(request.getParameter(ResourceConstants.PARAM_RESOURCE_ITEM_UID)); - - HttpSession ss = SessionManager.getSession(); - - // get back login user DTO - UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - - Long sessionId = (Long) sessionMap.get(ResourceConstants.ATTR_TOOL_SESSION_ID); - service.setItemComplete(resourceItemUid, new Long(user.getUserID().intValue()), sessionId); - - // set resource item complete tag - SortedSet resourceItemList = getResourceItemList(sessionMap); - for (ResourceItem item : resourceItemList) { - if (item.getUid().equals(resourceItemUid)) { - item.setComplete(true); - break; - } - } - - ResourceUser rUser = service.getUserByIDAndSession(new Long(user.getUserID()), sessionId); - - response.setContentType("text/javascript"); - PrintWriter out = response.getWriter(); - - if(!rUser.isSessionFinished()) { - out.println("window.parent.opener.checkNew(false);"); - out.println("window.parent.opener=null;"); - out.println("window.parent.close();"); - } else { - out.println("window.parent.opener.checkNew(true);"); - out.println("window.parent.opener=null;"); - out.println("window.parent.close();"); - } - - out.println(); - out.flush(); - out.close(); + throws ServletException, IOException { + String mode = request.getParameter(AttributeNames.ATTR_MODE); + String sessionMapID = request.getParameter(ResourceConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + + Long resourceItemUid = new Long(request.getParameter(ResourceConstants.PARAM_RESOURCE_ITEM_UID)); + + HttpSession ss = SessionManager.getSession(); + + // get back login user DTO + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + + Long sessionId = (Long) sessionMap.get(ResourceConstants.ATTR_TOOL_SESSION_ID); + service.setItemComplete(resourceItemUid, new Long(user.getUserID().intValue()), sessionId); + + // set resource item complete tag + SortedSet resourceItemList = getResourceItemList(sessionMap); + for (ResourceItem item : resourceItemList) { + if (item.getUid().equals(resourceItemUid)) { + item.setComplete(true); + break; + } + } } /** Index: lams_tool_larsrc/web/pages/itemreview/instructionsnav.jsp =================================================================== diff -u -r2dd38c31c3e3fb4858c7ab7ac2d3143587a15949 -rc325b5f32102c66679ed0d7827c89bcc7671895d --- lams_tool_larsrc/web/pages/itemreview/instructionsnav.jsp (.../instructionsnav.jsp) (revision 2dd38c31c3e3fb4858c7ab7ac2d3143587a15949) +++ lams_tool_larsrc/web/pages/itemreview/instructionsnav.jsp (.../instructionsnav.jsp) (revision c325b5f32102c66679ed0d7827c89bcc7671895d) @@ -55,7 +55,7 @@ var url="?sessionMapID=${sessionMapID}&mode=${mode}&itemUid=${param.itemUid}&reqID="+reqIDVar.getTime(); jQuery.ajax({ type: 'GET', - dateType: 'script', + dataType: 'script', url: url, timeout: 5000, @@ -66,12 +66,19 @@ jQuery("input#FinishInstruction").addClass("disabled"); }, - error: function() { - alert('server timeout'); + error: function(jqXHR, textStatus, errorThrown) { + alert('Error while marking item as complete.\nStatus: ' + textStatus + '\nError: ' + errorThrown); }, - success: function(data) { - eval(data); + success: function() { + var winParent = window.parent; + if (!winParent.opener.checkNew) { + // there can be an extra iframe in the hierarchy + winParent = winParent.parent; + } + winParent.opener.checkNew(); + winParent.opener=null; + winParent.close(); }, complete: function() { Index: lams_tool_larsrc/web/pages/itemreview/mobile/instructionsnav.jsp =================================================================== diff -u -r2dd38c31c3e3fb4858c7ab7ac2d3143587a15949 -rc325b5f32102c66679ed0d7827c89bcc7671895d --- lams_tool_larsrc/web/pages/itemreview/mobile/instructionsnav.jsp (.../instructionsnav.jsp) (revision 2dd38c31c3e3fb4858c7ab7ac2d3143587a15949) +++ lams_tool_larsrc/web/pages/itemreview/mobile/instructionsnav.jsp (.../instructionsnav.jsp) (revision c325b5f32102c66679ed0d7827c89bcc7671895d) @@ -58,7 +58,7 @@ var url="?sessionMapID=${sessionMapID}&mode=${mode}&itemUid=${param.itemUid}&reqID="+reqIDVar.getTime(); jQuery.ajax({ type: 'GET', - dateType: 'script', + dataType: 'script', url: url, timeout: 5000, @@ -69,12 +69,19 @@ jQuery("input#FinishInstruction").addClass("disabled"); }, - error: function() { - alert('server timeout'); + error: function(jqXHR, textStatus, errorThrown) { + alert('Error while marking item as complete.\nStatus: ' + textStatus + '\nError: ' + errorThrown); }, - success: function(data) { - eval(data); + success: function() { + var winParent = window.parent; + if (!winParent.opener.checkNew) { + // there can be an extra iframe in the hierarchy + winParent = winParent.parent; + } + winParent.opener.checkNew(); + winParent.opener=null; + winParent.close(); }, complete: function() { Index: lams_tool_larsrc/web/pages/learning/learning.jsp =================================================================== diff -u -r7d391686e87496990fd475aede299ee5bab884ad -rc325b5f32102c66679ed0d7827c89bcc7671895d --- lams_tool_larsrc/web/pages/learning/learning.jsp (.../learning.jsp) (revision 7d391686e87496990fd475aede299ee5bab884ad) +++ lams_tool_larsrc/web/pages/learning/learning.jsp (.../learning.jsp) (revision c325b5f32102c66679ed0d7827c89bcc7671895d) @@ -36,7 +36,7 @@ showMessage(gurl); return false; } - function checkNew(checkFinishedLock){ + function checkNew(){ var reqIDVar = new Date(); document.location.href = "?sessionMapID=${sessionMapID}&mode=${mode}&toolSessionID=${toolSessionID}&reqID="+reqIDVar.getTime(); Index: lams_tool_larsrc/web/pages/learning/mobile/learning.jsp =================================================================== diff -u -r7d391686e87496990fd475aede299ee5bab884ad -rc325b5f32102c66679ed0d7827c89bcc7671895d --- lams_tool_larsrc/web/pages/learning/mobile/learning.jsp (.../learning.jsp) (revision 7d391686e87496990fd475aede299ee5bab884ad) +++ lams_tool_larsrc/web/pages/learning/mobile/learning.jsp (.../learning.jsp) (revision c325b5f32102c66679ed0d7827c89bcc7671895d) @@ -43,7 +43,7 @@ } }); - function checkNew(checkFinishedLock){ + function checkNew(){ var reqIDVar = new Date(); document.location.href = "?sessionMapID=${sessionMapID}&mode=${mode}&toolSessionID=${toolSessionID}&reqID="+reqIDVar.getTime();