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