summaryrefslogtreecommitdiffstats
path: root/files/js/fileactions.js
blob: 1bdbc4ac0bb17a1cb19e2cb4ca19512daf0eafcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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]=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('/'));
		}
		var name=false;
		if(mime && FileActions.defaults[mime]){
			name=FileActions.defaults[mime];
		}else if(mime && FileActions.defaults[mimePart]){
			name=FileActions.defaults[mimePart];
		}else if(type && FileActions.defaults[type]){
			name=FileActions.defaults[type];
		}else{
			name=FileActions.defaults.all;
		}
		var actions=this.get(mime,type);
		return actions[name];
	},
	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){
				event.preventDefault();
				$('#file_menu').slideToggle(250);
				var action=actions[$(this).data('action')];
				$('#file_menu ul').empty();
				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();
});

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;
});

FileActions.setDefault('dir','Open');