Index: lams_tool_lamc/conf/language/ApplicationResources.properties =================================================================== diff -u -r729e46dfd529c4eb24e700323ed07e864c4b5b7e -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 729e46dfd529c4eb24e700323ed07e864c4b5b7e) +++ lams_tool_lamc/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -167,7 +167,7 @@ label.user =User label.attemptTime =Attempt Date/Time label.response =Response -label.learning.forceOfflineMessage =This is setup to be carried out offline. Plase see your instructor for details. +label.learning.forceOfflineMessage =This is setup to be carried out offline. Please see your instructor for details. error.defineLater =Please wait for the teacher to complete the contents of this activity. error.noStudentActivity =Sorry, the report can not be generated.
No student has attempted the activity yet. group.label =Group @@ -208,6 +208,10 @@ label.report.endLearningMessage.col =End of Activity Message: label.continue =Continue label.reflect =Reflect on MCQ +label.notebook.entries = Notebook Entries +label.reflection = Reflection +label.learner =Learner + #======= End labels: Exported 202 labels for en AU ===== Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java =================================================================== diff -u -r7b82319529db9ef570c4b52ac1e0f2de7228ddd1 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 7b82319529db9ef570c4b52ac1e0f2de7228ddd1) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -231,6 +231,8 @@ public static final String USER_FEEDBACK ="userFeedback"; public static final String REPORT_TITLE_LEARNER ="reportTitleLearner"; public static final String TOTAL_COUNT_REACHED ="totalCountReached"; + public static final String NOTEBOOK ="notebook"; + public static final String ENTRY_TEXT ="entryText"; public static final String MC_LEARNER_STARTER_DTO ="mcLearnerStarterDTO"; public static final String IS_TOOL_ACTIVITY_OFFLINE ="isToolActivityOffline"; Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McGeneralLearnerFlowDTO.java =================================================================== diff -u -r1d705f95c7d374192c678e101772e93f0442dae9 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McGeneralLearnerFlowDTO.java (.../McGeneralLearnerFlowDTO.java) (revision 1d705f95c7d374192c678e101772e93f0442dae9) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McGeneralLearnerFlowDTO.java (.../McGeneralLearnerFlowDTO.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -66,6 +66,14 @@ protected String topMark; + protected String reflection; + + protected String reflectionSubject; + + protected String notebookEntry; + + protected String notebookEntriesVisible; + protected String lowestMark; protected String averageMark; @@ -478,4 +486,52 @@ public void setReportViewOnly(String reportViewOnly) { this.reportViewOnly = reportViewOnly; } + /** + * @return Returns the reflection. + */ + public String getReflection() { + return reflection; + } + /** + * @param reflection The reflection to set. + */ + public void setReflection(String reflection) { + this.reflection = reflection; + } + /** + * @return Returns the reflectionSubject. + */ + public String getReflectionSubject() { + return reflectionSubject; + } + /** + * @param reflectionSubject The reflectionSubject to set. + */ + public void setReflectionSubject(String reflectionSubject) { + this.reflectionSubject = reflectionSubject; + } + /** + * @return Returns the notebookEntry. + */ + public String getNotebookEntry() { + return notebookEntry; + } + /** + * @param notebookEntry The notebookEntry to set. + */ + public void setNotebookEntry(String notebookEntry) { + this.notebookEntry = notebookEntry; + } + /** + * @return Returns the notebookEntriesVisible. + */ + public String getNotebookEntriesVisible() { + return notebookEntriesVisible; + } + /** + * @param notebookEntriesVisible The notebookEntriesVisible to set. + */ + public void setNotebookEntriesVisible(String notebookEntriesVisible) { + this.notebookEntriesVisible = notebookEntriesVisible; + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml =================================================================== diff -u -r24ca84b9e61b98c068eaa369cb194a35e5511162 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -83,10 +83,11 @@ - + + Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java =================================================================== diff -u -r3a998c9b8c2ba60c293759d9bd20c2ca71edb68a -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java (.../McContent.java) (revision 3a998c9b8c2ba60c293759d9bd20c2ca71edb68a) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java (.../McContent.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -134,6 +134,8 @@ Integer passMark, boolean showReport, boolean showFeedback, boolean retries, boolean reflect, String reflectionSubject, Set mcQueContents, Set mcSessions, Set mcAttachments) { + + logger.debug("copying properties"); this.mcContentId = mcContentId; this.content=content; this.title = title; Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java =================================================================== diff -u -r3ec9e4aa0ad9319ce9be7f6fa84d9f35165f698d -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 3ec9e4aa0ad9319ce9be7f6fa84d9f35165f698d) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -29,6 +29,7 @@ import org.lamsfoundation.lams.contentrepository.NodeKey; import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.tool.IToolVO; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.exception.DataMissingException; @@ -290,5 +291,14 @@ public List findMcOptionCorrectByQueId(Long mcQueContentId) throws McApplicationException; public List findMcOptionNamesByQueId(Long mcQueContentId) throws McApplicationException; + + public Long createNotebookEntry(Long id, Integer idType, String signature, + Integer userID, String entry); + + + public NotebookEntry getEntry(Long id, Integer idType, String signature, + Integer userID); + + } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== diff -u -r3a998c9b8c2ba60c293759d9bd20c2ca71edb68a -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 3a998c9b8c2ba60c293759d9bd20c2ca71edb68a) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -51,6 +51,8 @@ import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.IToolVO; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -118,6 +120,8 @@ private ILamsToolService toolService; private IToolContentHandler mcToolContentHandler = null; private IExportToolContentService exportContentService; + + private ICoreNotebookService coreNotebookService; public McServicePOJO(){} @@ -2740,5 +2744,37 @@ // qaContent.setReflectInstructions(description); } - //========================================================================================= + public Long createNotebookEntry(Long id, Integer idType, String signature, + Integer userID, String entry) { + logger.debug("coreNotebookService: " + coreNotebookService); + return coreNotebookService.createNotebookEntry(id, idType, signature, userID, "", entry); + } + + + + + public NotebookEntry getEntry(Long id, Integer idType, String signature, + Integer userID) { + + List list = coreNotebookService.getEntry(id, idType, signature, userID); + if (list == null || list.isEmpty()) { + return null; + } else { + return list.get(0); + } + } + + + /** + * @return Returns the coreNotebookService. + */ + public ICoreNotebookService getCoreNotebookService() { + return coreNotebookService; + } + /** + * @param coreNotebookService The coreNotebookService to set. + */ + public void setCoreNotebookService(ICoreNotebookService coreNotebookService) { + this.coreNotebookService = coreNotebookService; + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java =================================================================== diff -u -r3a998c9b8c2ba60c293759d9bd20c2ca71edb68a -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision 3a998c9b8c2ba60c293759d9bd20c2ca71edb68a) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -144,6 +144,16 @@ mcAuthoringForm.setSln(OFF); logger.debug("setting sln to false"); } + + + if (mcContent.isReflect()) + { + mcAuthoringForm.setReflect(ON); + } + else + { + mcAuthoringForm.setReflect(OFF); + } } @@ -1404,6 +1414,7 @@ boolean isRetries=false; boolean isShowFeedback=false; boolean isSln=false; + boolean isReflect=false; logger.debug("isQuestionsSequenced: " + mcAuthoringForm.getQuestionsSequenced()); if (mcAuthoringForm.getQuestionsSequenced().equalsIgnoreCase(ON)) @@ -1425,14 +1436,22 @@ if (mcAuthoringForm.getSln().equalsIgnoreCase(ON)) isSln=true; + logger.debug("isReflect" + mcAuthoringForm.getReflect()); + if (mcAuthoringForm.getReflect().equalsIgnoreCase(ON)) + isReflect=true; + + logger.debug("passmark: " + mcAuthoringForm.getPassmark()); if ((mcAuthoringForm.getPassmark() != null) && (mcAuthoringForm.getPassmark().length() > 0)) passmark= new Integer(mcAuthoringForm.getPassmark()).intValue(); logger.debug("isShowFeedback: " + mcAuthoringForm.getShowFeedback()); if (mcAuthoringForm.getShowFeedback().equalsIgnoreCase(ON)) isShowFeedback=true; - + + String reflectionSubject=request.getParameter(REFLECTION_SUBJECT); + logger.debug("reflectionSubject: " + reflectionSubject); + /* String richTextTitle=""; @@ -1511,6 +1530,8 @@ mc.setRetries(isRetries); mc.setPassMark(new Integer(passmark)); mc.setShowReport(isSln); + mc.setReflect(isReflect); + mc.setReflectionSubject(reflectionSubject); mc.setShowFeedback(isShowFeedback); mc.setMcQueContents(new TreeSet()); mc.setMcSessions(new TreeSet()); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java =================================================================== diff -u -r3a998c9b8c2ba60c293759d9bd20c2ca71edb68a -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision 3a998c9b8c2ba60c293759d9bd20c2ca71edb68a) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -2013,6 +2013,7 @@ boolean isRetries=false; boolean isShowFeedback=false; boolean isSln=false; + boolean isReflect=false; String monitoringReportTitle=""; String reportTitle=""; @@ -2056,6 +2057,18 @@ isSln=true; } + logger.debug("isReflect" + mcAuthoringForm.getReflect()); + if (mcAuthoringForm.getReflect() != null) + { + if (mcAuthoringForm.getReflect().equalsIgnoreCase(ON)) + isReflect=true; + } + + + String reflectionSubject=request.getParameter(REFLECTION_SUBJECT); + logger.debug("reflectionSubject: " + reflectionSubject); + + logger.debug("passmark: " + mcAuthoringForm.getPassmark()); if (mcAuthoringForm.getPassmark() != null) @@ -2237,8 +2250,13 @@ if (mcAuthoringForm.getSln() != null) mcContent.setShowReport(isSln); + + if (mcAuthoringForm.getReflect() != null) + mcContent.setReflect(isReflect); + mcContent.setPassMark(new Integer(passmark)); + mcContent.setReflectionSubject(reflectionSubject); if (activeModule.equals(AUTHORING)) { mcContent.setOfflineInstructions(richTextOfflineInstructions); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningAction.java =================================================================== diff -u -r02d459ecccab3c7148976413e086259cf87036f7 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningAction.java (.../McLearningAction.java) (revision 02d459ecccab3c7148976413e086259cf87036f7) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningAction.java (.../McLearningAction.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -44,6 +44,8 @@ import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.mc.McAppConstants; @@ -303,100 +305,179 @@ setContentInUse(request, toolContentId, mcService); return viewSummary(mapping, form, request, response); } + else if (mcLearningForm.getSubmitReflection() != null) + { + LearningUtil.saveFormRequestData(request, mcLearningForm, false); + setContentInUse(request, toolContentId, mcService); + return submitReflection(mapping, form, request, response); + } + else if (mcLearningForm.getForwardtoReflection() != null) + { + LearningUtil.saveFormRequestData(request, mcLearningForm, false); + setContentInUse(request, toolContentId, mcService); + return forwardtoReflection(mapping, form, request, response); + } else if (mcLearningForm.getLearnerFinished() != null) { LearningUtil.saveFormRequestData(request, mcLearningForm, false); - logger.debug("requested learner finished, the learner should be directed to next activity."); - - logger.debug("toolSessionID: " + toolSessionID); - - String userID = ""; - HttpSession ss = SessionManager.getSession(); - logger.debug("ss: " + ss); - - if (ss != null) - { - UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - if ((user != null) && (user.getUserID() != null)) - { - userID = user.getUserID().toString(); - logger.debug("retrieved userId: " + userID); - } - } - - logger.debug("attempting to leave/complete session with toolSessionId:" + toolSessionID + " and userID:"+userID); - - McUtils.cleanUpSessionAbsolute(request); - - String nextUrl=null; - try - { - nextUrl=mcService.leaveToolSession(new Long(toolSessionID), new Long(userID)); - logger.debug("nextUrl: "+ nextUrl); - } - catch (DataMissingException e) - { - logger.debug("failure getting nextUrl: "+ e); - return (mapping.findForward(LEARNING_STARTER)); - } - catch (ToolException e) - { - logger.debug("failure getting nextUrl: "+ e); - return (mapping.findForward(LEARNING_STARTER)); - } - catch (Exception e) - { - logger.debug("unknown exception getting nextUrl: "+ e); - return (mapping.findForward(LEARNING_STARTER)); - } - - logger.debug("success getting nextUrl: "+ nextUrl); - - McQueUsr mcQueUsr=mcService.getMcUserBySession(new Long(userID), mcSession.getUid()); - logger.debug("mcQueUsr:" + mcQueUsr); - - mcQueUsr.setResponseFinalised(true); - mcService.updateMcQueUsr(mcQueUsr); - logger.debug("response finalised for user:" + mcQueUsr); - - mcQueUsr.setViewSummaryRequested(true); - mcService.updateMcQueUsr(mcQueUsr); - logger.debug("view summary requested by mcQueUsr: " + mcQueUsr); - - - McUsrAttempt mcUsrAttempt = mcService.getAttemptWithLastAttemptOrderForUserInSession(mcQueUsr.getUid(), mcSession.getUid()); - logger.debug("mcUsrAttempt with highest attempt order: " + mcUsrAttempt); - String highestAttemptOrder=""; - - if (mcUsrAttempt != null) - { - highestAttemptOrder=mcUsrAttempt.getAttemptOrder().toString(); - logger.debug("highestAttemptOrder: " + highestAttemptOrder); - List userAttempts=mcService.getAttemptsForUserOnHighestAttemptOrderInSession(mcQueUsr.getUid(), mcSession.getUid(), new Integer(highestAttemptOrder)); - logger.debug("userAttempts:" + userAttempts); - - Iterator itAttempts=userAttempts.iterator(); - while (itAttempts.hasNext()) - { - mcUsrAttempt=(McUsrAttempt)itAttempts.next(); - logger.debug("mcUsrAttempt: " + mcUsrAttempt); - mcUsrAttempt.setFinished(true); - mcService.updateMcUsrAttempt(mcUsrAttempt); - } - logger.debug("updated user records to finished"); - } - - - logger.debug("redirecting to the nextUrl: "+ nextUrl); - response.sendRedirect(nextUrl); - - return null; + setContentInUse(request, toolContentId, mcService); + return endLearning(mapping, form, request, response); } return (mapping.findForward(LOAD_LEARNER)); } + + public ActionForward endLearning(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException + { + logger.debug("dispatching endLearning "); + McLearningForm mcLearningForm = (McLearningForm) form; + IMcService mcService = McServiceProxy.getMcService(getServlet().getServletContext()); + + String toolSessionID=request.getParameter(AttributeNames.PARAM_TOOL_SESSION_ID); + logger.debug("toolSessionID: " + toolSessionID); + mcLearningForm.setToolSessionID(toolSessionID); + + McSession mcSession=mcService.retrieveMcSession(new Long(toolSessionID)); + logger.debug("retrieving mcSession: " + mcSession); + + String toolContentId=mcSession.getMcContent().getMcContentId().toString(); + logger.debug("toolContentId: " + toolContentId); + mcLearningForm.setToolContentID(toolContentId); + + logger.debug("mcLearningForm nextQuestionSelected : " + mcLearningForm.getNextQuestionSelected()); + + LearningUtil.saveFormRequestData(request, mcLearningForm, false); + logger.debug("requested learner finished, the learner should be directed to next activity."); + + logger.debug("toolSessionID: " + toolSessionID); + + String userID = ""; + HttpSession ss = SessionManager.getSession(); + logger.debug("ss: " + ss); + + if (ss != null) + { + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + if ((user != null) && (user.getUserID() != null)) + { + userID = user.getUserID().toString(); + logger.debug("retrieved userId: " + userID); + } + } + + logger.debug("attempting to leave/complete session with toolSessionId:" + toolSessionID + " and userID:"+userID); + + McUtils.cleanUpSessionAbsolute(request); + + String nextUrl=null; + try + { + nextUrl=mcService.leaveToolSession(new Long(toolSessionID), new Long(userID)); + logger.debug("nextUrl: "+ nextUrl); + } + catch (DataMissingException e) + { + logger.debug("failure getting nextUrl: "+ e); + return (mapping.findForward(LEARNING_STARTER)); + } + catch (ToolException e) + { + logger.debug("failure getting nextUrl: "+ e); + return (mapping.findForward(LEARNING_STARTER)); + } + catch (Exception e) + { + logger.debug("unknown exception getting nextUrl: "+ e); + return (mapping.findForward(LEARNING_STARTER)); + } + + logger.debug("success getting nextUrl: "+ nextUrl); + + McQueUsr mcQueUsr=mcService.getMcUserBySession(new Long(userID), mcSession.getUid()); + logger.debug("mcQueUsr:" + mcQueUsr); + + + + /* it is possible that mcQueUsr can be null if the content is set as runoffline and reflection is on*/ + if (mcQueUsr == null) + { + logger.debug("attempt creating user record since it must exist for the runOffline + reflection screens"); + + UserDTO toolUser = (UserDTO) ss.getAttribute(AttributeNames.USER); + logger.debug("retrieving toolUser: " + toolUser); + logger.debug("retrieving toolUser userId: " + toolUser.getUserID()); + logger.debug("retrieving toolUser username: " + toolUser.getLogin()); + + String userName=toolUser.getLogin(); + String fullName= toolUser.getFirstName() + " " + toolUser.getLastName(); + logger.debug("retrieving toolUser fullname: " + fullName); + + Long userId=new Long(toolUser.getUserID().longValue()); + logger.debug("userId: " + userId); + logger.debug("retrieving toolUser fullname: " + fullName); + + mcQueUsr= new McQueUsr(userId, + userName, + fullName, + mcSession, + new TreeSet()); + mcService.createMcQueUsr(mcQueUsr); + logger.debug("createMcQueUsr - mcQueUsr: " + mcQueUsr); + + logger.debug("session uid: " + mcSession.getUid()); + logger.debug("mcQueUsr: " + mcQueUsr); + mcService.createMcQueUsr(mcQueUsr); + logger.debug("created mcQueUsr in the db: " + mcQueUsr); + } + + + + mcQueUsr.setResponseFinalised(true); + mcService.updateMcQueUsr(mcQueUsr); + logger.debug("response finalised for user:" + mcQueUsr); + + mcQueUsr.setViewSummaryRequested(true); + mcService.updateMcQueUsr(mcQueUsr); + logger.debug("view summary requested by mcQueUsr: " + mcQueUsr); + + + McUsrAttempt mcUsrAttempt = mcService.getAttemptWithLastAttemptOrderForUserInSession(mcQueUsr.getUid(), mcSession.getUid()); + logger.debug("mcUsrAttempt with highest attempt order: " + mcUsrAttempt); + String highestAttemptOrder=""; + + if (mcUsrAttempt != null) + { + highestAttemptOrder=mcUsrAttempt.getAttemptOrder().toString(); + logger.debug("highestAttemptOrder: " + highestAttemptOrder); + List userAttempts=mcService.getAttemptsForUserOnHighestAttemptOrderInSession(mcQueUsr.getUid(), mcSession.getUid(), new Integer(highestAttemptOrder)); + logger.debug("userAttempts:" + userAttempts); + + Iterator itAttempts=userAttempts.iterator(); + while (itAttempts.hasNext()) + { + mcUsrAttempt=(McUsrAttempt)itAttempts.next(); + logger.debug("mcUsrAttempt: " + mcUsrAttempt); + mcUsrAttempt.setFinished(true); + mcService.updateMcUsrAttempt(mcUsrAttempt); + } + logger.debug("updated user records to finished"); + } + + + logger.debug("redirecting to the nextUrl: "+ nextUrl); + response.sendRedirect(nextUrl); + + return null; + } + + + protected Set parseLearnerInput(List learnerInput, McContent mcContent, IMcService mcService) { logger.debug("learnerInput: " + learnerInput); @@ -814,6 +895,12 @@ logger.debug("user over passmark:" + mcGeneralLearnerFlowDTO.getUserOverPassMark()); logger.debug("is passmark applicable:" + mcGeneralLearnerFlowDTO.getPassMarkApplicable()); + + logger.debug("is tool reflective: " + mcContent.isReflect()); + mcGeneralLearnerFlowDTO.setReflection(new Boolean(mcContent.isReflect()).toString()); + logger.debug("reflection subject: " + mcContent.getReflectionSubject()); + mcGeneralLearnerFlowDTO.setReflectionSubject(mcContent.getReflectionSubject()); + request.setAttribute(MC_GENERAL_LEARNER_FLOW_DTO, mcGeneralLearnerFlowDTO); logger.debug("MC_GENERAL_LEARNER_FLOW_DTO: " + request.getAttribute(MC_GENERAL_LEARNER_FLOW_DTO)); @@ -927,6 +1014,11 @@ logger.debug("totalQuestionCount has been reached :" + totalQuestionCount); mcGeneralLearnerFlowDTO.setTotalCountReached(new Boolean(true).toString()); } + + logger.debug("is tool reflective: " + mcContent.isReflect()); + mcGeneralLearnerFlowDTO.setReflection(new Boolean(mcContent.isReflect()).toString()); + logger.debug("reflection subject: " + mcContent.getReflectionSubject()); + mcGeneralLearnerFlowDTO.setReflectionSubject(mcContent.getReflectionSubject()); mcGeneralLearnerFlowDTO.setQuestionIndex(new Integer(questionIndex).toString()); request.setAttribute(MC_GENERAL_LEARNER_FLOW_DTO, mcGeneralLearnerFlowDTO); @@ -1010,7 +1102,14 @@ int learnerBestMark=LearningUtil.getHighestMark(request, queUsrId, mcService); logger.debug("learnerBestMark: " + learnerBestMark); mcGeneralLearnerFlowDTO.setLearnerBestMark(new Integer(learnerBestMark).toString()); + + logger.debug("is tool reflective: " + mcContent.isReflect()); + mcGeneralLearnerFlowDTO.setReflection(new Boolean(mcContent.isReflect()).toString()); + logger.debug("reflection subject: " + mcContent.getReflectionSubject()); + mcGeneralLearnerFlowDTO.setReflectionSubject(mcContent.getReflectionSubject()); + + request.setAttribute(MC_GENERAL_LEARNER_FLOW_DTO, mcGeneralLearnerFlowDTO); logger.debug("MC_GENERAL_LEARNER_FLOW_DTO: " + request.getAttribute(MC_GENERAL_LEARNER_FLOW_DTO)); @@ -1227,7 +1326,39 @@ mcGeneralLearnerFlowDTO.setMapQueAttempts(mapQueAttempts); mcGeneralLearnerFlowDTO.setMapQueCorrectAttempts(mapQueCorrectAttempts); mcGeneralLearnerFlowDTO.setMapQueIncorrectAttempts(mapQueIncorrectAttempts); + + logger.debug("is tool reflective: " + mcContent.isReflect()); + mcGeneralLearnerFlowDTO.setReflection(new Boolean(mcContent.isReflect()).toString()); + logger.debug("reflection subject: " + mcContent.getReflectionSubject()); + mcGeneralLearnerFlowDTO.setReflectionSubject(mcContent.getReflectionSubject()); + + + String userID = ""; + HttpSession ss = SessionManager.getSession(); + logger.debug("ss: " + ss); + + if (ss != null) + { + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + if ((user != null) && (user.getUserID() != null)) + { + userID = user.getUserID().toString(); + logger.debug("retrieved userId: " + userID); + } + } + logger.debug("attempt getting notebookEntry: "); + NotebookEntry notebookEntry = mcService.getEntry(new Long(toolSessionID), + CoreNotebookConstants.NOTEBOOK_TOOL, + MY_SIGNATURE, new Integer(userID)); + + logger.debug("notebookEntry: " + notebookEntry); + + if (notebookEntry != null) { + mcGeneralLearnerFlowDTO.setNotebookEntry(notebookEntry.getEntry()); + } + + String reportViewOnly=mcLearningForm.getReportViewOnly(); logger.debug("reportViewOnly: " + reportViewOnly); @@ -1305,6 +1436,7 @@ mcQueUsr.setViewSummaryRequested(true); mcService.updateMcQueUsr(mcQueUsr); logger.debug("view summary requested by mcQueUsr: " + mcQueUsr); + String toolContentId=mcSession.getMcContent().getMcContentId().toString(); logger.debug("toolContentId: " + toolContentId); @@ -1314,6 +1446,10 @@ McGeneralLearnerFlowDTO mcGeneralLearnerFlowDTO=LearningUtil.buildMcGeneralLearnerFlowDTO(mcContent); + mcGeneralLearnerFlowDTO.setReflection(new Boolean(mcContent.isReflect()).toString()); + mcGeneralLearnerFlowDTO.setNotebookEntriesVisible(new Boolean(false).toString()); + + int countSessionComplete=0; Iterator sessionsIterator=mcContent.getMcSessions().iterator(); while (sessionsIterator.hasNext()) @@ -1345,7 +1481,12 @@ mcGeneralLearnerFlowDTO.setTopMark(new Integer(topMark).toString()); mcGeneralLearnerFlowDTO.setLowestMark(new Integer(lowestMark).toString()); mcGeneralLearnerFlowDTO.setAverageMark(new Integer(averageMark).toString()); - + + logger.debug("is tool reflective: " + mcContent.isReflect()); + mcGeneralLearnerFlowDTO.setReflection(new Boolean(mcContent.isReflect()).toString()); + logger.debug("reflection subject: " + mcContent.getReflectionSubject()); + mcGeneralLearnerFlowDTO.setReflectionSubject(mcContent.getReflectionSubject()); + request.setAttribute(MC_GENERAL_LEARNER_FLOW_DTO, mcGeneralLearnerFlowDTO); logger.debug("MC_GENERAL_LEARNER_FLOW_DTO: " + request.getAttribute(MC_GENERAL_LEARNER_FLOW_DTO)); @@ -1410,6 +1551,12 @@ McGeneralLearnerFlowDTO mcGeneralLearnerFlowDTO=LearningUtil.buildMcGeneralLearnerFlowDTO(mcContent); mcGeneralLearnerFlowDTO.setQuestionIndex(new Integer(1).toString()); + + logger.debug("is tool reflective: " + mcContent.isReflect()); + mcGeneralLearnerFlowDTO.setReflection(new Boolean(mcContent.isReflect()).toString()); + logger.debug("reflection subject: " + mcContent.getReflectionSubject()); + mcGeneralLearnerFlowDTO.setReflectionSubject(mcContent.getReflectionSubject()); + request.setAttribute(MC_GENERAL_LEARNER_FLOW_DTO, mcGeneralLearnerFlowDTO); logger.debug("MC_GENERAL_LEARNER_FLOW_DTO: " + request.getAttribute(MC_GENERAL_LEARNER_FLOW_DTO)); @@ -1429,6 +1576,108 @@ logger.debug("add " + message +" to ActionMessages:"); saveErrors(request,errors); } + + public ActionForward submitReflection(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException, ToolException + { + logger.debug("dispatching submitReflection..."); + McLearningForm mcLearningForm = (McLearningForm) form; + + IMcService mcService = McServiceProxy.getMcService(getServlet().getServletContext()); + logger.debug("mcService: " + mcService); + + String toolSessionID=request.getParameter(AttributeNames.PARAM_TOOL_SESSION_ID); + logger.debug("toolSessionID: " + toolSessionID); + mcLearningForm.setToolSessionID(toolSessionID); + + String userID=request.getParameter("userID"); + logger.debug("userID: " + userID); + mcLearningForm.setUserID(userID); + + String reflectionEntry=request.getParameter(ENTRY_TEXT); + logger.debug("reflectionEntry: " + reflectionEntry); + + McSession mcSession=mcService.retrieveMcSession(new Long(toolSessionID)); + logger.debug("retrieving mcSession: " + mcSession); + + McQueUsr mcQueUsr=mcService.getMcUserBySession(new Long(userID), mcSession.getUid()); + logger.debug("McQueUsr:" + mcQueUsr); + + /* it is possible that mcQueUsr can be null if the content is set as runoffline and reflection is on*/ + if (mcQueUsr == null) + { + logger.debug("attempt creating user record since it must exist for the runOffline + reflection screens"); + HttpSession ss = SessionManager.getSession(); + + UserDTO toolUser = (UserDTO) ss.getAttribute(AttributeNames.USER); + logger.debug("retrieving toolUser: " + toolUser); + logger.debug("retrieving toolUser userId: " + toolUser.getUserID()); + logger.debug("retrieving toolUser username: " + toolUser.getLogin()); + + String userName=toolUser.getLogin(); + String fullName= toolUser.getFirstName() + " " + toolUser.getLastName(); + logger.debug("retrieving toolUser fullname: " + fullName); + + Long userId=new Long(toolUser.getUserID().longValue()); + logger.debug("userId: " + userId); + logger.debug("retrieving toolUser fullname: " + fullName); + + mcQueUsr= new McQueUsr(userId, + userName, + fullName, + mcSession, + new TreeSet()); + mcService.createMcQueUsr(mcQueUsr); + logger.debug("createMcQueUsr - mcQueUsr: " + mcQueUsr); + + logger.debug("session uid: " + mcSession.getUid()); + logger.debug("mcQueUsr: " + mcQueUsr); + mcService.createMcQueUsr(mcQueUsr); + logger.debug("created mcQueUsr in the db: " + mcQueUsr); + } + + logger.debug("McQueUsr:" + mcQueUsr); + logger.debug("toolSessionID:" + toolSessionID); + logger.debug("CoreNotebookConstants.NOTEBOOK_TOOL:" + CoreNotebookConstants.NOTEBOOK_TOOL); + logger.debug("MY_SIGNATURE:" + MY_SIGNATURE); + logger.debug("userID:" + userID); + logger.debug("reflectionEntry:" + reflectionEntry); + + mcService.createNotebookEntry(new Long(toolSessionID), CoreNotebookConstants.NOTEBOOK_TOOL, + MY_SIGNATURE, new Integer(userID), reflectionEntry); + + return endLearning(mapping, form, request, response); + } + + public ActionForward forwardtoReflection(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException, ToolException + { + logger.debug("dispatching forwardtoReflection..."); + McLearningForm mcLearningForm = (McLearningForm) form; + IMcService mcService = McServiceProxy.getMcService(getServlet().getServletContext()); + logger.debug("mcService: " + mcService); + + String toolSessionID=request.getParameter(AttributeNames.PARAM_TOOL_SESSION_ID); + logger.debug("toolSessionID: " + toolSessionID); + + McSession mcSession=mcService.retrieveMcSession(new Long(toolSessionID)); + logger.debug("retrieving mcSession: " + mcSession); + + McContent mcContent=mcSession.getMcContent(); + logger.debug("using mcContent: " + mcContent); + + + McGeneralLearnerFlowDTO mcGeneralLearnerFlowDTO= new McGeneralLearnerFlowDTO(); + mcGeneralLearnerFlowDTO.setActivityTitle(mcContent.getTitle()); + mcGeneralLearnerFlowDTO.setReflectionSubject(mcContent.getReflectionSubject()); + + request.setAttribute(MC_GENERAL_LEARNER_FLOW_DTO, mcGeneralLearnerFlowDTO); + logger.debug("final mcGeneralLearnerFlowDTO: " + mcGeneralLearnerFlowDTO); + + logger.debug("fwd'ing to: " + NOTEBOOK); + return (mapping.findForward(NOTEBOOK)); + } + } \ No newline at end of file Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningForm.java =================================================================== diff -u -r51cec6d26c1b76f99d5c1cdcff04da5b48731de5 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningForm.java (.../McLearningForm.java) (revision 51cec6d26c1b76f99d5c1cdcff04da5b48731de5) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningForm.java (.../McLearningForm.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -45,8 +45,9 @@ protected String redoQuestionsOk; protected String donePreview; protected String doneLearnerProgress; + protected String submitReflection; + protected String forwardtoReflection; - protected String[] checkedCa; protected String[] sequentialCheckedCa; @@ -66,6 +67,8 @@ protected String reportViewOnly; protected String questionListingMode; + + protected String entryText; protected String questionIndex; protected String nextQuestionSelected; @@ -449,4 +452,42 @@ public void setUserID(String userID) { this.userID = userID; } + + /** + * @return Returns the submitReflection. + */ + public String getSubmitReflection() { + return submitReflection; + } + /** + * @param submitReflection The submitReflection to set. + */ + public void setSubmitReflection(String submitReflection) { + this.submitReflection = submitReflection; + } + + /** + * @return Returns the forwardtoReflection. + */ + public String getForwardtoReflection() { + return forwardtoReflection; + } + /** + * @param forwardtoReflection The forwardtoReflection to set. + */ + public void setForwardtoReflection(String forwardtoReflection) { + this.forwardtoReflection = forwardtoReflection; + } + /** + * @return Returns the entryText. + */ + public String getEntryText() { + return entryText; + } + /** + * @param entryText The entryText to set. + */ + public void setEntryText(String entryText) { + this.entryText = entryText; + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java =================================================================== diff -u -r3a998c9b8c2ba60c293759d9bd20c2ca71edb68a -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java (.../McLearningStarterAction.java) (revision 3a998c9b8c2ba60c293759d9bd20c2ca71edb68a) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java (.../McLearningStarterAction.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -41,6 +41,8 @@ import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.mc.McAppConstants; import org.lamsfoundation.lams.tool.mc.McApplicationException; import org.lamsfoundation.lams.tool.mc.McComparator; @@ -189,6 +191,7 @@ mcLearningForm.setMcService(mcService); mcLearningForm.setPassMarkApplicable(new Boolean(false).toString()); mcLearningForm.setUserOverPassMark(new Boolean(false).toString()); + ActionForward validateParameters=validateParameters(request, mcLearningForm, mapping); logger.debug("validateParameters: " + validateParameters); @@ -269,7 +272,7 @@ request.setAttribute(MC_LEARNER_STARTER_DTO, mcLearnerStarterDTO); mcLearningForm.setToolContentID(mcContent.getMcContentId().toString()); - commonContentSetup(request, mcContent, mcService); + commonContentSetup(request, mcContent, mcService,mcLearningForm, toolSessionID); /* Is the request for a preview by the author? @@ -485,7 +488,8 @@ * @param request * @param mcContent */ - protected void commonContentSetup(HttpServletRequest request, McContent mcContent, IMcService mcService) + protected void commonContentSetup(HttpServletRequest request, McContent mcContent, IMcService mcService, + McLearningForm mcLearningForm, String toolSessionID) { Map mapQuestionsContent= new TreeMap(new McComparator()); @@ -497,7 +501,29 @@ McGeneralLearnerFlowDTO mcGeneralLearnerFlowDTO=LearningUtil.buildMcGeneralLearnerFlowDTO(mcContent); mcGeneralLearnerFlowDTO.setTotalCountReached(new Boolean(false).toString()); mcGeneralLearnerFlowDTO.setQuestionIndex(new Integer(1).toString()); + + logger.debug("is tool reflective: " + mcContent.isReflect()); + mcGeneralLearnerFlowDTO.setReflection(new Boolean(mcContent.isReflect()).toString()); + logger.debug("reflection subject: " + mcContent.getReflectionSubject()); + mcGeneralLearnerFlowDTO.setReflectionSubject(mcContent.getReflectionSubject()); + + + String userID=mcLearningForm.getUserID(); + logger.debug("userID: " + userID); + + + logger.debug("attempt getting notebookEntry: "); + NotebookEntry notebookEntry = mcService.getEntry(new Long(toolSessionID), + CoreNotebookConstants.NOTEBOOK_TOOL, + MY_SIGNATURE, new Integer(userID)); + + logger.debug("notebookEntry: " + notebookEntry); + + if (notebookEntry != null) { + mcGeneralLearnerFlowDTO.setNotebookEntry(notebookEntry.getEntry()); + } + request.setAttribute(MC_GENERAL_LEARNER_FLOW_DTO, mcGeneralLearnerFlowDTO); logger.debug("MC_GENERAL_LEARNER_FLOW_DTO: " + request.getAttribute(MC_GENERAL_LEARNER_FLOW_DTO)); } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java =================================================================== diff -u -r3a998c9b8c2ba60c293759d9bd20c2ca71edb68a -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision 3a998c9b8c2ba60c293759d9bd20c2ca71edb68a) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -537,6 +537,8 @@ request.getSession().setAttribute(RICHTEXT_TITLE,mcContent.getTitle()); request.getSession().setAttribute(RICHTEXT_INSTRUCTIONS,mcContent.getInstructions()); + mcAuthoringForm.setReflectionSubject(mcContent.getReflectionSubject()); + logger.debug("passMark:" +mcContent.getPassMark()); if (mcContent.getPassMark() == null) mcContent.setPassMark(new Integer(0)); @@ -669,8 +671,9 @@ { request.getSession().setAttribute(RICHTEXT_INSTRUCTIONS,mcContent.getInstructions()); } + + mcAuthoringForm.setReflectionSubject(mcContent.getReflectionSubject()); - request.getSession().setAttribute(DEFINE_LATER, new Boolean(mcContent.isDefineLater())); request.getSession().setAttribute(RICHTEXT_OFFLINEINSTRUCTIONS,mcContent.getOfflineInstructions()); request.getSession().setAttribute(RICHTEXT_ONLINEINSTRUCTIONS,mcContent.getOnlineInstructions()); @@ -700,6 +703,7 @@ mcAuthoringForm.setRetries(OFF); mcAuthoringForm.setShowFeedback(OFF); mcAuthoringForm.setSln(OFF); + mcAuthoringForm.setReflect(OFF); /* collect options for the default question content into a Map*/ McQueContent mcQueContent=mcService.getToolDefaultQuestionContent(mcContent.getUid().longValue()); Index: lams_tool_lamc/web/WEB-INF/struts-config.xml =================================================================== diff -u -r1d705f95c7d374192c678e101772e93f0442dae9 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 1d705f95c7d374192c678e101772e93f0442dae9) +++ lams_tool_lamc/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -198,6 +198,13 @@ path="/McErrorBox.jsp" redirect="false" /> + + + @@ -264,6 +271,13 @@ path="/learning/Preview.jsp" redirect="false" /> + + + Index: lams_tool_lamc/web/authoring/AdvancedContent.jsp =================================================================== diff -u -r3a998c9b8c2ba60c293759d9bd20c2ca71edb68a -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/web/authoring/AdvancedContent.jsp (.../AdvancedContent.jsp) (revision 3a998c9b8c2ba60c293759d9bd20c2ca71edb68a) +++ lams_tool_lamc/web/authoring/AdvancedContent.jsp (.../AdvancedContent.jsp) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -99,7 +99,7 @@   - + @@ -110,12 +110,6 @@ - - - - - - Index: lams_tool_lamc/web/learning/IndividualLearnerResults.jsp =================================================================== diff -u -r51cec6d26c1b76f99d5c1cdcff04da5b48731de5 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/web/learning/IndividualLearnerResults.jsp (.../IndividualLearnerResults.jsp) (revision 51cec6d26c1b76f99d5c1cdcff04da5b48731de5) +++ lams_tool_lamc/web/learning/IndividualLearnerResults.jsp (.../IndividualLearnerResults.jsp) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -167,14 +167,30 @@ - - - + + + + + + + + + + + - - - + + + + + + + + + + + @@ -191,9 +207,17 @@
- - - + + + + + + + + + + +
Index: lams_tool_lamc/web/learning/Notebook.jsp =================================================================== diff -u --- lams_tool_lamc/web/learning/Notebook.jsp (revision 0) +++ lams_tool_lamc/web/learning/Notebook.jsp (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -0,0 +1,98 @@ +<%-- +Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) +License Information: http://lamsfoundation.org/licensing/lams/2.0/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA + + http://www.gnu.org/licenses/gpl.txt +--%> + + + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + + <bean:message key="activity.title" /> + + + +
+ +

