Skip to content

Instantly share code, notes, and snippets.

@stealth35
Created October 14, 2011 19:19
Show Gist options
  • Save stealth35/1288047 to your computer and use it in GitHub Desktop.
Save stealth35/1288047 to your computer and use it in GitHub Desktop.
Moodle course files uploader
if (window.location.pathname.search('course/view') > 0) {
window.onload = function (event) {
if (typeof FormData === 'undefined') {
return;
}
var forms = document.forms;
for (var f = 0; f < forms.length; ++f) {
if (typeof forms[f].edit !== 'undefined') {
if (forms[f].edit.value != 0) {
return;
}
var course = {'id': forms[f].id.value, 'sesskey': forms[f].sesskey.value};
break;
}
}
var sections = document.getElementsByClassName('section main');
for (var i = 0; i < sections.length; ++i) {
var section = sections[i];
section.addEventListener('dragenter', function (event) {
event.stopPropagation();
event.preventDefault();
}, false);
section.addEventListener('dragover', function (event) {
event.stopPropagation();
event.preventDefault();
}, false);
section.addEventListener('drop', function (event) {
event.stopPropagation();
event.preventDefault();
var files = event.dataTransfer.files;
if (!files.length) {
return;
}
var target = event.currentTarget;
var formData = new FormData();
formData.append('choose', '');
formData.append('id', course.id);
formData.append('sesskey', course.sesskey);
formData.append('save', 'save');
formData.append('action', 'makedir');
formData.append('name', target.id);
var xhr = new XMLHttpRequest();
xhr.open('POST', '../files/index.php', false);
xhr.send(formData);
formData.append('wdir', '/' + target.id);
var formRes = new FormData();
formRes.append('_qf__mod_resource_mod_form', 1);
formRes.append('cmidnumber', '');
formRes.append('add', 'resource');
formRes.append('course', course.id);
formRes.append('section', target.id.substr(8));
formRes.append('type', 'file');
formRes.append('sesskey', course.sesskey);
for (var j = 0; j < files.length; ++j) {
var file = files[j];
formData.append('userfile', file);
formData.append('action', 'upload');
var xhr = new XMLHttpRequest();
xhr.open('POST', '../files/index.php', false);
xhr.send(formData);
formRes.append('name', file.name);
formRes.append('reference[value]', target.id + '/' + file.name);
var xhr = new XMLHttpRequest();
xhr.open('POST', '../course/modedit.php', false);
xhr.send(formRes);
}
window.location.reload();
}, false);
}
}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment