diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index a9e48f2405..b777785f4d 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -240,22 +240,17 @@ var FileList={ }, finishReplace:function() { if (!FileList.replaceCanceled && FileList.replaceOldName && FileList.replaceNewName) { - // Delete the file being replaced and rename the replacement - FileList.deleteCanceled = false; - FileList.deleteFiles = [FileList.replaceNewName]; - FileList.finishDelete(function() { - $.ajax({url: OC.filePath('files', 'ajax', 'rename.php'), async: false, data: { dir: $('#dir').val(), newname: FileList.replaceNewName, file: FileList.replaceOldName }, success: function(result) { - if (result && result.status == 'success') { - $('tr').filterAttr('data-replace', 'true').removeAttr('data-replace'); - } else { - OC.dialogs.alert(result.data.message, 'Error moving file'); - } - FileList.replaceCanceled = true; - FileList.replaceOldName = null; - FileList.replaceNewName = null; - FileList.lastAction = null; - }}); - }, true); + $.ajax({url: OC.filePath('files', 'ajax', 'rename.php'), async: false, data: { dir: $('#dir').val(), newname: FileList.replaceNewName, file: FileList.replaceOldName }, success: function(result) { + if (result && result.status == 'success') { + $('tr').filterAttr('data-replace', 'true').removeAttr('data-replace'); + } else { + OC.dialogs.alert(result.data.message, 'Error moving file'); + } + FileList.replaceCanceled = true; + FileList.replaceOldName = null; + FileList.replaceNewName = null; + FileList.lastAction = null; + }}); } }, do_delete:function(files){ diff --git a/lib/filecache.php b/lib/filecache.php index 364b908bcf..811e8a3e6a 100644 --- a/lib/filecache.php +++ b/lib/filecache.php @@ -155,6 +155,10 @@ class OC_FileCache{ if($root===false){ $root=OC_Filesystem::getRoot(); } + // If replacing an existing file, delete the file + if (self::inCache($newPath, $root)) { + self::delete($newPath, $root); + } $oldPath=$root.$oldPath; $newPath=$root.$newPath; $newParent=self::getParentId($newPath); diff --git a/lib/files.php b/lib/files.php index b8af5e04b7..00cbc63aba 100644 --- a/lib/files.php +++ b/lib/files.php @@ -202,7 +202,7 @@ class OC_Files { * @param file $target */ public static function move($sourceDir,$source,$targetDir,$target){ - if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared') && !OC_Filesystem::file_exists($targetDir.'/'.$target)){ + if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared')){ $targetFile=self::normalizePath($targetDir.'/'.$target); $sourceFile=self::normalizePath($sourceDir.'/'.$source); return OC_Filesystem::rename($sourceFile,$targetFile);