Index: lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties,v diff -u -r1.64 -r1.65 --- lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties 6 Jul 2015 21:34:08 -0000 1.64 +++ lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties 30 Jul 2015 16:47:25 -0000 1.65 @@ -288,7 +288,8 @@ label.option.correct =Correct? label.assign.hedging.mark =Assign marks to answers. Max possible mark: {0} label.learning.submit =Submit -warn.mark.hedging.wrong.total =In order to continue, all mark hedging questions should have all available marks assigned. +warn.mark.hedging.wrong.total =In order to continue, mark hedging type of questions should have all available marks assigned. +label.justify.hedging.marks =Please, justify your hedging marks. label.incorrect.answer.nullifies.mark =Only correct answer selection assigns full mark Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java,v diff -u -r1.48 -r1.49 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java 27 Jul 2015 19:54:13 -0000 1.48 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/LearningAction.java 30 Jul 2015 16:47:26 -0000 1.49 @@ -792,13 +792,20 @@ } else if (questionType == AssessmentConstants.QUESTION_TYPE_ORDERING) { } else if (questionType == AssessmentConstants.QUESTION_TYPE_MARK_HEDGING) { + + //store hedging marks for (AssessmentQuestionOption option : question.getOptions()) { Integer markHedging = WebUtil.readIntParam(request, AssessmentConstants.ATTR_QUESTION_PREFIX + i + "_" + option.getSequenceId(), true); if (markHedging != null) { option.setAnswerInt(markHedging); } } + + //store justificaion of hedging + String answerString = request.getParameter(AssessmentConstants.ATTR_QUESTION_PREFIX + i); + answerString = answerString.replaceAll("[\n\r\f]", ""); + question.setAnswerString(answerString); } } } @@ -821,13 +828,15 @@ int pageCount; for (pageCount = 0; pageCount < pagedQuestions.size(); pageCount++) { LinkedHashSet questionsForOnePage = pagedQuestions.get(pageCount); - + for (AssessmentQuestion question : questionsForOnePage) { - if (question.isAnswerRequired()) { + int questionType = question.getType(); + + //enforce all hedging marks question type to be answered as well + if (question.isAnswerRequired() || (questionType == AssessmentConstants.QUESTION_TYPE_MARK_HEDGING)) { boolean isAnswered = false; - int questionType = question.getType(); if (questionType == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) { for (AssessmentQuestionOption option : question.getOptions()) { @@ -850,11 +859,15 @@ } else if (questionType == AssessmentConstants.QUESTION_TYPE_MARK_HEDGING) { + //verify sum of all hedging marks is equal to question's grade int sumMarkHedging = 0; for (AssessmentQuestionOption option : question.getOptions()) { sumMarkHedging += option.getAnswerInt(); } - isAnswered = sumMarkHedging == question.getGrade(); + isAnswered = sumMarkHedging == question.getGrade(); + + //verify justification of hedging is provided + isAnswered &= StringUtils.isNotBlank(question.getAnswerString()); } // check all questions were answered Index: lams_tool_assessment/web/pages/learning/learning.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/learning/learning.jsp,v diff -u -r1.41 -r1.42 --- lams_tool_assessment/web/pages/learning/learning.jsp 2 Jul 2015 21:39:04 -0000 1.41 +++ lams_tool_assessment/web/pages/learning/learning.jsp 30 Jul 2015 16:47:26 -0000 1.42 @@ -86,21 +86,29 @@