/** * 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 too large',10000) return false; } } var mime=''; if(fileSelector.files && fileSelector.files[0].type){ var mime=fileSelector.files[0].type; } file.dir=OC_FILES.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.cache.incomplete[dir][name]['mime']=mime; 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,null,mime); 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); OC_FILES.uploadIFrames[file.iframeId]=null; if(file.name){ OC_FILES.browser.show(file.dir); }else{ OC_FILES.browser.show(file.dir,true);//if the data from the file isn't correct, force a reload of the cache } }else{ OC_FILES.browser.show(OC_FILES.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; } arg=new Object; arg.oldname=file; arg.newname=newname; arg.dir=dir; arg.type=OC_FILES.cache.files[file]['type']; OC_API.run('rename',{dir:dir,file:file,newname:newname},OC_FILES.rename_callback,arg) 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('delete file \''+file+'\'?'); if(remove){ OC_API.run('delete',{dir:dir,file:file},OC_FILES.remove_callback,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(var index=0;index1){ files=files.join(';'); }else{ files=files[0]; } OC_FILES.get(dir,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,mime){ if(file){ this.type=type; this.file=file; this.dir=dir; this.mime=mime; if(mime){ var mimeParts=mime.split('/'); this.mime1=mimeParts[0]; this.mime2=mimeParts[1]; } 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.mime1]){ for(index in OC_FILES.fileActions[this.mime1]){ if(OC_FILES.fileActions[this.mime1][index].call){ this.actions[index]=OC_FILES.fileActions[this.mime1][index]; } } } if(OC_FILES.fileActions[this.mime]){ for(index in OC_FILES.fileActions[this.mime]){ if(OC_FILES.fileActions[this.mime][index].call){ this.actions[index]=OC_FILES.fileActions[this.mime][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(){ OC_FILES.get(this.dir,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,file.file,file.dir,this.dir+'/'+this.file); } OC_FILES.fileActions.image=new Object() OC_FILES.fileActions.image.show=function(){ OC_FILES.browser.showImage(this.dir,this.file); } OC_FILES.fileActions.image['default']=OC_FILES.fileActions.image.show;