Index: branches/RC/core/admin_templates/js/uploader/uploader.js =================================================================== diff -u -r10626 -r10640 --- branches/RC/core/admin_templates/js/uploader/uploader.js (.../uploader.js) (revision 10626) +++ branches/RC/core/admin_templates/js/uploader/uploader.js (.../uploader.js) (revision 10640) @@ -15,6 +15,7 @@ // set params to uploader this._eventQueue = []; + this.uploadCancelled = false; this.params = params; this.files_count = 0; @@ -229,6 +230,8 @@ } Uploader.prototype.startUpload = function() { + UploadsManager.uploadCancelled = this.uploadCancelled = false; + if (!this.hasQueue()) { return; } @@ -271,6 +274,18 @@ this.flash.StartUpload(); } +Uploader.prototype.cancelUpload = function() { + this.flash.StopUpload(); + + var $stats = this.flash.GetStats(); + while ($stats.files_queued > 0) { + this.flash.CancelUpload(); + $stats = this.flash.GetStats(); + } + + UploadsManager.uploadCancelled = this.uploadCancelled = true; +} + Uploader.prototype.UploadFileStart = function(file) { this.filename.innerHTML = file.name; @@ -312,9 +327,13 @@ var $stats = this.flash.GetStats(); if ($stats.files_queued > 0 && !UploadsManager.uploadCancelled) { this.flash.StartUpload(); - } else if (!UploadsManager.uploadCancelled) { - // all files in queue are uploaded - UploadsManager.UploadQueueComplete(); + } else { + // all files in queue are uploaded OR upload was cancelled globally + if (UploadsManager.uploadCancelled) { + // when upload was cancelled globally -> cancel it for any other uploader + this.cancelUpload(); + } + UploadsManager.UploadQueueComplete(this); } }