diff --git a/freetextresponse/private/view.js b/freetextresponse/private/view.js index 7e601f68..6906331e 100644 --- a/freetextresponse/private/view.js +++ b/freetextresponse/private/view.js @@ -3,6 +3,7 @@ function FreeTextResponseView(runtime, element) { var $ = window.jQuery; var $element = $(element); + var $xblocksContainer = $('#seq_content'); var buttonSubmit = $element.find('.check.Submit'); var buttonSave = $element.find('.save'); var usedAttemptsFeedback = $element.find('.action .used-attempts-feedback'); @@ -19,10 +20,10 @@ function FreeTextResponseView(runtime, element) { var cachedAnswerId = xblockId + '_cached_answer'; var problemProgressId = xblockId + '_problem_progress'; var usedAttemptsFeedbackId = xblockId + '_used_attempts_feedback'; - if ($('body').data(cachedAnswerId) !== undefined) { - textareaStudentAnswer.text($('body').data(cachedAnswerId)); - problemProgress.text($('body').data(problemProgressId)); - usedAttemptsFeedback.text($('body').data(usedAttemptsFeedbackId)); + if ($xblocksContainer.data(cachedAnswerId) !== undefined) { + textareaStudentAnswer.text($xblocksContainer.data(cachedAnswerId)); + problemProgress.text($xblocksContainer.data(problemProgressId)); + usedAttemptsFeedback.text($xblocksContainer.data(usedAttemptsFeedbackId)); } // POLYFILL notify if it does not exist. Like in the xblock workbench. @@ -58,9 +59,9 @@ function FreeTextResponseView(runtime, element) { buttonSave.addClass(response.nodisplay_class); setClassForTextAreaParent(response.indicator_class); - $('body').data(cachedAnswerId, $element.find('.student_answer').val()); - $('body').data(problemProgressId, response.problem_progress); - $('body').data(usedAttemptsFeedbackId, response.used_attempts_feedback); + $xblocksContainer.data(cachedAnswerId, $element.find('.student_answer').val()); + $xblocksContainer.data(problemProgressId, response.problem_progress); + $xblocksContainer.data(usedAttemptsFeedbackId, response.used_attempts_feedback); runtime.notify('submit', { state: 'end' @@ -93,9 +94,9 @@ function FreeTextResponseView(runtime, element) { buttonSave.text(buttonSave[0].dataset.value); userAlertMessage.text(response.user_alert); - $('body').data(cachedAnswerId, $element.find('.student_answer').val()); - $('body').data(problemProgressId, response.problem_progress); - $('body').data(usedAttemptsFeedbackId, response.used_attempts_feedback); + $xblocksContainer.data(cachedAnswerId, $element.find('.student_answer').val()); + $xblocksContainer.data(problemProgressId, response.problem_progress); + $xblocksContainer.data(usedAttemptsFeedbackId, response.used_attempts_feedback); runtime.notify('save', { state: 'end' diff --git a/freetextresponse/public/view.js b/freetextresponse/public/view.js index 7e601f68..6906331e 100644 --- a/freetextresponse/public/view.js +++ b/freetextresponse/public/view.js @@ -3,6 +3,7 @@ function FreeTextResponseView(runtime, element) { var $ = window.jQuery; var $element = $(element); + var $xblocksContainer = $('#seq_content'); var buttonSubmit = $element.find('.check.Submit'); var buttonSave = $element.find('.save'); var usedAttemptsFeedback = $element.find('.action .used-attempts-feedback'); @@ -19,10 +20,10 @@ function FreeTextResponseView(runtime, element) { var cachedAnswerId = xblockId + '_cached_answer'; var problemProgressId = xblockId + '_problem_progress'; var usedAttemptsFeedbackId = xblockId + '_used_attempts_feedback'; - if ($('body').data(cachedAnswerId) !== undefined) { - textareaStudentAnswer.text($('body').data(cachedAnswerId)); - problemProgress.text($('body').data(problemProgressId)); - usedAttemptsFeedback.text($('body').data(usedAttemptsFeedbackId)); + if ($xblocksContainer.data(cachedAnswerId) !== undefined) { + textareaStudentAnswer.text($xblocksContainer.data(cachedAnswerId)); + problemProgress.text($xblocksContainer.data(problemProgressId)); + usedAttemptsFeedback.text($xblocksContainer.data(usedAttemptsFeedbackId)); } // POLYFILL notify if it does not exist. Like in the xblock workbench. @@ -58,9 +59,9 @@ function FreeTextResponseView(runtime, element) { buttonSave.addClass(response.nodisplay_class); setClassForTextAreaParent(response.indicator_class); - $('body').data(cachedAnswerId, $element.find('.student_answer').val()); - $('body').data(problemProgressId, response.problem_progress); - $('body').data(usedAttemptsFeedbackId, response.used_attempts_feedback); + $xblocksContainer.data(cachedAnswerId, $element.find('.student_answer').val()); + $xblocksContainer.data(problemProgressId, response.problem_progress); + $xblocksContainer.data(usedAttemptsFeedbackId, response.used_attempts_feedback); runtime.notify('submit', { state: 'end' @@ -93,9 +94,9 @@ function FreeTextResponseView(runtime, element) { buttonSave.text(buttonSave[0].dataset.value); userAlertMessage.text(response.user_alert); - $('body').data(cachedAnswerId, $element.find('.student_answer').val()); - $('body').data(problemProgressId, response.problem_progress); - $('body').data(usedAttemptsFeedbackId, response.used_attempts_feedback); + $xblocksContainer.data(cachedAnswerId, $element.find('.student_answer').val()); + $xblocksContainer.data(problemProgressId, response.problem_progress); + $xblocksContainer.data(usedAttemptsFeedbackId, response.used_attempts_feedback); runtime.notify('save', { state: 'end' diff --git a/freetextresponse/public/view.js.min.js b/freetextresponse/public/view.js.min.js index 39096bfd..ade82971 100644 --- a/freetextresponse/public/view.js.min.js +++ b/freetextresponse/public/view.js.min.js @@ -1,2 +1,2 @@ -function FreeTextResponseView(a,b){"use strict";function c(a){m.removeClass("correct"),m.removeClass("incorrect"),m.removeClass("unanswered"),m.addClass(a)}var d=window.jQuery,e=d(b),f=e.find(".check.Submit"),g=e.find(".save"),h=e.find(".action .used-attempts-feedback"),i=e.find(".problem-progress"),j=e.find(".submission-received"),k=e.find(".user_alert"),l=e.find(".student_answer"),m=l.parent(),n=a.handlerUrl(b,"submit"),o=a.handlerUrl(b,"save_reponse"),p=e.attr("data-usage-id"),q=p+"_cached_answer",r=p+"_problem_progress",s=p+"_used_attempts_feedback";void 0!==d("body").data(q)&&(l.text(d("body").data(q)),i.text(d("body").data(r)),h.text(d("body").data(s))),a.notify=a.notify||function(){console.log("POLYFILL runtime.notify",arguments)},f.on("click",function(){return f.text(f[0].dataset.checking),a.notify("submit",{message:"Submitting...",state:"start"}),d.ajax(n,{type:"POST",data:JSON.stringify({student_answer:e.find(".student_answer").val()}),success:function(b){h.text(b.used_attempts_feedback),f.addClass(b.nodisplay_class),i.text(b.problem_progress),j.text(b.submitted_message),f.text(f[0].dataset.value),k.text(b.user_alert),g.addClass(b.nodisplay_class),c(b.indicator_class),d("body").data(q,e.find(".student_answer").val()),d("body").data(r,b.problem_progress),d("body").data(s,b.used_attempts_feedback),a.notify("submit",{state:"end"})},error:function(){a.notify("error",{})}}),!1}),g.on("click",function(){return g.text(g[0].dataset.checking),a.notify("save",{message:"Saving...",state:"start"}),d.ajax(o,{type:"POST",data:JSON.stringify({student_answer:e.find(".student_answer").val()}),success:function(b){f.addClass(b.nodisplay_class),g.addClass(b.nodisplay_class),h.text(b.used_attempts_feedback),i.text(b.problem_progress),j.text(b.submitted_message),g.text(g[0].dataset.value),k.text(b.user_alert),d("body").data(q,e.find(".student_answer").val()),d("body").data(r,b.problem_progress),d("body").data(s,b.used_attempts_feedback),a.notify("save",{state:"end"})},error:function(){a.notify("error",{})}}),!1}),l.on("keydown",function(){j.text(""),k.text(""),c("unanswered")})} +function FreeTextResponseView(a,b){"use strict";function c(a){n.removeClass("correct"),n.removeClass("incorrect"),n.removeClass("unanswered"),n.addClass(a)}var d=window.jQuery,e=d(b),f=d("#seq_content"),g=e.find(".check.Submit"),h=e.find(".save"),i=e.find(".action .used-attempts-feedback"),j=e.find(".problem-progress"),k=e.find(".submission-received"),l=e.find(".user_alert"),m=e.find(".student_answer"),n=m.parent(),o=a.handlerUrl(b,"submit"),p=a.handlerUrl(b,"save_reponse"),q=e.attr("data-usage-id"),r=q+"_cached_answer",s=q+"_problem_progress",t=q+"_used_attempts_feedback";void 0!==f.data(r)&&(m.text(f.data(r)),j.text(f.data(s)),i.text(f.data(t))),a.notify=a.notify||function(){console.log("POLYFILL runtime.notify",arguments)},g.on("click",function(){return g.text(g[0].dataset.checking),a.notify("submit",{message:"Submitting...",state:"start"}),d.ajax(o,{type:"POST",data:JSON.stringify({student_answer:e.find(".student_answer").val()}),success:function(b){i.text(b.used_attempts_feedback),g.addClass(b.nodisplay_class),j.text(b.problem_progress),k.text(b.submitted_message),g.text(g[0].dataset.value),l.text(b.user_alert),h.addClass(b.nodisplay_class),c(b.indicator_class),f.data(r,e.find(".student_answer").val()),f.data(s,b.problem_progress),f.data(t,b.used_attempts_feedback),a.notify("submit",{state:"end"})},error:function(){a.notify("error",{})}}),!1}),h.on("click",function(){return h.text(h[0].dataset.checking),a.notify("save",{message:"Saving...",state:"start"}),d.ajax(p,{type:"POST",data:JSON.stringify({student_answer:e.find(".student_answer").val()}),success:function(b){g.addClass(b.nodisplay_class),h.addClass(b.nodisplay_class),i.text(b.used_attempts_feedback),j.text(b.problem_progress),k.text(b.submitted_message),h.text(h[0].dataset.value),l.text(b.user_alert),f.data(r,e.find(".student_answer").val()),f.data(s,b.problem_progress),f.data(t,b.used_attempts_feedback),a.notify("save",{state:"end"})},error:function(){a.notify("error",{})}}),!1}),m.on("keydown",function(){k.text(""),l.text(""),c("unanswered")})} //# sourceMappingURL=view.js.min.js.map diff --git a/freetextresponse/public/view.js.min.js.map b/freetextresponse/public/view.js.min.js.map index c7ad14c0..0a1455f2 100644 --- a/freetextresponse/public/view.js.min.js.map +++ b/freetextresponse/public/view.js.min.js.map @@ -1 +1 @@ -{"version":3,"file":"view.js.min.js","sources":["view.js"],"names":["FreeTextResponseView","runtime","element","setClassForTextAreaParent","new_class","textareaParent","removeClass","addClass","$","window","jQuery","$element","buttonSubmit","find","buttonSave","usedAttemptsFeedback","problemProgress","submissionReceivedMessage","userAlertMessage","textareaStudentAnswer","parent","url","handlerUrl","urlSave","xblockId","attr","cachedAnswerId","problemProgressId","usedAttemptsFeedbackId","undefined","data","text","notify","console","log","arguments","on","dataset","checking","message","state","ajax","type","JSON","stringify","student_answer","val","success","response","used_attempts_feedback","nodisplay_class","problem_progress","submitted_message","value","user_alert","indicator_class","error"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"view.js.min.js","sources":["view.js"],"names":["FreeTextResponseView","runtime","element","setClassForTextAreaParent","new_class","textareaParent","removeClass","addClass","$","window","jQuery","$element","$xblocksContainer","buttonSubmit","find","buttonSave","usedAttemptsFeedback","problemProgress","submissionReceivedMessage","userAlertMessage","textareaStudentAnswer","parent","url","handlerUrl","urlSave","xblockId","attr","cachedAnswerId","problemProgressId","usedAttemptsFeedbackId","undefined","data","text","notify","console","log","arguments","on","dataset","checking","message","state","ajax","type","JSON","stringify","student_answer","val","success","response","used_attempts_feedback","nodisplay_class","problem_progress","submitted_message","value","user_alert","indicator_class","error"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 065f4d6b..6aea1794 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "xblock-free-text-response", "title": "FreeTextResponse XBlock", "description": "Enables instructors to create questions with free-text responses.", - "version": "0.1.6", + "version": "0.1.7", "homepage": "https://github.com/Stanford-Online/xblock-free-text-response", "author": { "name": "Azim Pradhan", diff --git a/setup.py b/setup.py index d3e86655..1bd74323 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ def run_tests(self): setup( name="xblock-free-text-response", - version="0.1.6", + version="0.1.7", description="Enables instructors to create questions with free-text responses.", license='AGPL-3.0', packages=[