FileActions={ actions:{}, defaults:{}, icons:{}, currentFile:null, register:function(mime,name,icon,action){ if(!FileActions.actions[mime]){ FileActions.actions[mime]={}; } FileActions.actions[mime][name]=action; FileActions.icons[name]=icon; }, 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, filename, type){ FileActions.currentFile=parent; $('#fileList span.fileactions, #fileList td.date a.action').remove(); var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); var file=FileActions.getCurrentFile(); if($('tr').filterAttr('data-file',file).data('renaming')){ return; } parent.children('a.name').append(''); var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); for(name in actions){ // no rename and share action for the 'Shared' dir if((name=='Rename' || name =='Share') && type=='dir' && filename=='Shared') { continue; } if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){ var img=FileActions.icons[name]; if(img.call){ img=img(file); } var html=''; var element=$(html); element.data('action',name); element.click(function(event){ event.stopPropagation(); event.preventDefault(); var action=actions[$(this).data('action')]; var currentFile=FileActions.getCurrentFile(); FileActions.hide(); action(currentFile); }); element.hide(); parent.find('a.name>span.fileactions').append(element); } } if(actions['Delete'] && (type!='dir' || filename != 'Shared')){ // no delete action for the 'Shared' dir var img=FileActions.icons['Delete']; if(img.call){ img=img(file); } var html='