From 6bdff0836f4bc1eee19aa8c30d03ba4bfc876733 Mon Sep 17 00:00:00 2001 From: Kate Arzamastseva Date: Mon, 8 Aug 2011 19:37:09 +0300 Subject: issue #44 overwrite checkbox added to uploader --- lib/scripts/fileuploaderextended.js | 81 +++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) (limited to 'lib/scripts') diff --git a/lib/scripts/fileuploaderextended.js b/lib/scripts/fileuploaderextended.js index ba9158ea1..6eaa38ebc 100644 --- a/lib/scripts/fileuploaderextended.js +++ b/lib/scripts/fileuploaderextended.js @@ -77,6 +77,7 @@ qq.FileUploaderExtended = function(o){ '
Drop files here to upload
' + '
Upload a file
' + '' + + '' + '' + '', @@ -139,6 +140,26 @@ qq.extend(qq.FileUploaderExtended.prototype, { self._handler._options.onUpload(); }); + }, + + _onComplete: function(id, fileName, result){ + qq.FileUploaderBasic.prototype._onComplete.apply(this, arguments); + + // mark completed + var item = this._getItemByFileId(id); + qq.remove(this._find(item, 'cancel')); + qq.remove(this._find(item, 'spinner')); + + var nameInput = this._find(item, 'nameInput'); + var fileElement = this._find(item, 'file'); + qq.setText(fileElement, nameInput.value); + qq.remove(nameInput.parentNode); + + if (result.success){ + qq.addClass(item, this._classes.success); + } else { + qq.addClass(item, this._classes.fail); + } } }); @@ -148,11 +169,70 @@ qq.extend(qq.UploadHandlerForm.prototype, { this._uploadAll(params); }, + getName: function(id){ + var file = this._inputs[id]; + var name = document.getElementById(id); + if (name != null) { + return name.value; + } else { + if (file != null) { + // get input value and remove path to normalize + return file.value.replace(/.*(\/|\\)/, ""); + } else { + return null; + } + } + }, + _uploadAll: function(params){ + jQuery(".qq-upload-spinner-hidden").each(function (i) { + jQuery(this).addClass('qq-upload-spinner'); + }); for (key in this._inputs) { this.upload(key, params); } + }, + + _upload: function(id, params){ + var input = this._inputs[id]; + + if (!input){ + throw new Error('file with passed id was not added, or already uploaded or cancelled'); + } + + var fileName = this.getName(id); + + var iframe = this._createIframe(id); + var form = this._createForm(iframe, params); + form.appendChild(input); + + var nameInput = qq.toElement(''); + form.appendChild(nameInput); + + var owCheckbox = document.getElementById('dw__ow').cloneNode(true); + form.appendChild(owCheckbox); + + var self = this; + this._attachLoadEvent(iframe, function(){ + self.log('iframe loaded'); + + var response = self._getIframeContentJSON(iframe); + + self._options.onComplete(id, fileName, response); + self._dequeue(id); + + delete self._inputs[id]; + // timeout added to fix busy state in FF3.6 + setTimeout(function(){ + qq.remove(iframe); + }, 1); + }); + + form.submit(); + qq.remove(form); + + return id; } }); @@ -209,6 +289,7 @@ qq.extend(qq.UploadHandlerXhr.prototype, { // build query string params = params || {}; params['qqfile'] = name; + params['ow'] = document.getElementById('dw__ow').checked; var queryString = qq.obj2url(params, this._options.action); xhr.open("POST", queryString, true); -- cgit v1.2.3