diff --git a/cms/djangoapps/contentstore/views/assets.py b/cms/djangoapps/contentstore/views/assets.py index 4743622fa8..71e4073ed2 100644 --- a/cms/djangoapps/contentstore/views/assets.py +++ b/cms/djangoapps/contentstore/views/assets.py @@ -149,14 +149,14 @@ def upload_asset(request, org, course, coursename): logging.error('Could not find course' + location) return HttpResponseBadRequest() - if 'file' not in request.FILES: + if 'files[]' not in request.FILES: return HttpResponseBadRequest() # compute a 'filename' which is similar to the location formatting, we're # using the 'filename' nomenclature since we're using a FileSystem paradigm # here. We're just imposing the Location string formatting expectations to # keep things a bit more consistent - upload_file = request.FILES['file'] + upload_file = request.FILES['files[]'] filename = upload_file.name mime_type = upload_file.content_type diff --git a/cms/static/js/views/assets.js b/cms/static/js/views/assets.js index 4b0b97180a..0a9f805f14 100644 --- a/cms/static/js/views/assets.js +++ b/cms/static/js/views/assets.js @@ -1,6 +1,6 @@ $(document).ready(function() { $('.uploads .upload-button').bind('click', showUploadModal); - $('.upload-modal .close-button').bind('click', hideModal); + $('.upload-modal .close-button').bind('click', resetUploadModal); $('.upload-modal .choose-file-button').bind('click', showFileSelectionMenu); $('.remove-asset-button').bind('click', removeAsset); }); @@ -52,11 +52,47 @@ function removeAsset(e){ function showUploadModal(e) { e.preventDefault(); + resetUploadBar(); $modal = $('.upload-modal').show(); + $('.upload-modal .file-chooser').fileupload({ + dataType: 'json', + type: 'POST', + maxChunkSize: 100 * 1000 * 1000, // 100 MB + autoUpload: true, + progressall: function(e, data) { + var percentComplete = parseInt(data.loaded / data.total * 100, 10); + showUploadFeedback(e, percentComplete); + }, + maxFileSize: 10 * 1000 * 1000, // 100 MB + maxNumberofFiles: 30, + add: function(e, data) { + // Uncomment this line to get html template on load + // var html = assetUploadTemplate(data.files); + data.process().done(function () { + data.submit(); + }); + }, + done: function(e, data) { + displayFinishedUpload(data.result); + } + + }); $('.file-input').bind('change', startUpload); $modalCover.show(); } +function assetUploadTemplate(files) { + var compiled = _.template('' + + ' + - +