diff options
author | Robin Appelman <icewind1991@gmail.com> | 2010-09-06 23:09:14 +0200 |
---|---|---|
committer | Robin Appelman <icewind1991@gmail.com> | 2010-09-06 23:09:14 +0200 |
commit | 5da12fcfa13f2c3497470edc97315363aa89e47c (patch) | |
tree | 5e988c4f2f88b86493e21be03c69440052290855 | |
parent | b0dbb2ac9d5f5899ea6b9cad808413aeac7292d1 (diff) | |
download | nextcloud-server-5da12fcfa13f2c3497470edc97315363aa89e47c.tar.gz nextcloud-server-5da12fcfa13f2c3497470edc97315363aa89e47c.zip |
use json to encode the file list, should work better with filenames containing non-ascii characters
-rw-r--r-- | files/api.php | 22 | ||||
-rw-r--r-- | js/lib_files.js | 21 |
2 files changed, 30 insertions, 13 deletions
diff --git a/files/api.php b/files/api.php index d6e04d4550f..3cb796d432c 100644 --- a/files/api.php +++ b/files/api.php @@ -53,7 +53,10 @@ if($arguments['action']){ OC_FILES::get($arguments['dir'],$arguments['file']); break; case 'getfiles': - echo json_encode(OC_FILES::getdirectorycontent($arguments['dir'])); + $max_upload=min(return_bytes(ini_get('post_max_size')),return_bytes(ini_get('upload_max_filesize'))); + $files=OC_FILES::getdirectorycontent($arguments['dir']); + $files['__max_upload']=$max_upload; + echo json_encode($files); break; case 'gettree': echo json_encode(OC_FILES::getTree($arguments['dir'])); @@ -80,4 +83,19 @@ if($arguments['action']){ } } -?>
\ No newline at end of file +function return_bytes($val) { + $val = trim($val); + $last = strtolower($val[strlen($val)-1]); + switch($last) { + // The 'G' modifier is available since PHP 5.1.0 + case 'g': + $val *= 1024; + case 'm': + $val *= 1024; + case 'k': + $val *= 1024; + } + + return $val; +} +?> diff --git a/js/lib_files.js b/js/lib_files.js index 94af0b896a4..f28a46d3a0a 100644 --- a/js/lib_files.js +++ b/js/lib_files.js @@ -41,18 +41,16 @@ OC_FILES.xmlloader=new OCXMLLoader(); OC_FILES.getdirectorycontent_parse=function(req){ var files=new Array(); - var response=req.responseXML; + var json=eval('('+req.responseText+')'); OC_FILES.cache.files=Array(); - if(response){ - var dir=response.getElementsByTagName('dir').item(0); - var fileElements=response.getElementsByTagName('file'); - if(fileElements.length>0){ - for(index=0;index<fileElements.length;index++){ + if(json){ + for(var name in json){ + if(name!='__max_upload'){ var file=new Array(); var attributes=Array('size','name','type','directory','date','mime'); - for(i in attributes){ - var name=attributes[i]; - file[name]=fileElements.item(index).getAttribute(name); + for(var i in attributes){ + var attributeName=attributes[i]; + file[attributeName]=json[name][attributeName]; } files[file.name]=file; } @@ -61,7 +59,7 @@ OC_FILES.getdirectorycontent_parse=function(req){ if(OC_FILES.cache.incomplete[OC_FILES.dir]){ files=arrayMerge(files,OC_FILES.cache.incomplete[OC_FILES.dir]); } - files['max_upload']=dir.getAttribute('max_upload'); + files['max_upload']=json['__max_upload']; if(OC_FILES.getdirectorycontent_callback){ OC_FILES.getdirectorycontent_callback(files); } @@ -75,7 +73,8 @@ OC_FILES.getdirectorycontent=function(dir,callback,refresh){ OC_FILES.getdirectorycontent_callback=callback; } OC_FILES.xmlloader.setCallBack(OC_FILES.getdirectorycontent_parse); - OC_FILES.xmlloader.load('files/get_files.php?dir='+encodeURIComponent(dir)); +// OC_FILES.xmlloader.load('files/get_files.php?dir='+encodeURIComponent(dir)); + OC_FILES.xmlloader.load('files/api.php?action=getfiles&dir='+encodeURIComponent(dir)); }else{ var files=OC_FILES.cache.files if(OC_FILES.cache.incomplete[OC_FILES.dir]){ |