diff options
author | Robin Appelman <icewind1991@gmail.com> | 2011-06-04 20:16:44 +0200 |
---|---|---|
committer | Robin Appelman <icewind1991@gmail.com> | 2011-06-04 20:16:44 +0200 |
commit | 1eb0faa2642babdd3031fdfa611ee10d1a3ccec5 (patch) | |
tree | 78b311b484839586f78200bb4b537627de89958a /files/js/fileactions.js | |
parent | 3892fe55110ce86d742cabcf1422d96115590c5b (diff) | |
download | nextcloud-server-1eb0faa2642babdd3031fdfa611ee10d1a3ccec5.tar.gz nextcloud-server-1eb0faa2642babdd3031fdfa611ee10d1a3ccec5.zip |
make fileactions extendable by plugins
Diffstat (limited to 'files/js/fileactions.js')
-rw-r--r-- | files/js/fileactions.js | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/files/js/fileactions.js b/files/js/fileactions.js new file mode 100644 index 00000000000..bb02b639c57 --- /dev/null +++ b/files/js/fileactions.js @@ -0,0 +1,100 @@ +FileActions={ + actions:{}, + defaults:{}, + register:function(mime,name,action){ + if(!FileActions.actions[mime]){ + FileActions.actions[mime]={}; + } + FileActions.actions[mime][name]=action; + }, + setDefault:function(mime,name){ + FileActions.defaults[mime]=FileActions.actions[mime][name]; + }, + get:function(mime,type){ + var actions={}; + if(FileActions.actions.all){ + actions=$.extend( actions, FileActions.actions.all ) + } + if(mime){ + if(FileActions.actions[mime]){ + actions=$.extend( actions, FileActions.actions[mime] ) + } + var mimePart=mime.substr(0,mime.indexOf('/')); + if(FileActions.actions[mimePart]){ + actions=$.extend( actions, FileActions.actions[mimePart] ) + } + } + if(type){//type is 'dir' or 'file' + if(FileActions.actions[type]){ + actions=$.extend( actions, FileActions.actions[type] ) + } + } + return actions; + }, + getDefault:function(mime,type){ + if(mime){ + var mimePart=mime.substr(0,mime.indexOf('/')); + } + if(mime && FileActions.defaults[mime]){ + return FileActions.defaults[mime]; + }else if(mime && FileActions.defaults[mimePart]){ + return FileActions.defaults[mimePart]; + }else if(type && FileActions.defaults[type]){ + return FileActions.defaults[type]; + }else{ + return FileActions.defaults.all; + } + }, + display:function(parent){ + $('#file_menu>ul').empty(); + parent.append($('#file_menu')); + var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); + for(name in actions){ + var html='<li><a href="" alt="'+name+'">'+name+'</a></li>'; + var element=$(html); + element.data('action',name); + element.click(function(){ + event.preventDefault(); + actions[$(this).data('action')](FileActions.getCurrentFile()); + }); + $('#file_menu>ul').append(element); + } + $('#file_menu').slideToggle(250); + return false; + }, + getCurrentFile:function(){ + return $('#file_menu').parents('tr:first').attr('data-file'); + }, + getCurrentMimeType:function(){ + return $('#file_menu').parents('tr:first').attr('data-mime'); + }, + getCurrentType:function(){ + return $('#file_menu').parents('tr:first').attr('data-type'); + } +} + +FileActions.register('all','Download',function(filename){ + window.location='ajax/download.php?files='+filename+'&dir='+$('#dir').val(); + $('#file_menu').slideToggle(250); +}); + +FileActions.register('all','Delete',function(filename){ + $.ajax({ + url: 'ajax/delete.php', + data: "dir="+$('#dir').val()+"&file="+filename, + complete: function(data){ + boolOperationFinished(data, function(){ + FileList.remove(filename); + }); + } + }); +}); + +FileActions.setDefault('all','Download'); + +FileActions.register('dir','Open',function(filename){ + window.location='index.php?dir='+$('#dir').val()+'/'+filename; + $('#file_menu').slideToggle(250); +}); + +FileActions.setDefault('dir','Open');
\ No newline at end of file |