56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
(function() {
|
|
'use strict';
|
|
|
|
angular
|
|
.module('angularFileUpload')
|
|
.decorator('FileUploader', FileUploaderDecorator)
|
|
.decorator('FileDrop', FileDropDecorator);
|
|
|
|
/**
|
|
* Set XSRF header if the cookie exists.
|
|
* Solution based on the following discussion:
|
|
* https://github.com/nervgh/angular-file-upload/issues/360
|
|
*
|
|
* @ngInject
|
|
*/
|
|
FileUploaderDecorator.$inject = ['$delegate', '$cookies'];
|
|
function FileUploaderDecorator($delegate, $cookies) {
|
|
$delegate.prototype.onBeforeUploadItem = function(item) {
|
|
var token = $cookies.get('XSRF-TOKEN');
|
|
if (token)
|
|
item.headers = {'X-XSRF-TOKEN': token};
|
|
};
|
|
return $delegate;
|
|
}
|
|
|
|
/**
|
|
* Fixed bug causing nv-file-over (over-class) not resetting when leaving element.
|
|
* Solution based on this unmerged pull request:
|
|
* https://github.com/nervgh/angular-file-upload/pull/643
|
|
*
|
|
* @ngInject
|
|
*/
|
|
FileDropDecorator.$inject = ['$delegate', '$timeout'];
|
|
function FileDropDecorator($delegate, $timeout) {
|
|
$delegate.prototype.onDragOver = function(event) {
|
|
var transfer = this._getTransfer(event);
|
|
if (!this._haveFiles(transfer.types)) return;
|
|
transfer.dropEffect = 'copy';
|
|
this._preventAndStop(event);
|
|
angular.forEach(this.uploader._directives.over, this._addOverClass, this);
|
|
$timeout.cancel(this.onDragLeaveTimer);
|
|
};
|
|
$delegate.prototype.onDragLeave = function(event) {
|
|
var that = this;
|
|
$timeout.cancel(this.onDragLeaveTimer);
|
|
this.onDragLeaveTimer = $timeout(function() {
|
|
that._preventAndStop(event);
|
|
angular.forEach(that.uploader._directives.over, that._removeOverClass, that);
|
|
}, 50);
|
|
};
|
|
return $delegate;
|
|
}
|
|
})();
|