diff options
author | Frank Karlitschek <frank@dev.(none)> | 2010-03-29 16:16:23 +0200 |
---|---|---|
committer | Frank Karlitschek <frank@dev.(none)> | 2010-03-29 16:16:23 +0200 |
commit | bc8e899de1336e839079b5059e51e4dc75262728 (patch) | |
tree | 5cfeffe7768e5520db057c6900fc4afaea3b8ff7 /js/lib_files.js | |
parent | 78a1792c0488ed31da5577664924694bf1fb4e40 (diff) | |
parent | 6822185c5bc33abe892bb9db904a96fbaa916f2c (diff) | |
download | nextcloud-server-bc8e899de1336e839079b5059e51e4dc75262728.tar.gz nextcloud-server-bc8e899de1336e839079b5059e51e4dc75262728.zip |
Merge commit 'refs/merge-requests/12' of git://gitorious.org/owncloud/owncloud into integratio
Diffstat (limited to 'js/lib_files.js')
-rw-r--r-- | js/lib_files.js | 153 |
1 files changed, 145 insertions, 8 deletions
diff --git a/js/lib_files.js b/js/lib_files.js index 8d1039a3b0d..2b2c5665063 100644 --- a/js/lib_files.js +++ b/js/lib_files.js @@ -26,6 +26,8 @@ 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 in fileElements){ @@ -144,12 +146,45 @@ OC_FILES.showbrowser_callback=function(content){ var filesfound=false; var sizeTd=null; if(content){ + tr=document.createElement('tr'); + tbody.appendChild(tr); + tr.className='browserline'; + td=document.createElement('td'); + tr.appendChild(td); + td.setAttribute('colspan','2'); + input=document.createElement('input'); + input.setAttribute('type','checkbox'); + input.setAttribute('name','fileSelector'); + input.setAttribute('value','select_all'); + input.setAttribute('id','select_all'); + input.setAttribute('onclick','OC_FILES.selectAll()'); + td.appendChild(input); + td=document.createElement('td'); + tr.appendChild(td); + td.className='nametext'; + td.setAttribute('name','name'); + td.appendChild(document.createTextNode('name')) + sizeTd=document.createElement('td'); + tr.appendChild(sizeTd); + sizeTd.className='sizetext'; + sizeTd.appendChild(document.createTextNode('size')); + td=document.createElement('td'); + tr.appendChild(td); + td.className='sizetext'; + td.appendChild(document.createTextNode('date')); for(index in content){ file=content[index]; if(file.name){ tr=document.createElement('tr'); tbody.appendChild(tr); tr.className='browserline'; + td=document.createElement('td'); + tr.appendChild(td); + input=document.createElement('input'); + input.setAttribute('type','checkbox'); + input.setAttribute('name','fileSelector'); + input.setAttribute('value',file['name']); + td.appendChild(input); tr.appendChild(OC_FILES.showicon(file['type'])); td=document.createElement('td'); tr.appendChild(td); @@ -167,7 +202,7 @@ OC_FILES.showbrowser_callback=function(content){ sizeTd=document.createElement('td'); tr.appendChild(sizeTd); sizeTd.className='sizetext'; - sizeTd.appendChild(document.createTextNode(file['size']+' bytes')); + sizeTd.appendChild(document.createTextNode(sizeFormat(file['size']))); } a=document.createElement('a'); img=document.createElement('img'); @@ -176,8 +211,6 @@ OC_FILES.showbrowser_callback=function(content){ img.alt='rename' img.title='rename'; img.src=WEBROOT+'/img/icons/rename.png'; - img.style.height='16px' - img.style.width='16px' img.setAttribute('onclick','OC_FILES.rename(\''+dir+'\',\''+file['name']+'\')') td=document.createElement('td'); tr.appendChild(td); @@ -192,8 +225,6 @@ OC_FILES.showbrowser_callback=function(content){ img.alt='delete' img.title='delete'; img.src=WEBROOT+'/img/icons/delete.png'; - img.style.height='16px' - img.style.width='16px' img.setAttribute('onclick','OC_FILES.remove(\''+dir+'\',\''+file['name']+'\')') } } @@ -201,15 +232,39 @@ OC_FILES.showbrowser_callback=function(content){ } tr=document.createElement('tr'); tbody.appendChild(tr); + tr.className='utilrow'; + td=document.createElement('td'); + tr.appendChild(td); + td.setAttribute('colspan','6'); + dropdown=document.createElement('select'); + td.appendChild(dropdown); + dropdown.setAttribute('id','selected_action'); + for(index in this.actions_selected){ + if(this.actions_selected[index].call){ + option=document.createElement('option'); + dropdown.appendChild(option); + option.setAttribute('value',index); + option.appendChild(document.createTextNode(index)); + } + } + td.appendChild(document.createTextNode(' selected. ')); + button=document.createElement('input'); + td.appendChild(button); + button.setAttribute('type','button'); + button.setAttribute('value','Go'); + button.setAttribute('onclick','OC_FILES.action_selected()'); + tr=document.createElement('tr'); + tbody.appendChild(tr); + tr.className='utilrow'; td=document.createElement('td'); tr.appendChild(td); td.className='upload'; - td.setAttribute('colspan','5'); - this.showuploader(dir,td); + td.setAttribute('colspan','6'); + this.showuploader(dir,td,content['max_upload']); contentNode.appendChild(files); } -OC_FILES.showuploader=function(dir,parent){ +OC_FILES.showuploader=function(dir,parent,max_upload){ this.uploadForm=document.createElement('form'); this.uploadForm.setAttribute('target','uploadIFrame'); this.uploadForm.setAttribute('action','files/upload.php?dir='+dir); @@ -219,8 +274,15 @@ OC_FILES.showuploader=function(dir,parent){ this.uploadIFrame.className='hidden'; this.uploadIFrame.name='uploadIFrame'; parent.appendChild(this.uploadIFrame); + var input=document.createElement('input'); + input.setAttribute('type','hidden'); + input.setAttribute('name','MAX_FILE_SIZE'); + input.setAttribute('value',max_upload); + input.setAttribute('id','max_upload'); + this.uploadForm.appendChild(input); var file=document.createElement('input'); file.name='file'; + file.setAttribute('id','fileSelector'); file.setAttribute('type','file'); file.setAttribute('onchange','OC_FILES.upload("'+dir+'")'); this.uploadForm.appendChild(document.createTextNode('Upload file: ')); @@ -230,6 +292,16 @@ OC_FILES.showuploader=function(dir,parent){ OC_FILES.upload=function(dir){ OC_FILES.uploadIFrame.setAttribute('onload',"OC_FILES.upload_callback.call(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 +// new OCNotification('size: '+size,1000); + if(size>max_upload){ +// new OCNotification('Chosen file is to large',20000); + return false; + } + } OC_FILES.uploadForm.submit(); } @@ -303,4 +375,69 @@ OC_FILES.remove=function(dir,file){ OC_FILES.remove_callback=function(req){ OC_FILES.showbrowser(OC_FILES.dir); +} + +OC_FILES.getSelected=function(){ + var nodes=document.getElementsByName('fileSelector'); + var files=Array(); + for(index in nodes){ + if(nodes[index].checked){ + files[files.length]=nodes[index].value; + } + } + return files; +} + +OC_FILES.selectAll=function(){ + var value=document.getElementById('select_all').checked; + var nodes=document.getElementsByName('fileSelector'); + for(index in nodes){ + if(nodes[index].value){ + nodes[index].checked=value; + } + } +} + +OC_FILES.action_selected=function(){ + var dropdown=action=document.getElementById('selected_action'); + var action=dropdown.options[dropdown.selectedIndex].value; + if(OC_FILES.actions_selected[action] && OC_FILES.actions_selected[action].call){ + OC_FILES.actions_selected[action].call(OC_FILES); + } +} + +OC_FILES.actions_selected=new Object(); + +OC_FILES.actions_selected.download=function(){ + files=OC_FILES.getSelected(); + if(files.length==0){ + return false; + }else if(files.length>1){ + files.join(';'); + }else{ + files=files[0]; + } + window.location=WEBROOT+'/files/get_file.php?dir='+OC_FILES.dir+'&files='+files; +} + +OC_FILES.actions_selected['delete']=function(){ + files=OC_FILES.getSelected(); + for(index in files){ + OC_FILES.remove(OC_FILES.dir,files[index]); + } +} + +sizeFormat=function(size){ + var orig=size; + var steps=Array('B','KiB','MiB','GiB','TiB'); + var step=0; + while(size>(1024*2)){ + step++; + size=size/1024; + } +// size=orig/(1024^(step+1));//recalculate the size in one time to minimalize rounding errors; + if(size.toFixed){ + size=size.toFixed(2); + } + return ''+size+' '+steps[step]; }
\ No newline at end of file |