rev |
line source |
al@602
|
1 <!DOCTYPE html>
|
al@602
|
2 <html lang="en">
|
al@602
|
3 <head>
|
al@602
|
4 <meta charset="UTF-8">
|
al@602
|
5 <title>SliTaz DVD/USB Key builder</title>
|
al@602
|
6 <meta name="description" content="SliTaz DVD and USB key generator">
|
al@602
|
7 <meta name="robots" content="index, nofollow">
|
al@602
|
8 <meta name="author" content="SliTaz Contributors">
|
al@602
|
9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
al@602
|
10 <link rel="shortcut icon" href="/static/favicon.ico">
|
al@602
|
11 <link rel="stylesheet" type="text/css" href="/static/slitaz.min.css">
|
al@602
|
12 <style type="text/css">
|
al@602
|
13 th:nth-child(2),th:nth-child(3),th:nth-child(4),th:nth-child(5),th:nth-child(6),th:nth-child(7),th:nth-child(8),
|
al@602
|
14 td:nth-child(2),td:nth-child(3),td:nth-child(4),td:nth-child(5),td:nth-child(6),td:nth-child(7),td:nth-child(8) { text-align: right; }
|
al@602
|
15 </style>
|
al@602
|
16 </head>
|
al@602
|
17 <body>
|
al@602
|
18
|
al@602
|
19 <script>de=document.documentElement;de.className+=(("ontouchstart" in de)?' touch':' no-touch');</script>
|
al@602
|
20
|
al@602
|
21 <header>
|
al@602
|
22 <h1><a href="http://www.slitaz.org/">SliTaz DVD & USB key builder</a></h1>
|
al@602
|
23 <div class="network">
|
al@602
|
24 <a href="http://www.slitaz.org/" class="home"></a>
|
al@602
|
25 <a href="http://scn.slitaz.org/">Community</a>
|
al@602
|
26 <a href="http://doc.slitaz.org/" title="SliTaz Community Documentation">Doc</a>
|
al@616
|
27 <a href="http://forum.slitaz.org/" title="SliTaz Forum">Forum</a>
|
al@602
|
28 <a href="http://bugs.slitaz.org/" title="Bug Tracking System">Bugs</a>
|
al@602
|
29 <a href="http://hg.slitaz.org/" title="SliTaz repositories">Hg</a>
|
al@602
|
30 </div>
|
al@602
|
31 </header>
|
al@602
|
32
|
al@602
|
33 <!-- Block -->
|
al@602
|
34 <div class="block"><div>
|
al@602
|
35
|
al@602
|
36 <!-- Information/image -->
|
al@602
|
37 <div class="block_info">
|
al@602
|
38 <header>DVD and USB key generator</header>
|
al@602
|
39 <p>
|
al@602
|
40 This tool will create a shell script. You should run this script
|
al@602
|
41 on your own SliTaz to build the DVD iso image. You can put this image on
|
paul@649
|
42 a DVD with <code>wodim</code> or on a USB key with <code>tazusb geniso2usb</code>.
|
al@602
|
43 </p>
|
al@602
|
44 <p>
|
al@602
|
45 GUI tools are also available: <code>burnbox</code> and <code>tazusbbox</code>.
|
al@602
|
46 </p>
|
al@602
|
47 </div>
|
al@602
|
48
|
al@602
|
49 <!-- Navigation -->
|
al@602
|
50 <nav>
|
al@602
|
51 <header>Developers Corner</header>
|
al@602
|
52 <ul>
|
al@602
|
53 <li><a href="http://www.slitaz.org/en/devel/">Website devel</a></li>
|
al@602
|
54 <li><a href="http://cook.slitaz.org/">Build Bot</a></li>
|
al@602
|
55 <li><a href="http://pkgs.slitaz.org/">packages database</a></li>
|
al@602
|
56 </ul>
|
al@602
|
57 <p><strong>Online tools:</strong></p>
|
al@602
|
58 <ul>
|
al@602
|
59 <li><a href="http://pizza.slitaz.org/">Live Builder</a></li>
|
al@602
|
60 <li><a href="http://boot.slitaz.org/">Web Boot</a></li>
|
al@602
|
61 <li><a href="http://mirror.slitaz.org/floppies/builder/">Floppies Builder</a></li>
|
al@602
|
62 <!-- li><a href="http://mirror.slitaz.org/packages/convert/">Package Converter</a></li -->
|
al@602
|
63 </ul>
|
al@602
|
64 </nav>
|
al@602
|
65 </div></div>
|
al@602
|
66
|
al@602
|
67 <!-- Content, from http://en.wikipedia.org/wiki/Miscellaneous_Symbols_Unicode_block -->
|
al@602
|
68 <main>
|
al@602
|
69
|
al@602
|
70 <!-- Languages -->
|
al@602
|
71 <div class="lang">
|
al@602
|
72 <b>English</b>
|
al@602
|
73 <a href="../ru/index.html">Русский</a>
|
al@602
|
74 </div>
|
al@602
|
75
|
al@602
|
76 <form method="post" enctype="multipart/form-data" action="../download.php">
|
al@602
|
77 <input type="hidden" name="rsync" value="on" />
|
al@602
|
78 <input type="hidden" name="filter" value="on" />
|
al@602
|
79 <input type="hidden" id="size" name="size" value="0" />
|
al@602
|
80
|
al@602
|
81 <table>
|
al@602
|
82 <thead>
|
al@602
|
83 <tr>
|
al@602
|
84 <th>Features</th>
|
al@602
|
85 <!-- th><label><input type="radio" name="version" value="4.0"/>stable 4.0</label></th -->
|
al@602
|
86 <th><label><input type="radio" name="version" value="cooking"/>cooking</label></th>
|
al@602
|
87 <th><label><input type="radio" name="version" value="4.0" checked="checked"/>4.0</label></th>
|
al@602
|
88 <th><label><input type="radio" name="version" value="3.0"/>3.0</label></th>
|
al@602
|
89 <th><label><input type="radio" name="version" value="2.0"/>2.0</label></th>
|
al@602
|
90 <th><label><input type="radio" name="version" value="1.0"/>1.0</label></th>
|
al@602
|
91 <!-- th><label><input type="radio" name="version" value="all"/>all</label></th -->
|
al@602
|
92 </tr>
|
al@602
|
93 </thead>
|
al@602
|
94 <tbody>
|
al@602
|
95 <tr>
|
al@602
|
96 <td><label><input type="checkbox" checked="checked" disabled="disabled" name="boot"/>bootable on SliTaz</label></td>
|
al@602
|
97 <!-- td id="boot_stable">29 MB</td -->
|
al@602
|
98 <td id="boot_cooking">35 MB</td>
|
al@602
|
99 <td id="boot_4.0">35 MB</td>
|
al@602
|
100 <td id="boot_3.0">29 MB</td>
|
al@602
|
101 <td id="boot_2.0">28 MB</td>
|
al@602
|
102 <td id="boot_1.0">24 MB</td>
|
al@602
|
103 <!-- td id="boot_all">139 MB</td -->
|
al@602
|
104 </tr>
|
al@602
|
105 <tr>
|
al@602
|
106 <td><label><input type="checkbox" checked="checked" name="webboot"/>bootable on Internet ☺</label></td>
|
al@602
|
107 <!-- td id="webboot_stable">196 KB</td -->
|
al@602
|
108 <td id="webboot_cooking">196 KB</td>
|
al@602
|
109 <td id="webboot_4.0">196 KB</td>
|
al@602
|
110 <td id="webboot_3.0">196 KB</td>
|
al@602
|
111 <td id="webboot_2.0">196 KB</td>
|
al@602
|
112 <td id="webboot_1.0">196 KB</td>
|
al@602
|
113 <!-- td id="webboot_all">196 KB</td -->
|
al@602
|
114 </tr>
|
al@602
|
115 <tr>
|
al@602
|
116 <td><label><input type="checkbox" checked="checked" name="website"/>with the SliTaz website</label></td>
|
al@602
|
117 <!-- td id="website_stable">23 MB</td -->
|
al@602
|
118 <td id="website_cooking">23 MB</td>
|
al@602
|
119 <td id="website_4.0">23 MB</td>
|
al@602
|
120 <td id="website_3.0">23 MB</td>
|
al@602
|
121 <td id="website_2.0">23 MB</td>
|
al@602
|
122 <td id="website_1.0">23 MB</td>
|
al@602
|
123 <!-- td id="website_all">23 MB</td -->
|
al@602
|
124 </tr>
|
al@602
|
125 <tr>
|
al@602
|
126 <td><label><input type="checkbox" name="doc"/>with the SliTaz doc website</label></td>
|
al@602
|
127 <!-- td id="doc_stable">85 MB</td -->
|
al@602
|
128 <td id="doc_cooking">85 MB</td>
|
al@602
|
129 <td id="doc_4.0">85 MB</td>
|
al@602
|
130 <td id="doc_3.0">85 MB</td>
|
al@602
|
131 <td id="doc_2.0">85 MB</td>
|
al@602
|
132 <td id="doc_1.0">85 MB</td>
|
al@602
|
133 <!-- td id="doc_all">85 MB</td -->
|
al@602
|
134 </tr>
|
al@602
|
135 <tr>
|
al@602
|
136 <td><label><input type="checkbox" name="tiny"/>with the Tiny SliTaz website</label></td>
|
al@602
|
137 <!-- td id="tiny_stable">15 MB</td -->
|
al@602
|
138 <td id="tiny_cooking">15 MB</td>
|
al@602
|
139 <td id="tiny_4.0">15 MB</td>
|
al@602
|
140 <td id="tiny_3.0">15 MB</td>
|
al@602
|
141 <td id="tiny_2.0">15 MB</td>
|
al@602
|
142 <td id="tiny_1.0">15 MB</td>
|
al@602
|
143 <!-- td id="tiny_all">15 MB</td -->
|
al@602
|
144 </tr>
|
al@602
|
145 <tr>
|
al@602
|
146 <td><label><input type="checkbox" name="pxe"/>with the SliTaz PXE website</label></td>
|
al@602
|
147 <!-- td id="pxe_stable">112 MB</td -->
|
al@602
|
148 <td id="pxe_cooking">112 MB</td>
|
al@602
|
149 <td id="pxe_4.0">112 MB</td>
|
al@602
|
150 <td id="pxe_3.0">112 MB</td>
|
al@602
|
151 <td id="pxe_2.0">82 MB</td>
|
al@602
|
152 <td id="pxe_1.0">25 MB</td>
|
al@602
|
153 <!-- td id="pxe_all">444 MB</td -->
|
al@602
|
154 </tr>
|
al@602
|
155 <tr>
|
al@602
|
156 <td><label><input type="checkbox" name="tools"/>with online tools (pkgs, pizza, convert, floppy, dvd)</label></td>
|
al@602
|
157 <!-- td id="tools_stable">1 MB</td -->
|
al@602
|
158 <td id="tools_cooking">1 MB</td>
|
al@602
|
159 <td id="tools_4.0">1 MB</td>
|
al@602
|
160 <td id="tools_3.0">1 MB</td>
|
al@602
|
161 <td id="tools_2.0">1 MB</td>
|
al@602
|
162 <td id="tools_1.0">1 MB</td>
|
al@602
|
163 <!-- td id="tools_all">1 MB</td -->
|
al@602
|
164 </tr>
|
al@602
|
165 <tr>
|
al@602
|
166 <td><label><input type="checkbox" checked="checked" name="wok"/>with the SliTaz wok (rules to build any package)</label></td>
|
al@602
|
167 <!-- td id="wok_stable">87 MB</td -->
|
al@602
|
168 <td id="wok_cooking">87 MB</td>
|
al@602
|
169 <td id="wok_4.0">87 MB</td>
|
al@602
|
170 <td id="wok_3.0">87 MB</td>
|
al@602
|
171 <td id="wok_2.0">87 MB</td>
|
al@602
|
172 <td id="wok_1.0">87 MB</td>
|
al@602
|
173 <!-- td id="wok_all">87 MB</td -->
|
al@602
|
174 </tr>
|
al@602
|
175 <tr>
|
al@602
|
176 <td><label><input type="checkbox" name="hg"/>with all Mercurial repositories</label></td>
|
al@602
|
177 <!-- td id="hg_stable">250 MB</td -->
|
al@602
|
178 <td id="hg_cooking">250 MB</td>
|
al@602
|
179 <td id="hg_4.0">250 MB</td>
|
al@602
|
180 <td id="hg_3.0">250 MB</td>
|
al@602
|
181 <td id="hg_2.0">250 MB</td>
|
al@602
|
182 <td id="hg_1.0">250 MB</td>
|
al@602
|
183 <!-- td id="hg_all">250 MB</td -->
|
al@602
|
184 </tr>
|
al@602
|
185 <tr>
|
al@602
|
186 <td><label><input type="checkbox" checked="checked" name="packages"/>with all packages & flavors files</label></td>
|
al@602
|
187 <!-- td id="packages_stable">2.6 GB</td -->
|
al@602
|
188 <td id="packages_cooking">2.6 GB</td>
|
al@602
|
189 <td id="packages_4.0">2.6 GB</td>
|
al@602
|
190 <td id="packages_3.0">1.4 GB</td>
|
al@602
|
191 <td id="packages_2.0">910 MB</td>
|
al@602
|
192 <td id="packages_1.0">230 MB</td>
|
al@602
|
193 <!-- td id="packages_all">5.1 GB</td -->
|
al@602
|
194 </tr>
|
al@602
|
195 <tr>
|
al@602
|
196 <td><label><input type="checkbox" name="nonfree"/>with non-free ⚠ packages (from get-* scripts) <sup>1</sup></label></td>
|
al@602
|
197 <!-- td id="nonfree_stable">500 MB</td -->
|
al@602
|
198 <td id="xnonfree_cooking">not yet</td>
|
al@602
|
199 <td id="xnonfree_4.0">not yet</td>
|
al@602
|
200 <td id="xnonfree_3.0">not yet</td>
|
al@602
|
201 <td id="nonfree_2.0">200 MB</td>
|
al@602
|
202 <td id="nonfree_1.0">50 MB</td>
|
al@602
|
203 <!-- td id="nonfree_all">500 MB</td -->
|
al@602
|
204 </tr>
|
al@602
|
205 <tr>
|
al@602
|
206 <td><label><input type="checkbox" name="huge"/>with free but huge packages (from get-* scripts) <sup>2</sup></label></td>
|
al@602
|
207 <!-- td id="huge_stable">500 MB</td -->
|
al@602
|
208 <td id="xhuge_cooking">not yet</td>
|
al@602
|
209 <td id="xhuge_4.0">not yet</td>
|
al@602
|
210 <td id="xhuge_3.0">not yet</td>
|
al@602
|
211 <td id="huge_2.0">500 MB</td>
|
al@602
|
212 <td id="xhuge_1.0">none</td>
|
al@602
|
213 <!-- td id="huge_all">900 MB</td -->
|
al@602
|
214 </tr>
|
al@602
|
215 <tr>
|
al@602
|
216 <td><label><input type="checkbox" name="sources"/>with all sources files <sup>3</sup></label></td>
|
al@602
|
217 <!-- td id="sources_stable">5.0 GB</td -->
|
al@602
|
218 <td id="sources_cooking">5.0 GB</td>
|
al@602
|
219 <td id="sources_4.0">5.0 GB</td>
|
al@602
|
220 <td id="sources_3.0">2.4 GB</td>
|
al@602
|
221 <td id="sources_2.0">1.5 GB</td>
|
al@602
|
222 <td id="sources_1.0">650 MB</td>
|
al@602
|
223 <!-- td id="sources_all">9.6 GB</td -->
|
al@602
|
224 </tr>
|
al@602
|
225 <tr>
|
al@602
|
226 <td><label><input type="checkbox" checked="checked" name="loram_detect"/>with loram ♲ autodetection</label></td>
|
al@602
|
227 <!-- td id="loram_detect_stable">129 MB</td -->
|
al@602
|
228 <td id="loram_detect_cooking">129 MB</td>
|
al@602
|
229 <td id="loram_detect_4.0">132 MB</td>
|
al@602
|
230 <td id="loram_detect_3.0">132 MB</td>
|
al@602
|
231 <td id="loram_detect_2.0">99 MB</td>
|
al@602
|
232 <td id="loram_detect_1.0">82 MB</td>
|
al@602
|
233 <!-- td id="loram_detect_all">570 MB</td -->
|
al@602
|
234 </tr>
|
al@602
|
235 <tr>
|
al@602
|
236 <td><label><input type="checkbox" checked="checked" name="auto_install"/>with auto activation on boot (standalone mode)</label></td>
|
al@602
|
237 <!-- td id="auto_install_stable">2 KB</td -->
|
al@602
|
238 <td id="auto_install_cooking">2 KB</td>
|
al@602
|
239 <td id="auto_install_4.0">2 KB</td>
|
al@602
|
240 <td id="auto_install_3.0">2 KB</td>
|
al@602
|
241 <td id="auto_install_2.0">2 KB</td>
|
al@602
|
242 <td id="auto_install_1.0">2 KB</td>
|
al@602
|
243 <!-- td id="auto_install_all">2 KB</td -->
|
al@602
|
244 </tr>
|
al@602
|
245 </tbody>
|
al@602
|
246 </table>
|
al@602
|
247
|
al@602
|
248 <hr>
|
al@602
|
249
|
al@602
|
250 <p><input name="download" value="Download" type="submit"/>
|
al@602
|
251 the script to build the ISO image.
|
al@602
|
252 <span id="result"></span>
|
al@602
|
253 </form>
|
al@602
|
254
|
al@602
|
255 <script>
|
al@602
|
256 document.documentElement.className += (("ontouchstart" in document.documentElement) ? ' touch' : ' no-touch');
|
al@602
|
257
|
al@602
|
258 function toKb(size) {
|
al@602
|
259 var divisor = 1, result = 0;
|
al@602
|
260 for (var i = 0; i < size.length; i++) {
|
al@602
|
261 switch (size.charAt(i)) {
|
al@602
|
262 case '.' : divisor = 10; continue;
|
al@602
|
263 case 'K' : return result/divisor;
|
al@602
|
264 case 'M' : return (1024*result)/divisor;
|
al@602
|
265 case 'G' : return (1024*1024*result)/divisor;
|
al@602
|
266 case 'T' : return (1024*1024*1024*result)/divisor;
|
al@602
|
267 }
|
al@602
|
268 if (size.charAt(i) >= '0' && size.charAt(i) <= '9') {
|
al@602
|
269 result *= 10
|
al@602
|
270 result += parseInt(size.charAt(i) - '0')
|
al@602
|
271 }
|
al@602
|
272 }
|
al@602
|
273 return result/divisor
|
al@602
|
274 }
|
al@602
|
275
|
al@602
|
276 function toHuman(size) {
|
al@602
|
277 var i;
|
al@602
|
278 for (size *= 10, i = 0; size > 10000; size /= 1024, i++);
|
al@602
|
279 if (size >= 100) size = parseInt(size / 10)
|
al@602
|
280 else size = parseInt(size / 10) + "." + parseInt(size % 10)
|
al@602
|
281 return size + " " + "KMGT".charAt(i) + "B"
|
al@602
|
282 }
|
al@602
|
283
|
al@602
|
284 function update_size() {
|
al@602
|
285 var total = 1024; // padding
|
al@602
|
286 for (var i = 0; i < document.getElementsByTagName("td").length; i++) {
|
al@602
|
287 var obj = document.getElementsByTagName("td")[i]
|
al@602
|
288 var reg = new RegExp("^[0-9\.]* [KMGT]B$")
|
al@602
|
289 if (!reg.test(obj.innerHTML)) continue
|
al@602
|
290 obj.style.fontWeight="normal"
|
al@602
|
291 obj.style.textDecoration="none"
|
al@602
|
292 obj.style.backgroundColor="inherit"
|
al@602
|
293 }
|
al@602
|
294 for (var i = 0; i < document.forms[0].elements.length; i++) {
|
al@602
|
295 var obj = document.forms[0].elements[i]
|
al@602
|
296 if (obj.checked == false) continue
|
al@602
|
297 var version = document.forms[0].version
|
al@602
|
298 for (j = 0; j < version.length; j++) {
|
al@602
|
299 if (version[j].checked) {
|
al@602
|
300 version = version[j].value
|
al@602
|
301 break
|
al@602
|
302 }
|
al@602
|
303 }
|
al@602
|
304 var size = document.getElementById(obj.name + "_" + version)
|
al@602
|
305 if (size == null) continue
|
al@602
|
306 size.style.fontWeight="bold"
|
al@602
|
307 //size.style.textDecoration="underline"
|
al@602
|
308 size.style.backgroundColor="#ccc"
|
al@602
|
309 total += parseInt(toKb(size.innerHTML))
|
al@602
|
310 }
|
al@602
|
311 var size = document.getElementById("size")
|
al@602
|
312 size.value = total
|
al@602
|
313 var result=document.getElementById("result")
|
al@602
|
314 result.innerHTML="Expected size: <u><b>"+toHuman(total)+"</b></u>"+
|
al@602
|
315 " (✔ needs "+toHuman(2*total)+" free space)."
|
al@602
|
316 }
|
al@602
|
317
|
al@602
|
318 function QRCodePNG(str, obj) {
|
al@602
|
319 try {
|
al@602
|
320 obj.height = obj.width += 200;
|
al@602
|
321 return QRCode.generatePNG(str, {ecclevel: 'H'});
|
al@602
|
322 }
|
al@602
|
323 catch (any) {
|
al@602
|
324 var element = document.createElement("script");
|
al@602
|
325 element.src = "/static/qrcode.min.js";
|
al@602
|
326 element.type = "text/javascript";
|
al@602
|
327 element.onload = function() {
|
al@602
|
328 obj.src = QRCode.generatePNG(str, {ecclevel: 'H'});
|
al@602
|
329 };
|
al@602
|
330 document.body.appendChild(element);
|
al@602
|
331 }
|
al@602
|
332 }
|
al@602
|
333
|
al@602
|
334 update_size()
|
al@602
|
335 window.onchange = update_size
|
al@602
|
336 </script>
|
al@602
|
337
|
al@602
|
338 <p>
|
al@602
|
339 <sup>1</sup> SliTaz can't and doesn't want to provide non free software.
|
al@602
|
340 Many people want to use software such as <b>Opera</b>, <b>Skype ☎</b> or <b>flash-plugin</b>.
|
al@602
|
341 SliTaz provides some <b>get-*</b> scripts to let you install them.
|
al@602
|
342 The DVD creation tool will launch this script, repackage the software and
|
al@602
|
343 store it in the package directory.
|
al@602
|
344 </p>
|
al@602
|
345
|
al@602
|
346 <p>
|
al@602
|
347 <sup>2</sup> Some software such as <b>OpenOffice</b> or <b>LibreOffice</b> are
|
al@602
|
348 so huge that they don't compile on a SliTaz build bot.
|
al@602
|
349 The DVD creation tool will use <b>get-*</b> scripts (see above) to store these
|
al@602
|
350 packages in the package directory. The scripts download pre-built binaries for
|
al@602
|
351 another Linux distribution.
|
al@602
|
352 </p>
|
al@602
|
353
|
al@602
|
354 <p>
|
al@602
|
355 <sup>3</sup> Original source files. Install <b>SliTaz wok</b> to get the SliTaz
|
al@602
|
356 patches.
|
al@602
|
357 </p>
|
al@602
|
358 <!-- End of content -->
|
al@602
|
359 </main>
|
al@602
|
360
|
al@602
|
361 <footer>
|
al@602
|
362 <div>
|
al@602
|
363 Copyright © <span class="year"></span>
|
al@602
|
364 <a href="http://www.slitaz.org/">SliTaz</a>
|
al@602
|
365 </div>
|
al@602
|
366 <div>
|
al@602
|
367 Network:
|
al@602
|
368 <a href="http://scn.slitaz.org/">Community</a> ·
|
al@602
|
369 <a href="http://doc.slitaz.org/">Doc</a> ·
|
al@602
|
370 <a href="http://forum.slitaz.org/">Forum</a> ·
|
al@602
|
371 <a href="http://pkgs.slitaz.org/">Packages</a> ·
|
al@602
|
372 <a href="http://bugs.slitaz.org/">Bugs</a> ·
|
al@602
|
373 <a href="http://hg.slitaz.org/?sort=lastchange">Hg</a>
|
al@602
|
374 </div>
|
al@602
|
375 <div>
|
al@602
|
376 SliTaz @
|
al@602
|
377 <a href="http://twitter.com/slitaz">Twitter</a> ·
|
al@602
|
378 <a href="http://www.facebook.com/slitaz">Facebook</a> ·
|
al@602
|
379 <a href="http://en.wikipedia.org/wiki/SliTaz">Wikipedia</a> ·
|
al@602
|
380 <a href="http://flattr.com/profile/slitaz">Flattr</a>
|
al@602
|
381 </div>
|
al@602
|
382 <img src="/static/qr.png" alt="#" onmouseover="this.title = location.href"
|
al@602
|
383 onclick="this.src=QRCodePNG(location.href, this)"/>
|
al@602
|
384 </footer>
|
al@602
|
385
|
al@602
|
386 </body>
|
al@602
|
387 </html>
|