?login_element?

Subversion Repositories NedoOS

Rev

Rev 678 | Rev 1549 | 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 runprog(dirPath){
  41.         var ss = '?s='+dirPath;
  42.         document.getElementById('log').innerHTML=myGet(ss);
  43. }
  44. function compareFileInfo(finfoA, finfoB) {
  45.         if(finfoA.isdir==3 || finfoB.isdir==3) return 0;
  46.         return finfoA.fn.localeCompare(finfoB.fn);
  47. }
  48. function rddir(dirPath){
  49.         var i=0;
  50.         var k=0;
  51.         window.s='';
  52.         window.curDir=dirPath;
  53.         window.s+='Current dir: <a href="javascript:rddir(\'\')">0:</a>';
  54.         if(dirPath!=''){
  55.                 while((k=dirPath.indexOf('/',i))!=-1){
  56.                         window.s+='<a href="javascript:rddir(\''+dirPath.substring(0,k)+'\')">'+
  57.                                 dirPath.substring(i,k-i)+'</a>/';
  58.                         i=k+1;
  59.                 }
  60.                 window.s+=dirPath.substring(i);
  61.         }
  62.         window.s+='<br><table>';
  63.         j=JSON.parse(myGet('?d='+dirPath));
  64.         j.fno.sort(compareFileInfo);
  65.         j.fno.forEach(function(item, i, arr) {
  66.                 var n,pn;
  67.                 if(item.isdir==1){
  68.                         n=item.fn;
  69.                         if(n=='..')pn=dirPath.substr(0,dirPath.lastIndexOf('/'));
  70.                         else pn=((dirPath=='')?(''):(dirPath+'/'))+n;
  71.                         if(n!="."){
  72.                                 window.s+='<tr>';
  73.                                
  74.                                 window.s+='<td><a href="javascript:rddir(\''+pn+'\')">'+n+'</a></td><td></td><td></td><td>';
  75.                                
  76.                                 window.s+='</td><td><a href="javascript:unlink(\''+n+'\')">Remove</a><td>';
  77.                                 window.s+='</tr>';
  78.                         }
  79.                 }
  80.         });    
  81.         j.fno.forEach(function(item, i, arr) {
  82.                 var n,pn,iof;
  83.                 if(item.isdir==0){
  84.                         n=item.fn;
  85.                         pn=((dirPath=='/')?(''):(dirPath+'/'))+n;
  86.                         window.s+='<tr>';
  87.                        
  88.                         window.s+='<td>'+n+'</td><td>'+item.sz+'B </td><td>'+'<a href="?g='+pn+'">Download</a></td>';
  89.                         iof=n.lastIndexOf('.');
  90.                         if(iof != -1){
  91.                                 switch(n.toLowerCase().substring(iof)){
  92.                                         case '.com':
  93.                                                 window.s+='<td><a href="javascript:runprog(\''+pn+'\')">Run</a></td>';
  94.                                                 break;
  95.                                         case '.pt3':   
  96.                                         case '.pt2':
  97.                                         case '.tfc':
  98.                                         case '.m':
  99.                                                 window.s+='<td><a href="javascript:runprog(\'bin/player.com%20/'+pn+'\')">Play</a></td>';
  100.                                                 break;
  101.                                         case '.scr':
  102.                                                 window.s+='<td><a href="javascript:runprog(\'bin/view.com%20/'+pn+'\')">View</a></td>';
  103.                                                 break;
  104.                                         default:
  105.                                                 window.s+='<td></td>';
  106.                                                 break;
  107.                                 }
  108.                         }else
  109.                                 window.s+='<td></td>';
  110.                         /*
  111.                         if(n.toLowerCase().substring(n.length-4)=='.com')
  112.                                 window.s+='<td><a href="javascript:runprog(\''+pn+'\')">Run</a></td>'; 
  113.                         else if(n.toLowerCase().substring(n.length-4)=='.pt3'){
  114.                                 window.s+='<td><a href="javascript:runprog(\'bin/player.com%20/'+pn+'\')">Play</a></td>';      
  115.                         }
  116.                         else
  117.                                 window.s+='<td></td>';
  118.                         */
  119.                         window.s+='</td><td><a href="javascript:unlink(\''+n+'\')">Remove</a></td>';
  120.                         window.s+='</tr>';
  121.                 }
  122.         });
  123.  
  124.         s+='</table>';
  125.         document.getElementById('divlog').innerHTML=s;
  126. }
  127.  
  128. function log(html) {
  129.         document.getElementById('log').innerHTML = html;
  130. }
  131. function endUp(){
  132.         if(window.r!==undefined){
  133.                 if(window.r.response=="") {
  134.                         setTimeout(endUp, 100);
  135.                         return;
  136.                 }
  137.         }
  138.         window.fcnt--;
  139.         if(window.fcnt>0){
  140.                 inpFilePtr();
  141.         }else{
  142.                 rddir(window.curDir);  
  143.                 window.fileToUp.files=null;
  144.                 document.getElementById('btnUpload').innerHTML='upload';
  145.                 window.r = new XMLHttpRequest();
  146.         }
  147. }
  148. fileToUp = document.getElementById("fileToUp");
  149. function inpFilePtr() {
  150.         var cf=window.fileToUp.files[window.fileToUp.files.length-window.fcnt];
  151.         document.getElementById('btnUpload').innerHTML=cf.name+'...';
  152.         window.r = new XMLHttpRequest();
  153.         window.r.open("PUT", to866(((window.curDir=='')?'':(window.curDir+'/'))+cf.name), true);
  154.         window.r.upload.onprogress = function(event) {
  155.                 document.getElementById('btnUpload').innerHTML=cf.name+' '+event.loaded + '/' + event.total;}
  156.         window.r.upload.onload = endUp;
  157.         window.r.upload.onerror = function(event) {
  158.                 inpFilePtr();}
  159.         window.r.send(cf);
  160. }
  161. fcnt=0;
  162. fileToUp.oninput = function(){
  163.         window.fcnt=window.fileToUp.files.length;
  164.     if(window.fcnt<=0) return;
  165.         inpFilePtr();
  166. };
  167. log('status');
  168. rddir('');
  169.  
  170.