summaryrefslogtreecommitdiff
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
parentf517998ad64483b6394211a971db2d3a660518c6 (diff)
downloadrpg-6bdff0836f4bc1eee19aa8c30d03ba4bfc876733.tar.gz
rpg-6bdff0836f4bc1eee19aa8c30d03ba4bfc876733.tar.bz2
issue #44 overwrite checkbox added to uploader
-rw-r--r--inc/media.php4
-rw-r--r--lib/exe/ajax.php9
-rw-r--r--lib/scripts/fileuploaderextended.js81
3 files changed, 88 insertions, 6 deletions
diff --git a/inc/media.php b/inc/media.php
index 16defc7af..768026b54 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -1600,13 +1600,13 @@ function media_uploadform($ns, $auth, $fullscreen = false){
$form->addElement(form_makeCloseTag('p'));
}
if ($fullscreen) {
- echo '<div id="mediamanager__uploader"><noscript>';
+ echo '<div id="mediamanager__uploader">';
}
html_form('upload', $form);
if ($fullscreen) {
- echo '</noscript></div>';
+ echo '</div>';
return '';
}
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 391e951e5..7a4cea360 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -245,7 +245,7 @@ function ajax_mediadiff(){
if ($_REQUEST['image']) $image = cleanID($_REQUEST['image']);
$NS = $_POST['ns'];
$auth = auth_quickaclcheck("$ns:*");
- media_diff($image, $NS, $auth);
+ media_diff($image, $NS, $auth, true);
}
function ajax_mediaupload(){
@@ -259,7 +259,8 @@ function ajax_mediaupload(){
}
if($_FILES['qqfile']['tmp_name']){
- $id = $_FILES['qqfile']['name'];
+ $id = $_REQUEST['file_name'];
+ if (!$id) $id = $_FILES['qqfile']['name'];
$file = $_FILES['qqfile']['tmp_name'];
list($ext,$mime,$dl) = mimetype($id);
@@ -268,7 +269,7 @@ function ajax_mediaupload(){
'mime' => $mime,
'ext' => $ext),
$NS.':'.$id,
- false,
+ $_REQUEST['ow'],
$AUTH,
'move_uploaded_file'
);
@@ -296,7 +297,7 @@ function ajax_mediaupload(){
'mime' => $mime,
'ext' => $ext),
$NS.':'.$id,
- false,
+ (($_REQUEST['ow'] == 'true') ? true : false),
$AUTH,
'copy'
);
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);