diff options
author | Robin <robin@Amaya.(none)> | 2010-04-19 19:46:42 +0200 |
---|---|---|
committer | Robin <robin@Amaya.(none)> | 2010-04-19 19:46:42 +0200 |
commit | 38bdf4083a6e0d90afb35ded0d67cab8a518b2ea (patch) | |
tree | 10a29805a025802c6dc12c2c65c18a48cb2742f7 /js/lib_files.js | |
parent | 6591740f5dd73969458de9a586790922fe6c27ea (diff) | |
download | nextcloud-server-38bdf4083a6e0d90afb35ded0d67cab8a518b2ea.tar.gz nextcloud-server-38bdf4083a6e0d90afb35ded0d67cab8a518b2ea.zip |
same fixes, this time hopefully without merge conflict
Diffstat (limited to 'js/lib_files.js')
-rw-r--r-- | js/lib_files.js | 354 |
1 files changed, 246 insertions, 108 deletions
diff --git a/js/lib_files.js b/js/lib_files.js index 443d440380e..c231af2f03f 100644 --- a/js/lib_files.js +++ b/js/lib_files.js @@ -20,92 +20,184 @@ */ 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; - if(response){ - var dir=response.getElementsByTagName('dir').item(0); - files['max_upload']=dir.getAttribute('max_upload'); - var fileElements=response.getElementsByTagName('file'); - if(fileElements.length>0){ - for(index=0;index<fileElements.length;index++){ -// for(index in fileElements){ - var file=new Array(); - var attributes=Array('size','name','type','directory','date'); - for(i in attributes){ - var name=attributes[i]; - file[name]=fileElements.item(index).getAttribute(name); - } - files[file.name]=file; - } - } - if(OC_FILES.getdirectorycontent_callback){ - OC_FILES.getdirectorycontent_callback(files); - } - } -} - -OC_FILES.getdirectorycontent=function(dir,callback){ - if(callback){ - OC_FILES.getdirectorycontent_callback=callback; - } - OC_FILES.xmlloader.setCallBack(OC_FILES.getdirectorycontent_parse); - OC_FILES.xmlloader.load('files/get_files.php?dir='+dir); + 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;index<fileElements.length;index++){ + var file=new Array(); + var attributes=Array('size','name','type','directory','date'); + for(i in attributes){ + var name=attributes[i]; + file[name]=fileElements.item(index).getAttribute(name); + } + files[file.name]=file; + } + } + OC_FILES.cache.files=files; + if(OC_FILES.cache.incomplete[OC_FILES.dir]){ + files=arrayMerge(files,OC_FILES.cache.incomplete[OC_FILES.dir]); + } + files['max_upload']=dir.getAttribute('max_upload'); + if(OC_FILES.getdirectorycontent_callback){ + OC_FILES.getdirectorycontent_callback(files); + } + } +} + +OC_FILES.getdirectorycontent=function(dir,callback,refresh){ + if(refresh || OC_FILES.dir!=dir){ + OC_FILES.dir=dir; + if(callback){ + OC_FILES.getdirectorycontent_callback=callback; + } + OC_FILES.xmlloader.setCallBack(OC_FILES.getdirectorycontent_parse); + OC_FILES.xmlloader.load('files/get_files.php?dir='+dir); + }else{ + var files=OC_FILES.cache.files + if(OC_FILES.cache.incomplete[OC_FILES.dir]){ + files=arrayMerge(files,OC_FILES.cache.incomplete[OC_FILES.dir]); + } + callback(files); + } } OC_FILES.dir=''; -OC_FILES.upload=function(dir){ - OC_FILES.uploadIFrame.addEvent('onload',new callBack(OC_FILES.upload_callback,OC_FILES),dir); - var fileSelector=document.getElementById('fileSelector'); - var max_upload=document.getElementById('max_upload').value; - if(fileSelector.files && fileSelector.files[0].fileSize){ - var size=fileSelector.files[0].fileSize; - if(size>max_upload){ - new OCNotification('File to large',10000) - return false; - } - } - OC_FILES.uploadForm.submit(); +OC_FILES.upload=function(dir,iframeId){ + var file=new Object; + var fileSelector=document.getElementById('fileSelector'); + var max_upload=document.getElementById('max_upload').value; + var name=false; + if(fileSelector.files && fileSelector.files[0].fileName){ + name=fileSelector.files[0].fileName; + } + if(fileSelector.files && fileSelector.files[0].fileSize){ + var size=fileSelector.files[0].fileSize; + if(size>max_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(dir){ - this.browser.show(dir); +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){ - 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.load('files/rename.php?dir='+dir+'&file='+file+'&newname='+newname); - return false; +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){ - OC_FILES.browser.show(OC_FILES.dir); +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.load('files/delete.php?dir='+dir+'&file='+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){ - OC_FILES.browser.show(OC_FILES.dir); +OC_FILES.remove_callback=function(req,name){ +// OC_FILES.browser.files.remove(name); +// OC_FILES.browser.show(OC_FILES.dir); } OC_FILES.getSelected=function(){ @@ -119,6 +211,63 @@ OC_FILES.getSelected=function(){ 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'); @@ -161,31 +310,33 @@ OC_FILES.actions_selected['delete']=function(){ OC_FILES.files=Array(); OC_FILES.file=function(dir,file,type){ - 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(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.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]; + 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]; + } } } } @@ -221,6 +372,10 @@ OC_FILES.fileActions.dir.open=function(){ } 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(){ @@ -233,21 +388,4 @@ 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 - -function getStyle(el,styleProp) -{ -// var x = document.getElementById(el); - var x=el; - if (x.currentStyle){ - alert(x.currentStyle); - var y = x.currentStyle[styleProp]; - }else if (window.getComputedStyle){ - var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp); - } - return y; -} - -Node.prototype.getStyle=function(styleProp){ - return getStyle(this,styleProp) -}
\ No newline at end of file +OC_FILES.fileActions.bmp=OC_FILES.fileActions.jpg
\ No newline at end of file |