Index: branches/5.1.x/core/admin_templates/js/uploader/upload_manager.js =================================================================== diff -u -N -r13086 -r13658 --- branches/5.1.x/core/admin_templates/js/uploader/upload_manager.js (.../upload_manager.js) (revision 13086) +++ branches/5.1.x/core/admin_templates/js/uploader/upload_manager.js (.../upload_manager.js) (revision 13658) @@ -1,5 +1,6 @@ function UploadsManager() { - addLoadEvent( + + $(document).ready( function() { UploadsManager._initAll(); } @@ -14,49 +15,13 @@ UploadsManager._debugMode = false; UploadsManager._Uploaders = {}; -UploadsManager._singleUpload = true; -/* ==== Public Attributes ==== */ -UploadsManager.useToolbar = true; -UploadsManager.formContainerId = ''; -UploadsManager.useTransparency = true; -UploadsManager.uploadCancelled = false; - /* ==== Private methods ==== */ -UploadsManager.setScrollEvents = function() { - var $scroll_container = this._getScrollContainer(); - - addEvent( - $scroll_container, - 'scroll', - function(ev) { - UploadsManager.iterate('syncBrowseButton'); - } - ) -} - UploadsManager._nextFlashId = function() { this._nextId++; return 'uploaderflash' + this._nextId; } -UploadsManager._getFormContainer = function() { - if (UploadsManager.formContainerId) { - return document.getElementById(UploadsManager.formContainerId); - } - - return Form.Div; -} - - -UploadsManager._getScrollContainer = function() { - if (UploadsManager.formContainerId) { - return document.body; - } - - return document.getElementById(Form.Div.id + '_container'); -} - UploadsManager._initAll = function() { this._createHooks(); @@ -120,36 +85,19 @@ } UploadsManager._createHooks = function () { - if (typeof Application != 'undefined') { - Application.setHook( - 'm:OnAfterFormInit', - function () { - UploadsManager.setScrollEvents(); - } - ); - } + var $me = this; - // hooking to standard toolbar select button to peform auto-upload when Save is clicked - if (!UploadsManager.useToolbar || !isset(a_toolbar)) { - return ; - } + $('#' + $form_name).submit( + function ($e) { + if ($me._hasQueue()) { + submitted = false; + alert('File upload is in progress. Please cancel the upload or wait until it\'s completed.'); - if (a_toolbar.ButtonExists('select')) { - var old_onclick = a_toolbar.Buttons['select'].onClick; - a_toolbar.Buttons['select'].onClick = function() { - UploadsManager.UploadAll( - function() { - if (UploadsManager._debugMode) { - if (!confirm('Proceed with form submitting?')) { - return ; - } - } - - old_onclick(); - } - ); + return false; + } } - } + + ); } /* ==== Public methods ==== */ @@ -160,12 +108,11 @@ UploadsManager.RemoveUploader = function(id) { this._Uploaders[id].remove(); delete this._Uploaders[id]; - this.iterate('syncBrowseButton'); } UploadsManager.DeleteFile = function(uploader_id, fname, confirmed) { - if (!confirmed && !confirm('Are you sure you want to delete this file?')) { - return; + if (!confirmed && !confirm('Are you sure you want to delete "' + fname + '" file?')) { + return false; } var $uploader = this._Uploaders[uploader_id]; @@ -176,74 +123,28 @@ function(req, fname, $uploader) { $uploader.removeFile({id:fname}) $uploader.deleted.push(fname); - $uploader.updateInfo(); + $uploader.updateInfo(undefined, true); }, function(req, fname, $uploader) { alert('Error while deleting file'); }, fname, $uploader ); + + return true; } UploadsManager.StartUpload = function(id) { - UploadsManager._singleUpload = true; this._Uploaders[id].startUpload(); } UploadsManager.CancelFile = function(id, file_id) { this._Uploaders[id].callFlash('CancelUpload', [file_id]); } -UploadsManager.UploadAll = function(onAllUploaded) { - if (!this._hasQueue()) { - onAllUploaded(); - return ; - } - - UploadsManager._singleUpload = false; - for (var i in this._Uploaders) { - // could raise problems, when simultanious uploads from diffrent uploaders are made - this._Uploaders[i].startUpload(); - } - - this.OnAllUploaded = onAllUploaded; -} - UploadsManager.UploadQueueComplete = function($uploader) { - var $all_uploaded = true; // all queued files were uploaded - var $all_processed = true; // all queued files were processed (uploaded OR cancelled) - for (var i in this._Uploaders) { - var $queue_owner = this._Uploaders[i].id == $uploader.id; - if (UploadsManager._singleUpload && !$queue_owner) { - // count only current uploader when single upload is made - continue; - } - - if ($queue_owner) { - this._Uploaders[i].finalizeUpload(); - } - - var $empty_queue = !this._Uploaders[i].hasQueue(); - - $all_uploaded = $all_uploaded && $empty_queue; - $all_processed = $all_processed && ($empty_queue || this._Uploaders[i].uploadCancelled); - } - - if ($all_processed) { - // enable all browse button, when upload is totally completed or cancelled - UploadsManager.iterate('disableBrowse', false); - } - - if (UploadsManager.useTransparency && $all_processed) { - // remove transparency, when all uploaders are done - Request.setOpacity(100, UploadsManager._getFormContainer()); - } - - if ($all_uploaded && isset(this.OnAllUploaded) && !this.uploadCancelled) { - this.OnAllUploaded(); - } } UploadsManager.CancelUpload = function(id) { @@ -313,22 +214,26 @@ // delete file added this.files_count++; this.files.push(file); - this.total += file.size; + if (this.files[0].uploaded) { UploadsManager.DeleteFile(UploadsManager._getUploader(file).id, this.files[0].name, true); } else { this.callFlash('CancelUpload', [this.files[0].id]); } + + this.startUpload(); } } else { // new file will not exceed allowed file number this.files_count++; this.files.push(file); - this.total += file.size; + + this.startUpload(); } - this.updateInfo(); + + this.updateInfo(this.files.length - 1); } ) }