From b95996c02c8b94a69eba21e31e0c5a3d30756d6d Mon Sep 17 00:00:00 2001
From: Bjoern Schiessle <schiessle@owncloud.com>
Date: Fri, 29 Jun 2012 15:23:04 +0200
Subject: [PATCH] - when creating a new text file or directory which name
 already exist use the same pattern as for file uploads in such a case (add a
 (N) to the name) - don't allow renaming if a file/directory with the name
 already exists

---
 apps/files/js/files.js | 13 ++++++++++---
 lib/files.php          |  4 +++-
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 3ba473e023..86c5185bf7 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -451,7 +451,7 @@ $(document).ready(function() {
 		$(this).append(input);
 		input.focus();
 		input.change(function(){
-			var name=$(this).val();
+			var name=getUniqueName($(this).val());
 			if(type != 'web' && name.indexOf('/')!=-1){
 				$('#notification').text(t('files','Invalid name, \'/\' is not allowed.'));
 				$('#notification').fadeIn();
@@ -496,6 +496,7 @@ $(document).ready(function() {
 					}else{//or the domain
 						localName=(localName.match(/:\/\/(.[^/]+)/)[1]).replace('www.','');
 					}
+					localName = getUniqueName(localName);
 					$.post(
 						OC.filePath('files','ajax','newfile.php'),
 						{dir:$('#dir').val(),source:name,filename:localName},
@@ -737,7 +738,10 @@ getMimeIcon.cache={};
 function getUniqueName(name){
 	if($('tr').filterAttr('data-file',name).length>0){
 		var parts=name.split('.');
-		var extension=parts.pop();
+		var extension = "";
+		if (parts.length > 1) {
+			extension=parts.pop();
+		}
 		var base=parts.join('.');
 		numMatch=base.match(/\((\d+)\)/);
 		var num=2;
@@ -747,7 +751,10 @@ function getUniqueName(name){
 			base.pop();
 			base=base.join('(').trim();
 		}
-		name=base+' ('+num+').'+extension;
+		name=base+' ('+num+')';
+		if (extension) {
+			name = name+'.'+extension;
+		}
 		return getUniqueName(name);
 	}
 	return name;
diff --git a/lib/files.php b/lib/files.php
index 469c3a15b8..cee273d95c 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -167,10 +167,12 @@ class OC_Files {
 	* @param file $target
 	*/
 	public static function move($sourceDir,$source,$targetDir,$target){
-		if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared')){
+		if(OC_User::isLoggedIn() && ($sourceDir != '' || $source != 'Shared') && !OC_Filesystem::file_exists($tagetDir.'/'.$target)){
 			$targetFile=self::normalizePath($targetDir.'/'.$target);
 			$sourceFile=self::normalizePath($sourceDir.'/'.$source);
 			return OC_Filesystem::rename($sourceFile,$targetFile);
+		} else {
+			return false;
 		}
 	}
 
-- 
GitLab