14 changed files with 793 additions and 23 deletions
-
11css/default.php
-
34files/delete.php
-
45files/get_files.php
-
35files/index.php
-
34files/rename.php
-
37files/upload.php
-
BINimg/icons/delete.png
-
BINimg/icons/rename.png
-
67inc/lib_files.php
-
14inc/templates/header.php
-
28js/ajax.js
-
55js/lib_ajax.js
-
306js/lib_files.js
-
150js/lib_xmlloader.js
@ -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); |
|||
} |
|||
} |
|||
|
|||
?>
|
|||
@ -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>"; |
|||
?>
|
|||
@ -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(); |
|||
?>
|
|||
@ -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); |
|||
} |
|||
|
|||
?>
|
|||
@ -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'; |
|||
} |
|||
?>
|
|||
|
After Width: 16 | Height: 16 | Size: 641 B |
|
After Width: 16 | Height: 16 | Size: 245 B |
@ -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)}); |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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);
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue