Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java =================================================================== diff -u -r0e25eab07d7153c61f50deb6332abc0d4ed3ec69 -r39bb316636d1bf69efe9e1150726340b68c9cab9 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java (.../QaLearningAction.java) (revision 0e25eab07d7153c61f50deb6332abc0d4ed3ec69) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningAction.java (.../QaLearningAction.java) (revision 39bb316636d1bf69efe9e1150726340b68c9cab9) @@ -87,6 +87,8 @@ import java.io.IOException; import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.TreeMap; @@ -104,6 +106,7 @@ import org.lamsfoundation.lams.tool.qa.QaAppConstants; import org.lamsfoundation.lams.tool.qa.QaComparator; import org.lamsfoundation.lams.tool.qa.QaContent; +import org.lamsfoundation.lams.tool.qa.QaQueContent; import org.lamsfoundation.lams.tool.qa.QaSession; import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.service.QaServiceProxy; @@ -224,7 +227,147 @@ return (mapping.findForward(INDIVIDUAL_LEARNER_RESULTS)); } - + + public ActionForward redoQuestions(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException + { + logger.debug("dispatching redoQuestions..."); + QaLearningForm qaLearningForm = (QaLearningForm) form; + IQaService qaService = QaServiceProxy.getQaService(getServlet().getServletContext()); + logger.debug("qaService: " + qaService); + + String toolSessionID=request.getParameter(AttributeNames.PARAM_TOOL_SESSION_ID); + logger.debug("toolSessionID: " + toolSessionID); + qaLearningForm.setToolSessionID(toolSessionID); + + QaSession qaSession=qaService.retrieveQaSessionOrNullById(new Long(toolSessionID).longValue()); + logger.debug("retrieving qaSession: " + qaSession); + + String toolContentID=qaSession.getQaContent().getQaContentId().toString(); + logger.debug("toolContentID: " + toolContentID); + + QaContent qaContent=qaSession.getQaContent(); + logger.debug("using qaContent: " + qaContent); + + GeneralLearnerFlowDTO generalLearnerFlowDTO= LearningUtil.buildGeneralLearnerFlowDTO(qaContent); + logger.debug("generalLearnerFlowDTO: " + generalLearnerFlowDTO); + + LearningUtil.saveFormRequestData(request, qaLearningForm); + + Map mapQuestions= new TreeMap(new QaComparator()); + Map mapAnswers= new TreeMap(new QaComparator()); + + generalLearnerFlowDTO.setCurrentQuestionIndex(new Integer(1)); + qaLearningForm.setCurrentQuestionIndex(new Integer(1).toString()); + + //SessionMap sessionMap = new SessionMap(); + + String httpSessionID=qaLearningForm.getHttpSessionID(); + logger.debug("httpSessionID: " + httpSessionID); + + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(httpSessionID); + logger.debug("sessionMap: " + sessionMap); + + Map mapSequentialAnswers= new HashMap(); + sessionMap.put(MAP_SEQUENTIAL_ANSWERS_KEY, mapSequentialAnswers); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + qaLearningForm.setHttpSessionID(sessionMap.getSessionID()); + generalLearnerFlowDTO.setHttpSessionID(sessionMap.getSessionID()); + + generalLearnerFlowDTO.setActivityTitle(qaContent.getTitle()); + generalLearnerFlowDTO.setActivityInstructions(qaContent.getInstructions()); + + + logger.debug("using TOOL_CONTENT_ID: " + qaContent.getQaContentId()); + generalLearnerFlowDTO.setToolContentID(qaContent.getQaContentId().toString()); + + + /* + * The content we retrieved above must have been created before in Authoring time. + * And the passed tool session id refers to it. + */ + + + logger.debug("REPORT_TITLE_LEARNER: " + qaContent.getReportTitle()); + generalLearnerFlowDTO.setReportTitleLearner(qaContent.getReportTitle()); + + generalLearnerFlowDTO.setEndLearningMessage(qaContent.getEndLearningMessage()); + logger.debug("END_LEARNING_MESSAGE: " + qaContent.getEndLearningMessage()); + /* + * Is the tool activity been checked as Run Offline in the property inspector? + */ + logger.debug("IS_TOOL_ACTIVITY_OFFLINE: " + qaContent.isRunOffline()); + generalLearnerFlowDTO.setActivityOffline(new Boolean(qaContent.isRunOffline()).toString()); + + logger.debug("IS_USERNAME_VISIBLE: " + qaContent.isUsernameVisible()); + generalLearnerFlowDTO.setUserNameVisible(new Boolean(qaContent.isUsernameVisible()).toString()); + + + /* + * Learning mode requires this setting for jsp to generate the user's report + */ + logger.debug("IS_QUESTIONS_SEQUENCED: " + qaContent.isQuestionsSequenced()); + String feedBackType=""; + if (qaContent.isQuestionsSequenced()) + { + generalLearnerFlowDTO.setQuestionListingMode(QUESTION_LISTING_MODE_SEQUENTIAL); + feedBackType=FEEDBACK_TYPE_SEQUENTIAL; + } + else + { + generalLearnerFlowDTO.setQuestionListingMode(QUESTION_LISTING_MODE_COMBINED); + feedBackType=FEEDBACK_TYPE_COMBINED; + } + logger.debug("QUESTION_LISTING_MODE: " + generalLearnerFlowDTO.getQuestionListingMode()); + + + /* + * fetch question content from content + */ + Iterator contentIterator=qaContent.getQaQueContents().iterator(); + while (contentIterator.hasNext()) + { + QaQueContent qaQueContent=(QaQueContent)contentIterator.next(); + if (qaQueContent != null) + { + int displayOrder=qaQueContent.getDisplayOrder(); + if (displayOrder != 0) + { + /* + * add the question to the questions Map in the displayOrder + */ + mapQuestions.put(new Integer(displayOrder).toString(),qaQueContent.getQuestion()); + } + } + } + + + mapAnswers=(Map)sessionMap.get(MAP_ALL_RESULTS_KEY); + logger.debug("mapAnswers: " + mapAnswers); + + qaLearningForm.setHttpSessionID(sessionMap.getSessionID()); + generalLearnerFlowDTO.setHttpSessionID(sessionMap.getSessionID()); + + logger.debug("mapQuestions: " + mapQuestions); + generalLearnerFlowDTO.setMapAnswers(mapAnswers); + generalLearnerFlowDTO.setMapQuestionContentLearner(mapQuestions); + generalLearnerFlowDTO.setMapQuestions(mapQuestions); + logger.debug("mapQuestions has : " + mapQuestions.size() + " entries."); + + generalLearnerFlowDTO.setTotalQuestionCount(new Integer(mapQuestions.size())); + qaLearningForm.setTotalQuestionCount(new Integer(mapQuestions.size()).toString()); + + request.setAttribute(GENERAL_LEARNER_FLOW_DTO, generalLearnerFlowDTO); + logger.debug("GENERAL_LEARNER_FLOW_DTO: " + request.getAttribute(GENERAL_LEARNER_FLOW_DTO)); + logger.debug("forwarding to: " + LOAD_LEARNER); + return (mapping.findForward(LOAD_LEARNER)); + } + + + /** * returns Learner Report for a session * ActionForward viewAllResults(ActionMapping mapping, Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningForm.java =================================================================== diff -u -r97ebe40dad2731256147d74073b541245be53871 -r39bb316636d1bf69efe9e1150726340b68c9cab9 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningForm.java (.../QaLearningForm.java) (revision 97ebe40dad2731256147d74073b541245be53871) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningForm.java (.../QaLearningForm.java) (revision 39bb316636d1bf69efe9e1150726340b68c9cab9) @@ -47,6 +47,7 @@ protected String questionIndex; protected String userID; protected String viewAllResults; + protected String redoQuestions; protected String responseId; protected String requestLearningReport; @@ -294,4 +295,16 @@ this.requestLearningReportViewOnly = requestLearningReportViewOnly; } + /** + * @return Returns the redoQuestions. + */ + public String getRedoQuestions() { + return redoQuestions; + } + /** + * @param redoQuestions The redoQuestions to set. + */ + public void setRedoQuestions(String redoQuestions) { + this.redoQuestions = redoQuestions; + } } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningStarterAction.java =================================================================== diff -u -r6a91ff082be1d3e49395864f33cd128dc73dbd04 -r39bb316636d1bf69efe9e1150726340b68c9cab9 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningStarterAction.java (.../QaLearningStarterAction.java) (revision 6a91ff082be1d3e49395864f33cd128dc73dbd04) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaLearningStarterAction.java (.../QaLearningStarterAction.java) (revision 39bb316636d1bf69efe9e1150726340b68c9cab9) @@ -248,25 +248,6 @@ return (mapping.findForward(ERROR_LIST_LEARNER)); } - - /* - if (qaContent.getTitle() == null) - { - generalLearnerFlowDTO.setActivityTitle("Q&A Title"); - generalLearnerFlowDTO.setActivityInstructions("Q&A Instructions"); - } - else if (qaContent.getTitle().equals("")) - { - generalLearnerFlowDTO.setActivityTitle("Q&A Title"); - generalLearnerFlowDTO.setActivityInstructions("Q&A Instructions"); - } - else - { - generalLearnerFlowDTO.setActivityTitle(qaContent.getTitle()); - generalLearnerFlowDTO.setActivityInstructions(qaContent.getInstructions()); - } - */ - generalLearnerFlowDTO.setActivityTitle(qaContent.getTitle()); generalLearnerFlowDTO.setActivityInstructions(qaContent.getInstructions()); @@ -342,6 +323,17 @@ } } + mapAnswers=mapQuestions; + Iterator itMap = mapAnswers.entrySet().iterator(); + + while (itMap.hasNext()) + { + Map.Entry pairs = (Map.Entry)itMap.next(); + pairs.setValue(""); + } + logger.debug("mapAnswers : " + mapAnswers); + + generalLearnerFlowDTO.setMapAnswers(mapAnswers); generalLearnerFlowDTO.setMapQuestionContentLearner(mapQuestions); generalLearnerFlowDTO.setMapQuestions(mapQuestions); @@ -455,13 +447,31 @@ * the report should have only the current session's entries*/ generalLearnerFlowDTO.setRequestLearningReport(new Boolean(true).toString()); - generalLearnerFlowDTO.setRequestLearningReportViewOnly(new Boolean(true).toString()); + logger.debug("using generalLearnerFlowDTO: " + generalLearnerFlowDTO); qaMonitoringAction.refreshSummaryData(request, qaContent, qaService, isUserNamesVisible, true, currentToolSessionID.toString(), null, generalLearnerFlowDTO, false); logger.debug("final generalLearnerFlowDTO: " + generalLearnerFlowDTO); + + boolean isSessionCompleted=isSessionCompleted(currentToolSessionID.toString(), qaService); + logger.debug("isSessionCompleted: " + isSessionCompleted); + + if (isSessionCompleted) + { + logger.debug("since the session is completed present a screen which can not be edited"); + generalLearnerFlowDTO.setRequestLearningReportViewOnly(new Boolean(true).toString()); + } + else + { + generalLearnerFlowDTO.setRequestLearningReportViewOnly(new Boolean(false).toString()); + } + + request.setAttribute(GENERAL_LEARNER_FLOW_DTO, generalLearnerFlowDTO); + logger.debug("before fwd, GENERAL_LEARNER_FLOW_DTO: " + request.getAttribute(GENERAL_LEARNER_FLOW_DTO)); + + logger.debug("fwd'ing to." + INDIVIDUAL_LEARNER_REPORT); return (mapping.findForward(INDIVIDUAL_LEARNER_REPORT)); } @@ -562,6 +572,21 @@ } + boolean isSessionCompleted(String userSessionId, IQaService qaService) + { + logger.debug("userSessionId:" + userSessionId); + QaSession qaSession=qaService.retrieveQaSessionOrNullById(new Long(userSessionId).longValue()); + logger.debug("retrieving qaSession: " + qaSession); + logger.debug("voteSession status : " + qaSession.getSession_status()); + if ((qaSession.getSession_status() != null) && (qaSession.getSession_status().equals(COMPLETED))) + { + logger.debug("this session is COMPLETED voteSession status : " + userSessionId); + return true; + } + return false; + } + + /** * persists error messages to request scope * @param request Index: lams_tool_laqa/web/learning/CombinedAnswersContent.jsp =================================================================== diff -u -rcd53776f606b700e5cab337fc774b82e78e0d224 -r39bb316636d1bf69efe9e1150726340b68c9cab9 --- lams_tool_laqa/web/learning/CombinedAnswersContent.jsp (.../CombinedAnswersContent.jsp) (revision cd53776f606b700e5cab337fc774b82e78e0d224) +++ lams_tool_laqa/web/learning/CombinedAnswersContent.jsp (.../CombinedAnswersContent.jsp) (revision 39bb316636d1bf69efe9e1150726340b68c9cab9) @@ -34,30 +34,35 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +
: -
- -
- -
 
: +
+ +
+ +
 
Index: lams_tool_laqa/web/learning/IndividualLearnerResults.jsp =================================================================== diff -u -rf002c4c51c98d994e629cbe25e8e478589a23da0 -r39bb316636d1bf69efe9e1150726340b68c9cab9 --- lams_tool_laqa/web/learning/IndividualLearnerResults.jsp (.../IndividualLearnerResults.jsp) (revision f002c4c51c98d994e629cbe25e8e478589a23da0) +++ lams_tool_laqa/web/learning/IndividualLearnerResults.jsp (.../IndividualLearnerResults.jsp) (revision 39bb316636d1bf69efe9e1150726340b68c9cab9) @@ -69,13 +69,13 @@ - - + + + +
- +
+
+
@@ -113,13 +113,21 @@ - + +
- + - + onclick="submitMethod('redoQuestions');"> + + + + +
Index: lams_tool_laqa/web/learning/LearnerRep.jsp =================================================================== diff -u -rf002c4c51c98d994e629cbe25e8e478589a23da0 -r39bb316636d1bf69efe9e1150726340b68c9cab9 --- lams_tool_laqa/web/learning/LearnerRep.jsp (.../LearnerRep.jsp) (revision f002c4c51c98d994e629cbe25e8e478589a23da0) +++ lams_tool_laqa/web/learning/LearnerRep.jsp (.../LearnerRep.jsp) (revision 39bb316636d1bf69efe9e1150726340b68c9cab9) @@ -78,16 +78,12 @@
- +
- - - - @@ -161,15 +157,11 @@
- +
- - - - @@ -221,6 +213,24 @@
+ + + +
+
+ + + + +
+
+ + +