summaryrefslogtreecommitdiffstats
path: root/files/js/fileactions.js
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-06-04 20:16:44 +0200
committerRobin Appelman <icewind1991@gmail.com>2011-06-04 20:16:44 +0200
commit1eb0faa2642babdd3031fdfa611ee10d1a3ccec5 (patch)
tree78b311b484839586f78200bb4b537627de89958a /files/js/fileactions.js
parent3892fe55110ce86d742cabcf1422d96115590c5b (diff)
downloadnextcloud-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.js100
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