/** * ownCloud - ajax frontend * * @author Robin Appelman * @copyright 2010 Robin Appelman icewind1991@gmail.com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * */ OC_FILES=new Object(); OC_FILES.cache=new Object(); OC_FILES.cache.files=Array(); OC_FILES.cache.incomplete=Array(); OC_FILES.cache.actions=new Object(); OC_FILES.cache.actions.move=Array(); OC_FILES.cache.actions.rename=Array(); OC_FILES.cache.actions['new']=Array(); OC_FILES.cache.actions['delete']=Array(); OC_FILES.cache.actions.upload=Array(); OC_FILES.cache.refresh=function(){ OC_FILES.getdirectorycontent(OC_FILES.dir,false,true); } OC_FILES.xmlloader=new OCXMLLoader(); OC_FILES.getdirectorycontent_parse=function(req){ var files=new Array(); var response=req.responseXML; OC_FILES.cache.files=Array(); if(response){ var dir=response.getElementsByTagName('dir').item(0); var fileElements=response.getElementsByTagName('file'); if(fileElements.length>0){ for(index=0;indexmax_upload){ new OCNotification('File to large',10000) return false; } } file.dir=dir; file.name=name; file.type='file'; file.size=size; file.iframeId=iframeId; if(!OC_FILES.cache.incomplete[dir]){ OC_FILES.cache.incomplete[dir]=Array(); } OC_FILES.cache.incomplete[dir][name]=Array(); OC_FILES.cache.incomplete[dir][name]['name']=name; OC_FILES.cache.incomplete[dir][name]['type']='incomplete'; OC_FILES.cache.incomplete[dir][name]['size']=size; OC_FILES.uploadIFrames[iframeId].file=file; OC_FILES.uploadIFrames[iframeId].addEvent('onload',new callBack(OC_FILES.upload_callback,OC_FILES.uploadIFrames[iframeId])); OC_FILES.browser.files.add(name,'incomplete',size); OC_FILES.uploadForm.submit(); if(OC_FILES.uploadForm.parentElement){ OC_FILES.uploadForm.className='hidden'; OC_FILES.uploadForm.parentNode.removeChild(OC_FILES.uploadForm); var body=document.getElementsByTagName('body').item(0); body.appendChild(OC_FILES.uploadForm); OC_FILES.uploadIFrames[iframeId].uploadForm=OC_FILES.uploadForm; OC_FILES.browser.showuploader(OC_FILES.dir,OC_FILES.uploadIFrames[iframeId].uploadParent,OC_FILES.maxUpload) } } OC_FILES.upload_callback=function(iframeId){ var file=this.file; if(OC_FILES.cache.incomplete[file.dir][file.name]){ OC_FILES.browser.files.remove(file.name); OC_FILES.cache.files[file.name]=OC_FILES.cache.incomplete[file.dir][file.name] delete OC_FILES.cache.incomplete[file.dir][file.name]; OC_FILES.cache.files[file.name]['type']=file.type; this.uploadForm.parentNode.removeChild(this.uploadForm); this.parentNode.removeChild(this); delete OC_FILES.uploadIFrames[file.iframeId]; OC_FILES.browser.show(file.dir); } } OC_FILES.rename=function(dir,file,event){ if(event && event.preventDefault){ event.preventDefault(); } var item=document.getElementById(file+'_newname'); var newname=item.value; if(newname==''){ return false; }else if(file==newname){ OC_FILES.browser.show(OC_FILES.dir); return false; } xmlloader=new OCXMLLoader(); xmlloader.setCallBack(OC_FILES.rename_callback); xmlloader.arg=new Object; xmlloader.arg.oldname=file; xmlloader.arg.newname=newname; xmlloader.arg.dir=dir; xmlloader.arg.type=OC_FILES.cache.files[file]['type']; xmlloader.load('files/rename.php?dir='+dir+'&file='+file+'&newname='+newname); if(!OC_FILES.cache.incomplete[dir]){ OC_FILES.cache.incomplete[dir]=Array(); } OC_FILES.cache.files[file]['type']='incomplete'; OC_FILES.cache.incomplete[dir][newname]=OC_FILES.cache.files[file]; OC_FILES.cache.incomplete[dir][newname]['name']=newname; OC_FILES.browser.files.remove(file); OC_FILES.browser.files.add(newname,'incomplete'); return false; } OC_FILES.rename_callback=function(req,file){ delete OC_FILES.cache.files[file.oldname] OC_FILES.cache.files[file.newname]=OC_FILES.cache.incomplete[file.dir][file.newname]; delete OC_FILES.cache.incomplete[file.dir][file.newname]; OC_FILES.browser.files.remove(file.newname); OC_FILES.cache.files[file.newname]['type']=file.type; OC_FILES.browser.show(OC_FILES.dir); } OC_FILES.remove=function(dir,file){ remove=confirm('remove file \''+file+'\'?'); if(remove){ xmlloader=new OCXMLLoader(); xmlloader.setCallBack(OC_FILES.remove_callback); xmlloader.arg=file; xmlloader.load('files/delete.php?dir='+dir+'&file='+file); OC_FILES.browser.files.remove(file); delete OC_FILES.cache.files[file]; } } OC_FILES.remove_callback=function(req,name){ // OC_FILES.browser.files.remove(name); // OC_FILES.browser.show(OC_FILES.dir); } OC_FILES.getSelected=function(){ var nodes=document.getElementsByName('fileSelector'); var files=Array(); for(index in nodes){ if(nodes[index].checked){ files[files.length]=nodes[index].value; } } return files; } OC_FILES.newFile=function(type,name,dir){ xmlloader=new OCXMLLoader(); xmlloader.arg=new Object; xmlloader.arg.name=name; xmlloader.arg.dir=dir; xmlloader.arg.type=type; xmlloader.setCallBack(OC_FILES.new_callback); xmlloader.load('files/new.php?type='+type+'&dir='+dir+'&name='+name); if(!OC_FILES.cache.incomplete[dir]){ OC_FILES.cache.incomplete[dir]=Array(); } OC_FILES.cache.incomplete[dir][name]=Array(); OC_FILES.cache.incomplete[dir][name]['name']=name; OC_FILES.cache.incomplete[dir][name]['type']='incomplete'; OC_FILES.cache.incomplete[dir][name]['size']=0; OC_FILES.browser.files.add(name,'incomplete'); } OC_FILES.new_callback=function(req,file){ OC_FILES.cache.files[file.name]=OC_FILES.cache.incomplete[file.dir][file.name]; delete OC_FILES.cache.incomplete[file.dir][file.name]; OC_FILES.cache.files[file.name]['type']=file.type; OC_FILES.browser.files.remove(name); OC_FILES.browser.show(OC_FILES.dir); } OC_FILES.move=function(source,target,sourceDir,targetDir){ if(sourceDir!=targetDir || source!=target){ if(!OC_FILES.cache.incomplete[sourceDir]){ OC_FILES.cache.incomplete[sourceDir]=Array(); } if(!OC_FILES.cache.incomplete[targetDir]){ OC_FILES.cache.incomplete[targetDir]=Array(); } if(!OC_FILES.cache.incomplete[targetDir+'/'+target]){ OC_FILES.cache.incomplete[targetDir+'/'+target]=Array(); } xmlloader=new OCXMLLoader(); xmlloader.arg=new Object; xmlloader.arg.source=source; xmlloader.arg.target=target; xmlloader.arg.sourceDir=sourceDir; xmlloader.arg.targetDir=targetDir; xmlloader.arg.type=OC_FILES.cache.files[source]['type']; OC_FILES.cache.files[source]['type']='incomplete'; OC_FILES.cache.incomplete[targetDir+'/'+target][source]=OC_FILES.cache.files[source] xmlloader.setCallBack(OC_FILES.move_callback); xmlloader.load('files/move.php?sourcedir='+sourceDir+'&targetdir='+targetDir+'&source='+source+'&target='+target); } } OC_FILES.move_callback=function(req,file){ OC_FILES.cache.incomplete[file.targetDir+'/'+file.target][file.source]['type']=file.type; delete OC_FILES.cache.files[file.source]; OC_FILES.browser.show(OC_FILES.dir); } OC_FILES.selectAll=function(){ var value=document.getElementById('select_all').checked; var nodes=document.getElementsByName('fileSelector'); for(index in nodes){ if(nodes[index].value){ nodes[index].checked=value; } } } OC_FILES.action_selected=function(){ var dropdown=action=document.getElementById('selected_action'); var action=dropdown.options[dropdown.selectedIndex].value; if(OC_FILES.actions_selected[action] && OC_FILES.actions_selected[action].call){ OC_FILES.actions_selected[action].call(OC_FILES); } } OC_FILES.actions_selected=new Object(); OC_FILES.actions_selected.download=function(){ files=OC_FILES.getSelected(); if(files.length==0){ return false; }else if(files.length>1){ files.join(';'); }else{ files=files[0]; } window.location=WEBROOT+'/files/get_file.php?dir='+OC_FILES.dir+'&files='+files; } OC_FILES.actions_selected['delete']=function(){ files=OC_FILES.getSelected(); for(index in files){ OC_FILES.remove(OC_FILES.dir,files[index]); } } OC_FILES.files=Array(); OC_FILES.file=function(dir,file,type){ if(file){ this.type=type; this.file=file; this.dir=dir; this.actions=new Object(); if(file.lastIndexOf('.')){ this.extention=file.substr(file.lastIndexOf('.')+1); }else{ this.extention; } for(index in OC_FILES.fileActions.all){ if(OC_FILES.fileActions.all[index].call){ this.actions[index]=OC_FILES.fileActions.all[index]; } } if(OC_FILES.fileActions[this.type]){ for(index in OC_FILES.fileActions[this.type]){ if(OC_FILES.fileActions[this.type][index].call){ this.actions[index]=OC_FILES.fileActions[this.type][index]; } } } if(OC_FILES.fileActions[this.extention]){ for(index in OC_FILES.fileActions[this.extention]){ if(OC_FILES.fileActions[this.extention][index].call){ this.actions[index]=OC_FILES.fileActions[this.extention][index]; } } } } } OC_FILES.file.prototype.showactions=function(){ OC_FILES.browser.showactions(this.file); } OC_FILES.file.prototype.hideactions=function(){ OC_FILES.browser.showactions(this.file,true); } OC_FILES.fileActions=new Object(); OC_FILES.fileActions.all=new Object(); OC_FILES.fileActions.all.remove=function(){ OC_FILES.remove(this.dir,this.file); } OC_FILES.fileActions.all.rename=function(){ OC_FILES.browser.show_rename(this.dir,this.file); } OC_FILES.fileActions.all.download=function(){ window.location=WEBROOT+'/files/get_file.php?dir='+this.dir+'&files='+this.file; } OC_FILES.fileActions.all['default']=OC_FILES.fileActions.all.download; OC_FILES.fileActions.dir=new Object() OC_FILES.fileActions.dir.open=function(){ OC_FILES.browser.show(this.dir+'/'+this.file); } OC_FILES.fileActions.dir['default']=OC_FILES.fileActions.dir.open; OC_FILES.fileActions.dir.dropOn=function(file){ OC_FILES.move(file.file,this.file,file.dir,this.dir); } OC_FILES.fileActions.jpg=new Object() OC_FILES.fileActions.jpg.show=function(){ // window.open(WEBROOT+'/files/open_file.php?dir='+this.dir+'&file='+this.file); OC_FILES.browser.showImage(this.dir,this.file); } OC_FILES.fileActions.jpg['default']=OC_FILES.fileActions.jpg.show; OC_FILES.fileActions.jpeg=OC_FILES.fileActions.jpg OC_FILES.fileActions.png=OC_FILES.fileActions.jpg OC_FILES.fileActions.gif=OC_FILES.fileActions.jpg OC_FILES.fileActions.bmp=OC_FILES.fileActions.jpg