diff options
author | Kate Arzamastseva <pshns@ukr.net> | 2011-08-08 19:37:09 +0300 |
---|---|---|
committer | Kate Arzamastseva <pshns@ukr.net> | 2011-08-08 19:37:09 +0300 |
commit | 6bdff0836f4bc1eee19aa8c30d03ba4bfc876733 (patch) | |
tree | d3240721d1a55cc0fe5453d266500ce3d88459cb | |
parent | f517998ad64483b6394211a971db2d3a660518c6 (diff) | |
download | rpg-6bdff0836f4bc1eee19aa8c30d03ba4bfc876733.tar.gz rpg-6bdff0836f4bc1eee19aa8c30d03ba4bfc876733.tar.bz2 |
issue #44 overwrite checkbox added to uploader
-rw-r--r-- | inc/media.php | 4 | ||||
-rw-r--r-- | lib/exe/ajax.php | 9 | ||||
-rw-r--r-- | lib/scripts/fileuploaderextended.js | 81 |
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); |