diff options
author | Bart Visscher <bartv@thisnet.nl> | 2012-08-28 08:12:08 +0200 |
---|---|---|
committer | Bart Visscher <bartv@thisnet.nl> | 2012-08-29 20:16:39 +0200 |
commit | cbaf858dea0f2094805edb6aa223bdd6877fff5b (patch) | |
tree | 9da83c325bb6ab94160bec964b8ef64aeda745ae /apps/files/js | |
parent | 3b9fac8f81b76af988ea620a207e6c65fa665589 (diff) | |
parent | 80374c7cb2f3c98e350c95f92a9785aacef5d2c4 (diff) | |
download | nextcloud-server-cbaf858dea0f2094805edb6aa223bdd6877fff5b.tar.gz nextcloud-server-cbaf858dea0f2094805edb6aa223bdd6877fff5b.zip |
Merge remote-tracking branch 'gitorious/master' into routing
Conflicts:
apps/files/js/fileactions.js
apps/files_archive/js/archive.js
Diffstat (limited to 'apps/files/js')
-rw-r--r-- | apps/files/js/fileactions.js | 58 | ||||
-rw-r--r-- | apps/files/js/filelist.js | 42 | ||||
-rw-r--r-- | apps/files/js/files.js | 35 |
3 files changed, 84 insertions, 51 deletions
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index cecfddbf1cf..44c04bf0d71 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -1,19 +1,28 @@ FileActions={ + PERMISSION_CREATE:4, + PERMISSION_READ:1, + PERMISSION_UPDATE:2, + PERMISSION_DELETE:8, + PERMISSION_SHARE:16, actions:{}, defaults:{}, icons:{}, currentFile:null, - register:function(mime,name,icon,action){ + register:function(mime,name,permissions,icon,action){ if(!FileActions.actions[mime]){ FileActions.actions[mime]={}; } - FileActions.actions[mime][name]=action; + if (!FileActions.actions[mime][name]) { + FileActions.actions[mime][name] = {}; + } + FileActions.actions[mime][name]['action'] = action; + FileActions.actions[mime][name]['permissions'] = permissions; FileActions.icons[name]=icon; }, setDefault:function(mime,name){ FileActions.defaults[mime]=name; }, - get:function(mime,type){ + get:function(mime,type,permissions){ var actions={}; if(FileActions.actions.all){ actions=$.extend( actions, FileActions.actions.all ) @@ -32,9 +41,15 @@ FileActions={ actions=$.extend( actions, FileActions.actions[type] ) } } - return actions; + var filteredActions = {}; + $.each(actions, function(name, action) { + if (action.permissions & permissions) { + filteredActions[name] = action.action; + } + }); + return filteredActions; }, - getDefault:function(mime,type){ + getDefault:function(mime,type,permissions){ if(mime){ var mimePart=mime.substr(0,mime.indexOf('/')); } @@ -48,22 +63,24 @@ FileActions={ }else{ name=FileActions.defaults.all; } - var actions=this.get(mime,type); + var actions=this.get(mime,type,permissions); return actions[name]; }, - display:function(parent, filename, type){ + display:function(parent){ FileActions.currentFile=parent; $('#fileList span.fileactions, #fileList td.date a.action').remove(); - var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); + var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType(), FileActions.getCurrentPermissions()); var file=FileActions.getCurrentFile(); 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()); + var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType(), FileActions.getCurrentPermissions()); for(name in actions){ - // no rename and share action for the 'Shared' dir - if((name=='Rename' || name =='Share') && type=='dir' && filename=='Shared') { continue; } + // NOTE: Temporary fix to prevent rename action in root of Shared directory + if (name == 'Rename' && $('#dir').val() == '/Shared') { + continue; + } if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){ var img=FileActions.icons[name]; if(img.call){ @@ -86,16 +103,12 @@ FileActions={ parent.find('a.name>span.fileactions').append(element); } } - if(actions['Delete'] && (type!='dir' || filename != 'Shared')){ // no delete action for the 'Shared' dir + if(actions['Delete']){ var img=FileActions.icons['Delete']; if(img.call){ img=img(file); } - if ($('#dir').val().indexOf('Shared') != -1) { - var html='<a href="#" original-title="' + t('files', 'Unshare') + '" class="action delete" style="display:none" />'; - } else { - var html='<a href="#" original-title="' + t('files', 'Delete') + '" class="action delete" style="display:none" />'; - } + var html='<a href="#" original-title="' + t('files', 'Delete') + '" class="action delete" style="display:none" />'; var element=$(html); if(img){ element.append($('<img src="'+img+'"/>')); @@ -131,6 +144,9 @@ FileActions={ }, getCurrentType:function(){ return FileActions.currentFile.parent().attr('data-type'); + }, + getCurrentPermissions:function() { + return FileActions.currentFile.parent().data('permissions'); } } @@ -140,12 +156,12 @@ $(document).ready(function(){ } else { var downloadScope = 'file'; } - FileActions.register(downloadScope,'Download',function(){return OC.imagePath('core','actions/download')},function(filename){ + FileActions.register(downloadScope,'Download', FileActions.PERMISSION_READ, function(){return OC.imagePath('core','actions/download')},function(filename){ window.location=OC.filePath('files', 'ajax', 'download.php') + encodeURIComponent('?files='+encodeURIComponent(filename)+'&dir='+encodeURIComponent($('#dir').val())); }); }); -FileActions.register('all','Delete',function(){return OC.imagePath('core','actions/delete')},function(filename){ +FileActions.register('all','Delete', FileActions.PERMISSION_DELETE, function(){return OC.imagePath('core','actions/delete')},function(filename){ if(Files.cancelUpload(filename)) { if(filename.substr){ filename=[filename]; @@ -163,11 +179,11 @@ FileActions.register('all','Delete',function(){return OC.imagePath('core','actio $('.tipsy').remove(); }); -FileActions.register('all','Rename',function(){return OC.imagePath('core','actions/rename')},function(filename){ +FileActions.register('all','Rename', FileActions.PERMISSION_UPDATE, function(){return OC.imagePath('core','actions/rename')},function(filename){ FileList.rename(filename); }); -FileActions.register('dir','Open','',function(filename){ +FileActions.register('dir','Open', FileActions.PERMISSION_READ, '', function(filename){ window.location=OC.linkTo('files', 'index.php') + '?dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename); }); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 0bfc810baf2..7c97f82488d 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -151,7 +151,7 @@ FileList={ } }); } - + } tr.attr('data-file', newname); var path = td.children('a.name').attr('href'); @@ -189,7 +189,7 @@ FileList={ FileList.replaceCanceled = false; FileList.replaceOldName = oldName; FileList.replaceNewName = newName; - FileList.lastAction = function() { + FileList.lastAction = function() { FileList.finishReplace(); }; $('#notification').html(t('files', 'replaced')+' '+newName+' '+t('files', 'with')+' '+oldName+'<span class="undo">'+t('files', 'undo')+'</span>'); @@ -236,23 +236,13 @@ FileList={ do_delete:function(files){ // Finish any existing actions if (FileList.lastAction || !FileList.useUndo) { + if(!FileList.deleteFiles) { + FileList.prepareDeletion(files); + } FileList.lastAction(); + return; } - if(files.substr){ - files=[files]; - } - $.each(files,function(index,file){ - var files = $('tr').filterAttr('data-file',file); - files.hide(); - files.find('input[type="checkbox"]').removeAttr('checked'); - files.removeClass('selected'); - }); - procesSelection(); - FileList.deleteCanceled=false; - FileList.deleteFiles=files; - FileList.lastAction = function() { - FileList.finishDelete(null, true); - }; + FileList.prepareDeletion(files); $('#notification').html(t('files', 'deleted')+' '+files+'<span class="undo">'+t('files', 'undo')+'</span>'); $('#notification').fadeIn(); }, @@ -279,6 +269,23 @@ FileList={ } }); } + }, + prepareDeletion:function(files){ + if(files.substr){ + files=[files]; + } + $.each(files,function(index,file){ + var files = $('tr').filterAttr('data-file',file); + files.hide(); + files.find('input[type="checkbox"]').removeAttr('checked'); + files.removeClass('selected'); + }); + procesSelection(); + FileList.deleteCanceled=false; + FileList.deleteFiles=files; + FileList.lastAction = function() { + FileList.finishDelete(null, true); + }; } } @@ -297,6 +304,7 @@ $(document).ready(function(){ FileList.replaceOldName = null; FileList.replaceNewName = null; } + FileList.lastAction = null; $('#notification').fadeOut(); }); $('#notification .replace').live('click', function() { diff --git a/apps/files/js/files.js b/apps/files/js/files.js index 935101e86e2..049afea4f61 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -56,7 +56,7 @@ $(document).ready(function() { // Sets the file-action buttons behaviour : $('tr').live('mouseenter',function(event) { - FileActions.display($(this).children('td.filename'), $(this).attr('data-file'), $(this).attr('data-type')); + FileActions.display($(this).children('td.filename')); }); $('tr').live('mouseleave',function(event) { FileActions.hide(); @@ -106,7 +106,8 @@ $(document).ready(function() { if(!renaming && !FileList.isLoading(filename)){ var mime=$(this).parent().parent().data('mime'); var type=$(this).parent().parent().data('type'); - var action=FileActions.getDefault(mime,type); + var permissions = $(this).parent().parent().data('permissions'); + var action=FileActions.getDefault(mime,type, permissions); if(action){ action(filename); } @@ -462,14 +463,18 @@ $(document).ready(function() { $.post( OC.filePath('files','ajax','newfile.php'), {dir:$('#dir').val(),filename:name,content:" \n"}, - function(data){ - var date=new Date(); - FileList.addFile(name,0,date); - var tr=$('tr').filterAttr('data-file',name); - tr.data('mime','text/plain'); - getMimeIcon('text/plain',function(path){ - tr.find('td.filename').attr('style','background-image:url('+path+')'); - }); + function(result){ + if (result.status == 'success') { + var date=new Date(); + FileList.addFile(name,0,date); + var tr=$('tr').filterAttr('data-file',name); + tr.data('mime','text/plain'); + getMimeIcon('text/plain',function(path){ + tr.find('td.filename').attr('style','background-image:url('+path+')'); + }); + } else { + OC.dialogs.alert(result.data.message, 'Error'); + } } ); break; @@ -477,9 +482,13 @@ $(document).ready(function() { $.post( OC.filePath('files','ajax','newfolder.php'), {dir:$('#dir').val(),foldername:name}, - function(data){ - var date=new Date(); - FileList.addDir(name,0,date); + function(result){ + if (result.status == 'success') { + var date=new Date(); + FileList.addDir(name,0,date); + } else { + OC.dialogs.alert(result.data.message, 'Error'); + } } ); break; |