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.63 -r1.64 --- lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties 2 Jul 2015 21:53:26 -0000 1.63 +++ lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties 6 Jul 2015 21:34:08 -0000 1.64 @@ -290,5 +290,6 @@ label.learning.submit =Submit warn.mark.hedging.wrong.total =In order to continue, all mark hedging questions should have all available marks assigned. +label.incorrect.answer.nullifies.mark =Only correct answer selection assigns full mark #======= End labels: Exported 283 labels for en AU ===== Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20150706.sql =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20150706.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20150706.sql 6 Jul 2015 21:34:08 -0000 1.1 @@ -0,0 +1,14 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +----------------------Put all sql statements below here------------------------- + +-- LDEV-3492 Change behaviour results in MCQ question type with multiple answers in assessment +ALTER TABLE tl_laasse10_assessment_question ADD COLUMN incorrect_answer_nullifies_mark TINYINT(1) NOT NULL DEFAULT 0; + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java,v diff -u -r1.24 -r1.25 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java 2 Jul 2015 21:39:04 -0000 1.24 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java 6 Jul 2015 21:34:08 -0000 1.25 @@ -70,6 +70,8 @@ private boolean multipleAnswersAllowed; + private boolean incorrectAnswerNullifiesMark; + private String feedbackOnCorrect; private String feedbackOnPartiallyCorrect; @@ -350,7 +352,19 @@ public void setMultipleAnswersAllowed(boolean multipleAnswersAllowed) { this.multipleAnswersAllowed = multipleAnswersAllowed; } + + /** + * @hibernate.property column="incorrect_answer_nullifies_mark" + * @return + */ + public boolean isIncorrectAnswerNullifiesMark() { + return incorrectAnswerNullifiesMark; + } + public void setIncorrectAnswerNullifiesMark(boolean incorrectAnswerNullifiesMark) { + this.incorrectAnswerNullifiesMark = incorrectAnswerNullifiesMark; + } + /** * @hibernate.property column="feedback_on_correct" type="text" * @return Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java,v diff -u -r1.54 -r1.55 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 2 Jul 2015 21:39:04 -0000 1.54 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 6 Jul 2015 21:34:08 -0000 1.55 @@ -542,12 +542,22 @@ float mark = 0; float maxMark = question.getGrade(); if (question.getType() == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) { + boolean isMarkNullified = false; for (AssessmentQuestionOption option : question.getOptions()) { if (option.getAnswerBoolean()) { mark += option.getGrade() * maxMark; + + //if option of "incorrect answer nullifies mark" is ON check if selected answer has a zero grade and if so nullify question's mark + if (question.isIncorrectAnswerNullifiesMark() && option.getGrade() == 0) { + isMarkNullified = true; + } } } + if (isMarkNullified) { + mark = 0; + } + } else if (question.getType() == AssessmentConstants.QUESTION_TYPE_MATCHING_PAIRS) { float maxMarkForCorrectAnswer = maxMark / question.getOptions().size(); for (AssessmentQuestionOption option : question.getOptions()) { @@ -2018,6 +2028,7 @@ question.setMaxWordsLimit(JsonUtil.opt(questionJSONData, "maxWordsLimit", 0)); question.setMinWordsLimit(JsonUtil.opt(questionJSONData, "minWordsLimit", 0)); question.setMultipleAnswersAllowed(JsonUtil.opt(questionJSONData, "multipleAnswersAllowed", Boolean.FALSE)); + question.setIncorrectAnswerNullifiesMark(JsonUtil.opt(questionJSONData, "incorrectAnswerNullifiesMark", Boolean.FALSE)); question.setPenaltyFactor(Float.parseFloat(JsonUtil.opt(questionJSONData, "penaltyFactor", "0.0"))); // question.setUnits(units); Needed for numerical type question Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java,v diff -u -r1.37 -r1.38 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java 2 Jul 2015 21:39:04 -0000 1.37 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java 6 Jul 2015 21:34:08 -0000 1.38 @@ -1747,6 +1747,7 @@ form.setGeneralFeedback(question.getGeneralFeedback()); form.setFeedback(question.getFeedback()); form.setMultipleAnswersAllowed(question.isMultipleAnswersAllowed()); + form.setIncorrectAnswerNullifiesMark(question.isIncorrectAnswerNullifiesMark()); form.setFeedbackOnCorrect(question.getFeedbackOnCorrect()); form.setFeedbackOnPartiallyCorrect(question.getFeedbackOnPartiallyCorrect()); form.setFeedbackOnIncorrect(question.getFeedbackOnIncorrect()); @@ -1822,6 +1823,9 @@ if (type == AssessmentConstants.QUESTION_TYPE_MULTIPLE_CHOICE) { question.setMultipleAnswersAllowed(questionForm.isMultipleAnswersAllowed()); + boolean incorrectAnswerNullifiesMark = questionForm.isMultipleAnswersAllowed() ? questionForm + .isIncorrectAnswerNullifiesMark() : false; + question.setIncorrectAnswerNullifiesMark(incorrectAnswerNullifiesMark); question.setPenaltyFactor(Float.parseFloat(questionForm.getPenaltyFactor())); question.setShuffle(questionForm.isShuffle()); question.setFeedbackOnCorrect(questionForm.getFeedbackOnCorrect()); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/form/AssessmentQuestionForm.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/form/AssessmentQuestionForm.java,v diff -u -r1.7 -r1.8 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/form/AssessmentQuestionForm.java 26 Jul 2014 00:00:05 -0000 1.7 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/form/AssessmentQuestionForm.java 6 Jul 2015 21:34:08 -0000 1.8 @@ -50,6 +50,7 @@ private String generalFeedback; private String feedback; private boolean multipleAnswersAllowed; + private boolean incorrectAnswerNullifiesMark; private String feedbackOnCorrect; private String feedbackOnPartiallyCorrect; private String feedbackOnIncorrect; @@ -163,7 +164,15 @@ public void setMultipleAnswersAllowed(boolean multipleAnswersAllowed) { this.multipleAnswersAllowed = multipleAnswersAllowed; } + + public boolean isIncorrectAnswerNullifiesMark() { + return incorrectAnswerNullifiesMark; + } + public void setIncorrectAnswerNullifiesMark(boolean incorrectAnswerNullifiesMark) { + this.incorrectAnswerNullifiesMark = incorrectAnswerNullifiesMark; + } + public String getFeedbackOnCorrect() { return feedbackOnCorrect; } Index: lams_tool_assessment/web/pages/authoring/parts/addmultiplechoice.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/authoring/parts/addmultiplechoice.jsp,v diff -u -r1.22 -r1.23 --- lams_tool_assessment/web/pages/authoring/parts/addmultiplechoice.jsp 1 Aug 2014 16:03:54 -0000 1.22 +++ lams_tool_assessment/web/pages/authoring/parts/addmultiplechoice.jsp 6 Jul 2015 21:34:08 -0000 1.23 @@ -100,7 +100,10 @@ } }); - + $("#multipleAnswersAllowed").on('change', function() { + $("#incorrect-answer-nullifies-mark-area").toggle(eval($(this).val())); + }).trigger("change"); + }); // post-submit callback function afterRatingSubmit(responseText, statusText) { @@ -186,6 +189,13 @@ + +
+ + +
Index: lams_tool_assessment/web/pages/learning/parts/markandpenaltyarea.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/learning/parts/markandpenaltyarea.jsp,v diff -u -r1.7 -r1.8 --- lams_tool_assessment/web/pages/learning/parts/markandpenaltyarea.jsp 27 Jun 2014 23:18:18 -0000 1.7 +++ lams_tool_assessment/web/pages/learning/parts/markandpenaltyarea.jsp 6 Jul 2015 21:34:08 -0000 1.8 @@ -12,7 +12,7 @@
- ${question.defaultGrade} + ${question.grade} Index: lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp,v diff -u -r1.14 -r1.15 --- lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp 2 Jun 2015 19:42:06 -0000 1.14 +++ lams_tool_assessment/web/pages/monitoring/parts/questionsummary.jsp 6 Jul 2015 21:34:08 -0000 1.15 @@ -179,6 +179,17 @@ + + + + + + + + + + +