Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java =================================================================== diff -u -r61a2088821a0175b973f9d8354f7432f5fcdc566 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 61a2088821a0175b973f9d8354f7432f5fcdc566) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -121,6 +121,8 @@ public static final String MAP_CHECKBOX_STATES ="mapCheckBoxStates"; public static final String MAP_SELECTED_OPTIONS ="mapSelectedOptions"; public static final String MAP_FEEDBACK_INCORRECT ="mapFeedbackIncorrect"; + public static final String MAP_INCORRECT_FEEDBACK ="mapIncorrectFeedback"; + public static final String MAP_CORRECT_FEEDBACK ="mapCorrectFeedback"; public static final String MAP_FEEDBACK_CORRECT ="mapFeedbackCorrect"; @@ -140,6 +142,8 @@ public static final String ON ="ON"; public static final String OFF ="OFF"; public static final String RICHTEXT_FEEDBACK_CORRECT ="richTextFeedbackCorrect"; + public static final String RICHTEXT_INCORRECT_FEEDBACK ="richTextIncorrectFeedback"; + public static final String RICHTEXT_CORRECT_FEEDBACK ="richTextCorrectFeedback"; public static final String RICHTEXT_FEEDBACK_INCORRECT ="richTextFeedbackInCorrect"; public static final String RICHTEXT_OFFLINEINSTRUCTIONS ="richTextOfflineInstructions"; public static final String RICHTEXT_ONLINEINSTRUCTIONS ="richTextOnlineInstructions"; Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties =================================================================== diff -u -r61a2088821a0175b973f9d8354f7432f5fcdc566 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties (.../McResources.properties) (revision 61a2088821a0175b973f9d8354f7432f5fcdc566) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties (.../McResources.properties) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -115,7 +115,7 @@ option.correct =Correct option.incorrect =Incorrect label.feedback.incorrect =Feedback if answered incorrectly: -label.feedback.correct =Feedback if answered correctly: +label.feedback.correct =Feedback if answered correctly: label.learner.redo =Are you sure you want to answer the questions again? label.learner.bestMark =Your best mark so far is label.outof =out of Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUtils.java =================================================================== diff -u -r61a2088821a0175b973f9d8354f7432f5fcdc566 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUtils.java (.../McUtils.java) (revision 61a2088821a0175b973f9d8354f7432f5fcdc566) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUtils.java (.../McUtils.java) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -239,23 +239,24 @@ request.getSession().setAttribute(RICHTEXT_INSTRUCTIONS,richTextInstructions); } - String richTextFeedbackCorrect=request.getParameter(RICHTEXT_FEEDBACK_CORRECT); - logger.debug("read parameter richTextFeedbackCorrect: " + richTextFeedbackCorrect); + String richTextIncorrectFeedback=request.getParameter(RICHTEXT_INCORRECT_FEEDBACK); + logger.debug("read parameter richTextIncorrectFeedback: " + richTextIncorrectFeedback); - String richTextFeedbackInCorrect=request.getParameter(RICHTEXT_FEEDBACK_INCORRECT); - logger.debug("read parameter richTextFeedbackInCorrect: " + richTextFeedbackInCorrect); - - if ((richTextFeedbackCorrect != null) && (richTextFeedbackCorrect.length() > 0)) + if ((richTextIncorrectFeedback != null) && (richTextIncorrectFeedback.length() > 0)) { - request.getSession().setAttribute(RICHTEXT_FEEDBACK_CORRECT,richTextFeedbackCorrect); + request.getSession().setAttribute(RICHTEXT_INCORRECT_FEEDBACK,richTextIncorrectFeedback); } - if ((richTextFeedbackInCorrect != null) && (richTextFeedbackInCorrect.length() > 0)) + + String richTextCorrectFeedback=request.getParameter(RICHTEXT_CORRECT_FEEDBACK); + logger.debug("read parameter richTextCorrectFeedback: " + richTextCorrectFeedback); + + if ((richTextCorrectFeedback != null) && (richTextCorrectFeedback.length() > 0)) { - request.getSession().setAttribute(RICHTEXT_FEEDBACK_INCORRECT,richTextFeedbackInCorrect); + request.getSession().setAttribute(RICHTEXT_CORRECT_FEEDBACK,richTextCorrectFeedback); } + - String richTextReportTitle=request.getParameter(RICHTEXT_REPORT_TITLE); logger.debug("read parameter richTextReportTitle: " + richTextReportTitle); @@ -271,6 +272,8 @@ { request.getSession().setAttribute(RICHTEXT_END_LEARNING_MSG,richTextEndLearningMessage); } + + Map mapIncorrectFeedback=(Map)request.getSession().getAttribute(MAP_INCORRECT_FEEDBACK); } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java =================================================================== diff -u -r72d921498bc82c5d0a3021130567a40a8a6f7f48 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java (.../McContent.java) (revision 72d921498bc82c5d0a3021130567a40a8a6f7f48) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McContent.java (.../McContent.java) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -225,12 +225,14 @@ */ public Set deepCopyMcQueContent(McContent newMcContent) { + Set newMcQueContent = new TreeSet(); for (Iterator i = this.getMcQueContents().iterator(); i.hasNext();) { McQueContent queContent = (McQueContent) i.next(); if (queContent.getMcContent() != null) { + logger.debug("deep copying queContent: " + queContent.getFeedbackIncorrect()); McQueContent mcQueContent=McQueContent.newInstance(queContent, newMcContent); newMcQueContent.add(mcQueContent); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McQueContent.java =================================================================== diff -u -rdf74c2ae9ad3fd2a2e559fdc6ab92593204c7090 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McQueContent.java (.../McQueContent.java) (revision df74c2ae9ad3fd2a2e559fdc6ab92593204c7090) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McQueContent.java (.../McQueContent.java) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -184,12 +184,13 @@ McContent newMcContent) { + logger.debug("deep copying queContent: " + queContent.getFeedbackIncorrect()); McQueContent newQueContent = new McQueContent(queContent.getQuestion(), queContent.getDisplayOrder(), queContent.getWeight(), queContent.isDisabled(), + queContent.getFeedbackIncorrect(), queContent.getFeedbackCorrect(), - queContent.getFeedbackCorrect(), newMcContent, new TreeSet(), new TreeSet()); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java =================================================================== diff -u -rdef2dd6db95cbaa6ae8116e6a63e948db2c403f5 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision def2dd6db95cbaa6ae8116e6a63e948db2c403f5) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -381,6 +381,27 @@ return null; } + + public static String getRequiredFeedbackEntry(Map map, String questionIndex) + { + logger.debug("map: " + map); + + Iterator itMap = map.entrySet().iterator(); + while (itMap.hasNext()) { + Map.Entry pairs = (Map.Entry)itMap.next(); + logger.debug("using the pair: " + pairs.getKey() + " = " + pairs.getValue()); + if (questionIndex.equals(pairs.getKey().toString())) + { + String feedback=pairs.getValue().toString(); + logger.debug("required entry:" + feedback); + return feedback; + } + } + return null; + } + + + /** * returns the options Map within mapGeneralOptionsContent indexed with the questionIndex parameter. * getRequiredOptionsEntry(String questionIndex) @@ -467,7 +488,63 @@ return mapTempWeights; } + + /** + * shiftFeedbackMap(Map map, String questionIndex , String direction) + * + * @param map + * @param questionIndex + * @param direction + * @return Map + */ + public static Map shiftFeedbackMap(Map map, String questionIndex , String direction) + { + /* map to be returned */ + Map mapTemp= new TreeMap(new McComparator()); + mapTemp= map; + + String movableEntry = getRequiredFeedbackEntry(map, questionIndex); + logger.debug("movableEntry: " + movableEntry); + + int shiftableIndex=0; + if (direction.equals("down")) + { + logger.debug("moving map down"); + shiftableIndex=new Integer(questionIndex).intValue() + 1; + } + else + { + logger.debug("moving map up"); + shiftableIndex=new Integer(questionIndex).intValue() - 1; + } + + String shiftableEntry = getRequiredFeedbackEntry(map, new Integer(shiftableIndex).toString()); + logger.debug("shiftableEntry: " + shiftableEntry); + + if (movableEntry != null) + { + mapTemp.put(new Integer(shiftableIndex).toString(), movableEntry); + } + else + { + mapTemp.put(new Integer(shiftableIndex).toString(), ""); + } + + + if (shiftableEntry != null) + { + mapTemp.put(questionIndex,shiftableEntry); + } + else + { + mapTemp.put(questionIndex, ""); + } + + logger.debug("final shifted mapTemp: " + mapTemp); + return mapTemp; + } + /** * shifts the options contents within mapGenaralOptionsContent and mapGeneralSelectedlOptionsContent * shiftOptionsMap(Map mapGlobalOptionsContent, String questionIndex , String direction) @@ -997,6 +1074,64 @@ } + public static Map rebuildIncorrectFeedbackMapfromDB(HttpServletRequest request, Long toolContentId) + { + Map map= new TreeMap(new McComparator()); + + IMcService mcService =McUtils.getToolService(request); + logger.debug("toolContentId:" + toolContentId); + + McContent mcContent=mcService.retrieveMc(toolContentId); + logger.debug("mcContent:" + mcContent); + + List list=mcService.refreshQuestionContent(mcContent.getUid()); + logger.debug("refreshed list:" + list); + + Iterator listIterator=list.iterator(); + Long mapIndex=new Long(1); + while (listIterator.hasNext()) + { + McQueContent mcQueContent=(McQueContent)listIterator.next(); + logger.debug("mcQueContent:" + mcQueContent); + map.put(mapIndex.toString(),mcQueContent.getFeedbackIncorrect().toString()); + mapIndex=new Long(mapIndex.longValue()+1); + } + + logger.debug("refreshed Map:" + map); + return map; + } + + + public static Map rebuildCorrectFeedbackMapfromDB(HttpServletRequest request, Long toolContentId) + { + Map map= new TreeMap(new McComparator()); + + IMcService mcService =McUtils.getToolService(request); + logger.debug("toolContentId:" + toolContentId); + + McContent mcContent=mcService.retrieveMc(toolContentId); + logger.debug("mcContent:" + mcContent); + + List list=mcService.refreshQuestionContent(mcContent.getUid()); + logger.debug("refreshed list:" + list); + + Iterator listIterator=list.iterator(); + Long mapIndex=new Long(1); + while (listIterator.hasNext()) + { + McQueContent mcQueContent=(McQueContent)listIterator.next(); + logger.debug("mcQueContent:" + mcQueContent); + map.put(mapIndex.toString(),mcQueContent.getFeedbackCorrect().toString()); + mapIndex=new Long(mapIndex.longValue()+1); + } + + logger.debug("refreshed Map:" + map); + return map; + } + + + + /** * builds a map to hold all the correct feedback entries * buildInCorrectFeedbackMap(HttpServletRequest request, Long toolContentId) @@ -2789,7 +2924,7 @@ request.getSession().removeAttribute(USER_EXCEPTION_DEFAULTQUESTIONCONTENT_NOT_AVAILABLE); request.getSession().removeAttribute(USER_EXCEPTION_DEFAULTOPTIONSCONTENT_NOT_AVAILABLE); - /* the attributes below used in the Preview mode*/ + /* Preview mode constants*/ request.getSession().removeAttribute(MAP_QUESTION_CONTENT_LEARNER); request.getSession().removeAttribute(TOTAL_QUESTION_COUNT); request.getSession().removeAttribute(CURRENT_QUESTION_INDEX); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java =================================================================== diff -u -r61a2088821a0175b973f9d8354f7432f5fcdc566 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision 61a2088821a0175b973f9d8354f7432f5fcdc566) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -502,6 +502,32 @@ request.getSession().setAttribute(SELECTED_QUESTION_INDEX, questionIndex); logger.debug("set SELECTED_QUESTION_INDEX to:" + questionIndex); + /*presenting incorrect feedback data*/ + Map mapIncorrectFeedback=(Map)request.getSession().getAttribute(MAP_INCORRECT_FEEDBACK); + logger.debug("mapIncorrectFeedback:" + mapIncorrectFeedback); + String incorrectFeedback=""; + if (mapIncorrectFeedback.size() > 0) + { + logger.debug("mapIncorrectFeedback size > 0"); + incorrectFeedback=(String)mapIncorrectFeedback.get(questionIndex); + } + logger.debug("incorrectFeedback:" + incorrectFeedback); + request.getSession().setAttribute(RICHTEXT_INCORRECT_FEEDBACK,incorrectFeedback); + + + /*presenting correct feedback data*/ + Map mapCorrectFeedback=(Map)request.getSession().getAttribute(MAP_CORRECT_FEEDBACK); + logger.debug("mapCorrectFeedback:" + mapCorrectFeedback); + String correctFeedback=""; + if (mapCorrectFeedback.size() > 0) + { + logger.debug("mapCorrectFeedback size > 0"); + correctFeedback=(String)mapCorrectFeedback.get(questionIndex); + } + logger.debug("correctFeedback:" + correctFeedback); + request.getSession().setAttribute(RICHTEXT_CORRECT_FEEDBACK,correctFeedback); + + String editableQuestionEntry=(String)mapQuestionsContent.get(questionIndex); logger.debug("editableQuestionEntry:" + editableQuestionEntry); request.getSession().setAttribute(SELECTED_QUESTION, editableQuestionEntry); @@ -611,33 +637,7 @@ logger.debug("optionsCacheDataFound to be checked: " + optionsCacheDataFound); if (optionsCacheDataFound == true) { - Map mapFeedbackIncorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_INCORRECT); - logger.debug("cached MAP_FEEDBACK_INCORRECT :" + mapFeedbackIncorrect); - if (mapFeedbackIncorrect != null) - { - String richTextFeedbackInCorrect=(String)mapFeedbackIncorrect.get(selectedQuestionIndex); - logger.debug("cached richTextFeedbackInCorrect:" + richTextFeedbackInCorrect); - request.getSession().setAttribute(RICHTEXT_FEEDBACK_INCORRECT,richTextFeedbackInCorrect); - } - else - { - logger.debug("mapFeedbackIncorrect is null"); - request.getSession().setAttribute(RICHTEXT_FEEDBACK_INCORRECT,""); - } - - Map mapFeedbackCorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_CORRECT); - logger.debug("Submit final MAP_FEEDBACK_CORRECT :" + mapFeedbackCorrect); - if (mapFeedbackCorrect != null) - { - String richTextFeedbackCorrect=(String)mapFeedbackCorrect.get(selectedQuestionIndex); - logger.debug("cached richTextFeedbackCorrect:" + richTextFeedbackCorrect); - request.getSession().setAttribute(RICHTEXT_FEEDBACK_CORRECT,richTextFeedbackCorrect); - } - else - { - logger.debug("mapFeedbackCorrect is null"); - request.getSession().setAttribute(RICHTEXT_FEEDBACK_CORRECT,""); - } + logger.debug("we should not arrive here."); } else { @@ -920,27 +920,6 @@ request.getSession().setAttribute(MAP_GENERAL_SELECTED_OPTIONS_CONTENT, mapGeneralSelectedOptionsContent); logger.debug("updated MAP_GENERAL_SELECTED_OPTIONS_CONTENT after add: " + mapGeneralSelectedOptionsContent); - /* update feedback Maps*/ - Map mapFeedbackIncorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_INCORRECT); - logger.debug("current mapFeedbackIncorrect:" + mapFeedbackIncorrect); - String richTextFeedbackInCorrect=(String) request.getSession().getAttribute(RICHTEXT_FEEDBACK_INCORRECT); - logger.debug("richTextFeedbackInCorrect: " + richTextFeedbackInCorrect); - - if (richTextFeedbackInCorrect == null) richTextFeedbackInCorrect=""; - mapFeedbackIncorrect.put(selectedQuestionIndex, richTextFeedbackInCorrect); - request.getSession().setAttribute(MAP_FEEDBACK_INCORRECT, mapFeedbackIncorrect); - logger.debug("updated MAP_FEEDBACK_INCORRECT:" + mapFeedbackIncorrect); - - Map mapFeedbackCorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_CORRECT); - logger.debug("current mapFeedbackCorrect:" + mapFeedbackCorrect); - String richTextFeedbackCorrect=(String) request.getSession().getAttribute(RICHTEXT_FEEDBACK_CORRECT); - logger.debug("richTextFeedbackCorrect: " + richTextFeedbackCorrect); - - if (richTextFeedbackCorrect == null) richTextFeedbackCorrect=""; - mapFeedbackCorrect.put(selectedQuestionIndex, richTextFeedbackCorrect); - request.getSession().setAttribute(MAP_FEEDBACK_CORRECT, mapFeedbackCorrect); - logger.debug("updated MAP_FEEDBACK_INCORRECT:" + mapFeedbackCorrect); - request.getSession().setAttribute(EDIT_OPTIONS_MODE, new Integer(1)); logger.debug("resetting EDIT_OPTIONS_MODE to 1"); mcAuthoringForm.resetUserAction(); @@ -1065,26 +1044,6 @@ logger.debug("updated MAP_GENERAL_SELECTED_OPTIONS_CONTENT after add: " + mapGeneralSelectedOptionsContent); /* update feedback Maps*/ - Map mapFeedbackIncorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_INCORRECT); - logger.debug("current mapFeedbackIncorrect:" + mapFeedbackIncorrect); - String richTextFeedbackInCorrect=(String) request.getSession().getAttribute(RICHTEXT_FEEDBACK_INCORRECT); - logger.debug("richTextFeedbackInCorrect: " + richTextFeedbackInCorrect); - - if (richTextFeedbackInCorrect == null) richTextFeedbackInCorrect=""; - mapFeedbackIncorrect.put(selectedQuestionIndex, richTextFeedbackInCorrect); - request.getSession().setAttribute(MAP_FEEDBACK_INCORRECT, mapFeedbackIncorrect); - logger.debug("updated MAP_FEEDBACK_INCORRECT:" + mapFeedbackIncorrect); - - Map mapFeedbackCorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_CORRECT); - logger.debug("current mapFeedbackCorrect:" + mapFeedbackCorrect); - String richTextFeedbackCorrect=(String) request.getSession().getAttribute(RICHTEXT_FEEDBACK_CORRECT); - logger.debug("richTextFeedbackCorrect: " + richTextFeedbackCorrect); - - if (richTextFeedbackCorrect == null) richTextFeedbackCorrect=""; - mapFeedbackCorrect.put(selectedQuestionIndex, richTextFeedbackCorrect); - request.getSession().setAttribute(MAP_FEEDBACK_CORRECT, mapFeedbackCorrect); - logger.debug("updated MAP_FEEDBACK_INCORRECT:" + mapFeedbackCorrect); - request.getSession().setAttribute(EDIT_OPTIONS_MODE, new Integer(1)); logger.debug("resetting EDIT_OPTIONS_MODE to 1"); mcAuthoringForm.resetUserAction(); @@ -1189,6 +1148,24 @@ logger.debug("mapWeights after move down: " + mapWeights); request.getSession().setAttribute(MAP_WEIGHTS, mapWeights); } + + Map mapIncorrectFeedback=(Map)request.getSession().getAttribute(MAP_INCORRECT_FEEDBACK); + logger.debug("mapIncorrectFeedback: " + mapIncorrectFeedback); + if (mapIncorrectFeedback.size() > 0) + { + mapIncorrectFeedback= AuthoringUtil.shiftFeedbackMap(mapIncorrectFeedback, questionIndex, "down"); + logger.debug("mapIncorrectFeedback: " + mapIncorrectFeedback); + request.getSession().setAttribute(MAP_INCORRECT_FEEDBACK, mapIncorrectFeedback); + } + + Map mapCorrectFeedback=(Map)request.getSession().getAttribute(MAP_CORRECT_FEEDBACK); + logger.debug("mapCorrectFeedback: " + mapCorrectFeedback); + if (mapCorrectFeedback.size() > 0) + { + mapCorrectFeedback= AuthoringUtil.shiftFeedbackMap(mapCorrectFeedback, questionIndex, "down"); + logger.debug("mapCorrectFeedback: " + mapCorrectFeedback); + request.getSession().setAttribute(MAP_CORRECT_FEEDBACK, mapCorrectFeedback); + } } } @@ -1258,7 +1235,7 @@ Map mapQuestionsContent=AuthoringUtil.repopulateMap(request, "questionContent"); logger.debug("mapQuestionsContent before move down: " + mapQuestionsContent); - //perform a move up if there are at least 2 questions + /* perform a move up if there are at least 2 questions */ if (mapQuestionsContent.size() > 1) { String questionIndex =mcAuthoringForm.getQuestionIndex(); @@ -1298,7 +1275,28 @@ mapWeights= AuthoringUtil.shiftWeightsMap(mapWeights, questionIndex, "up"); logger.debug("mapWeights after move down: " + mapWeights); request.getSession().setAttribute(MAP_WEIGHTS, mapWeights); - } + } + + + Map mapIncorrectFeedback=(Map)request.getSession().getAttribute(MAP_INCORRECT_FEEDBACK); + logger.debug("mapIncorrectFeedback: " + mapIncorrectFeedback); + if (mapIncorrectFeedback.size() > 0) + { + mapIncorrectFeedback= AuthoringUtil.shiftFeedbackMap(mapIncorrectFeedback, questionIndex, "up"); + logger.debug("mapIncorrectFeedback: " + mapIncorrectFeedback); + request.getSession().setAttribute(MAP_INCORRECT_FEEDBACK, mapIncorrectFeedback); + } + + + Map mapCorrectFeedback=(Map)request.getSession().getAttribute(MAP_CORRECT_FEEDBACK); + logger.debug("mapCorrectFeedback: " + mapCorrectFeedback); + if (mapCorrectFeedback.size() > 0) + { + mapCorrectFeedback= AuthoringUtil.shiftFeedbackMap(mapCorrectFeedback, questionIndex, "up"); + logger.debug("mapCorrectFeedback: " + mapCorrectFeedback); + request.getSession().setAttribute(MAP_CORRECT_FEEDBACK, mapCorrectFeedback); + } + } } @@ -1421,28 +1419,32 @@ logger.debug("updated MAP_GENERAL_SELECTED_OPTIONS_CONTENT after add: " + mapGeneralSelectedOptionsContent); - /* update feedback Maps*/ - Map mapFeedbackIncorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_INCORRECT); - logger.debug("current mapFeedbackIncorrect:" + mapFeedbackIncorrect); - String richTextFeedbackInCorrect=(String) request.getSession().getAttribute(RICHTEXT_FEEDBACK_INCORRECT); - logger.debug("richTextFeedbackInCorrect: " + richTextFeedbackInCorrect); - if (richTextFeedbackInCorrect == null) richTextFeedbackInCorrect=""; - mapFeedbackIncorrect.put(selectedQuestionIndex, richTextFeedbackInCorrect); - request.getSession().setAttribute(MAP_FEEDBACK_INCORRECT, mapFeedbackIncorrect); - logger.debug("updated MAP_FEEDBACK_INCORRECT:" + mapFeedbackIncorrect); + /*new code*/ + Map mapIncorrectFeedback=(Map)request.getSession().getAttribute(MAP_INCORRECT_FEEDBACK); + logger.debug("mapIncorrectFeedback:" + mapIncorrectFeedback); - Map mapFeedbackCorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_CORRECT); - logger.debug("current mapFeedbackCorrect:" + mapFeedbackCorrect); - String richTextFeedbackCorrect=(String) request.getSession().getAttribute(RICHTEXT_FEEDBACK_CORRECT); - logger.debug("richTextFeedbackCorrect: " + richTextFeedbackCorrect); - - if (richTextFeedbackCorrect == null) richTextFeedbackCorrect=""; - mapFeedbackCorrect.put(selectedQuestionIndex, richTextFeedbackCorrect); - request.getSession().setAttribute(MAP_FEEDBACK_CORRECT, mapFeedbackCorrect); - logger.debug("updated MAP_FEEDBACK_CORRECT:" + mapFeedbackCorrect); + String richTextIncorrectFeedback=(String)request.getSession().getAttribute(RICHTEXT_INCORRECT_FEEDBACK); + logger.debug("richTextIncorrectFeedback:" + richTextIncorrectFeedback); + if (richTextIncorrectFeedback == null) richTextIncorrectFeedback=""; + mapIncorrectFeedback.put(selectedQuestionIndex,richTextIncorrectFeedback); + logger.debug("mapIncorrectFeedback:" + mapIncorrectFeedback); + request.getSession().setAttribute(MAP_INCORRECT_FEEDBACK, mapIncorrectFeedback); + + Map mapCorrectFeedback=(Map)request.getSession().getAttribute(MAP_CORRECT_FEEDBACK); + logger.debug("mapCorrectFeedback:" + mapCorrectFeedback); + + String richTextCorrectFeedback=(String)request.getSession().getAttribute(RICHTEXT_CORRECT_FEEDBACK); + logger.debug("richTextCorrectFeedback:" + richTextCorrectFeedback); + if (richTextCorrectFeedback == null) richTextCorrectFeedback=""; + + mapCorrectFeedback.put(selectedQuestionIndex,richTextCorrectFeedback); + logger.debug("mapCorrectFeedback:" + mapCorrectFeedback); + request.getSession().setAttribute(MAP_CORRECT_FEEDBACK, mapCorrectFeedback); + + Map mapGeneralOptionsContent=(Map)request.getSession().getAttribute(MAP_GENERAL_OPTIONS_CONTENT); logger.debug("current mapGeneralOptionsContent: " + mapGeneralOptionsContent); mapGeneralOptionsContent.put(selectedQuestionIndex,mapOptionsContent); @@ -1868,12 +1870,15 @@ mapQuestionsContent=(Map) request.getSession().getAttribute(MAP_QUESTIONS_CONTENT); logger.debug("Submit final MAP_QUESTIONS_CONTENT :" + mapQuestionsContent); - Map mapFeedbackIncorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_INCORRECT); - logger.debug("Submit final MAP_FEEDBACK_INCORRECT :" + mapFeedbackIncorrect); + + Map mapIncorrectFeedback =(Map)request.getSession().getAttribute(MAP_INCORRECT_FEEDBACK); + logger.debug("Submit final MAP_FEEDBACK_INCORRECT :" + mapIncorrectFeedback); - Map mapFeedbackCorrect =(Map)request.getSession().getAttribute(MAP_FEEDBACK_CORRECT); + + Map mapFeedbackCorrect =(Map)request.getSession().getAttribute(MAP_CORRECT_FEEDBACK); logger.debug("Submit final MAP_FEEDBACK_CORRECT :" + mapFeedbackCorrect); + AuthoringUtil.refreshMaps(request, toolContentId.longValue()); logger.debug("refreshed maps..."); @@ -1888,7 +1893,7 @@ AuthoringUtil.cleanupRedundantQuestions(request, existingQuestions, mapQuestionsContent, mcContent); logger.debug("calling selectAndPersistQuestions: " + existingQuestions); - AuthoringUtil.selectAndPersistQuestions(request, existingQuestions, mapQuestionsContent, mapFeedbackIncorrect, mapFeedbackCorrect, mapGeneralOptionsContent, mapWeights, mcContent); + AuthoringUtil.selectAndPersistQuestions(request, existingQuestions, mapQuestionsContent, mapIncorrectFeedback, mapFeedbackCorrect, mapGeneralOptionsContent, mapWeights, mcContent); logger.debug("finished processing questions content..."); logger.debug("start processing options content..."); @@ -2431,6 +2436,5 @@ logger.debug("add " + message +" to ActionMessages:"); saveErrors(request,errors); } - } \ No newline at end of file Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java =================================================================== diff -u -r61a2088821a0175b973f9d8354f7432f5fcdc566 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision 61a2088821a0175b973f9d8354f7432f5fcdc566) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -653,6 +653,16 @@ logger.debug("Check the mapWeights: " + mapWeights); request.getSession().setAttribute(MAP_WEIGHTS, mapWeights); + /*get existing feedback maps*/ + Map mapIncorrectFeedback = AuthoringUtil.rebuildIncorrectFeedbackMapfromDB(request, new Long(toolContentId)); + logger.debug("existing mapIncorrectFeedback:" + mapIncorrectFeedback); + request.getSession().setAttribute(MAP_INCORRECT_FEEDBACK, mapIncorrectFeedback); + + Map mapCorrectFeedback = AuthoringUtil.rebuildCorrectFeedbackMapfromDB(request, new Long(toolContentId)); + logger.debug("existing mapCorrectFeedback:" + mapCorrectFeedback); + request.getSession().setAttribute(MAP_CORRECT_FEEDBACK, mapCorrectFeedback); + + Map mapQuestionsContent=AuthoringUtil.rebuildQuestionMapfromDB(request, new Long(toolContentId)); logger.debug("mapQuestionsContent:" + mapQuestionsContent); request.getSession().setAttribute(MAP_QUESTIONS_CONTENT, mapQuestionsContent); @@ -837,11 +847,11 @@ Map mapSelectedOptions= new TreeMap(new McComparator()); request.getSession().setAttribute(MAP_SELECTED_OPTIONS, mapSelectedOptions); - Map mapFeedbackIncorrect= new TreeMap(new McComparator()); - request.getSession().setAttribute(MAP_FEEDBACK_INCORRECT, mapFeedbackIncorrect); + Map mapIncorrectFeedback= new TreeMap(new McComparator()); + request.getSession().setAttribute(MAP_INCORRECT_FEEDBACK, mapIncorrectFeedback); - Map mapFeedbackCorrect= new TreeMap(new McComparator()); - request.getSession().setAttribute(MAP_FEEDBACK_CORRECT, mapFeedbackCorrect); + Map mapCorrectFeedback= new TreeMap(new McComparator()); + request.getSession().setAttribute(MAP_CORRECT_FEEDBACK, mapCorrectFeedback); request.getSession().setAttribute(EDIT_OPTIONS_MODE, new Integer(0)); logger.debug("resetting EDIT_OPTIONS_MODE to 0"); Index: lams_tool_lamc/web/authoring/OptionsContent.jsp =================================================================== diff -u -ra819720ed4933e91d93b0eb4a8a9801d31a6cb45 -re8579f8f7b5afa49dc060d9534683cdaa649cb2b --- lams_tool_lamc/web/authoring/OptionsContent.jsp (.../OptionsContent.jsp) (revision a819720ed4933e91d93b0eb4a8a9801d31a6cb45) +++ lams_tool_lamc/web/authoring/OptionsContent.jsp (.../OptionsContent.jsp) (revision e8579f8f7b5afa49dc060d9534683cdaa649cb2b) @@ -166,13 +166,34 @@   -