Subversion Repositories NedoOS

Rev

Rev 670 | Rev 678 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. var curDir='';
  2. var s;
  3. var xhr;
  4. var fileToUp;
  5. var fCnt;
  6. var r;
  7. var cyr866="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ ";
  8. function to866(str){
  9.         var s866="";
  10.         for(var i=0;i<str.length;i++){
  11.                 var ch=str.charCodeAt(i);
  12.                 if(ch>127){
  13.                         ch=cyr866.indexOf(str[i])+128;
  14.                         if(ch>=0){s866+="%"+ch.toString(16).toUpperCase();}
  15.                         else{s866+="x";}
  16.                 }else{
  17.                         s866+=str[i];
  18.                 }
  19.         }
  20.         return s866;
  21. }
  22. function myGet(u) {
  23.         var r = new XMLHttpRequest();
  24.         r.open("GET", to866(u)+"&r="+Math.random(), false);
  25.         r.send(null);  
  26.         return r.responseText;
  27. }
  28.  
  29. function mkdir(){
  30.         var ss = '?m='+window.curDir+'/'+document.getElementById('dirName').value;
  31.         document.getElementById('log').innerHTML=myGet(ss);
  32.         rddir(window.curDir);
  33. }
  34.  
  35. function unlink(dirPath){
  36.         var ss = '?u='+window.curDir+'/'+dirPath;
  37.         document.getElementById('log').innerHTML=myGet(ss);
  38.         rddir(window.curDir);
  39. }
  40. function compareFileInfo(finfoA, finfoB) {
  41.         if(finfoA.isdir==3 || finfoB.isdir==3) return 0;
  42.         return finfoA.fn.localeCompare(finfoB.fn);
  43. }
  44. function rddir(dirPath){
  45.         var i=0;
  46.         var k=0;
  47.         window.s='';
  48.         window.curDir=dirPath;
  49.         window.s+='Current dir: <a href="javascript:rddir(\'\')">0:</a>';
  50.         if(dirPath!=''){
  51.                 while((k=dirPath.indexOf('/',i))!=-1){
  52.                         window.s+='<a href="javascript:rddir(\''+dirPath.substring(0,k)+'\')">'+
  53.                                 dirPath.substring(i,k-i)+'</a>/';
  54.                         i=k+1;
  55.                 }
  56.                 window.s+=dirPath.substring(i);
  57.         }
  58.         window.s+='<br><table>';
  59.         j=JSON.parse(myGet('?d='+dirPath));
  60.         j.fno.sort(compareFileInfo);
  61.         j.fno.forEach(function(item, i, arr) {
  62.                 var n,pn;
  63.                 if(item.isdir==1){
  64.                         if(item.ln!='')n=item.ln;
  65.                         else {
  66.                                 n=item.fn.replace(/([^ ]{0,8}) */,'$1');
  67.                         }
  68.                         if(n=='..')pn=dirPath.substr(0,dirPath.lastIndexOf('/'));
  69.                         else pn=((dirPath=='')?(''):(dirPath+'/'))+n;
  70.                         if(n!="."){
  71.                                 window.s+='<tr>';
  72.                                
  73.                                         window.s+='<td><a href="javascript:rddir(\''+pn+'\')">'+n+'</a></td><td></td><td>';
  74.                                
  75.                                 window.s+='</td><td><a href="javascript:unlink(\''+n+'\')"><img src="fdel.png" alt="del"></a><td>';
  76.                                 window.s+='</tr>';
  77.                         }
  78.                 }
  79.         });    
  80.         j.fno.forEach(function(item, i, arr) {
  81.                 var n,pn;
  82.                 if(item.isdir==0){
  83.                         if(item.ln!='')n=item.ln;
  84.                         else {
  85.                                 n=item.fn.replace(/([^ ]{0,8}) *()/,'$1.$2');
  86.                         }
  87.                         pn=((dirPath=='')?(''):(dirPath+'/'))+n;
  88.                         window.s+='<tr>';
  89.                        
  90.                                 window.s+='<td>'+n+'</td><td>'+item.sz+'B </td><td>'+'<a href="?g='+pn+'"><img src="dload.png" alt="download"></a>';
  91.                                 //if(n.toLowerCase().substring(n.length-4)=='.pt3')s+='<a href="?p='+pn+'">Play</a>';
  92.                        
  93.                         window.s+='</td><td><a href="javascript:unlink(\''+n+'\')"><img src="fdel.png" alt="del"></a><td>';
  94.                         window.s+='</tr>';
  95.                 }
  96.         });
  97.  
  98.         s+='</table>';
  99.         document.getElementById('divlog').innerHTML=s;
  100. }
  101.  
  102. function log(html) {
  103.         document.getElementById('log').innerHTML = html;
  104. }
  105. function endUp(){
  106.         if(window.r!==undefined){
  107.                 if(window.r.response=="") {
  108.                         setTimeout(endUp, 100);
  109.                         return;
  110.                 }
  111.         }
  112.         window.fcnt--;
  113.         if(window.fcnt>0){
  114.                 inpFilePtr();
  115.         }else{
  116.                 rddir(window.curDir);  
  117.                 window.fileToUp.files=null;
  118.                 document.getElementById('btnUpload').innerHTML='upload';
  119.                 window.r = new XMLHttpRequest();
  120.         }
  121. }
  122. fileToUp = document.getElementById("fileToUp");
  123. function inpFilePtr() {
  124.         var cf=window.fileToUp.files[window.fileToUp.files.length-window.fcnt];
  125.         document.getElementById('btnUpload').innerHTML=cf.name+'...';
  126.         window.r = new XMLHttpRequest();
  127.         window.r.open("PUT", to866(((window.curDir=='')?'':(window.curDir+'/'))+cf.name), true);
  128.         window.r.upload.onprogress = function(event) {
  129.                 document.getElementById('btnUpload').innerHTML=cf.name+' '+event.loaded + '/' + event.total;}
  130.         window.r.upload.onload = endUp;
  131.         window.r.upload.onerror = function(event) {
  132.                 inpFilePtr();}
  133.         window.r.send(cf);
  134. }
  135. fcnt=0;
  136. fileToUp.oninput = function(){
  137.         window.fcnt=window.fileToUp.files.length;
  138.     if(window.fcnt<=0) return;
  139.         inpFilePtr();
  140. };
  141. log('status');
  142. rddir('');
  143.  
  144.