1
0
mirror of https://github.com/Tygs/0bin.git synced 2023-08-10 21:13:00 +03:00

#17 - Add html5 file drag&drop on textarea

This commit is contained in:
Rémy HUBSCHER
2013-01-19 11:31:03 +01:00
parent 303905aff5
commit b2a9812688
6 changed files with 51 additions and 13 deletions

View File

@ -351,6 +351,39 @@ window.zerobin = {
}
return total * 1000 / size;
},
// prevent defaults
ignoreDrag: function(e) {
e.originalEvent.stopPropagation();
e.originalEvent.preventDefault();
},
// Handle Drop
handleDrop: function(e) {
zerobin.ignoreDrag(e);
zerobin.upload(e.originalEvent.dataTransfer.files);
$("#content").removeClass('hover');
},
handleDragOver: function(e) {
zerobin.ignoreDrag(e);
$(this).addClass('hover');
console.log('dragover');
},
handleDragLeave: function(e) {
zerobin.ignoreDrag(e);
$(this).removeClass('hover');
console.log('dragout');
},
upload: function(files) {
var reader = new FileReader();
reader.onload = function(event) {
$('#content').val(event.target.result).trigger('change');
};
reader.readAsText(files[0]);
}
};
@ -668,24 +701,17 @@ $('.clone .btn-danger').click(function(e){
});
/* Upload file using HTML5 File API */
if (zerobin.support.fileUpload) {
var upload = function(files) {
var reader = new FileReader();
reader.onload = function(event) {
$('#content').val(event.target.result).trigger('change');
};
reader.readAsText(files[0]);
};
var $buttonOverlay = $('#file-upload');
var $button = $('.btn-upload');
try {
$button.val('Uploading...');
$button.prop('disabled', true);
$buttonOverlay.change(function(){upload(this.files);});
$buttonOverlay.change(function(){zerobin.upload(this.files);});
}
catch (e) {
zerobin.message('error', 'Could no upload the file', 'Error');
@ -696,6 +722,14 @@ if (zerobin.support.fileUpload) {
$button.prop('disabled', false);
$button.val('Upload File');
$buttonOverlay.mouseover(mkcb($(this).css, 'cursor', 'pointer'));
// Implements drag & drop upload
$('#content').bind('dragenter', zerobin.ignoreDrag);
$('#content').bind('drop', zerobin.handleDrop);
$('#content').bind('dragover', zerobin.handleDragOver);
$('#content').bind('dragleave', zerobin.handleDragLeave);
}
/* Alerts */