aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <morris.jobke@gmail.com>2013-07-01 01:28:17 -0700
committerMorris Jobke <morris.jobke@gmail.com>2013-07-01 01:28:17 -0700
commitb19033b3533ce4726763aac6247aa156eb0a87d6 (patch)
treea07308e75b5f00c952a622bcbfecd267b6837f43
parent80a8b9c99581d6e2e20276e4c0273e50b67e4658 (diff)
parente0547a25ab9c5a3d9454611f72e00e3bc667e2d2 (diff)
downloadnextcloud-server-b19033b3533ce4726763aac6247aa156eb0a87d6.tar.gz
nextcloud-server-b19033b3533ce4726763aac6247aa156eb0a87d6.zip
Merge pull request #3223 from owncloud/fix-2820
if rename of file fails, the rename is undone in the view - fix 2820
-rw-r--r--apps/files/js/filelist.js41
-rw-r--r--apps/files/lib/app.php2
-rw-r--r--apps/files/tests/ajax_rename.php2
-rw-r--r--core/js/js.js4
4 files changed, 40 insertions, 9 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index f4ca098eed1..c15fc21abf4 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -220,13 +220,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);
diff --git a/core/js/js.js b/core/js/js.js
index 08b429a555b..3904787c4e5 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -352,10 +352,10 @@ OC.Notification={
},
show: function(text) {
if(($('#notification').filter('span.undo').length == 1) || OC.Notification.isHidden()){
- $('#notification').html(text);
+ $('#notification').text(text);
$('#notification').fadeIn().css("display","inline");
}else{
- OC.Notification.queuedNotifications.push($(text).html());
+ OC.Notification.queuedNotifications.push($('<div/>').text(text).html());
}
},
isHidden: function() {