summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Karlitschek <frank@dev.(none)>2010-04-12 15:50:39 +0200
committerFrank Karlitschek <frank@dev.(none)>2010-04-12 15:50:39 +0200
commitc69eab18d25fb685705a7bc20117f2f042fe7981 (patch)
tree7a307c335ef6e2be1b283612313b3774318090a2
parenta061dd3314e3bf1e9adf29b5033086c991b2cf51 (diff)
parent4a1d9370fcd5fb542d8d3915658d7fa1167dfeaf (diff)
downloadnextcloud-server-c69eab18d25fb685705a7bc20117f2f042fe7981.tar.gz
nextcloud-server-c69eab18d25fb685705a7bc20117f2f042fe7981.zip
Merge commit 'refs/merge-requests/18' of git://gitorious.org/owncloud/owncloud
merge Conflicts: index.php
-rwxr-xr-xcss/default.php159
-rw-r--r--files/get_file.php2
-rw-r--r--files/open_file.php63
-rwxr-xr-xinc/lib_files.php2
-rwxr-xr-xinc/lib_log.php2
-rwxr-xr-xinc/templates/footer.php10
-rwxr-xr-xinc/templates/header.php5
-rwxr-xr-xindex.php2
-rw-r--r--js/ajax.js7
-rw-r--r--js/filebrowser.js376
-rw-r--r--js/lib_ajax.js75
-rwxr-xr-xjs/lib_event.js49
-rw-r--r--js/lib_files.js380
-rwxr-xr-xjs/lib_notification.js48
-rwxr-xr-xjs/lib_timer.js52
15 files changed, 874 insertions, 358 deletions
diff --git a/css/default.php b/css/default.php
index 6ab515cca7a..dd1ad09b015 100755
--- a/css/default.php
+++ b/css/default.php
@@ -2,10 +2,49 @@
header('Content-Type: text/css');
require_once('../inc/lib_base.php');
?>
-body {
+html,body {
background-color: #F9F9F9;
margin:0px;
+ height:100%;
+ width:100%;
+ position:absolute;
+}
+#mainlayout{
+ width:100%;
+ height:100%;
+}
+
+#mainlayout>div{
+ position:absolute;
+ width:100%;
+ left:0px;
}
+
+#mainlayout>.head{
+ height:175px;
+ top:0px;
+}
+
+#mainlayout>.body{
+ vertical-align:top;
+ top:175px;
+ bottom:75px;
+ overflow:auto;
+}
+
+#mainlayout>.foot{
+ height:75px;
+ bottom:0px;
+}
+
+#mainlayout>.foot>.bar{
+ background-color:#EEE;
+ position:absolute;
+ top:0px;
+ height:24px;
+ width:100%;
+}
+
body.error {background-color: #F0F0F0;}
body,th,td,ul,li,a,div,p,pre {color:#333333; font-family:Verdana,"Bitstream Vera Sans",Arial,Helvetica,Sans,"Bitstream Vera Serif"; font-size:9.0pt;}
@@ -35,6 +74,8 @@ div#nav {
background-color: #EEEEEE;
padding:0px;
margin:0px;
+ position:absolute;
+ bottom:0px;
}
a#owncloud-logo {
@@ -54,10 +95,13 @@ a#owncloud-logo span {
.errortext {color:#CC3333; font-size:9pt; font-weight:bold; text-decoration:none;}
.highlighttext {color:#333333; font-size:9pt; font-weight:bold; text-decoration:none;}
.datetext {color:#333333; font-size:7pt;}
-.sizetext {color:#333333; font-size:7pt;}
+.sizetext{
+ color:#333333;
+ font-size:7pt;
+}
.footer {color:#999999; text-align:center; font-size:9pt; margin-top:4em;}
.footer a {color:#999999; text-decoration:none;}
-.hint {color:#AAAAAA; text-align:center; font-size:8pt; margin-top:4em; margin-bottom:2em;}
+.hint {color:#AAAAAA; text-align:center; font-size:8pt; margin-top:10px;}
.hint a{color:#AAAAAA; text-align:center; font-size:8pt;}
.formstyle {
@@ -139,7 +183,11 @@ a#owncloud-logo span {
margin:0px;
padding:0px;
border:0px;
- //do not use display:none here, it breaks iframes in some browsers
+ position:absolute;
+ top:0px;
+ left:0px;
+ overflow:hidden;
+ /*do not use display:none here, it breaks iframes in some browsers*/
}
div.OCNotification{
@@ -153,7 +201,7 @@ div.OCNotification{
div.OCNotificationHolder{
right:20px;
bottom:0px;
- position:absolute;
+ position:fixed;
color:white;
}
@@ -163,20 +211,10 @@ td img.file_actions{
width:9px;
}
-td:hover img.file_actions{
+td.nametext:hover img.file_actions{
height:auto;
}
-td img.rename, td img.delete{
- height:0px;
- width:16px;
- cursor:pointer;
-}
-
-td:hover img.rename, tr:hover img.delete{
- height:16px;
-}
-
div.breadcrumb{
background-color: #F0F0F0;
}
@@ -194,4 +232,93 @@ div.fileactionlist td{
div.fileactionlist td:hover{
background-color: #CCCCCC;
+}
+
+tr.breadcrumb{
+ background-color: #CCCCCC;
+}
+
+#content, div.browser{
+ vertical-align:top;
+ /*min-height:200px;*/
+ height:100%;
+}
+
+table.browser{
+ border: solid 3px #CCC;
+ height:100%;
+ border-spacing:0px;
+}
+
+table.browser thead, table.browser tfoot{
+ background-color:#CCC;
+ width:100%;
+}
+
+td.sizetext{
+ width:110px;
+ text-align:right;
+}
+
+td.fileSelector, td.fileicon{
+ width:16px;
+}
+
+span.upload{
+ float:right;
+ text-align:right;
+ margin:0px;
+ padding:0px;
+}
+
+table.browser>tbody{
+ vertical-align:top;
+}
+
+table.browser>tbody>tr>td, table.browser>tbody>tr{
+ padding:0px;
+ /*height:100%;*/
+}
+
+div.fileList{
+ width:800px;
+ overflow:auto;
+ vertical-align:top;
+ height:100%;
+ min-height:200px;
+ top:0px;
+}
+
+div.fileList table{
+ width:100%;
+ vertical-align:top;
+}
+
+table.browser thead td,table.browser tfoot td{
+ padding-left:6px;
+ padding-top:0px;
+ padding-bottom:0px;
+}
+
+#imageframe{
+ position:absolute;
+ top:0px;
+ left:0px;
+ height:100%;
+ width:100%;
+ background:rgb(20,20,20);
+ background:rgba(20,20,20,0.9);
+ text-align:center;
+}
+
+#imageframe img{
+ vertical-align:middle;
+ max-height:90%;
+ max-width:90%;
+ margin:10px;
+ border: black solid 3px;
+}
+
+tr.hint, tr.hint td{
+ background:transparent;
} \ No newline at end of file
diff --git a/files/get_file.php b/files/get_file.php
index 72fc8938063..9ec539ee7e0 100644
--- a/files/get_file.php
+++ b/files/get_file.php
@@ -20,7 +20,7 @@
*
*/
-//not this file is for getting files themselves, get_files.php is for getting a list of files.
+//note this file is for getting files themselves, get_files.php is for getting a list of files.
require_once('../inc/lib_base.php');
diff --git a/files/open_file.php b/files/open_file.php
new file mode 100644
index 00000000000..933efa51e1e
--- /dev/null
+++ b/files/open_file.php
@@ -0,0 +1,63 @@
+<?php
+/**
+* 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 <http://www.gnu.org/licenses/>.
+*
+*/
+
+//not this file is for getting files themselves, get_files.php is for getting a list of files.
+
+require_once('../inc/lib_base.php');
+
+function get_mime_type($filename, $mimePath = '../etc') {
+ $fileext = substr(strrchr($filename, '.'), 1);
+ if (empty($fileext)) return (false);
+ $regex = "/^([\w\+\-\.\/]+)\s+(\w+\s)*($fileext\s)/i";
+ $lines = file("$mimePath/mime.types");
+ foreach($lines as $line) {
+ if (substr($line, 0, 1) == '#') continue; // skip comments
+ $line = rtrim($line) . " ";
+ if (!preg_match($regex, $line, $matches)) continue; // no match to the extension
+ return ($matches[1]);
+ }
+ return (false); // no match at all
+}
+
+$file=$_GET['file'];
+$dir=(isset($_GET['dir']))?$_GET['dir']:'';
+if(strstr($file,'..') or strstr($dir,'..')){
+ die();
+}
+$filename=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
+// $ftype='application/octet-stream';
+// $finfo=new finfo(FILEINFO_MIME);
+// $fres=@$finfo->file($filename);
+// if (is_string($fres) && !empty($fres)) {
+// $ftype = $fres;
+// }
+$ftype=get_mime_type($filename);
+ob_end_clean();
+// echo $ftype;
+// die();
+header('Content-Type: '.$ftype);
+header('Expires: 0');
+header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+header('Pragma: public');
+header('Content-Length: ' . filesize($filename));
+readfile($filename);
+?> \ No newline at end of file
diff --git a/inc/lib_files.php b/inc/lib_files.php
index dbafa52a180..5ddf5a4e1f3 100755
--- a/inc/lib_files.php
+++ b/inc/lib_files.php
@@ -77,7 +77,7 @@ class OC_FILES {
echo('</table>');
if(!$content) echo('<p>no files here</p>');
echo('</div>');*/
- echo '<div id="content"/>';
+ echo '<div id="content"></div>';
}
/**
diff --git a/inc/lib_log.php b/inc/lib_log.php
index 980011e05e2..2a8a91be40a 100755
--- a/inc/lib_log.php
+++ b/inc/lib_log.php
@@ -59,7 +59,7 @@ class OC_LOG {
*/
public static function show(){
global $CONFIG_DATEFORMAT;
- echo('<div class="center"><table cellpadding="6" cellspacing="0" border="0" class="browser">');
+ echo('<div class="center"><table cellpadding="6" cellspacing="0" border="0" class="log">');
$result = OC_DB::query('select timestamp,user,type,message from log order by timestamp desc limit 20');
$count=OC_DB::numrows($result);
diff --git a/inc/templates/footer.php b/inc/templates/footer.php
index 5ce34a95791..16b41d3e2e3 100755
--- a/inc/templates/footer.php
+++ b/inc/templates/footer.php
@@ -1,6 +1,16 @@
+<?php
+global $WEBROOT;
+?>
+</div>
+<div class='foot'>
+<div class='bar'><p class="hint">
+Hint: Mount it via webdav like this: <a href="webdav://'.<?php echo($_SERVER["HTTP_HOST"].$WEBROOT.'/webdav/owncloud.php');?>">webdav://<?php echo($_SERVER["HTTP_HOST"].$WEBROOT);?>/webdav/owncloud.php</a>
+</p></div>
<p class="footer">
<?php
echo('<a href="http://ownCloud.org">ownCloud</a> - 1.0 beta 2');
?>
</p>
+</div>
+</div>
</body></html>
diff --git a/inc/templates/header.php b/inc/templates/header.php
index ec714684589..09529f67268 100755
--- a/inc/templates/header.php
+++ b/inc/templates/header.php
@@ -10,6 +10,8 @@
<script type='text/ecmascript' src='<?php echo($WEBROOT)?>/js/lib_notification.js'></script>
<script type='text/ecmascript' src='<?php echo($WEBROOT)?>/js/lib_xmlloader.js'></script>
<script type='text/ecmascript' src='<?php echo($WEBROOT)?>/js/lib_files.js'></script>
+ <script type='text/ecmascript' src='<?php echo($WEBROOT)?>/js/lib_event.js'></script>
+ <script type='text/ecmascript' src='<?php echo($WEBROOT)?>/js/filebrowser.js'></script>
<?php
foreach(OC_UTIL::$scripts as $script){
echo("<script type='text/ecmascript' src='$WEBROOT/$script'></script>");
@@ -20,6 +22,8 @@ foreach(OC_UTIL::$scripts as $script){
</script>
</head>
<body onload='OC_onload.run()'>
+<div id='mainlayout'>
+<div class='head'>
<?php
echo('<h1><a id="owncloud-logo" href="'.$WEBROOT.'"><span>ownCloud</span></a></h1>');
@@ -51,6 +55,7 @@ echo('<h1><a id="owncloud-logo" href="'.$WEBROOT.'"><span>ownCloud</span></a></h
echo('<div id="nav" class="center">');
OC_UTIL::shownavigation();
echo('</div>');
+ echo('</div><div class="body">');
}
?>
diff --git a/index.php b/index.php
index dd613f2854f..e755ab86237 100755
--- a/index.php
+++ b/index.php
@@ -37,8 +37,6 @@ echo('heya');
OC_UTIL::showheader();
OC_FILES::showbrowser($CONFIG_DATADIRECTORY,$dir);
-echo('hi');
- echo('<br /><br /><p class="hint">Hint: Mount it via webdav like this: <a href="webdav://'.$_SERVER["HTTP_HOST"].$WEBROOT.'/webdav/owncloud.php">webdav://'.$_SERVER["HTTP_HOST"].$WEBROOT.'/webdav/owncloud.php</a></p>');
OC_UTIL::showfooter();
diff --git a/js/ajax.js b/js/ajax.js
index 6c0185c6592..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.showbrowser(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
new file mode 100644
index 00000000000..dac81327b69
--- /dev/null
+++ b/js/filebrowser.js
@@ -0,0 +1,376 @@
+/**
+* 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 <http://www.gnu.org/licenses/>.
+*
+*/
+
+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){
+ if(!dir){
+ dir='';
+ }
+ OC_FILES.dir=dir;
+ OC_FILES.getdirectorycontent(dir,OC_FILES.browser.show_callback);
+}
+
+OC_FILES.browser.show_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.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');
+ 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);
+// table.setAttribute('cellpadding',6);
+
+ // breadcrumb
+ if(dirs.length>0) {
+ tr=document.createElement('tr');
+ thead.appendChild(tr);
+ tr.className='breadcrumb';
+ 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','select_all');
+ input.setAttribute('id','select_all');
+ input.addEvent('onclick',OC_FILES.selectAll);
+ td.appendChild(input);
+ td=document.createElement('td');
+ tr.appendChild(td);
+ td.className='breadcrumb';
+ var a=document.createElement('a');
+ td.appendChild(a);
+ a.setAttribute('href','#');
+ a.addEvent('onclick',OC_FILES.browser.show);
+ a.appendChild(document.createTextNode('Home'));
+ var currentdir='';
+ 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.addEvent('onclick',OC_FILES.browser.show,currentdir);
+ img=document.createElement('img');
+ a.appendChild(img);
+ img.src=WEBROOT+'/img/arrow.png';
+ a.appendChild(document.createTextNode(' ' +d));
+ }
+ }
+ }
+
+ // files and directories
+
+ var filesfound=false;
+ var sizeTd=null;
+ if(content){
+ tr=document.createElement('tr');
+ tbody.appendChild(tr);
+ td=document.createElement('td');
+ td.setAttribute('colspan','6');
+ tr.appendChild(td);
+ div=document.createElement('div');
+ td.appendChild(div);
+ div.className='fileList';
+ div.setAttribute('style','max-height:'+(parseInt(document.body.clientHeight)-300)+'px;');
+ table2=document.createElement('table');
+ div.appendChild(table2);
+ tbody2=document.createElement('tbody');
+ table2.appendChild(tbody2);
+ table2.setAttribute('cellpadding',6);
+ table2.setAttribute('cellspacing',0);
+ for(index in content){
+ var 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');
+ tbody2.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',file['name']);
+ td.appendChild(input);
+ tr.appendChild(OC_FILES.browser.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']));
+ var fileObject=OC_FILES.files[file['name']];
+ a.addEvent('onclick',new callBack(fileObject.actions['default'],fileObject));
+ if(file['type']=='dir'){
+ td.setAttribute('colspan',2);
+ a.setAttribute('href','#'+dir+'/'+file['name']);
+ }else{
+ a.setAttribute('href','#'+dir);
+ sizeTd=document.createElement('td');
+ tr.appendChild(sizeTd);
+ sizeTd.className='sizetext';
+ sizeTd.appendChild(document.createTextNode(sizeFormat(file['size'])));
+ }
+ 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';
+ var name=file['name'];
+ img.addEvent('onclick',OC_FILES.browser.showactions,name);
+ td=document.createElement('td');
+ tr.appendChild(td);
+ td.className='sizetext';
+ td.appendChild(document.createTextNode(file['date']));
+ }
+ }
+ }
+ tr=document.createElement('tr');
+ tfoot.appendChild(tr);
+ tr.className='utilityline';
+ td=document.createElement('td');
+ tr.appendChild(td);
+ td.setAttribute('colspan','4');
+ span=document.createElement('span');
+ td.appendChild(span);
+ dropdown=document.createElement('select');
+ span.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(capitaliseFirstLetter(index)));
+ }
+ }
+ span.appendChild(document.createTextNode(' Selected '));
+ button=document.createElement('button');
+ span.appendChild(button);
+ button.appendChild(document.createTextNode('Go'));
+ button.addEvent('onclick',OC_FILES.action_selected);
+ span=document.createElement('span');
+ span.className='upload';
+ td.appendChild(span);
+ OC_FILES.browser.showuploader(dir,span,content['max_upload']);
+ contentNode.appendChild(table);
+}
+
+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{
+ img.src=WEBROOT+'/img/icons/other.png';
+ }
+ return td;
+}
+
+OC_FILES.browser.showuploader=function(dir,parent,max_upload){
+ OC_FILES.uploadForm=document.createElement('form');
+ OC_FILES.uploadForm.setAttribute('target','uploadIFrame');
+ OC_FILES.uploadForm.setAttribute('action','files/upload.php?dir='+dir);
+ OC_FILES.uploadForm.method='post';
+ OC_FILES.uploadForm.setAttribute('enctype','multipart/form-data');
+ OC_FILES.uploadIFrame=document.createElement('iframe');
+ OC_FILES.uploadIFrame.className='hidden';
+ OC_FILES.uploadIFrame.name='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');
+ 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,[dir]);
+ OC_FILES.uploadForm.appendChild(document.createTextNode('Upload file: '));
+ OC_FILES.uploadForm.appendChild(file);
+ parent.appendChild(OC_FILES.uploadForm);
+ parent.appendChild(OC_FILES.uploadIFrame);
+}
+
+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,[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.addEvent('onblur',OC_FILES.browser.rename_cancel,[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){
+ node=document.getElementById(file);
+ if(node &&(node.actionsshown || hide)){
+ if(node.actionsdiv){
+ node.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;
+ for(name in actions){
+ if(actions[name].call && name!='default'){
+ 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',new callBack(action,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){
+ 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='+dir+'&file='+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
diff --git a/js/lib_ajax.js b/js/lib_ajax.js
index 28062e66532..319875d40e7 100644
--- a/js/lib_ajax.js
+++ b/js/lib_ajax.js
@@ -32,35 +32,84 @@ callBack.callBacks=Array();
callBack.call=function(id,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10){
callback=callBack.callBacks[id];
if(callback){
- callback.func.call(callback.obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+ return callback.func.call(callback.obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
}
}
callBack.prototype=function(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10){
- this.call(false,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+ return this.call(false,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
- this.func.call(this.obj,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+ 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
- 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
new file mode 100755
index 00000000000..f8482402d09
--- /dev/null
+++ b/js/lib_event.js
@@ -0,0 +1,49 @@
+/**
+ * eventHandler
+ *
+ * @author Icewind <icewind (at) derideal (dot) com>
+ * @copyright 2009
+ * @license http://www.gnu.org/licenses/gpl.html GNU Public License
+ * @version 0.1
+ */
+
+/*event handling
+usage: document.events.add(node,type,function,arguments);
+ or: node.addEvent(type,function,arguments);
+*/
+
+document.events=new Object;
+document.events.functions=Array();
+document.events.args=Array();
+
+document.events.add=function(element,type,func,args){
+ if(args){
+ if(typeof args!='object' && typeof args!='Object'){
+ args=[args];
+ }
+ }
+ 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{
+ element.attachEvent(type,callback);
+ }
+ }
+}
+
+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 535eacd9790..443d440380e 100644
--- a/js/lib_files.js
+++ b/js/lib_files.js
@@ -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.showbrowser(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.showbrowser(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.showbrowser(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)
} \ No newline at end of file
diff --git a/js/lib_notification.js b/js/lib_notification.js
new file mode 100755
index 00000000000..7c19a04b58e
--- /dev/null
+++ b/js/lib_notification.js
@@ -0,0 +1,48 @@
+/**
+ * StarLight - A client side webpage framework
+ *
+ * @package StarLight
+ * @author Icewind <icewind (at) derideal (dot) com>
+ * @copyright 2009
+ * @license http://www.gnu.org/licenses/gpl.html GNU Public License
+ * @url http://blacklight.metalwarp.com/starlight
+ * @version 0.1
+ */
+
+OCNotification=function(text,time){
+ this.text=text;
+ this.time=(time)?time:0;
+ this.notify();
+}
+
+OCNotification.prototype={
+ notify:function(){
+ this.holder=document.getElementById('OCNotificationHolder');
+ if (!this.holder){
+ this.holder=document.createElement('div');
+ this.holder.className='OCNotificationHolder';
+ this.holder.setAttribute('class','OCNotificationHolder');
+ this.holder.setAttribute('id','OCNotificationHolder');
+ document.getElementsByTagName('body').item(0).appendChild(this.holder);
+ }
+ this.notification=document.createElement('div');
+ this.notification.className='OCNotification';
+ this.notification.setAttribute('class','OCNotification');
+ if (document.documentElement.innerHTML){
+ this.notification.innerHTML=this.text;
+ }else{
+ var text=document.createTextNode(this.text);
+ this.notification.appendChild(text);
+ }
+ this.holder.insertBefore(this.notification,this.holder.firstChild);
+ this.notification.addEvent('onclick',new callBack(this.removeNotification,this));
+ if (this.time>0){
+ this.timer = new OCTimer(this.removeNotification, this.time,false,this);
+ }
+ },
+ removeNotification:function(){
+ if(this.notification){
+ this.holder.removeChild(this.notification);
+ }
+ }
+} \ No newline at end of file
diff --git a/js/lib_timer.js b/js/lib_timer.js
new file mode 100755
index 00000000000..aadea90ba27
--- /dev/null
+++ b/js/lib_timer.js
@@ -0,0 +1,52 @@
+/**
+ * StarLight - A client side webpage framework
+ *
+ * @package StarLight
+ * @author Icewind <icewind (at) derideal (dot) com>
+ * @copyright 2009
+ * @license http://www.gnu.org/licenses/gpl.html GNU Public License
+ * @url http://blacklight.metalwarp.com/starlight
+ * @version 0.1
+ */
+OCTimer=function(callback,time,repeat,object){
+ this.object=(object)?object:false;
+ this.repeat=(!(repeat===undefined))?repeat:true;
+ this.callback=callback;
+ this.time=time;
+ this.timer=0;
+ this.number=OCTimer.count;
+ OCTimer.count++;
+ OCTimer.timers[this.number]=this;
+ if(this.time){
+ this.start();
+ }
+}
+
+OCTimer.count=0;
+OCTimer.timers=Array();
+
+OCTimer.prototype={
+ start:function(){
+ this.running=true;
+ eval('var func=function(){OCTimer.timers['+this.number+'].run();};');
+ if(this.repeat){
+ this.timer = setInterval(func, this.time);
+ }else{
+ this.timer = setTimeout(func, this.time);
+ }
+ },
+ run:function(){
+ if (!this.repeat){
+ this.stop();
+ }
+ if (this.object){
+ this.callback.call(this.object);
+ }else{
+ this.callback.call();
+ }
+ },
+ stop:function(){
+ clearInterval(this.timer);
+ this.running=false;
+ }
+} \ No newline at end of file