diff --git a/common/lib/xmodule/xmodule/js/src/capa/display.js b/common/lib/xmodule/xmodule/js/src/capa/display.js index d6f13658e7..aeb9c0998c 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/display.js +++ b/common/lib/xmodule/xmodule/js/src/capa/display.js @@ -604,7 +604,7 @@ case 'incorrect': case 'correct': window.SR.readTexts(that.get_sr_status(response.contents)); - that.el.trigger('contentChanged', [that.id, response.contents]); + that.el.trigger('contentChanged', [that.id, response.contents, response]); that.render(response.contents, that.focus_on_submit_notification); that.updateProgress(response); break; @@ -662,7 +662,7 @@ id: this.id }, function(response) { if (response.success) { - that.el.trigger('contentChanged', [that.id, response.html]); + that.el.trigger('contentChanged', [that.id, response.html, response]); that.render(response.html, that.scroll_to_problem_meta); that.updateProgress(response); return window.SR.readText(gettext('This problem has been reset.')); @@ -773,7 +773,7 @@ var saveMessage; saveMessage = response.msg; if (response.success) { - that.el.trigger('contentChanged', [that.id, response.html]); + that.el.trigger('contentChanged', [that.id, response.html, response]); edx.HtmlUtils.setHtml( that.el.find('.notification-save .notification-message'), edx.HtmlUtils.HTML(saveMessage) diff --git a/common/lib/xmodule/xmodule/js/src/sequence/display.coffee b/common/lib/xmodule/xmodule/js/src/sequence/display.coffee index e1b647bdd3..0dd87c706c 100644 --- a/common/lib/xmodule/xmodule/js/src/sequence/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/sequence/display.coffee @@ -45,23 +45,24 @@ class @Sequence hookUpContentStateChangeEvent: -> $('.problems-wrapper').bind( 'contentChanged', - (event, problem_id, new_content_state) => - @addToUpdatedProblems problem_id, new_content_state + (event, problem_id, new_content_state, new_state) => + @addToUpdatedProblems problem_id, new_content_state, new_state ) - addToUpdatedProblems: (problem_id, new_content_state) => + addToUpdatedProblems: (problem_id, new_content_state, new_state) => # Used to keep updated problem's state temporarily. # params: # 'problem_id' is problem id. - # 'new_content_state' is updated problem's state. + # 'new_content_state' is the updated content of the problem. + # 'new_state' is the updated state of the problem. # initialize for the current sequence if there isn't any updated problem # for this position. if not @anyUpdatedProblems @position @updatedProblems[@position] = {} - # Now, put problem content against problem id for current active sequence. - @updatedProblems[@position][problem_id] = new_content_state + # Now, put problem content and score against problem id for current active sequence. + @updatedProblems[@position][problem_id] = [new_content_state, new_state] anyUpdatedProblems:(position) -> # check for the updated problems for given sequence position. @@ -161,10 +162,15 @@ class @Sequence # update the data-attributes with latest contents only for updated problems. if @anyUpdatedProblems new_position - $.each @updatedProblems[new_position], (problem_id, latest_content) => + $.each @updatedProblems[new_position], (problem_id, latest_data) => + latest_content = latest_data[0] + latest_response = latest_data[1] @content_container .find("[data-problem-id='#{ problem_id }']") .data('content', latest_content) + .data('problem-score', latest_response.current_score) + .data('problem-total-possible', latest_response.total_possible) + .data('attempts-used', latest_response.attempts_used) XBlock.initializeBlocks(@content_container, @requestToken)