68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
(function( $ ){
|
|
|
|
var methods = {
|
|
init : function( options ) {
|
|
|
|
return this.each( function () {
|
|
|
|
var $this = $(this);
|
|
|
|
$.each(options, function( label, setting ) {
|
|
$this.data(label, setting);
|
|
});
|
|
|
|
$this.bind('dragenter.dndUploader', methods.dragEnter);
|
|
$this.bind('dragover.dndUploader', methods.dragOver);
|
|
$this.bind('drop.dndUploader', methods.drop);
|
|
|
|
});
|
|
},
|
|
|
|
dragEnter : function ( event ) {
|
|
event.stopPropagation();
|
|
event.preventDefault();
|
|
|
|
return false;
|
|
},
|
|
|
|
dragOver : function ( event ) {
|
|
event.stopPropagation();
|
|
event.preventDefault();
|
|
|
|
return false;
|
|
},
|
|
|
|
drop : function( event ) {
|
|
event.stopPropagation();
|
|
event.preventDefault();
|
|
|
|
var $this = $(this);
|
|
var dataTransfer = event.originalEvent.dataTransfer;
|
|
|
|
if (dataTransfer.files.length > 0) {
|
|
$.each(dataTransfer.files, function ( i, file ) {
|
|
var xhr = new XMLHttpRequest();
|
|
var upload = xhr.upload;
|
|
|
|
xhr.open($this.data('method') || 'POST', $this.data('url'), true);
|
|
xhr.setRequestHeader('X-Filename', file.fileName);
|
|
|
|
xhr.send(file);
|
|
});
|
|
};
|
|
|
|
return false;
|
|
}
|
|
};
|
|
|
|
$.fn.dndUploader = function( method ) {
|
|
if ( methods[method] ) {
|
|
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
|
|
} else if ( typeof method === 'object' || ! method ) {
|
|
return methods.init.apply( this, arguments );
|
|
} else {
|
|
$.error( 'Method ' + method + ' does not exist on jQuery.dndUploader' );
|
|
}
|
|
};
|
|
})( jQuery );
|
|
|