/**
* 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;