diff --git a/cms/templates/widgets/source-edit.html b/cms/templates/widgets/source-edit.html index ac58fe9ceb6cfb75a1f5902c5dac7b8007c84842..bb201e5f39a8b3222fa0dd7e6319c4127bbe8916 100644 --- a/cms/templates/widgets/source-edit.html +++ b/cms/templates/widgets/source-edit.html @@ -1,7 +1,9 @@ +<%page expression_filter="h"/> <% import hashlib + from openedx.core.djangolib.js_utils import js_escaped_string from six import text_type - hlskey = hashlib.md5(text_type(module.location)).hexdigest() + hlskey = hashlib.md5(text_type(module.location).encode('utf-8')).hexdigest() %> <section id="hls-modal-${hlskey}" class="upload-modal modal" style="overflow:scroll; background:#ddd; padding: 10px 0;box-shadow: 0 0 5px 0 #555;" > @@ -13,7 +15,7 @@ <form id="hls-form" enctype="multipart/form-data"> <section class="source-edit"> - <textarea name="" data-metadata-name="source_code" class="source-edit-box hls-data" rows="8" cols="40">${editable_metadata_fields['source_code']['value']|h}</textarea> + <textarea name="" data-metadata-name="source_code" class="source-edit-box hls-data" rows="8" cols="40">${editable_metadata_fields['source_code']['value']}</textarea> </section> <div class="submit"> <button type="reset" class="hls-compile">Save & Compile to edX XML</button> @@ -30,8 +32,8 @@ <script type = "text/javascript"> require(["jquery", "jquery.leanModal", "codemirror/stex"], function($) { - hlstrig = $('#hls-trig-${hlskey}'); - hlsmodal = $('#hls-modal-${hlskey}'); + hlstrig = $('#hls-trig-${hlskey | n, js_escaped_string}'); + hlsmodal = $('#hls-modal-${hlskey | n, js_escaped_string}'); hlstrig.leanModal({ top: 0, @@ -44,27 +46,26 @@ require(["jquery", "jquery.leanModal", "codemirror/stex"], function($) { mode: 'stex' })); - $('#hls-trig-${hlskey}').click(function() { + hlstrig.click(function() { - ## cannot do this with css or it gets overwritten + // cannot do this with css or it gets overwritten var editorH = $( window ).height() - 100; var editorW = $( window ).innerWidth() - 70; hlsmodal.attr('style', function(i,s) { return s + 'margin: 2% 0 0 10% !important; left:10%; height:' + editorH + 'px;'}); - ## setup file input - ## need to insert this only after hls triggered, because otherwise it - ## causes other <form> elements to become multipart/form-data, - ## thus breaking multiple-choice input forms, for example. - $('#hls-finput').html('<input type="file" name="hlsfile" id="hlsfile" />'); - - var el = $('#hls-modal-${hlskey}'); - setup_autoupload(el); - slow_refresh_hls(el); + // setup file input + // need to insert this only after hls triggered, because otherwise it + // causes other <form> elements to become multipart/form-data, + // thus breaking multiple-choice input forms, for example. + edx.HtmlUtils.setHtml($('#hls-finput'),edx.HtmlUtils.HTML('<input type="file" name="hlsfile" id="hlsfile" />')); + // var el = $('#hls-modal-${hlskey | n, js_escaped_string}'); + setup_autoupload(hlsmodal); + slow_refresh_hls(hlsmodal); }); // file upload button hlsmodal.find('.hls-upload').click(function() { - $('#hls-modal-${hlskey}').find('#hlsfile').trigger('click'); + hlsmodal.find('#hlsfile').trigger('click'); }); // auto-upload after file is chosen @@ -105,9 +106,8 @@ require(["jquery", "jquery.leanModal", "codemirror/stex"], function($) { // compile & save button hlsmodal.find('.hls-compile').click(function() { - var el = $('#hls-modal-${hlskey}'); - compile_hls(el); - $(el).css('display', 'none') + compile_hls(hlsmodal); + $(hlsmodal).css('display', 'none') }); // connect to server using POST (requires cross-domain-access) @@ -146,25 +146,6 @@ require(["jquery", "jquery.leanModal", "codemirror/stex"], function($) { }); } - function process_return_${hlskey}(datadict) { - // datadict is json of array with "xml" and "message" - // if "xml" value is '' then the conversion failed - var xml = datadict.xml; - if (xml.length == 0) { - alert('Conversion failed! error:' + datadict.message); - } else { - set_raw_edit_box(xml, '${hlskey}'); - save_hls($('#hls-modal-${hlskey}')); - } - } - - - function set_raw_edit_box(data, key) { - // get the codemirror editor for the raw-edit-box - // it's a CodeMirror-wrap class element - $('#hls-modal-' + key).closest('.xblock-studio_view').find('.CodeMirror-wrap')[0].CodeMirror.setValue(data); - } - // save button hlsmodal.find('.hls-save').click(function() {