+ +

+ + +
+ + + + + + + +
+ + + + + + + + + + + + + +
+ +
+ +
+ + + +
+ + +
+
+ + + + +
+ +
+ + + + + + + + Index: lams_tool_lamc/web/learning/ResultsSummary.jsp =================================================================== diff -u -r51cec6d26c1b76f99d5c1cdcff04da5b48731de5 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/web/learning/ResultsSummary.jsp (.../ResultsSummary.jsp) (revision 51cec6d26c1b76f99d5c1cdcff04da5b48731de5) +++ lams_tool_lamc/web/learning/ResultsSummary.jsp (.../ResultsSummary.jsp) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -134,9 +134,17 @@
- + + - + + + + + + + +
Index: lams_tool_lamc/web/learning/RunOffline.jsp =================================================================== diff -u -r3a998c9b8c2ba60c293759d9bd20c2ca71edb68a -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/web/learning/RunOffline.jsp (.../RunOffline.jsp) (revision 3a998c9b8c2ba60c293759d9bd20c2ca71edb68a) +++ lams_tool_lamc/web/learning/RunOffline.jsp (.../RunOffline.jsp) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -45,10 +45,40 @@
-
-       -
+ + + + + + +
+       + + + + + +
+
+ + + + + + + + + + + + + +
+
+
+
+ Index: lams_tool_lamc/web/learning/ViewAnswers.jsp =================================================================== diff -u -r51cec6d26c1b76f99d5c1cdcff04da5b48731de5 -r00df9ca2ddfb10b63d2260f8fa940108e13d72f2 --- lams_tool_lamc/web/learning/ViewAnswers.jsp (.../ViewAnswers.jsp) (revision 51cec6d26c1b76f99d5c1cdcff04da5b48731de5) +++ lams_tool_lamc/web/learning/ViewAnswers.jsp (.../ViewAnswers.jsp) (revision 00df9ca2ddfb10b63d2260f8fa940108e13d72f2) @@ -194,17 +194,47 @@
- - - + + + + + + + + + + + +
- + + + + + + + + + + + + +
+ +
+ +
+ + + + +