diff options
Diffstat (limited to 'files/js')
-rw-r--r-- | files/js/fileactions.js | 12 | ||||
-rw-r--r-- | files/js/filelist.js | 16 | ||||
-rw-r--r-- | files/js/files.js | 33 |
3 files changed, 41 insertions, 20 deletions
diff --git a/files/js/fileactions.js b/files/js/fileactions.js index 60c4fadedd0..5c6dc65d49d 100644 --- a/files/js/fileactions.js +++ b/files/js/fileactions.js @@ -59,6 +59,7 @@ FileActions={ if($('tr').filterAttr('data-file',file).data('renaming')){ return; } + parent.children('a.name').append('<span class="fileactions" />'); var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); for(name in actions){ if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){ @@ -66,11 +67,10 @@ FileActions={ if(img.call){ img=img(file); } - var html='<a href="#" original-title="'+name+'" class="action" style="display:none" />'; + var html='<a href="#" class="action" style="display:none">'; + if(img) { html+='<img src="'+img+'"/> '; } + html += name+'</a>'; var element=$(html); - if(img){ - element.append($('<img src="'+img+'"/>')); - } element.data('action',name); element.click(function(event){ event.stopPropagation(); @@ -81,7 +81,7 @@ FileActions={ action(currentFile); }); element.hide(); - parent.children('a.name').append(element); + parent.find('a.name>span.fileactions').append(element); } } if(actions['Delete']){ @@ -113,7 +113,7 @@ FileActions={ return false; }, hide:function(){ - $('#fileList .action').fadeOut(200,function(){ + $('#fileList span.fileactions').fadeOut(200,function(){ $(this).remove(); }); }, diff --git a/files/js/filelist.js b/files/js/filelist.js index 35847e06dfe..5bd85fc29ef 100644 --- a/files/js/filelist.js +++ b/files/js/filelist.js @@ -1,4 +1,5 @@ FileList={ + useUndo:true, update:function(fileListHtml) { $('#fileList').empty().html(fileListHtml); }, @@ -7,15 +8,15 @@ FileList={ var html='<tr data-type="file" data-size="'+size+'">'; if(name.indexOf('.')!=-1){ var basename=name.substr(0,name.lastIndexOf('.')); - var extention=name.substr(name.lastIndexOf('.')); + var extension=name.substr(name.lastIndexOf('.')); }else{ var basename=name; - var extention=false; + var extension=false; } html+='<td class="filename" style="background-image:url('+img+')"><input type="checkbox" />'; html+='<a class="name" href="download.php?file='+$('#dir').val()+'/'+name+'"><span class="nametext">'+basename - if(extention){ - html+='<span class="extention">'+extention+'</span>'; + if(extension){ + html+='<span class="extension">'+extension+'</span>'; } html+='</span></a></td>'; if(size!='Pending'){ @@ -147,7 +148,7 @@ FileList={ span.text(basename); td.children('a.name').append(span); if(newname.indexOf('.')>0){ - span.append($('<span class="extention">'+newname.substr(newname.lastIndexOf('.'))+'</span>')); + span.append($('<span class="extension">'+newname.substr(newname.lastIndexOf('.'))+'</span>')); } $.get(OC.filePath('files','ajax','rename.php'), { dir : $('#dir').val(), newname: newname, file: name },function(){ tr.data('renaming',false); @@ -163,7 +164,7 @@ FileList={ }); }, do_delete:function(files){ - if(FileList.deleteFiles){//finish any ongoing deletes first + if(FileList.deleteFiles || !FileList.useUndo){//finish any ongoing deletes first FileList.finishDelete(function(){ FileList.do_delete(files); }); @@ -196,7 +197,6 @@ FileList={ boolOperationFinished(data, function(){ $('#notification').fadeOut(); $.each(FileList.deleteFiles,function(index,file){ -// alert(file); FileList.remove(file); }); FileList.deleteCanceled=true; @@ -225,7 +225,7 @@ $(document).ready(function(){ } $('#notification').fadeOut(); }); - + FileList.useUndo=('onbeforeunload' in window) $(window).bind('beforeunload', function (){ FileList.finishDelete(null,true); }); diff --git a/files/js/files.js b/files/js/files.js index 1c0a40c2368..3ce95f992d0 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -13,9 +13,11 @@ $(document).ready(function() { //drag/drop of files $('#fileList tr td.filename').draggable(dragOptions); $('#fileList tr[data-type="dir"][data-write="true"] td.filename').droppable(folderDropOptions); - $('div.crumb').droppable(crumbDropOptions); + $('div.crumb:not(.last)').droppable(crumbDropOptions); $('ul#apps>li:first-child').data('dir',''); - $('ul#apps>li:first-child').droppable(crumbDropOptions); + if($('div.crumb').length){ + $('ul#apps>li:first-child').droppable(crumbDropOptions); + } // Triggers invisible file input $('.file_upload_button_wrapper').live('click', function() { @@ -209,12 +211,12 @@ $(document).ready(function() { var size=t('files','Pending'); } if(files){ - FileList.addFile(files[i].name,size,date,true); + FileList.addFile(getUniqueName(files[i].name),size,date,true); } } }else{ var filename=this.value.split('\\').pop(); //ie prepends C:\fakepath\ in front of the filename - FileList.addFile(filename,'Pending',date,true); + FileList.addFile(getUniqueName(filename),'Pending',date,true); } //clone the upload form and hide the new one to allow users to start a new upload while the old one is still uploading @@ -412,7 +414,7 @@ var dragOptions={ }; var folderDropOptions={ drop: function( event, ui ) { - var file=ui.draggable.text().trim(); + var file=ui.draggable.parent().data('file'); var target=$(this).text().trim(); var dir=$('#dir').val(); $.ajax({ @@ -438,7 +440,7 @@ var crumbDropOptions={ if(dir.substr(-1,1)!='/'){ dir=dir+'/'; } - if(target==dir){ + if(target==dir || target+'/'==dir){ return; } $.ajax({ @@ -568,3 +570,22 @@ function getMimeIcon(mime, ready){ } } getMimeIcon.cache={}; + +function getUniqueName(name){ + if($('tr').filterAttr('data-file',name).length>0){ + var parts=name.split('.'); + var extension=parts.pop(); + var base=parts.join('.'); + numMatch=base.match(/\((\d+)\)/); + var num=2; + if(numMatch && numMatch.length>0){ + num=parseInt(numMatch[numMatch.length-1])+1; + base=base.split('(') + base.pop(); + base=base.join('(').trim(); + } + name=base+' ('+num+').'+extension; + return getUniqueName(name); + } + return name; +} |