@ -55,225 +55,16 @@ OC_FILES.getdirectorycontent=function(dir,callback){
OC _FILES . xmlloader . load ( 'files/get_files.php?dir=' + dir ) ;
}
OC _FILES . showicon = function ( filetype ) {
var td = document . createElement ( 'td' ) ;
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 {
img . src = WEBROOT + '/img/icons/other.png' ;
}
return td ;
}
OC _FILES . dir = '' ;
OC _FILES . browser = null ;
OC _FILES . showbrowser = function ( dir ) {
dir = ( dir ) ? dir : '' ;
OC _FILES . dir = dir ;
OC _FILES . getdirectorycontent ( dir , OC _FILES . showbrowser _callback ) ;
}
OC _FILES . showbrowser _callback = function ( content ) {
var dir = OC _FILES . dir
var dirs = dir . split ( '/' ) ;
var tr = null ;
var td = null ;
var img = null ;
body = document . getElementsByTagName ( 'body' ) . item ( 0 ) ;
body . setAttribute ( 'onclick' , body . getAttribute ( 'onclick' ) + ' ; OC_FILES.hideallactions()' ) ;
//remove current content;
var contentNode = document . getElementById ( 'content' ) ;
if ( contentNode . hasChildNodes ( ) ) {
while ( contentNode . childNodes . length >= 1 ) {
contentNode . removeChild ( contentNode . firstChild ) ;
}
}
var browser = document . createElement ( 'div' ) ;
browser . className = 'center' ;
var table = document . createElement ( 'table' ) ;
browser . appendChild ( table ) ;
// breadcrumb
if ( dirs . length > 0 ) {
table . setAttribute ( 'cellpadding' , 2 ) ;
table . setAttribute ( 'cellspacing' , 0 ) ;
var tbody = document . createElement ( 'tbody' ) ; //some IE versions need this
table . appendChild ( tbody ) ;
tr = document . createElement ( 'tr' ) ;
tbody . appendChild ( tr ) ;
td = document . createElement ( 'td' ) ;
tr . appendChild ( td ) ;
td . setAttribute ( 'colspan' , '6' ) ;
td . className = 'breadcrumb' ;
var a = document . createElement ( 'a' ) ;
td . appendChild ( a ) ;
a . setAttribute ( 'href' , '#' ) ;
a . setAttribute ( 'onclick' , 'OC_FILES.showbrowser()' ) ;
a . appendChild ( document . createTextNode ( 'Home' ) ) ;
var currentdir = '' ;
for ( index in dirs ) {
d = dirs [ index ] ;
currentdir += '/' + d ;
if ( d != '' ) {
// td=document.createElement('td');
// tr.appendChild(td);
// td.className='breadcrumb';
a = document . createElement ( 'a' ) ;
td . appendChild ( a ) ;
a . setAttribute ( 'href' , '#' + currentdir ) ;
a . setAttribute ( 'onclick' , 'OC_FILES.showbrowser("' + currentdir + '")' ) ;
img = document . createElement ( 'img' ) ;
a . appendChild ( img ) ;
img . src = WEBROOT + '/img/arrow.png' ;
a . appendChild ( document . createTextNode ( ' ' + d ) ) ;
}
}
}
// files and directories
table . setAttribute ( 'cellpadding' , 6 ) ;
table . setAttribute ( 'cellspacing' , 0 ) ;
table . className = 'browser' ;
var tbody = document . createElement ( 'tbody' ) ; //some IE versions need this
table . appendChild ( tbody ) ;
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 . setAttribute ( 'colspan' , '4' ) ;
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 ( 'button' ) ;
td . appendChild ( button ) ;
button . appendChild ( document . createTextNode ( 'Go' ) ) ;
button . setAttribute ( 'onclick' , 'OC_FILES.action_selected()' ) ;
for ( index in content ) {
file = content [ index ] ;
if ( file . name ) {
file . name = file . name . replace ( '\'' , '' ) ;
OC _FILES . files [ file [ 'name' ] ] = new OC _FILES . file ( dir , file [ 'name' ] , file [ 'type' ] ) ;
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 ) ;
td . className = 'nametext' ;
td . setAttribute ( 'name' , file [ 'name' ] ) ;
td . setAttribute ( 'id' , file [ 'name' ] ) ;
a = document . createElement ( 'a' ) ;
td . appendChild ( a ) ;
a . appendChild ( document . createTextNode ( file [ 'name' ] ) )
if ( file [ 'type' ] == 'dir' ) {
a . setAttribute ( 'onclick' , 'OC_FILES.showbrowser("' + dir + file [ 'name' ] + '")' ) ;
td . setAttribute ( 'colspan' , 2 ) ;
a . setAttribute ( 'href' , '#' + dir + file [ 'name' ] ) ;
} else {
a . setAttribute ( 'href' , WEBROOT + '/?dir=/' + dir + '&file=' + file [ 'name' ] ) ;
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' ) ;
td . appendChild ( img ) ;
img . className = 'file_actions' ;
img . alt = ''
img . title = 'actions' ;
img . src = WEBROOT + '/img/arrow_down.png' ;
img . setAttribute ( 'onclick' , 'OC_FILES.showactions(\'' + file [ 'name' ] + '\')' )
td = document . createElement ( 'td' ) ;
tr . appendChild ( td ) ;
td . className = 'sizetext' ;
td . appendChild ( document . createTextNode ( file [ 'date' ] ) ) ;
}
}
}
td = document . createElement ( 'td' ) ;
tr . appendChild ( td ) ;
tr = document . createElement ( 'tr' ) ;
tbody . appendChild ( tr ) ;
tr . className = 'utilrow' ;
td = document . createElement ( 'td' ) ;
tr . appendChild ( td ) ;
td . className = 'upload' ;
td . setAttribute ( 'colspan' , '6' ) ;
this . showuploader ( dir , td , content [ 'max_upload' ] ) ;
contentNode . appendChild ( browser ) ;
}
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 ) ;
this . uploadForm . method = 'post' ;
this . uploadForm . setAttribute ( 'enctype' , 'multipart/form-data' ) ;
this . uploadIFrame = document . createElement ( 'iframe' ) ;
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: ' ) ) ;
this . uploadForm . appendChild ( file ) ;
parent . appendChild ( this . uploadForm ) ;
}
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 ) {
var size = fileSelector . files [ 0 ] . fileSize
var size = fileSelector . files [ 0 ] . fileSize ;
if ( size > max _upload ) {
new OCNotification ( 'File to large' , 10000 )
return false ;
}
}
@ -281,38 +72,16 @@ OC_FILES.upload=function(dir){
}
OC _FILES . upload _callback = function ( dir ) {
this . show browser( dir ) ;
this . browser . show ( dir ) ;
}
OC _FILES . 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 . setAttribute ( 'onsubmit' , 'return OC_FILES.do_rename(\'' + dir + '\',\'' + file + '\')' )
var input = document . createElement ( 'input' ) ;
input . setAttribute ( 'type' , 'text' ) ;
input . setAttribute ( 'name' , 'newname' ) ;
input . setAttribute ( 'value' , file ) ;
input . setAttribute ( 'id' , file + '_newname' )
input . setAttribute ( 'onblur' , 'OC_FILES.rename_cancel(\'' + file + '\')' ) ;
form . appendChild ( input ) ;
item . appendChild ( form ) ;
input . focus ( ) ;
}
OC _FILES . do _rename = function ( dir , file ) {
var item = document . getElementById ( file + '_newname' ) ;
var newname = item . value ;
if ( newname == '' ) {
return false ;
} else if ( file == newname ) {
OC _FILES . show browser( OC _FILES . dir ) ;
OC _FILES . browser . show ( OC _FILES . dir ) ;
return false ;
}
xmlloader = new OCXMLLoader ( ) ;
@ -321,22 +90,9 @@ OC_FILES.do_rename=function(dir,file){
return false ;
}
OC _FILES . rename _callback = function ( req ) {
OC _FILES . showbrowser ( OC _FILES . dir ) ;
}
OC _FILES . 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 . rename _callback = function ( req ) {
OC _FILES . browser . show ( OC _FILES . dir ) ;
}
OC _FILES . remove = function ( dir , file ) {
@ -349,7 +105,7 @@ OC_FILES.remove=function(dir,file){
}
OC _FILES . remove _callback = function ( req ) {
OC _FILES . show browser( OC _FILES . dir ) ;
OC _FILES . browser . show ( OC _FILES . dir ) ;
}
OC _FILES . getSelected = function ( ) {
@ -409,26 +165,38 @@ OC_FILES.file=function(dir,file,type){
this . file = file ;
this . dir = dir ;
this . actions = new Object ( ) ;
this . extention = file . substr ( file . indexOf ( '.' ) ) ;
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 ] ;
}
}
}
}
OC _FILES . file . prototype . showactions = function ( ) {
OC _FILES . showactions ( this . file ) ;
OC _FILES . browser . showactions ( this . file ) ;
}
OC _FILES . file . prototype . hideactions = function ( ) {
OC _FILES . showactions ( this . file , true ) ;
OC _FILES . browser . showactions ( this . file , true ) ;
}
OC _FILES . fileActions = new Object ( ) ;
@ -439,71 +207,47 @@ OC_FILES.fileActions.all.remove=function(){
OC _FILES . remove ( this . dir , this . file ) ;
}
OC _FILES . fileActions . all . rename = function ( ) {
OC _FILES . rename ( this . dir , this . file ) ;
OC _FILES . browser . show _ rename( this . dir , this . file ) ;
}
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 . showactions = function ( file , hide ) {
node = document . getElementById ( file ) ;
if ( node . actionsshown || hide ) {
if ( node . actionsdiv ) {
node . removeChild ( node . actionsdiv ) ;
}
node . actionsdiv = null ;
node . actionsshown = false
} else {
// OC_FILES.hideallactions();
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 ) ;
actions = OC _FILES . files [ file ] . actions ;
for ( name in actions ) {
if ( actions [ name ] . call ) {
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 ( name ) ) ;
td . setAttribute ( 'onclick' , 'OC_FILES.files[\'' + file + '\'].actions[\'' + name + '\'].call(OC_FILES.files[\'' + file + '\'])' ) ;
}
}
node . appendChild ( div ) ;
OC _FILES . hideallenabled = false ;
setTimeout ( 'OC_FILES.hideallenabled=true' , 50 ) ;
}
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 . hideallactions = function ( ) {
if ( OC _FILES . hideallenabled ) {
for ( name in OC _FILES . files ) {
if ( OC _FILES . files [ name ] . hideactions ) {
OC _FILES . files [ name ] . hideactions . call ( OC _FILES . files [ name ] ) ;
}
}
}
OC _FILES . fileActions . jpg = new Object ( )
OC _FILES . fileActions . jpg . show = function ( ) {
// window.open(WEBROOT+'/files/open_file.php?dir='+this.dir+'&file='+this.file);
OC _FILES . browser . showImage ( this . dir , this . file ) ;
}
OC _FILES . hideallenabled = true ; //used to prevent browsers from hiding actionslists right after they are displayed;
OC _FILES . fileActions . jpg [ 'default' ] = OC _FILES . fileActions . jpg . show ;
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 ;
}
if ( size . toFixed ) {
size = size . toFixed ( 2 ) ;
}
return '' + size + ' ' + steps [ step ] ;
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 )
}