diff options
Diffstat (limited to 'js/filebrowser.js')
-rw-r--r-- | js/filebrowser.js | 596 |
1 files changed, 0 insertions, 596 deletions
diff --git a/js/filebrowser.js b/js/filebrowser.js deleted file mode 100644 index 1aa0e138970..00000000000 --- a/js/filebrowser.js +++ /dev/null @@ -1,596 +0,0 @@ -/** -* 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 Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -OC_FILES.browser=new Object(); - -OC_FILES.browser.showInitial=function(){ - if(document.getElementById('content')){ - var dir='' - var loc=document.location.toString(); - if(loc.indexOf('#')!=-1){ - dir=loc.substring(loc.indexOf('#')+1); - } - OC_FILES.getdirectorycontent(dir,OC_FILES.browser.show_callback,true); - } -} - -OC_FILES.browser.show=function(dir,forceReload){ - if(!dir || !dir.split){ - dir=''; - } - OC_FILES.getdirectorycontent(dir,OC_FILES.browser.show_callback,forceReload); -} - -OC_FILES.browser.breadcrumb=new Object(); -OC_FILES.browser.breadcrumb.node=null; -OC_FILES.browser.breadcrumb.crumbs=Array(); -OC_FILES.browser.breadcrumb.show=function(parent,path){ - if((!OC_FILES.browser.breadcrumb.node==parent && parent) || OC_FILES.browser.breadcrumb.node==null){ - OC_FILES.browser.breadcrumb.clear(); - OC_FILES.browser.breadcrumb.node=parent; - OC_FILES.browser.breadcrumb.add('Home','/'); - } - var dirs=path.split('/'); - var currentPath='/'; - var paths=Array(); - var currentPath; - if(dirs.length>0){ - for(var i=0;i<dirs.length;i++){ - dir=dirs[i]; - if(dir){ - currentPath+=dir+'/'; - paths[currentPath]=true; - if(!OC_FILES.browser.breadcrumb.crumbs[currentPath]){ - OC_FILES.browser.breadcrumb.add(dir,currentPath); - } - } - } - } - //remove all crumbs that are not part of our current path - for(currentPath in OC_FILES.browser.breadcrumb.crumbs){ - if(!paths[currentPath] && currentPath!='/'){ - OC_FILES.browser.breadcrumb.remove(currentPath); - } - } - -} -OC_FILES.browser.breadcrumb.add=function(name,path){ - var a=document.createElement('a'); - var div=document.createElement('div'); - OC_FILES.browser.breadcrumb.crumbs[path]=div; - div.className='breadcrumb'; - a.setAttribute('href','#'+path); - a.addEvent('onclick',OC_FILES.browser.show,path); - img=document.createElement('img'); - img.src=WEBROOT+'/img/arrow.png'; - a.appendChild(document.createTextNode(' ' +name)); - a.appendChild(img); - OC_FILES.files[path]=new OC_FILES.file('',path,'dir'); - div.makeDropTarget(); - div.file=OC_FILES.files[path]; - div.addEvent('ondropon',OC_FILES.browser.handleDropOn); - div.appendChild(a); - - OC_FILES.browser.breadcrumb.node.appendChild(div); -} -OC_FILES.browser.breadcrumb.remove=function(path){ - if(OC_FILES.browser.breadcrumb.crumbs[path]){ - var div=OC_FILES.browser.breadcrumb.crumbs[path]; - if(div.parentNode){ - div.parentNode.removeChild(div); - } - delete OC_FILES.browser.breadcrumb.crumbs[path]; - } -} -OC_FILES.browser.breadcrumb.clear=function(){ - for(path in OC_FILES.browser.breadcrumb.crumbs){ - OC_FILES.browser.breadcrumb.remove(path); - } -} - -OC_FILES.browser.files=new Object(); -OC_FILES.browser.files.fileNodes=Array(); -OC_FILES.browser.files.node=null; -OC_FILES.browser.files.tbody=null; -OC_FILES.browser.files.show=function(parent,fileList){ - if(parent){ - OC_FILES.browser.files.node=parent; - } - var table=document.createElement('table'); - OC_FILES.browser.files.node.appendChild(table); - var tbody=document.createElement('tbody'); - OC_FILES.browser.files.tbody=tbody; - table.appendChild(tbody); - table.setAttribute('cellpadding',6); - table.setAttribute('cellspacing',0); - if(fileList){ - var name; - //remove files that no longer are in the folder - for(name in OC_FILES.browser.files.fileNodes){ - if(!fileList[name]){ - OC_FILES.browser.files.remove(name); - } - } - //add the files that arent in the list yet - var unreadableFiles=[]; - for(name in fileList){ - file=fileList[name]; - if(file.readable){ - if(!OC_FILES.browser.files.fileNodes[file.name]){ - OC_FILES.browser.files.add(file.name,file.type,file.size,file.date,file.mime); - } - }else if(file.name){ - unreadableFiles.push(file); - } - } - if(unreadableFiles.length>0){ - var message=unreadableFiles.length+" unreadable files detected:\n"; - var first=true; - unreadableFiles.foreach(function(item){ - if(!first){ - message+=', '; - } - first=false; - message+=item.name; - }); - message+="\nPlease check the file premissions"; - alert(message); - } - } -} -OC_FILES.browser.files.add=function(name,type,size,date,mime){ - if(name){ - if(!size) size=0; - if(!date) date=getTimeString(); - OC_FILES.files[name]=new OC_FILES.file(OC_FILES.dir,name,type,mime); - tr=document.createElement('tr'); - OC_FILES.browser.files.fileNodes[name]=tr; - OC_FILES.browser.files.tbody.appendChild(tr); - tr.className='browserline'; - td=document.createElement('td'); - tr.appendChild(td); - td.className='fileSelector'; - input=document.createElement('input'); - input.setAttribute('type','checkbox'); - input.setAttribute('name','fileSelector'); - input.setAttribute('value',name); - td.appendChild(input); - tr.appendChild(OC_FILES.browser.showicon(type)); - td=document.createElement('td'); - tr.appendChild(td); - td.makeDropTarget(); - td.addEvent('ondropon',OC_FILES.browser.handleDropOn); - td.className='nametext'; - td.setAttribute('name',name); - td.setAttribute('id',name); - var fileObject=OC_FILES.files[name]; - td.file=fileObject; - a=document.createElement('a'); - td.appendChild(a); - a.appendChild(document.createTextNode(name)); - a.addEvent('onclick',fileObject.actions['default'].bindScope(fileObject)); - a.makeDraggable(); - a.addEvent('ondrop',OC_FILES.browser.handleDrop); - if(type=='dir'){ - td.setAttribute('colspan',2); - var dirname=name; - if(OC_FILES.dir[OC_FILES.dir.length-1]!='/'){ - dirname='/'+name; - } - a.setAttribute('href','#'+OC_FILES.dir+dirname); - }else{ - a.setAttribute('href','#'+OC_FILES.dir); - if(!SMALLSCREEN){ - sizeTd=document.createElement('td'); - tr.appendChild(sizeTd); - sizeTd.className='sizetext'; - sizeTd.appendChild(document.createTextNode(sizeFormat(size))); - }else{ - td.setAttribute('colspan',2); - } - } - a=document.createElement('a'); - 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.addEvent('onclick',OC_FILES.browser.showactions.bind(name)); - if(!SMALLSCREEN){ - td=document.createElement('td'); - tr.appendChild(td); - td.className='sizetext'; - td.appendChild(document.createTextNode(date)); - } - } -} - -OC_FILES.browser.files.remove=function(name){ - if(OC_FILES.browser.files.fileNodes[name]){ - tr=OC_FILES.browser.files.fileNodes[name]; - tr.parentNode.removeChild(tr); - delete OC_FILES.browser.files.fileNodes[name]; - } - -} -OC_FILES.browser.files.clear=function(){ - for(name in OC_FILES.browser.files.fileNodes){ - OC_FILES.browser.files.remove(name); - } -} - -OC_FILES.browser.table=null; -OC_FILES.browser.show_callback=function(content){ - var dir=OC_FILES.dir - var tr=null; - var td=null; - var img=null; - if(!OC_FILES.browser.table){ - body=document.getElementsByTagName('body').item(0); - body.addEvent('onclick',OC_FILES.browser.hideallactions); - - //remove current content; - var contentNode=document.getElementById('content'); - contentNode.className='center'; - if(contentNode.hasChildNodes()){ - while(contentNode.childNodes.length >=1){ - contentNode.removeChild(contentNode.firstChild); - } - } - var table=document.createElement('table'); - OC_FILES.browser.table=table; - table.className='browser'; - var tbody=document.createElement('tbody'); - var thead=document.createElement('thead'); - var tfoot=document.createElement('tfoot'); - table.appendChild(thead); - table.appendChild(tbody); - table.appendChild(tfoot); - OC_FILES.files=Array(); - table.setAttribute('cellpadding',6); - - tr=document.createElement('tr'); - thead.appendChild(tr); - tr.className='breadcrumb'; - td=document.createElement('td'); - tr.appendChild(td); - input=document.createElement('input'); - input.className='fileSelector' - input.setAttribute('type','checkbox'); - input.setAttribute('name','fileSelector'); - input.setAttribute('value','select_all'); - input.setAttribute('id','select_all'); - input.addEvent('onclick',OC_FILES.selectAll); - td.appendChild(input); - td.className='breadcrumb'; - OC_FILES.browser.breadcrumb.show(td,dir); - // files and directories - tr=document.createElement('tr'); - tbody.appendChild(tr); - td=document.createElement('td'); - tr.appendChild(td); - div=document.createElement('div'); - div.className='fileList'; - td.appendChild(div); - OC_FILES.browser.files.show(div,content); - tr=document.createElement('tr'); - tfoot.appendChild(tr); - tr.className='utilityline'; - td=document.createElement('td'); - tr.appendChild(td); - td.className='actionsSelected'; - dropdown=document.createElement('select'); - td.appendChild(dropdown); - dropdown.setAttribute('id','selected_action'); - for(index in OC_FILES.actions_selected){ - if(OC_FILES.actions_selected[index].call){ - option=document.createElement('option'); - dropdown.appendChild(option); - option.setAttribute('value',index); - option.appendChild(document.createTextNode(capitaliseFirstLetter(index))); - } - } - td.appendChild(document.createTextNode(' Selected ')); - button=document.createElement('button'); - td.appendChild(button); - button.appendChild(document.createTextNode('Go')); - button.addEvent('onclick',OC_FILES.action_selected); - div=document.createElement('div'); - td.appendChild(div); - div.className='moreActionsButton'; - OC_FILES.maxUpload=content['max_upload']; - var p=document.createElement('p'); - div.appendChild(p); - p.appendChild(document.createTextNode('More Actions')); - div.setAttribute('id','moreActionsButton'); - OC_FILES.browser.moreActionsShown=false; - p.addEvent('onclick',OC_FILES.browser.showMoreActions); - contentNode.appendChild(table); - }else{ - OC_FILES.browser.breadcrumb.show(null,dir); - OC_FILES.browser.files.show(null,content); - } - if(OC_FILES.uploadForm){ - OC_FILES.uploadForm.setAttribute('action','files/upload.php?dir='+encodeURIComponent(dir)); - } -} - -OC_FILES.browser.handleDropOn=function(event,node){ - var dropTargetFile=this.file; - var dropFile=node.parentNode.file; - if(dropTargetFile!=dropFile){ - if(dropTargetFile.actions.dropOn && dropTargetFile.actions.dropOn.call){ - dropTargetFile.actions.dropOn.call(dropTargetFile,dropFile); - } - return false; - } -} - -OC_FILES.browser.handleDrop=function(event,node){ - var dropTargetFile=node.file; - var dropFile=this.parentNode.file; - if(dropFile.actions.drop && dropFile.actions.drop.call){ - dropFile.actions.drop.call(dropFile,dropTargetFile); - } - return false; -} - -OC_FILES.browser.showMoreActions=function(){ - if(!OC_FILES.browser.moreActionsList){ - var div=document.createElement('div'); - div.className='moreActionsList'; - var table=document.createElement('table'); - div.appendChild(table); - var tbody=document.createElement('tbody'); - table.appendChild(tbody); - var tr=document.createElement('tr'); - tbody.appendChild(tr); - var td=document.createElement('td'); - tr.appendChild(td); - OC_FILES.browser.showuploader(OC_FILES.dir,td,OC_FILES.maxUpload); - tr=document.createElement('tr'); - tbody.appendChild(tr); - td=document.createElement('td'); - tr.appendChild(td); - var form=document.createElement('form'); - td.appendChild(form); - form.appendChild(document.createTextNode('New ')); - var dropdown=document.createElement('select'); - form.appendChild(dropdown); - dropdown.setAttribute('id','newFileType'); - var option=document.createElement('option'); - dropdown.appendChild(option); - option.setAttribute('value','dir'); - option.appendChild(document.createTextNode('Folder')); - option=document.createElement('option'); - dropdown.appendChild(option); - option.setAttribute('value','file'); - option.appendChild(document.createTextNode('File')); - form.appendChild(document.createTextNode(' ')); - var input=document.createElement('input'); - form.appendChild(input); - input.setAttribute('id','newFileName'); - form.addEvent('onsubmit',OC_FILES.browser.newFile); - var submit=document.createElement('input'); - submit.type='submit'; - form.appendChild(submit); - submit.value='Create'; - OC_FILES.browser.moreActionsList=div; - }else{ - var div=OC_FILES.browser.moreActionsList; - } - var button=document.getElementById('moreActionsButton'); - if(!OC_FILES.browser.moreActionsShown){ - button.appendChild(div); - OC_FILES.browser.moreActionsShown=true; - button.className='moreActionsButton moreActionsButtonClicked'; - }else{ - OC_FILES.browser.moreActionsShown=false; - button.removeChild(div); - button.className='moreActionsButton'; - } -} - -OC_FILES.browser.newFile=function(event){ - if(event.preventDefault){ - event.preventDefault(); - }; - var typeSelect=document.getElementById('newFileType'); - var type=typeSelect.options[typeSelect.selectedIndex].value; - var name=document.getElementById('newFileName').value; - OC_FILES.newFile(type,name,OC_FILES.dir); - return false; -} - -OC_FILES.browser.showicon=function(filetype){ - var td=document.createElement('td'); - td.className='fileicon'; - var img=document.createElement('img'); - td.appendChild(img); - img.setAttribute('width',16); - img.setAttribute('height',16); - if(filetype=='dir'){ - img.src=WEBROOT+'/img/icons/folder.png'; - }else if(filetype=='incomplete'){ - img.src=WEBROOT+'/img/icons/loading.gif'; - }else{ - img.src=WEBROOT+'/img/icons/other.png'; - } - return td; -} - -OC_FILES.uploadIFrames=Array(); -OC_FILES.browser.showuploader=function(dir,parent,max_upload){ - var iframeId=OC_FILES.uploadIFrames.length - OC_FILES.uploadForm=document.createElement('form'); - OC_FILES.uploadForm.setAttribute('target','uploadIFrame'+iframeId); - OC_FILES.uploadForm.setAttribute('action','files/upload.php?dir='+encodeURIComponent(dir)); - OC_FILES.uploadForm.method='post'; - OC_FILES.uploadForm.setAttribute('enctype','multipart/form-data'); - OC_FILES.uploadIFrames[iframeId]=document.createElement('iframe'); - OC_FILES.uploadIFrames[iframeId].uploadParent=parent; - OC_FILES.uploadIFrames[iframeId].className='hidden'; - OC_FILES.uploadIFrames[iframeId].name='uploadIFrame'+iframeId; - 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'); - OC_FILES.uploadForm.appendChild(input); - var file=document.createElement('input'); - file.name='file'; - file.setAttribute('id','fileSelector'); - file.setAttribute('type','file'); - file.addEvent('onchange',OC_FILES.upload.bind(iframeId)); - OC_FILES.uploadForm.appendChild(document.createTextNode('Upload file: ')); - OC_FILES.uploadForm.appendChild(file); - parent.appendChild(OC_FILES.uploadForm); - var body=document.getElementsByTagName('body').item(0); - body.appendChild(OC_FILES.uploadIFrames[iframeId]); -} - -OC_FILES.browser.show_rename=function(dir,file){ - var item=document.getElementById(file); - item.oldContent=Array(); - if(item.hasChildNodes()){ - while(item.childNodes.length >=1){ - item.oldContent[item.oldContent.length]=item.firstChild; - item.removeChild(item.firstChild); - } - } - var form=document.createElement('form'); - form.addEvent('onsubmit',OC_FILES.rename.bind(dir).bind(file)); - var input=document.createElement('input'); - input.setAttribute('type','text'); - input.setAttribute('name','newname'); - input.setAttribute('value',file); - input.setAttribute('id',file+'_newname') - input.addEvent('onblur',OC_FILES.browser.rename_cancel.bind(file)); - form.appendChild(input); - item.appendChild(form); - input.focus(); -} - -OC_FILES.browser.rename_cancel=function(file){ - var item=document.getElementsByName(file).item(0); - if(item.hasChildNodes()){ - while(item.childNodes.length >=1){ - item.removeChild(item.firstChild); - } - } - for(index in item.oldContent){ - if(item.oldContent[index].nodeType){ - item.appendChild(item.oldContent[index]); - } - } -} - -OC_FILES.browser.showactions=function(file,hide){ - var node=document.getElementById(file); - if(node &&(node.actionsshown || hide===true)){ - if(node.actionsshown){ - node.actionsdiv.parentNode.removeChild(node.actionsdiv); - } - node.actionsdiv=null; - node.actionsshown=false - }else if(node){ - node.actionsshown=true - div=document.createElement('div'); - node.actionsdiv=div; - div.className='fileactionlist'; - table=document.createElement('table'); - div.appendChild(table); - tbody=document.createElement('tbody'); - table.appendChild(tbody); - var file=OC_FILES.files[file] - var actions=file.actions; - var name; - for(name in actions){ - if(actions[name].call && name!='default' && name!='dropOn' && name!='drop'){ - tr=document.createElement('tr'); - tbody.appendChild(tr); - td=document.createElement('td'); - tr.appendChild(td); - a=document.createElement('a'); - td.appendChild(a); - a.appendChild(document.createTextNode(capitaliseFirstLetter(name))); - var action=actions[name]; - td.addEvent('onclick',action.bindScope(file)); - } - } - node.appendChild(div); - OC_FILES.hideallenabled=false; - setTimeout('OC_FILES.hideallenabled=true',50); - } -} - -OC_FILES.browser.hideallactions=function(){ - if(OC_FILES.hideallenabled){ - for(name in OC_FILES.files){ - if(OC_FILES.files[name]){ - if(OC_FILES.files[name].hideactions){ - OC_FILES.files[name].hideactions.call(OC_FILES.files[name]); - } - } - } - } -} - -OC_FILES.hideallenabled=true; //used to prevent browsers from hiding actionslists right after they are displayed; - -sizeFormat=function(size){ - if(isNaN(size)){ - return false; - } - var orig=size; - var steps=Array('B','KiB','MiB','GiB','TiB'); - var step=0; - while(size>(1024*2)){ - step++; - size=size/1024; - } - if(size.toFixed){ - size=size.toFixed(2); - } - return ''+size+' '+steps[step]; -} - -OC_FILES.browser.showImage=function(dir,file){ - var path=WEBROOT+'/files/open_file.php?dir='+encodeURIComponent(dir)+'&file='+encodeURIComponent(file); - var div=document.createElement('div'); - div.setAttribute('id','imageframe'); - div.addEvent('onclick',OC_FILES.browser.hideImage) - var img=document.createElement('img'); - img.setAttribute('src',path); - div.appendChild(img); - body=document.getElementsByTagName('body').item(0); - body.appendChild(div); -} - -OC_FILES.browser.hideImage=function(){ - var div=document.getElementById('imageframe'); - div.parentNode.removeChild(div); -} - -function capitaliseFirstLetter(string){ - return string.charAt(0).toUpperCase() + string.slice(1); -}
\ No newline at end of file |