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 @@