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