Index: lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java
===================================================================
diff -u -r6027dca0125bccd15dcdae16bc108177f85e7f73 -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java (.../EditQbQuestionController.java) (revision 6027dca0125bccd15dcdae16bc108177f85e7f73)
+++ lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java (.../EditQbQuestionController.java) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -249,6 +249,20 @@
}
}
+ @RequestMapping(path = "/checkQuestionNewVersion", method = RequestMethod.POST)
+ @ResponseBody
+ public String checkQuestionNewVersion(@ModelAttribute("assessmentQuestionForm") QbQuestionForm form,
+ HttpServletRequest request) {
+ boolean isAddingQuestion = form.getUid() == -1;
+ if (isAddingQuestion) {
+ return "true";
+ }
+
+ QbQuestion qbQuestion = qbService.getQuestionByUid(form.getUid());
+ return String.valueOf(qbService.extractFormToQbQuestion(qbQuestion, form,
+ request) >= IQbService.QUESTION_MODIFIED_VERSION_BUMP);
+ }
+
@RequestMapping("/returnQuestionUid")
@ResponseBody
public String returnQuestionUid(HttpServletResponse response, @RequestParam Long qbQuestionUid) {
Index: lams_central/web/includes/javascript/qb-option.js
===================================================================
diff -u -rb560c87ea7efa5f6bf50f1eab863ac3a96162f22 -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/includes/javascript/qb-option.js (.../qb-option.js) (revision b560c87ea7efa5f6bf50f1eab863ac3a96162f22)
+++ lams_central/web/includes/javascript/qb-option.js (.../qb-option.js) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -8,6 +8,7 @@
var deletionConfirmed = confirm(CONFIRM_DELETE_ANSWER_LABEL);
if (deletionConfirmed) {
$("#option-table-" + idx).remove();
+ checkQuestionNewVersion();
}
}
@@ -31,6 +32,7 @@
},
function() {
initializeAnswers();
+ checkQuestionNewVersion();
}
);
}
@@ -137,6 +139,7 @@
$('input[name="optionDisplayOrder' + optionIndex + '"]').val(i+1);
$('span#optionDisplayOrderSpan' + optionIndex).text(alphabet[i]);
}
+ checkQuestionNewVersion();
}
}
});
Index: lams_central/web/includes/javascript/qb-question.js
===================================================================
diff -u -r6cbd849584c40532c6be292f9f009c88cde9439c -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/includes/javascript/qb-question.js (.../qb-question.js) (revision 6cbd849584c40532c6be292f9f009c88cde9439c)
+++ lams_central/web/includes/javascript/qb-question.js (.../qb-question.js) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -14,12 +14,31 @@
});
});
+// submits whole question form in order to check if it changed enough to produce a new question version
+function checkQuestionNewVersion(){
+ if (isNewQuestion) {
+ return;
+ }
+ $('#assessmentQuestionForm').attr('action', CHECK_QUESTION_NEW_VERSION_URL).data('validator').cancelSubmit = true;
+ $('#assessmentQuestionForm').submit();
+}
+
+function isVersionCheck() {
+ return $('#assessmentQuestionForm').attr('action') == CHECK_QUESTION_NEW_VERSION_URL;
+}
+
// post-submit callback
function afterRatingSubmit(responseText, statusText) {
self.parent.refreshThickbox()
self.parent.tb_remove();
}
+function afterVersionCheck(responseText, statusText, c, d){
+ $('#assessmentQuestionForm').attr('action', SAVE_QUESTION_URL).data('validator').cancelSubmit = false;
+ // the controller produces true/false and is interpreted as JSON
+ $('#saveButton').toggle(!responseText);
+}
+
//form validation handler. It's called when the form contains an error.
function formValidationInvalidHandler(form, validator) {
var errors = validator.numberOfInvalids();
@@ -64,12 +83,7 @@
$( "" ).insertAfter( element );
}
}
-function formValidationSuccess ( label, element ) {
- // Add the span element, if doesn't exists, and apply the icon classes to it.
- if ( !$( element ).next( "span" )[ 0 ] ) {
- //$( "" ).insertAfter( $( element ) );
- }
-}
+
function formValidationHighlight ( element, errorClass, validClass ) {
$( element ).parent().addClass( "has-error" ).removeClass( "has-success" );
$( element ).next( "span" ).addClass( "fa-remove" ).removeClass( "fa-check" );
Index: lams_central/web/qb/authoring/addQuestionFooter.jsp
===================================================================
diff -u -r25f082857217cddb1f19a7218e1e6a46c5d1b3ab -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addQuestionFooter.jsp (.../addQuestionFooter.jsp) (revision 25f082857217cddb1f19a7218e1e6a46c5d1b3ab)
+++ lams_central/web/qb/authoring/addQuestionFooter.jsp (.../addQuestionFooter.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -33,18 +33,15 @@
-
+
-
-
+
+
+
+
+
Index: lams_central/web/qb/authoring/addQuestionHeader.jsp
===================================================================
diff -u -r84f740de47dc46a5210e1217511c4e5eb60aceae -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addQuestionHeader.jsp (.../addQuestionHeader.jsp) (revision 84f740de47dc46a5210e1217511c4e5eb60aceae)
+++ lams_central/web/qb/authoring/addQuestionHeader.jsp (.../addQuestionHeader.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -1,5 +1,6 @@
<%@ include file="/common/taglibs.jsp"%>
+
@@ -15,10 +16,14 @@
Index: lams_central/web/qb/authoring/addessay.jsp
===================================================================
diff -u -rf5bcf9323324eb4d5add901d9e7a23c33050533a -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addessay.jsp (.../addessay.jsp) (revision f5bcf9323324eb4d5add901d9e7a23c33050533a)
+++ lams_central/web/qb/authoring/addessay.jsp (.../addessay.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -59,7 +59,6 @@
invalidHandler: formValidationInvalidHandler,
errorElement: "em",
errorPlacement: formValidationErrorPlacement,
- success: formValidationSuccess,
highlight: formValidationHighlight,
unhighlight: formValidationUnhighlight
});
Index: lams_central/web/qb/authoring/addmarkhedging.jsp
===================================================================
diff -u -re423418cca5e77a3b54cb3be496b67abe01c4183 -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addmarkhedging.jsp (.../addmarkhedging.jsp) (revision e423418cca5e77a3b54cb3be496b67abe01c4183)
+++ lams_central/web/qb/authoring/addmarkhedging.jsp (.../addmarkhedging.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -45,17 +45,18 @@
$("#feedbackOnIncorrect").val(CKEDITOR.instances.feedbackOnIncorrect.getData());
$("#new-collection-uid").val($("#collection-uid-select option:selected").val());
- var options = {
- target: parent.jQuery('#itemArea'),
- success: afterRatingSubmit // post-submit callback
- };
+ var isVersionBeingChecked = isVersionCheck(),
+ options = {
+ target: isVersionBeingChecked ? null : parent.jQuery('#itemArea'),
+ dataType : isVersionBeingChecked? 'json' : null,
+ success: isVersionBeingChecked? afterVersionCheck : afterRatingSubmit // post-submit callback
+ };
$('#assessmentQuestionForm').ajaxSubmit(options);
},
invalidHandler: formValidationInvalidHandler,
errorElement: "em",
errorPlacement: formValidationErrorPlacement,
- success: formValidationSuccess,
highlight: formValidationHighlight,
unhighlight: formValidationUnhighlight
});
Index: lams_central/web/qb/authoring/addmatchingpairs.jsp
===================================================================
diff -u -re423418cca5e77a3b54cb3be496b67abe01c4183 -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addmatchingpairs.jsp (.../addmatchingpairs.jsp) (revision e423418cca5e77a3b54cb3be496b67abe01c4183)
+++ lams_central/web/qb/authoring/addmatchingpairs.jsp (.../addmatchingpairs.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -44,17 +44,18 @@
$("#feedback").val(CKEDITOR.instances.feedback.getData());
$("#new-collection-uid").val($("#collection-uid-select option:selected").val());
- var options = {
- target: parent.jQuery('#itemArea'),
- success: afterRatingSubmit // post-submit callback
- };
+ var isVersionBeingChecked = isVersionCheck(),
+ options = {
+ target: isVersionBeingChecked ? null : parent.jQuery('#itemArea'),
+ dataType : isVersionBeingChecked? 'json' : null,
+ success: isVersionBeingChecked? afterVersionCheck : afterRatingSubmit // post-submit callback
+ };
$('#assessmentQuestionForm').ajaxSubmit(options);
},
invalidHandler: formValidationInvalidHandler,
errorElement: "em",
errorPlacement: formValidationErrorPlacement,
- success: formValidationSuccess,
highlight: formValidationHighlight,
unhighlight: formValidationUnhighlight
});
Index: lams_central/web/qb/authoring/addmultiplechoice.jsp
===================================================================
diff -u -re323adefc0ee1680382462d8bde75544167112bc -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addmultiplechoice.jsp (.../addmultiplechoice.jsp) (revision e323adefc0ee1680382462d8bde75544167112bc)
+++ lams_central/web/qb/authoring/addmultiplechoice.jsp (.../addmultiplechoice.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -61,18 +61,19 @@
$("#feedbackOnPartiallyCorrect").val(CKEDITOR.instances.feedbackOnPartiallyCorrect.getData());
$("#feedbackOnIncorrect").val(CKEDITOR.instances.feedbackOnIncorrect.getData());
$("#new-collection-uid").val($("#collection-uid-select option:selected").val());
-
- var options = {
- target: parent.jQuery('#itemArea'),
- success: afterRatingSubmit // post-submit callback
- };
+
+ var isVersionBeingChecked = isVersionCheck(),
+ options = {
+ target: isVersionBeingChecked ? null : parent.jQuery('#itemArea'),
+ dataType : isVersionBeingChecked? 'json' : null,
+ success: isVersionBeingChecked? afterVersionCheck : afterRatingSubmit // post-submit callback
+ };
$('#assessmentQuestionForm').ajaxSubmit(options);
},
invalidHandler: formValidationInvalidHandler,
errorElement: "em",
errorPlacement: formValidationErrorPlacement,
- success: formValidationSuccess,
highlight: formValidationHighlight,
unhighlight: formValidationUnhighlight
});
Index: lams_central/web/qb/authoring/addnumerical.jsp
===================================================================
diff -u -rc523acbc3644669e512c80d89d369392067f96dd -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addnumerical.jsp (.../addnumerical.jsp) (revision c523acbc3644669e512c80d89d369392067f96dd)
+++ lams_central/web/qb/authoring/addnumerical.jsp (.../addnumerical.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -92,17 +92,18 @@
$("#feedback").val(CKEDITOR.instances.feedback.getData());
$("#new-collection-uid").val($("#collection-uid-select option:selected").val());
- var options = {
- target: parent.jQuery('#itemArea'),
- success: afterRatingSubmit // post-submit callback
- };
+ var isVersionBeingChecked = isVersionCheck(),
+ options = {
+ target: isVersionBeingChecked ? null : parent.jQuery('#itemArea'),
+ dataType : isVersionBeingChecked? 'json' : null,
+ success: isVersionBeingChecked? afterVersionCheck : afterRatingSubmit // post-submit callback
+ };
$('#assessmentQuestionForm').ajaxSubmit(options);
},
invalidHandler: formValidationInvalidHandler,
errorElement: "em",
errorPlacement: formValidationErrorPlacement,
- success: formValidationSuccess,
highlight: formValidationHighlight,
unhighlight: formValidationUnhighlight
});
Index: lams_central/web/qb/authoring/addordering.jsp
===================================================================
diff -u -re423418cca5e77a3b54cb3be496b67abe01c4183 -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addordering.jsp (.../addordering.jsp) (revision e423418cca5e77a3b54cb3be496b67abe01c4183)
+++ lams_central/web/qb/authoring/addordering.jsp (.../addordering.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -47,17 +47,18 @@
$("#feedbackOnIncorrect").val(CKEDITOR.instances.feedbackOnIncorrect.getData());
$("#new-collection-uid").val($("#collection-uid-select option:selected").val());
- var options = {
- target: parent.jQuery('#itemArea'),
- success: afterRatingSubmit // post-submit callback
- };
+ var isVersionBeingChecked = isVersionCheck(),
+ options = {
+ target: isVersionBeingChecked ? null : parent.jQuery('#itemArea'),
+ dataType : isVersionBeingChecked? 'json' : null,
+ success: isVersionBeingChecked? afterVersionCheck : afterRatingSubmit // post-submit callback
+ };
$('#assessmentQuestionForm').ajaxSubmit(options);
},
invalidHandler: formValidationInvalidHandler,
errorElement: "em",
errorPlacement: formValidationErrorPlacement,
- success: formValidationSuccess,
highlight: formValidationHighlight,
unhighlight: formValidationUnhighlight
});
Index: lams_central/web/qb/authoring/addtruefalse.jsp
===================================================================
diff -u -r67609cc7b044d3721c18fbe8c5c13ce804230909 -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814
--- lams_central/web/qb/authoring/addtruefalse.jsp (.../addtruefalse.jsp) (revision 67609cc7b044d3721c18fbe8c5c13ce804230909)
+++ lams_central/web/qb/authoring/addtruefalse.jsp (.../addtruefalse.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814)
@@ -1,6 +1,7 @@
<%@ include file="/common/taglibs.jsp"%>
+
@@ -15,15 +16,21 @@