ajax interface
This commit is contained in:
parent
3f88fb9f14
commit
ba9c95621b
14 changed files with 793 additions and 23 deletions
|
@ -127,6 +127,11 @@ a#owncloud-logo span {
|
|||
font-weight:bold;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.hidden{
|
||||
height:0px;
|
||||
width:0px;
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
border:0px;
|
||||
//do not use display:none here, it breaks iframes in some browsers
|
||||
}
|
34
files/delete.php
Normal file
34
files/delete.php
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?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/>.
|
||||
*
|
||||
*/
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
$dir=$_GET['dir'];
|
||||
$file=$_GET['file'];
|
||||
if(isset($_SESSION['username']) and $_SESSION['username'] and strpos($dir,'..')===false){
|
||||
$file=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
|
||||
if(is_file($file)){
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
45
files/get_files.php
Normal file
45
files/get_files.php
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?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/>.
|
||||
*
|
||||
*/
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
// header('Content-type: text/plain');
|
||||
header('Content-type: application/xml');
|
||||
|
||||
$dir=isset($_GET['dir'])?$_GET['dir']:'';
|
||||
$files=OC_FILES::getdirectorycontent($CONFIG_DATADIRECTORY.'/'.$dir);
|
||||
$dirname=$files[0]['directory'];
|
||||
$dirname=substr($dirname,strrpos($dirname,'/'));
|
||||
ob_clean();
|
||||
echo "<?xml version='1.0' standalone='yes'?>\n";
|
||||
echo "<dir name='$dirname'>\n";
|
||||
foreach($files as $file){
|
||||
$attributes='';
|
||||
foreach($file as $name=>$data){
|
||||
$data=str_replace("'",''',$data);
|
||||
if (is_string($name)) $attributes.=" $name='$data'";
|
||||
}
|
||||
$attributes.=' date=\''.date($CONFIG_DATEFORMAT,$file['mtime']).'\'';
|
||||
echo "<file$attributes/>\n";
|
||||
}
|
||||
echo "</dir>";
|
||||
?>
|
35
files/index.php
Normal file
35
files/index.php
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
//require_once('../../config/config.php');
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
OC_UTIL::addscript('/plugins/ajax/ajax.js');
|
||||
|
||||
OC_UTIL::showheader();
|
||||
|
||||
echo "<div id='content'></div>";
|
||||
|
||||
OC_UTIL::showfooter();
|
||||
?>
|
34
files/rename.php
Normal file
34
files/rename.php
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?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/>.
|
||||
*
|
||||
*/
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
$dir=$_GET['dir'];
|
||||
$file=$_GET['file'];
|
||||
$newname=$_GET['newname'];
|
||||
if($file!=$newname and $newname!='' and isset($_SESSION['username']) and $_SESSION['username'] and strpos($dir,'..')===false){
|
||||
$source=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$file;
|
||||
$target=$CONFIG_DATADIRECTORY.'/'.$dir.'/'.$newname;
|
||||
rename($source,$target);
|
||||
}
|
||||
|
||||
?>
|
37
files/upload.php
Normal file
37
files/upload.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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/>.
|
||||
*
|
||||
*/
|
||||
require_once('../inc/lib_base.php');
|
||||
|
||||
$fileName=$_FILES['file']['name'];
|
||||
$source=$_FILES['file']['tmp_name'];
|
||||
$target=$CONFIG_DATADIRECTORY.'/'.$_GET['dir'].'/'.$fileName;
|
||||
if(isset($_SESSION['username']) and $_SESSION['username'] and strpos($_GET['dir'],'..')===false){
|
||||
if(move_uploaded_file($source,$target)){
|
||||
echo 'true';
|
||||
}else{
|
||||
echo 'false';
|
||||
}
|
||||
}else{
|
||||
echo 'false';
|
||||
}
|
||||
?>
|
BIN
img/icons/delete.png
Normal file
BIN
img/icons/delete.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 641 B |
BIN
img/icons/rename.png
Normal file
BIN
img/icons/rename.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 245 B |
|
@ -35,7 +35,7 @@ class OC_FILES {
|
|||
* @param basedir $basedir
|
||||
* @param dir $dir
|
||||
*/
|
||||
public static function showbrowser($basedir,$dir){
|
||||
public static function showbrowser($basedir,$dir){/*
|
||||
global $CONFIG_DATEFORMAT;
|
||||
global $WEBROOT;
|
||||
|
||||
|
@ -62,29 +62,62 @@ class OC_FILES {
|
|||
// files and directories
|
||||
echo('<div class="center"><table cellpadding="6" cellspacing="0" border="0" class="browser">');
|
||||
$filesfound=false;
|
||||
if (is_dir($directory)) {
|
||||
$content=self::getdirectorycontent($directory);
|
||||
if($content){
|
||||
foreach($content as $file){
|
||||
echo('<tr class="browserline">');
|
||||
OC_UTIL::showicon($file['type']);
|
||||
if($file['type']=='dir') echo('<td class="nametext"><a href="'.$WEBROOT.'/?dir='.$dir.'/'.$file['name'].'">'.$file['name'].'</a></td>');
|
||||
if($file['type']<>'dir') echo('<td class="nametext"><a href="'.$WEBROOT.'/?dir='.$dir.'&file='.$file['name'].'">'.$file['name'].'</a></td>');
|
||||
if($file['type']<>'dir') echo('<td class="sizetext">'.$file['size'].' byte</td>'); else echo('<td></td>');
|
||||
echo('<td class="sizetext">'.date($CONFIG_DATEFORMAT,$file['mtime']).'</td>');
|
||||
echo('</tr>');
|
||||
}
|
||||
}
|
||||
echo('</table>');
|
||||
if(!$content) echo('<p>no files here</p>');
|
||||
echo('</div>');*/
|
||||
echo '<div id="content"/>';
|
||||
}
|
||||
|
||||
/**
|
||||
* get the content of a directory
|
||||
* @param dir $directory
|
||||
*/
|
||||
public static function getdirectorycontent($directory){
|
||||
$filesfound=true;
|
||||
$content=array();
|
||||
$dirs=array();
|
||||
$file=array();
|
||||
if (is_dir($directory)) {
|
||||
if ($dh = opendir($directory)) {
|
||||
while (($file = readdir($dh)) !== false) {
|
||||
if($file<>'.' and $file<>'..'){
|
||||
while (($filename = readdir($dh)) !== false) {
|
||||
if($filename<>'.' and $filename<>'..'){
|
||||
$file=array();
|
||||
$filesfound=true;
|
||||
$stat=stat($directory.'/'.$file);
|
||||
$filetype=filetype($directory .'/'. $file);
|
||||
echo('<tr class="browserline">');
|
||||
OC_UTIL::showicon($filetype);
|
||||
|
||||
if($filetype=='dir') echo('<td class="nametext"><a href="'.$WEBROOT.'/?dir='.$dir.'/'.$file.'">'.$file.'</a></td>');
|
||||
if($filetype<>'dir') echo('<td class="nametext"><a href="'.$WEBROOT.'/?dir='.$dir.'&file='.$file.'">'.$file.'</a></td>');
|
||||
if($filetype<>'dir') echo('<td class="sizetext">'.$stat['size'].' byte</td>'); else echo('<td></td>');
|
||||
echo('<td class="sizetext">'.date($CONFIG_DATEFORMAT,$stat['mtime']).'</td>');
|
||||
echo('</tr>');
|
||||
$file['name']=$filename;
|
||||
$file['directory']=$directory;
|
||||
$stat=stat($directory.'/'.$filename);
|
||||
$file=array_merge($file,$stat);
|
||||
$file['type']=filetype($directory .'/'. $filename);
|
||||
if($file['type']=='dir'){
|
||||
$dirs[$file['name']]=$file;
|
||||
}else{
|
||||
$files[$file['name']]=$file;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
echo('</table>');
|
||||
if(!$filesfound) echo('<p>no files here</p>');
|
||||
echo('</div>');
|
||||
ksort($dirs);
|
||||
ksort($files);
|
||||
$content=array_merge($dirs,$files);
|
||||
if($filesfound){
|
||||
return $content;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,10 +3,17 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>ownCloud</title>
|
||||
<base href="<?php echo($WEBROOT); ?>/" />
|
||||
<link rel="stylesheet" type="text/css" href="css/default.php" />
|
||||
<base href="<?php echo($WEBROOT); ?>/"/>
|
||||
<link rel="stylesheet" type="text/css" href="css/default.php"/>
|
||||
<script type='text/ecmascript' src='<?php echo($WEBROOT)?>/js/lib_ajax.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/ajax.js'></script>
|
||||
<script type='text/ecmascript'>
|
||||
var WEBROOT='<?php echo($WEBROOT)?>';
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<body onload='OC_onload.run()'>
|
||||
<?php
|
||||
echo('<h1><a id="owncloud-logo" href="'.$WEBROOT.'"><span>ownCloud</span></a></h1>');
|
||||
|
||||
|
@ -15,6 +22,7 @@ echo('<h1><a id="owncloud-logo" href="'.$WEBROOT.'"><span>ownCloud</span></a></h
|
|||
$error=OC_CONFIG::writeconfiglisener();
|
||||
echo $error;
|
||||
if(empty($CONFIG_ADMINLOGIN)) {
|
||||
global $FIRSTRUN;
|
||||
$FIRSTRUN=true;
|
||||
echo('<div class="center">');
|
||||
echo('<p class="errortext">'.$error.'</p>');
|
||||
|
|
28
js/ajax.js
Normal file
28
js/ajax.js
Normal file
|
@ -0,0 +1,28 @@
|
|||
/**
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
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)});
|
55
js/lib_ajax.js
Normal file
55
js/lib_ajax.js
Normal file
|
@ -0,0 +1,55 @@
|
|||
/**
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
//The callBack object provides an easy way to pass a member of an object as callback parameter and makes sure that the 'this' is always set correctly when called.
|
||||
callBack=function(func,obj){
|
||||
this.func=func;
|
||||
this.obj=obj;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
//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.run=function(){
|
||||
for(index in OC_onload.items){
|
||||
if(OC_onload.items[index].call){
|
||||
OC_onload.items[index].call();
|
||||
}
|
||||
}
|
||||
}
|
306
js/lib_files.js
Normal file
306
js/lib_files.js
Normal file
|
@ -0,0 +1,306 @@
|
|||
/**
|
||||
* 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=new Object();
|
||||
OC_FILES.xmlloader=new OCXMLLoader();
|
||||
|
||||
OC_FILES.getdirectorycontent_parse=function(req){
|
||||
var files=new Array();
|
||||
var response=req.responseXML;
|
||||
if(response){
|
||||
var fileElements=response.getElementsByTagName('file');
|
||||
if(fileElements.length>0){
|
||||
for(index in fileElements){
|
||||
var file=new Array();
|
||||
var attributes=Array('size','name','type','directory','date');
|
||||
for(i in attributes){
|
||||
var name=attributes[i];
|
||||
file[name]=fileElements.item(index).getAttribute(name);
|
||||
}
|
||||
files[file.name]=file;
|
||||
}
|
||||
}
|
||||
if(OC_FILES.getdirectorycontent_callback){
|
||||
OC_FILES.getdirectorycontent_callback(files);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OC_FILES.getdirectorycontent=function(dir,callback){
|
||||
if(callback){
|
||||
OC_FILES.getdirectorycontent_callback=callback;
|
||||
}
|
||||
OC_FILES.xmlloader.setCallBack(OC_FILES.getdirectorycontent_parse);
|
||||
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;
|
||||
|
||||
//remove current content;
|
||||
var contentNode=document.getElementById('content');
|
||||
if(contentNode.hasChildNodes()){
|
||||
while(contentNode.childNodes.length >=1){
|
||||
contentNode.removeChild(contentNode.firstChild);
|
||||
}
|
||||
}
|
||||
|
||||
// breadcrumb
|
||||
if(dirs.length>0) {
|
||||
var breadcrumb=document.createElement('div');
|
||||
breadcrumb.className='center';
|
||||
var table=document.createElement('table');
|
||||
breadcrumb.appendChild(table);
|
||||
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.className='nametext';
|
||||
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='nametext';
|
||||
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));
|
||||
}
|
||||
}
|
||||
contentNode.appendChild(breadcrumb);
|
||||
}
|
||||
|
||||
// files and directories
|
||||
var files=document.createElement('div');
|
||||
OC_FILES.browser=files;
|
||||
files.className='center';
|
||||
var table=document.createElement('table');
|
||||
files.appendChild(table);
|
||||
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){
|
||||
for(index in content){
|
||||
file=content[index];
|
||||
if(file.name){
|
||||
tr=document.createElement('tr');
|
||||
tbody.appendChild(tr);
|
||||
tr.className='browserline';
|
||||
tr.appendChild(OC_FILES.showicon(file['type']));
|
||||
td=document.createElement('td');
|
||||
tr.appendChild(td);
|
||||
td.className='nametext';
|
||||
td.setAttribute('name',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(file['size']+' bytes'));
|
||||
}
|
||||
a=document.createElement('a');
|
||||
img=document.createElement('img');
|
||||
td.appendChild(img);
|
||||
img.className='rename';
|
||||
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);
|
||||
td.className='sizetext';
|
||||
td.appendChild(document.createTextNode(file['date']));
|
||||
if(file['type']!='dir'){
|
||||
td=document.createElement('td');
|
||||
tr.appendChild(td);
|
||||
img=document.createElement('img');
|
||||
td.appendChild(img);
|
||||
img.className='delete';
|
||||
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']+'\')')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
tr=document.createElement('tr');
|
||||
tbody.appendChild(tr);
|
||||
td=document.createElement('td');
|
||||
tr.appendChild(td);
|
||||
td.className='upload';
|
||||
td.setAttribute('colspan','5');
|
||||
this.showuploader(dir,td);
|
||||
contentNode.appendChild(files);
|
||||
}
|
||||
|
||||
OC_FILES.showuploader=function(dir,parent){
|
||||
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 file=document.createElement('input');
|
||||
file.name='file';
|
||||
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.uploadForm.submit();
|
||||
}
|
||||
|
||||
OC_FILES.upload_callback=function(dir){
|
||||
this.showbrowser(dir);
|
||||
}
|
||||
|
||||
OC_FILES.rename=function(dir,file){
|
||||
var item=document.getElementsByName(file).item(0);
|
||||
item.oldContent=new 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);
|
||||
return false;
|
||||
}
|
||||
xmlloader=new OCXMLLoader();
|
||||
xmlloader.setCallBack(OC_FILES.rename_callback);
|
||||
xmlloader.load('files/rename.php?dir='+dir+'&file='+file+'&newname='+newname);
|
||||
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.remove=function(dir,file){
|
||||
remove=confirm('remove file \''+file+'\'?');
|
||||
if(remove){
|
||||
xmlloader=new OCXMLLoader();
|
||||
xmlloader.setCallBack(OC_FILES.remove_callback);
|
||||
xmlloader.load('files/delete.php?dir='+dir+'&file='+file);
|
||||
}
|
||||
}
|
||||
|
||||
OC_FILES.remove_callback=function(req){
|
||||
OC_FILES.showbrowser(OC_FILES.dir);
|
||||
}
|
150
js/lib_xmlloader.js
Normal file
150
js/lib_xmlloader.js
Normal file
|
@ -0,0 +1,150 @@
|
|||
/**
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
var READY_STATE_UNINITIALIZED=0;
|
||||
var READY_STATE_LOADING=1;
|
||||
var READY_STATE_LOADED=2;
|
||||
var READY_STATE_INTERACTIVE=3;
|
||||
var READY_STATE_COMPLETE=4;
|
||||
|
||||
/**
|
||||
* Class for loaded browser independant xml loading
|
||||
*/
|
||||
OCXMLLoader=function(){
|
||||
this.errorCallBack=this.defaultError;
|
||||
}
|
||||
|
||||
OCXMLLoader.prototype={
|
||||
contentType:'',
|
||||
method:'GET',
|
||||
request:'',
|
||||
callBack:null,
|
||||
async:true,
|
||||
|
||||
/**
|
||||
* Loads an XML document
|
||||
* @param string url
|
||||
* @param string request
|
||||
* @none
|
||||
*/
|
||||
load:function(url,request){
|
||||
request=(request)?request:"";
|
||||
method=this.method;
|
||||
contentType=(!this.contentType && method=="POST")?"application/x-www-form-urlencoded":this.contentType;
|
||||
if(window.XDomainRequest){
|
||||
req=new XDomainRequest();
|
||||
}else if(window.XMLHttpRequest){
|
||||
req=new XMLHttpRequest();
|
||||
}else if(window.ActiveXObject){
|
||||
req=new ActiveXObject('Microsoft.XMLHTTP')
|
||||
}
|
||||
if (req){
|
||||
try{
|
||||
var loader=this;
|
||||
req.onreadystatechange=function(){
|
||||
loader.onReadyState.call(loader,req)
|
||||
}
|
||||
req.open(method,url,this.async);
|
||||
if (contentType){
|
||||
req.setRequestHeader("Content-Type",contentType);
|
||||
}
|
||||
if(method=="POST"){
|
||||
req.setRequestHeader("Content-length", request.length);
|
||||
req.setRequestHeader("Connection", "close");
|
||||
}
|
||||
req.send(request);
|
||||
}catch (err){
|
||||
this.errorCallBack(req);
|
||||
}
|
||||
}
|
||||
},
|
||||
onReadyState:function(req){
|
||||
var ready=req.readyState;
|
||||
if (ready==READY_STATE_COMPLETE){
|
||||
var HttpStatus=req.status;
|
||||
if (HttpStatus==200 || HttpStatus==0){
|
||||
//alert("response: "+this.req.responseText);
|
||||
this.callBack(req);
|
||||
}else{
|
||||
this.errorCallBack(req);
|
||||
}
|
||||
}
|
||||
},
|
||||
defaultError:function(req){
|
||||
alert("Error fetching data!"
|
||||
+"\n\n<br/><br/>ReadyState: "+req.readyState
|
||||
+"\n<br/>Status: "+req.status
|
||||
+"\n<br/>Headers: "+req.getAllResponseHeaders()
|
||||
+"\n<br/>File: "+req.url
|
||||
+"\n<br/>Response: "+req.responseText);
|
||||
},
|
||||
/**
|
||||
* Sets the request method
|
||||
* @param string method
|
||||
* @none
|
||||
*/
|
||||
setMethod:function(method){
|
||||
this.method=method;
|
||||
},
|
||||
/**
|
||||
* Sets the content type
|
||||
* @param string type
|
||||
* @none
|
||||
*/
|
||||
setType:function(type){
|
||||
this.type=type;
|
||||
},
|
||||
/**
|
||||
* Sets the callback function
|
||||
* @param function callBack
|
||||
* @none
|
||||
*/
|
||||
setCallBack:function(callBack){
|
||||
this.callBack=callBack;
|
||||
},
|
||||
/**
|
||||
* Sets the error callback function
|
||||
* @param function errorCallBack
|
||||
* @none
|
||||
*/
|
||||
setErrorCallBack:function(errorCallBack){
|
||||
this.errorCallBack=errorCallBack;
|
||||
}
|
||||
}
|
||||
|
||||
testClass=function(){
|
||||
}
|
||||
|
||||
testClass.prototype={
|
||||
testFunc:function(){
|
||||
this.test="test";
|
||||
test=new OCXMLLoader(this);
|
||||
test.setCallBack(this.callBack);
|
||||
test.load(parseUri('%root%/data/sites/index.xml'));
|
||||
},
|
||||
callBack:function(req){
|
||||
alert(this.test);
|
||||
alert(req.responseText);
|
||||
}
|
||||
}
|
||||
test=new testClass()
|
||||
test.testFunc
|
||||
// mainLoadStack.append(test.testFunc,test);
|
Loading…
Reference in a new issue