From 837eb1871d9b99fce32a418dd13284edfc41a398 Mon Sep 17 00:00:00 2001
From: Michael Gapczynski <mtgap@owncloud.com>
Date: Wed, 5 Sep 2012 22:13:50 -0400
Subject: [PATCH] Don't delete the file anymore to replace it in the UI, just
 overwrite it

---
 apps/files/js/filelist.js | 27 +++++++++++----------------
 lib/filecache.php         |  4 ++++
 lib/files.php             |  2 +-
 3 files changed, 16 insertions(+), 17 deletions(-)

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);
-- 
GitLab