aboutsummaryrefslogtreecommitdiffstats
path: root/files/js
diff options
context:
space:
mode:
Diffstat (limited to 'files/js')
-rw-r--r--files/js/fileactions.js12
-rw-r--r--files/js/filelist.js16
-rw-r--r--files/js/files.js33
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;
+}