Subversion Repositories NedoOS

Rev

Rev 1672 | 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(up, us) {
  23.         var r = new XMLHttpRequest();
  24.         us = to866(us)
  25.         if (up=='?d='){
  26.                 us = encodeURIComponent(us)
  27.         }
  28.         r.open("GET", up+us+"&r="+Math.random(), false);
  29.         r.send(null);  
  30.         return r.responseText;
  31. }
  32.  
  33. function mkdir(){
  34.         var ss = window.curDir+'/'+document.getElementById('dirName').value;
  35.         document.getElementById('log').innerHTML=myGet('?m=', ss);
  36.         rddir(window.curDir);
  37. }
  38.  
  39. function unlink(dirPath){
  40.         var ss = window.curDir+'/'+dirPath;
  41.         document.getElementById('log').innerHTML=myGet('?u=', ss);
  42.         rddir(window.curDir);
  43. }
  44. function runprog(dirPath){
  45.         var ss = dirPath;
  46.         document.getElementById('log').innerHTML=myGet('?s=', ss);
  47. }
  48. function compareFileInfo(finfoA, finfoB) {
  49.         if(finfoA.isdir==3 || finfoB.isdir==3) return 0;
  50.         return finfoA.fn.localeCompare(finfoB.fn);
  51. }
  52. function rddir(dirPath){
  53.         var i=0;
  54.         var k=0;
  55.         window.s='';
  56.         window.curDir=dirPath;
  57.         window.s+='Current dir: <a href="javascript:rddir(\'\')">0:</a>';
  58.         if(dirPath!=''){
  59.                 while((k=dirPath.indexOf('/',i))!=-1){
  60.                         window.s+='<a href="javascript:rddir(\''+dirPath.substring(0,k)+'\')">'+
  61.                                 dirPath.substring(i,k)+'</a>/';
  62.                         i=k+1;
  63.                 }
  64.                 window.s+=dirPath.substring(i);
  65.         }
  66.         window.s+='<br><table  id="divdir">';
  67.         j=JSON.parse(myGet('?d=', dirPath));
  68.         j.fno.sort(compareFileInfo);
  69.         j.fno.forEach(function(item, i, arr) {
  70.                 var n,pn;
  71.                 if(item.isdir==1){
  72.                         n=item.fn;
  73.                         var dt_opt = { year: 'numeric', month: 'numeric', day: 'numeric',
  74.                           hour: 'numeric', minute: 'numeric'};
  75.                         dt = new Date((item.dt>>9)+1980, (item.dt>>5)%16-1, item.dt%32, (item.tm>>11)%32, (item.tm>>5)%64, (item.tm%32)*2, 0);
  76.                         if(n=='..')pn=dirPath.substr(0,dirPath.lastIndexOf('/'));
  77.                         else pn=((dirPath=='')?(''):(dirPath+'/'))+n;
  78.                         if(n!="."){
  79.                                 window.s+='<tr>';
  80.                                
  81.                                 window.s+='<td><a href="javascript:rddir(\''+pn+'\')">'+n+'</a></td><td></td><td>'+ dt.toLocaleString("ru", dt_opt) +'</td><td></td><td>';
  82.                                
  83.                                 window.s+='</td><td><a href="javascript:unlink(\''+n+'\')">Remove</a><td>';
  84.                                 window.s+='</tr>';
  85.                         }
  86.                 }
  87.         });    
  88.         j.fno.forEach(function(item, i, arr) {
  89.                 var n,pn,iof;
  90.                 if(item.isdir==0){
  91.                        
  92.                         var dt_opt = { year: 'numeric', month: 'numeric', day: 'numeric',
  93.                           hour: 'numeric', minute: 'numeric'};
  94.                         dt = new Date((item.dt>>9)+1980, (item.dt>>5)%16-1, item.dt%32, (item.tm>>11)%32, (item.tm>>5)%64, (item.tm%32)*2, 0);
  95.  
  96.                         n=item.fn;
  97.                         pn=((dirPath=='/')?(''):(dirPath+'/'))+n;
  98.                         window.s+='<tr>';
  99.                         window.s+='<td>'+n+'</td><td>'+item.sz+'B </td><td>'+ dt.toLocaleString("ru", dt_opt)
  100.                                 +'</td><td>'+'<a href="?g='+encodeURIComponent(pn)+'">Download</a></td>';
  101.                         iof=n.lastIndexOf('.');
  102.                         if(iof != -1){
  103.                                 switch(n.toLowerCase().substring(iof)){
  104.                                         case '.com':
  105.                                                 window.s+='<td><a href="javascript:runprog(\''+pn+'\')">Run</a></td>';
  106.                                                 break;                                 
  107.                                         case '.pt3':   
  108.                                         case '.pt2':
  109.                                         case '.tfc':
  110.                                         case '.m':
  111.                                         case '.mt3':
  112.                                         case '.et':
  113.                                         case '.etc':
  114.                                         case '.cmp':
  115.                                         case '.tfd':
  116.                                         case '.tfm':                           
  117.                                                 window.s+='<td><a href="javascript:runprog(\'bin/player.com%20/'+pn+'\')">Play</a></td>';
  118.                                                 break;
  119.                                         case '.mod':                           
  120.                                                 window.s+='<td><a href="javascript:runprog(\'bin/modplay.com%20/'+pn+'\')">Play</a></td>';
  121.                                                 break;
  122.                                         case '.mp3':
  123.                                         case '.mid':
  124.                                         case '.ogg':
  125.                                         case '.aac':
  126.                                         case '.mdr':
  127.                                         case '.mwm':
  128.                                                 window.s+='<td><a href="javascript:runprog(\'bin/gp.com%20/'+pn+'\')">Play</a></td>';
  129.                                                 break;
  130.                                         case '.16c':
  131.                                         case '.fnt':
  132.                                         case '.img':
  133.                                         case '.3':
  134.                                         case '.888':
  135.                                         case '.y':
  136.                                         case '.+':
  137.                                         case '.-':
  138.                                         case '.plc':
  139.                                         case '.mc ':
  140.                                         case '.mcx':
  141.                                         case '.grf':
  142.                                         case '.ch$':
  143.                                         case '.mg1':
  144.                                         case '.mg2':
  145.                                         case '.mg4':
  146.                                         case '.mg8':
  147.                                         case '.rm':
  148.                                         case '.mlt':
  149.                                         case '.53c':                                           
  150.                                         case '.zxs':
  151.                                         case '.atr':
  152.                                         case '.scr':
  153.                                                 window.s+='<td><a href="javascript:runprog(\'bin/view.com%20/'+pn+'\')">View</a></td>';
  154.                                                 break;
  155.                                         case '.gif':
  156.                                         case '.jpg':
  157.                                         case '.png':
  158.                                         case '.htm':
  159.                                         case '.svg':
  160.                                                 window.s+='<td><a href="javascript:runprog(\'bin/browser.com%20/'+pn+'\')">View</a></td>';
  161.                                                 break;
  162.                                         case '.bmp':
  163.                                                 window.s+='<td><a href="javascript:runprog(\'bin/scratch.com%20/'+pn+'\')">View</a></td>';
  164.                                                 break; 
  165.                                         default:
  166.                                                 window.s+='<td></td>';
  167.                                                 break;
  168.                                 }
  169.                         }else
  170.                                 window.s+='<td></td>';
  171.                         /*
  172.                         if(n.toLowerCase().substring(n.length-4)=='.com')
  173.                                 window.s+='<td><a href="javascript:runprog(\''+pn+'\')">Run</a></td>'; 
  174.                         else if(n.toLowerCase().substring(n.length-4)=='.pt3'){
  175.                                 window.s+='<td><a href="javascript:runprog(\'bin/player.com%20/'+pn+'\')">Play</a></td>';      
  176.                         }
  177.                         else
  178.                                 window.s+='<td></td>';
  179.                         */
  180.                         window.s+='</td><td><a href="javascript:unlink(\''+n+'\')">Remove</a></td>';
  181.                         window.s+='</tr>';
  182.                 }
  183.         });
  184.  
  185.         s+='</table>';
  186.         document.getElementById('divlog').innerHTML=s;
  187. }
  188.  
  189. function log(html) {
  190.         document.getElementById('log').innerHTML = html;
  191. }
  192. function endUp(){
  193.         if(window.r!==undefined){
  194.                 if(window.r.response=="") {
  195.                         setTimeout(endUp, 100);
  196.                         return;
  197.                 }
  198.         }
  199.         window.fcnt--;
  200.         if(window.fcnt>0){
  201.                 inpFilePtr();
  202.         }else{
  203.                 rddir(window.curDir);  
  204.                 window.fileToUp.files=null;
  205.                 document.getElementById('btnUpload').innerHTML='upload';
  206.                 window.r = new XMLHttpRequest();
  207.         }
  208. }
  209. fileToUp = document.getElementById("fileToUp");
  210. function inpFilePtr() {
  211.         var cf=window.fileToUp.files[window.fileToUp.files.length-window.fcnt];
  212.         document.getElementById('btnUpload').innerHTML=cf.name+'...';
  213.         window.r = new XMLHttpRequest();
  214.         window.r.open("PUT", to866(((window.curDir=='')?'':(window.curDir+'/'))+cf.name), true);
  215.         window.r.upload.onprogress = function(event) {
  216.                 document.getElementById('btnUpload').innerHTML=cf.name+' '+event.loaded + '/' + event.total;}
  217.         window.r.upload.onload = endUp;
  218.         window.r.upload.onerror = function(event) {
  219.                 inpFilePtr();}
  220.         window.r.send(cf);
  221. }
  222. fcnt=0;
  223. fileToUp.oninput = function(){
  224.         window.fcnt=window.fileToUp.files.length;
  225.     if(window.fcnt<=0) return;
  226.         inpFilePtr();
  227. };
  228. log('status');
  229. rddir('');
  230.  
  231.