diff options
author | Morris Jobke <morris.jobke@gmail.com> | 2013-05-03 00:15:28 +0200 |
---|---|---|
committer | Morris Jobke <morris.jobke@gmail.com> | 2013-06-15 09:58:27 +0200 |
commit | e0547a25ab9c5a3d9454611f72e00e3bc667e2d2 (patch) | |
tree | 7b8c8e9f556937f26fb8d478e29d095d4c25f83d /apps/files | |
parent | ab411d2700c01886a67b30bce5f630cc6865a9bf (diff) | |
download | nextcloud-server-e0547a25ab9c5a3d9454611f72e00e3bc667e2d2.tar.gz nextcloud-server-e0547a25ab9c5a3d9454611f72e00e3bc667e2d2.zip |
if rename of file fails, the rename is undone in the view - #fix 2820
Changes:
* OC.dialog -> OC.Notification
* Added test
* Fixed OC.Notification.show() issue for queued items
* Highlight failed item and show notification
Diffstat (limited to 'apps/files')
-rw-r--r-- | apps/files/js/filelist.js | 41 | ||||
-rw-r--r-- | apps/files/lib/app.php | 2 | ||||
-rw-r--r-- | apps/files/tests/ajax_rename.php | 2 |
3 files changed, 38 insertions, 7 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index e19a35bbc5b..c6663836fd7 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -208,13 +208,44 @@ var FileList={ if (FileList.checkName(name, newname, false)) { newname = name; } else { - $.get(OC.filePath('files','ajax','rename.php'), { dir : $('#dir').val(), newname: newname, file: name },function(result) { - if (!result || result.status == 'error') { - OC.dialogs.alert(result.data.message, 'Error moving file'); - newname = name; + // save background image, because it's replaced by a spinner while async request + var oldBackgroundImage = td.css('background-image'); + // mark as loading + td.css('background-image', 'url('+ OC.imagePath('core', 'loading.gif') + ')'); + $.ajax({ + url: OC.filePath('files','ajax','rename.php'), + data: { + dir : $('#dir').val(), + newname: newname, + file: name + }, + success: function(result) { + if (!result || result.status === 'error') { + OC.Notification.show(result.data.message); + newname = name; + // revert changes + tr.attr('data-file', newname); + var path = td.children('a.name').attr('href'); + td.children('a.name').attr('href', path.replace(encodeURIComponent(name), encodeURIComponent(newname))); + if (newname.indexOf('.') > 0 && tr.data('type') !== 'dir') { + var basename=newname.substr(0,newname.lastIndexOf('.')); + } else { + var basename=newname; + } + td.find('a.name span.nametext').text(basename); + if (newname.indexOf('.') > 0 && tr.data('type') !== 'dir') { + if (td.find('a.name span.extension').length === 0 ) { + td.find('a.name span.nametext').append('<span class="extension"></span>'); + } + td.find('a.name span.extension').text(newname.substr(newname.lastIndexOf('.'))); + } + tr.find('.fileactions').effect('highlight', {}, 5000); + tr.effect('highlight', {}, 5000); + } + // remove loading mark and recover old image + td.css('background-image', oldBackgroundImage); } }); - } } tr.data('renaming',false); diff --git a/apps/files/lib/app.php b/apps/files/lib/app.php index c2a4b9c2675..f7052ef80b0 100644 --- a/apps/files/lib/app.php +++ b/apps/files/lib/app.php @@ -70,7 +70,7 @@ class App { } else { // rename failed $result['data'] = array( - 'message' => $this->l10n->t('Unable to rename file') + 'message' => $this->l10n->t('%s could not be renamed', array($oldname)) ); } return $result; diff --git a/apps/files/tests/ajax_rename.php b/apps/files/tests/ajax_rename.php index 23e5761ddda..2b90a11743d 100644 --- a/apps/files/tests/ajax_rename.php +++ b/apps/files/tests/ajax_rename.php @@ -50,7 +50,7 @@ class Test_OC_Files_App_Rename extends \PHPUnit_Framework_TestCase { $result = $this->files->rename($dir, $oldname, $newname); $expected = array( 'success' => false, - 'data' => array('message' => 'Unable to rename file') + 'data' => array('message' => '%s could not be renamed') ); $this->assertEquals($expected, $result); |