Index: branches/RC/core/admin_templates/js/uploader/upload_manager.js =================================================================== diff -u -N -r11635 -r11915 --- branches/RC/core/admin_templates/js/uploader/upload_manager.js (.../upload_manager.js) (revision 11635) +++ branches/RC/core/admin_templates/js/uploader/upload_manager.js (.../upload_manager.js) (revision 11915) @@ -13,7 +13,7 @@ UploadsManager._uploadersReady = 0; UploadsManager._debugMode = false; -UploadsManager._Uploaders = new Object(); +UploadsManager._Uploaders = {}; UploadsManager._singleUpload = true; /* ==== Public Attributes ==== */ @@ -135,6 +135,12 @@ this._Uploaders[id] = new Uploader(id, params); } +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; Index: branches/RC/core/admin_templates/js/uploader/uploader.js =================================================================== diff -u -N -r11418 -r11915 --- branches/RC/core/admin_templates/js/uploader/uploader.js (.../uploader.js) (revision 11418) +++ branches/RC/core/admin_templates/js/uploader/uploader.js (.../uploader.js) (revision 11915) @@ -81,7 +81,7 @@ Uploader.prototype._prepareFiles = function() { var ids = ''; var names = ''; - for (var f in this.files) { + for (var f = 0; f < this.files.length; f++) { if (isset(this.files[f].uploaded) && !isset(this.files[f].temp)) { continue; } @@ -217,7 +217,7 @@ var urls = this.params.urls.split('|'); var names = this.params.names.split('|'); var sizes = this.params.sizes.split('|'); - for (var i in urls) { + for (var i = 0; i < urls.length; i++) { var a_file = { id : names[i], name : names[i], @@ -259,6 +259,45 @@ this._moved = true; } +Uploader.prototype.remove = function() { + var id = this._moved ? this.params.buttonPlaceholderId + '_outside' : this.params.buttonPlaceholderId; + + var obj = document.getElementById(id); + if (obj/* && obj.nodeName == "OBJECT"*/) { + var u = navigator.userAgent.toLowerCase(); + var p = navigator.platform.toLowerCase(); + var windows = p ? /win/.test(p) : /win/.test(u); + var $me = this; + + if (document.all && windows) { + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + $me.removeObjectInIE(id); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.removeChild(obj); + } + } +} + +Uploader.prototype.removeObjectInIE = function(id) { + var obj = document.getElementById(id); + if (obj) { + for (var i in obj) { + if (typeof obj[i] == 'function') { + obj[i] = null; + } + } + obj.parentNode.removeChild(obj); + } +} + Uploader.prototype.syncBrowseButton = function() { // when flash is moved outside scroll_container, keeps it's position on screen during scroll operations if (!this._moved) { @@ -303,7 +342,7 @@ var $filename = ''; var $delete_code = ''; - for (var f in this.files) { + for (var f = 0; f < this.files.length; f++) { this.files[f].name.match(/\.([^.]*)$/); var ext = RegExp.$1.toLowerCase(); $icon = ext.match(/^(ai|avi|bmp|cs|dll|doc|dot|exe|fla|gif|htm|html|jpg|js|mdb|mp3|pdf|ppt|rdp|swf|swt|txt|vsd|xls|xml|zip)$/) ? ext : 'default.icon'; @@ -333,7 +372,7 @@ var count = 0; var $new_total = 0; - for (var f in this.files) { + for (var f = 0; f < this.files.length; f++) { if (this.files[f].id != file.id && this.files[f].name != file.id) { n_files.push(this.files[f]); if (!isset(this.files[f].uploaded)) { @@ -354,7 +393,7 @@ } Uploader.prototype.hasQueue = function() { - for (var f in this.files) { + for (var f = 0; f < this.files.length; f++) { if (isset(this.files[f].uploaded)) { continue; } @@ -402,7 +441,7 @@ this.uploaded = 0; this.total = 0; - for (var f in this.files) { + for (var f = 0; f < this.files.length; f++) { if (isset(this.files[f].uploaded)) { // get total bytes of non-uploaded files continue; @@ -460,7 +499,7 @@ Uploader.prototype.UploadFileComplete = function(file) { this.uploaded += this.cur_file_uploaded; - for (var f in this.files) { + for (var f = 0; f < this.files.length; f++) { if (this.files[f].id == file.id) { this.files[f].uploaded = 1; this.files[f].temp = 1;