]> source.dussan.org Git - nextcloud-server.git/commitdiff
- when creating a new text file or directory which name already exist use the same...
authorBjoern Schiessle <schiessle@owncloud.com>
Fri, 29 Jun 2012 13:23:04 +0000 (15:23 +0200)
committerBjoern Schiessle <schiessle@owncloud.com>
Fri, 29 Jun 2012 13:23:04 +0000 (15:23 +0200)
- don't allow renaming if a file/directory with the name already exists

apps/files/js/files.js
lib/files.php

index 3ba473e023d6f8b60d3f4f2b6940ec4663df5a2a..86c5185bf728b6752b2f924375531259bdc61a7e 100644 (file)
@@ -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;
index 469c3a15b8eb9ea69f8befc6b53f711303d74d6c..cee273d95c93eaf15e1275138098d59925a6498a 100644 (file)
@@ -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;
                }
        }