forked from flanchan/doushio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.5 KiB
72 lines
1.5 KiB
(function () {
|
|
|
|
function drop_shita(e) {
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
var files = e.dataTransfer.files;
|
|
if (!files.length)
|
|
return;
|
|
if (!postForm) {
|
|
with_dom(function () {
|
|
if (THREAD)
|
|
open_post_box(THREAD);
|
|
else {
|
|
var $s = $(e.target).closest('section');
|
|
if (!$s.length)
|
|
return;
|
|
open_post_box($s.attr('id'));
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
var attrs = postForm.model.attributes;
|
|
if (attrs.uploading || attrs.uploaded)
|
|
return;
|
|
}
|
|
|
|
if (files.length > 1) {
|
|
postForm.upload_error('Too many files.');
|
|
return;
|
|
}
|
|
|
|
var extra = postForm.prep_upload();
|
|
var fd = new FormData();
|
|
fd.append('image', files[0]);
|
|
for (var k in extra)
|
|
fd.append(k, extra[k]);
|
|
/* Can't seem to jQuery this shit */
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open('POST', image_upload_url());
|
|
xhr.setRequestHeader('Accept', 'application/json');
|
|
xhr.onreadystatechange = upload_shita;
|
|
xhr.send(fd);
|
|
|
|
postForm.notify_uploading();
|
|
}
|
|
|
|
function upload_shita() {
|
|
if (this.readyState != 4 || this.status == 202)
|
|
return;
|
|
var err = this.responseText;
|
|
if (this.status != 500 || !err || err.length > 100)
|
|
err = "Couldn't get response.";
|
|
postForm.upload_error(err)
|
|
}
|
|
|
|
function stop_drag(e) {
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
}
|
|
|
|
function setup_upload_drop(e) {
|
|
function go(nm, f) { e.addEventListener(nm, f, false); }
|
|
go('dragenter', stop_drag);
|
|
go('dragexit', stop_drag);
|
|
go('dragover', stop_drag);
|
|
go('drop', drop_shita);
|
|
}
|
|
|
|
setup_upload_drop(document.body);
|
|
|
|
})();
|