diff options
author | Robin <robin@Amaya.(none)> | 2010-04-08 23:59:19 +0200 |
---|---|---|
committer | Robin <robin@Amaya.(none)> | 2010-04-08 23:59:19 +0200 |
commit | e8307187574380c12b8ca5f932185ca576074c68 (patch) | |
tree | 50cbaa134821ed9ca5c0c5a360aab90eb5fab048 /js | |
parent | 7657926a602a524cf651e7e2b95a3369261fbde1 (diff) | |
download | nextcloud-server-e8307187574380c12b8ca5f932185ca576074c68.tar.gz nextcloud-server-e8307187574380c12b8ca5f932185ca576074c68.zip |
some more cleanup
Diffstat (limited to 'js')
-rw-r--r-- | js/ajax.js | 7 | ||||
-rw-r--r-- | js/filebrowser.js | 38 | ||||
-rw-r--r-- | js/lib_ajax.js | 69 | ||||
-rwxr-xr-x | js/lib_event.js | 98 | ||||
-rw-r--r-- | js/lib_files.js | 17 |
5 files changed, 126 insertions, 103 deletions
diff --git a/js/ajax.js b/js/ajax.js index d924c9b8bc3..534dd46a290 100644 --- a/js/ajax.js +++ b/js/ajax.js @@ -19,10 +19,5 @@ * */ -var dir='' -var loc=document.location.toString(); -if(loc.indexOf('#')!=-1){ - dir=loc.substring(loc.indexOf('#')+1); -} -OC_onload.add(new function(){OC_FILES.browser.show(dir)});
\ No newline at end of file +OC_onload.add(OC_FILES.browser.showInitial);
\ No newline at end of file diff --git a/js/filebrowser.js b/js/filebrowser.js index 3460955f2e4..7bd656987a1 100644 --- a/js/filebrowser.js +++ b/js/filebrowser.js @@ -21,8 +21,20 @@ OC_FILES.browser=new Object(); +OC_FILES.browser.showInitial=function(){ + var dir='' + var loc=document.location.toString(); + if(loc.indexOf('#')!=-1){ + dir=loc.substring(loc.indexOf('#')+1); + } + OC_FILES.dir=dir; + OC_FILES.getdirectorycontent(dir,OC_FILES.browser.show_callback); +} + OC_FILES.browser.show=function(dir){ - dir=(dir)?dir:''; + if(!dir){ + dir=''; + } OC_FILES.dir=dir; OC_FILES.getdirectorycontent(dir,OC_FILES.browser.show_callback); } @@ -71,14 +83,14 @@ OC_FILES.browser.show_callback=function(content){ a.addEvent('onclick',OC_FILES.browser.show); a.appendChild(document.createTextNode('Home')); var currentdir=''; - for(index in dirs) { + for(var index=0;index<dirs.length;index++){ d=dirs[index]; currentdir=currentdir+'/'+d; if(d!=''){ a=document.createElement('a'); td.appendChild(a); a.setAttribute('href','#'+currentdir); - a.setAttribute('onclick','OC_FILES.browser.show("'+currentdir+'")'); + a.addEvent('onclick',OC_FILES.browser.show,currentdir); img=document.createElement('img'); a.appendChild(img); img.src=WEBROOT+'/img/arrow.png'; @@ -151,26 +163,28 @@ OC_FILES.browser.show_callback=function(content){ td.setAttribute('id',file['name']); a=document.createElement('a'); td.appendChild(a); - a.appendChild(document.createTextNode(file['name'])) + a.appendChild(document.createTextNode(file['name'])); + var fileObject=OC_FILES.files[file['name']]; + a.addEvent('onclick',new callBack(fileObject.actions['default'],fileObject)); if(file['type']=='dir'){ - a.addEvent('onclick',OC_FILES.browser.show,[dir+'/'+file['name']]); td.setAttribute('colspan',2); a.setAttribute('href','#'+dir+'/'+file['name']); }else{ - a.setAttribute('href',WEBROOT+'/?dir=/'+dir+'&file='+file['name']); + a.setAttribute('href','#'); sizeTd=document.createElement('td'); tr.appendChild(sizeTd); sizeTd.className='sizetext'; sizeTd.appendChild(document.createTextNode(sizeFormat(file['size']))); } a=document.createElement('a'); - img=document.createElement('img'); + var img=document.createElement('img'); td.appendChild(img); img.className='file_actions'; img.alt='' img.title='actions'; img.src=WEBROOT+'/img/arrow_down.png'; - img.setAttribute('onclick','OC_FILES.browser.showactions(\''+file['name']+'\')') + var name=file['name']; + img.addEvent('onclick',OC_FILES.browser.showactions,name); td=document.createElement('td'); tr.appendChild(td); td.className='sizetext'; @@ -284,9 +298,10 @@ OC_FILES.browser.showactions=function(file,hide){ div.appendChild(table); tbody=document.createElement('tbody'); table.appendChild(tbody); - actions=OC_FILES.files[file].actions; + var file=OC_FILES.files[file] + var actions=file.actions; for(name in actions){ - if(actions[name].call){ + if(actions[name].call && name!='default'){ tr=document.createElement('tr'); tbody.appendChild(tr); td=document.createElement('td'); @@ -294,7 +309,8 @@ OC_FILES.browser.showactions=function(file,hide){ a=document.createElement('a'); td.appendChild(a); a.appendChild(document.createTextNode(name)); - td.addEvent('onclick',new callBack(OC_FILES.files[file].actions[name],OC_FILES.files[file])); + var action=actions[name]; + td.addEvent('onclick',new callBack(action,file)); } } node.appendChild(div); diff --git a/js/lib_ajax.js b/js/lib_ajax.js index 591058976b8..319875d40e7 100644 --- a/js/lib_ajax.js +++ b/js/lib_ajax.js @@ -42,25 +42,74 @@ callBack.prototype=function(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10){ callBack.prototype.func=false; callBack.prototype.obj=false; callBack.prototype.call=function(dummy,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10){ - //the dummy is just to provide compatibility with the normal call function and isn't used return this.func.call(this.obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10); } callBack.prototype.apply=function(dummy,arguments){ - //the dummy is just to provide compatibility with the normal call function and isn't used - return this.apply(this.obj,arguments); + return this.func.apply(this.obj,arguments); } //provide a simple way to add things to the onload OC_onload=new Object(); OC_onload.items=new Array(); -OC_onload.add=function(callback){ - OC_onload.items[OC_onload.items.length]=callback; +OC_onload.itemsPriority=new Array(); +OC_onload.add=function(callback,priority){ + if(priority){ + OC_onload.itemsPriority[OC_onload.items.length]=callback; + }else{ + OC_onload.items[OC_onload.items.length]=callback; + } } OC_onload.run=function(){ - for(index in OC_onload.items){ - if(OC_onload.items[index].call){ - OC_onload.items[index].call(); - } - } + for(index in OC_onload.itemsPriority){ + if(OC_onload.itemsPriority[index].call){ + OC_onload.itemsPriority[index].call(); + } + } + for(index in OC_onload.items){ + if(OC_onload.items[index].call){ + OC_onload.items[index].call(); + } + } +} + +//implement Node.prototype under IE +if(typeof Node=='undefined'){ + Node=new Object(); + Node.prototype=new Object(); + + tmpObj=new Object(); + tmpObj.prototype=document.createElement; + document.createElementNative=document.createElement; + tmpObj=null; + + document.createElement=function(tagName){ +// alert(tagName); + node=document.createElementNative(tagName); + for(name in Node.prototype){ + node[name]=Node.prototype[name]; + } + return node; + } + + addNodePrototype=function(node){ + if(!node){ + node=document.getElementsByTagName('body'); + node=node.item(0) + } + if(node.nodeType==1){ + for(name in Node.prototype){ +// node[name]=Node.prototype[name]; + eval('node.'+name+'=Node.prototype.'+name+';'); + } + if(node.hasChildNodes){ + var childs=node.childNodes; + for(var i=0;i<childs.length;i++){ + addNodePrototype(childs[i]); + } + } + } + } + OC_onload.add(new function(){addNodePrototype(document.documentElement);}); + OC_onload.add(addNodePrototype,true); }
\ No newline at end of file diff --git a/js/lib_event.js b/js/lib_event.js index 9d5df93e2a1..f8482402d09 100755 --- a/js/lib_event.js +++ b/js/lib_event.js @@ -12,90 +12,38 @@ usage: document.events.add(node,type,function,arguments); or: node.addEvent(type,function,arguments); */ -eventHandler=function(){ - this.holders=Array(); -} +document.events=new Object; +document.events.functions=Array(); +document.events.args=Array(); -eventHandler.prototype={ - add:function(element,type,func,arguments){ - var holder=this.getHolderByElement(element); - holder.addListner(type,func,arguments); - }, - getHolderByElement:function(element){ - var holder=false; - for (var i=0;i<this.holders.length;i++){ - if (this.holders[i].getElement()==element){ - var holder=this.holders[i]; - } +document.events.add=function(element,type,func,args){ + if(args){ + if(typeof args!='object' && typeof args!='Object'){ + args=[args]; } - if (!holder){ - var holder=new eventHolder(element); - this.holders[this.holders.length]=holder; - } - return holder; - }, - trigger:function(element,type,event){ - var holder=eventHandler.getHolderByElement(element); - return holder.trigerEvent.call(holder,type,event); } -} - -eventHolder=function(element){ - this.element=element; - this.listners=Array(); -} - -eventHolder.prototype={ - addListner:function(type,func,arguments){ - if (type && this.element){ - if (!this.listners[type]){ - this.listners[type]=Array(); - eval("callback=function(event){return holder.trigerEvent.call(holder,'"+type+"',event)}"); - if (this.element.tagName){//do we have a element (not an named event) - var holder=this; - //IE doesn't let you set the onload event the regulair way - if (type=="onload" && this.element.addEventListener && window.ActiveXObject){ - this.element.addEventListener(type, callback, false); - }else if (type=="onload" && this.element.attachEvent && window.ActiveXObject){ - this.element.attachEvent(type, callback); - }else{ - eval("this.element."+type+"=function(event){return holder.trigerEvent.call(holder,'"+type+"',event)}"); - } - }else{ - eval("this.element."+type+"=function(event){return holder.trigerEvent.call(holder,'"+type+"',event)}"); - } - } - var i=this.listners[type].length - this.listners[type][i]=func; - this.listners[type][i].applyArguments=arguments; - }else{ - var i=this.listners.length - this.listners[i]=func; - this.listners[type][i].applyArguments=arguments; - } - }, - trigerEvent:function(type,event){ - if (type && this.element && this.listners[type]){ - for (var i=0;i<this.listners[type].length;i++){ - if(this.listners[type][i].applyArguments){ - return this.listners[type][i].apply(this,this.listners[type][i].applyArguments) - }else{ - return this.listners[type][i].call(); - } + if(!args){ + args=Array(); + } + if (type && element){ + + //wrap the function in a function, otherwise it won't work if func is actually a callBack + var funcId=document.events.functions.length; + document.events.functions[funcId]=func; + document.events.args[funcId]=args; + eval('callback=function(event){result=document.events.functions['+funcId+'].apply(this,document.events.args['+funcId+']);if(result===false){if(event.preventDefault){event.preventDefault();}}};'); + if(element.addEventListener){ + var eventType=type; + if(eventType.substr(0,2)=='on'){ + eventType=eventType.substr(2); } + element.addEventListener(eventType,callback,false); }else{ - for (var i=0;i<this.listners.length;i++){ - return this.listners[i](event); - } + element.attachEvent(type,callback); } - }, - getElement:function(){ - return this.element; } } -document.events=new eventHandler(); - Node.prototype.addEvent=function(type,func,arguments){ document.events.add(this,type,func,arguments); }
\ No newline at end of file diff --git a/js/lib_files.js b/js/lib_files.js index 8f3b9ab0c99..4851272593d 100644 --- a/js/lib_files.js +++ b/js/lib_files.js @@ -58,7 +58,7 @@ OC_FILES.getdirectorycontent=function(dir,callback){ OC_FILES.dir=''; OC_FILES.upload=function(dir){ - OC_FILES.uploadIFrame.setAttribute('onload',"OC_FILES.upload_callback.call(OC_FILES,'"+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){ @@ -181,6 +181,13 @@ OC_FILES.file=function(dir,file,type){ 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]; + } + } + } } OC_FILES.file.prototype.showactions=function(){ @@ -204,6 +211,14 @@ OC_FILES.fileActions.all.rename=function(){ 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.jpg=new Object() |