summaryrefslogtreecommitdiff
path: root/lib/scripts
diff options
context:
space:
mode:
authorKate Arzamastseva <pshns@ukr.net>2011-08-08 19:37:09 +0300
committerKate Arzamastseva <pshns@ukr.net>2011-08-08 19:37:09 +0300
commit6bdff0836f4bc1eee19aa8c30d03ba4bfc876733 (patch)
treed3240721d1a55cc0fe5453d266500ce3d88459cb /lib/scripts
parentf517998ad64483b6394211a971db2d3a660518c6 (diff)
downloadrpg-6bdff0836f4bc1eee19aa8c30d03ba4bfc876733.tar.gz
rpg-6bdff0836f4bc1eee19aa8c30d03ba4bfc876733.tar.bz2
issue #44 overwrite checkbox added to uploader
Diffstat (limited to 'lib/scripts')
-rw-r--r--lib/scripts/fileuploaderextended.js81
1 files changed, 81 insertions, 0 deletions
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){
'<div class="qq-upload-drop-area"><span>Drop files here to upload</span></div>' +
'<div class="qq-upload-button">Upload a file</div>' +
'<ul class="qq-upload-list"></ul>' +
+ '<label class="check" for="dw__ow"><input id="dw__ow" type="checkbox" value="1" name="ow"><span>Overwrite existing file</span></label>' +
'<input class="button" type="submit" value="Upload" id="mediamanager__upload_button">' +
'</div>',
@@ -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('<input name="file_name" value="' + fileName + '" type="text">');
+ 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);