Index: lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties
===================================================================
diff -u -r5dc479070c3b110357c4a25df0adf0f5c65113e4 -r1387fe8af57326cbd56493d2d1be5228ee98c729
--- lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 5dc479070c3b110357c4a25df0adf0f5c65113e4)
+++ lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 1387fe8af57326cbd56493d2d1be5228ee98c729)
@@ -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
===================================================================
diff -u
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20150706.sql (revision 0)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20150706.sql (revision 1387fe8af57326cbd56493d2d1be5228ee98c729)
@@ -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
===================================================================
diff -u -r0340817df8d420d1feafa8ad9a43f667023515b2 -r1387fe8af57326cbd56493d2d1be5228ee98c729
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java (.../AssessmentQuestion.java) (revision 0340817df8d420d1feafa8ad9a43f667023515b2)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java (.../AssessmentQuestion.java) (revision 1387fe8af57326cbd56493d2d1be5228ee98c729)
@@ -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
===================================================================
diff -u -r0340817df8d420d1feafa8ad9a43f667023515b2 -r1387fe8af57326cbd56493d2d1be5228ee98c729
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 0340817df8d420d1feafa8ad9a43f667023515b2)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 1387fe8af57326cbd56493d2d1be5228ee98c729)
@@ -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
===================================================================
diff -u -r0340817df8d420d1feafa8ad9a43f667023515b2 -r1387fe8af57326cbd56493d2d1be5228ee98c729
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 0340817df8d420d1feafa8ad9a43f667023515b2)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 1387fe8af57326cbd56493d2d1be5228ee98c729)
@@ -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
===================================================================
diff -u -r1668e000b0959071785e5cdd21732af39bd1505f -r1387fe8af57326cbd56493d2d1be5228ee98c729
--- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/form/AssessmentQuestionForm.java (.../AssessmentQuestionForm.java) (revision 1668e000b0959071785e5cdd21732af39bd1505f)
+++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/form/AssessmentQuestionForm.java (.../AssessmentQuestionForm.java) (revision 1387fe8af57326cbd56493d2d1be5228ee98c729)
@@ -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
===================================================================
diff -u -rbea46a36fe22e2d9a148ca895deb37a513349d52 -r1387fe8af57326cbd56493d2d1be5228ee98c729
--- lams_tool_assessment/web/pages/authoring/parts/addmultiplechoice.jsp (.../addmultiplechoice.jsp) (revision bea46a36fe22e2d9a148ca895deb37a513349d52)
+++ lams_tool_assessment/web/pages/authoring/parts/addmultiplechoice.jsp (.../addmultiplechoice.jsp) (revision 1387fe8af57326cbd56493d2d1be5228ee98c729)
@@ -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 @@