summaryrefslogtreecommitdiffstats
path: root/js/lib_files.js
diff options
context:
space:
mode:
authorRobin <robin@Amaya.(none)>2010-04-19 19:46:42 +0200
committerRobin <robin@Amaya.(none)>2010-04-19 19:46:42 +0200
commit38bdf4083a6e0d90afb35ded0d67cab8a518b2ea (patch)
tree10a29805a025802c6dc12c2c65c18a48cb2742f7 /js/lib_files.js
parent6591740f5dd73969458de9a586790922fe6c27ea (diff)
downloadnextcloud-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.js354
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