source: admin-center-alpha/var/www/admin-center/modules/lliurex-apt/src/index.html @ 7

Last change on this file since 7 was 7, checked in by mabarracus, 4 years ago

Ported code admin-center-alpha from trusty

File size: 23.9 KB
Line 
1<!DOCTYPE html>
2<html lang="ca">
3  <head>
4        <meta charset="utf-8">
5    <meta http-equiv="X-UA-Compatible" content="IE=edge">
6    <meta name="viewport" content="width=device-width, initial-scale=1">
7 
8    <script> 
9    var counter=0;
10    var arxiu_reps = '/usr/share/lliurex-apt2/reps';
11    var idioma_val = {
12      repositorisLocals:'Repositoris locals',
13      repositorisServidorAula:"Repositoris del Servidor d'Aula",
14      habilitarRepositori:'Habilitar repositoris',
15      nom:'Nom',
16      repositori:'Repositori',
17      repositoris:'Repositoris',
18      afegirRepositori:'Afegir repositori',
19      cancelar:'Cancel·lar',
20      actualitzantFontsPaquets:'Actualitzant fonts de paquets',
21      espereuUnMoment:'Espereu un moment',
22      repositorisLliureX:'Repositoris LliureX',
23      respositorisGVA:'Repositoris de GVA',
24      repositorisEducatius:'Repositoris de recursos educatius',
25      respositorisUbuntu:"Repositoris d'Ubuntu",
26      acceptar:'Acceptar',
27      opcions:'Opcions',     
28      mostrarEixida:'Mostrar eixida',
29      finalitzat:'Finalitzat',
30    };
31    var idioma_cas = {
32      repositorisLocals:'Repositorios locales',
33      repositorisServidorAula:"Repositorios del servidor de aula",
34      habilitarRepositori:'Habilitar repositorios',
35      nom:'Nombre',
36      repositori:'Repositorio',
37      repositoris:'Repositorios',
38      afegirRepositori:'Añadir repositorio',
39      cancelar:'Cancelar',
40      actualitzantFontsPaquets:'Actualizando fuentes de paquetes',
41      espereuUnMoment:'Espera un momento',
42      repositorisLliureX:'Repositorios LliureX',
43      respositorisGVA:'Repositorios de GVA',
44      repositorisEducatius:'Repositorios de recursos educativos',
45      respositorisUbuntu:"Repositorios de Ubuntu",
46      acceptar:'Aceptar',
47      opcions:'Opciones',     
48      mostrarEixida:'Mostrar salida',
49      finalitzat:'Finalizado',
50    }   
51      var idioma;
52      var linies = [];
53      var visibleLocals = false;
54      var visibleServidorsAula = false;     
55      var visibleGVA = false;
56      var repositorisLliurexNet = [
57        "deb http://lliurex.net/trusty trusty main restricted universe multiverse",
58        "deb http://lliurex.net/trusty trusty-updates main restricted universe multiverse",
59        "deb http://lliurex.net/trusty trusty-security main restricted universe multiverse"
60      ];
61      var repositorisLocals = [
62        "deb file:///net/mirror/llx1505 trusty main restricted universe multiverse",
63        "deb file:///net/mirror/llx1505  trusty-updates main restricted universe multiverse",
64        "deb file:///net/mirror/llx1505  trusty-security main restricted universe multiverse"
65      ];
66      var respositoriServidorAula = [
67        "deb http://mirror/llx1505 trusty main restricted universe multiverse",
68        "deb http://mirror/llx1505  trusty-updates main restricted universe multiverse",
69        "deb http://mirror/llx1505  trusty-security main restricted universe multiverse"
70      ];
71    var respositorisUbuntu = [
72        "deb http://es.archive.ubuntu.com/ubuntu trusty main restricted universe multiverse",
73        "deb http://es.archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse",
74        "deb http://es.archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse"
75     
76    ];
77    var respositorisEducatius = [
78     "deb http://lliurex.net/recursos-edu trusty main restricted universe multiverse",
79    ];
80    var respositorisGVA = [
81      "deb http://repositorios.gva.es/dgti/trusty trusty main restricted universe multiverse",
82      "deb http://repositorios.gva.es/dgti/trusty trusty-updates main restricted universe multiverse",
83      "deb http://repositorios.gva.es/dgti/trusty trusty-security main restricted universe multiverse",
84      "deb http://repositorios.gva.es/dgti/trusty-gva trusty main restricted universe multiverse",
85      "deb http://repositorios.gva.es/dgti/trusty-gva trusty main restricted universe multiverse",
86      "deb http://repositorios.gva.es/dgti/trusty-gva trusty main restricted universe multiverse",
87    ];
88    var respositorisPropis = [];
89    function esborraLinia(index){
90      linies.splice(index,1);
91      var html =creaTaula(linies);
92      $('#mostrador_grafic').html(html);
93     
94    }
95    function creaTaula(_linies){
96      var html = "<ul class='list-group' width='100%'>";
97        for(var i=0;i<_linies.length;i++){
98              var color_verd = '';
99              var fons_gris = '';
100              if (_linies[i][0]=='#'){ //línia comentada
101                  color_verd = " style='color:green'";             
102              }
103              if (_linies[i].trim()==''){ //linia buida
104                //fons_gris = " style='background:lightgrey'";
105                fons_gris = "background:lightgrey;";
106              }               
107              html +="<li class='list-group-item row' style='padding-top:0px;padding-bottom:0px;border: 0.1em solid black;"+fons_gris+"'><div class='col-md-10'"+color_verd+">"+_linies[i]+"</div><div class='col-md-1'><span class='glyphicon glyphicon-remove' style='cursor:pointer' onclick='esborraLinia("+i+")'></span></div></li>";             
108            }
109        html +="</ul>";
110        return html;
111    }   
112
113    function Afegir(identificador, vector){
114      for(var i=0;i<vector.length;i++){
115         linies.push(vector[i]);
116      }
117       var html =creaTaula(linies);
118      $('#mostrador_grafic').html(html);
119    }
120    function Esborrar(identificador,vector){
121      for(var j=0;j<vector.length;j++){
122        index=linies.indexOf(vector[j]);
123        if (index!=-1){
124          linies.splice(index,1);
125        }
126      }
127      var html =creaTaula(linies);           
128      $('#mostrador_grafic').html(html);
129    } 
130    function comprovaBotonsChecked(){       
131     
132      //Repositoris Lliurex               
133      if ((linies.indexOf(repositorisLliurexNet[0])!=-1) || (linies.indexOf(repositorisLliurexNet[1])!=-1) || (linies.indexOf(repositorisLliurexNet[2])!=-1)){
134          $('#botonsLliurex input').attr('checked',true).change(); 
135      }     
136      else{
137          $("#botonsLliurex input").attr('checked',true).change();         
138          setTimeout(function(){$("#botonsLliurex input").removeAttr('checked');}
139          ,50
140          );
141      }
142       //Repositoris locals
143      if ((linies.indexOf(repositorisLocals[0])!=-1) || (linies.indexOf(repositorisLocals[1])!=-1) || (linies.indexOf(repositorisLocals[2])!=-1)){
144          $('#botonsLocals input').attr('checked',true).change();
145      }
146      else{         
147          $("#botonsLocals input").attr('checked',true).change();         
148          setTimeout(function(){$("#botonsLocals input").removeAttr('checked');}
149          ,50
150          );
151      }
152       //Repositoris Aula
153      if ((linies.indexOf(respositoriServidorAula[0])!=-1) || (linies.indexOf(respositoriServidorAula[1])!=-1) || (linies.indexOf(respositoriServidorAula[2])!=-1)){
154          $('#botonsAula input').attr('checked',true).change();
155      }
156      else{         
157          $("#botonsAula input").attr('checked',true).change();         
158          setTimeout(function(){$("#botonsAula input").removeAttr('checked');}
159          ,50
160          );
161      }
162      if ((linies.indexOf(respositorisEducatius[0])!=-1)){
163          $('#botonsEducatius input').attr('checked',true).change();
164      }
165      else{         
166          $("#botonsEducatius input").attr('checked',true).change();         
167          setTimeout(function(){$("#botonsEducatius input").removeAttr('checked');}
168          ,50
169          );
170      }   
171 //Repositoris Ubuntu
172      if ((linies.indexOf(respositorisUbuntu[0])!=-1) || (linies.indexOf(respositorisUbuntu[1])!=-1) || (linies.indexOf(respositorisUbuntu[2])!=-1)){
173          $('#botonsUbuntu input').attr('checked',true).change();
174      }
175      else{     
176          $("#botonsUbuntu input").attr('checked',true).change();         
177          setTimeout(function(){$("#botonsUbuntu input").removeAttr('checked');}
178          ,50
179          );
180      }     
181       if ((linies.indexOf(respositorisGVA[0])!=-1) || (linies.indexOf(respositorisGVA[1])!=-1) || (linies.indexOf(respositorisGVA[2])!=-1)|| (linies.indexOf(respositorisGVA[3])!=-1)|| (linies.indexOf(respositorisGVA[4])!=-1)|| (linies.indexOf(respositorisGVA[5])!=-1)){
182          $('#botonsGVA input').attr('checked',true).change();
183         
184      }
185      else{         
186          $("#botonsGVA input").attr('checked',true).change();         
187          setTimeout(function(){$("#botonsGVA input").removeAttr('checked');}
188          ,50
189          );
190      } 
191     
192      for(var i=0;i<respositorisPropis.length;i++){
193          $('#botonsRepositori_'+i +' input').attr('checked',true).change();         
194          var content=$('#botonsRepositori_'+i +' input');                   
195          if (linies.indexOf(respositorisPropis[i].repositori)==-1){
196          setTimeout(function(){
197            content.removeAttr('checked');           
198            }
199            ,50
200            );
201         }
202      }     
203     
204    }
205    function comprovaBotonsVisible(){     
206      if (!visibleLocals){       
207        $('#botonsLocal').addClass('hidden');       
208      }
209      else{
210        $('#botonsLocal').removeClass('hidden');
211      }
212      if (!visibleServidorsAula){       
213        $('#botonsAula').addClass('hidden');       
214      }
215      else{
216        $('#botonsAula').removeClass('hidden');
217      }
218      if (!visibleGVA){       
219        $('#botonsGVA').addClass('hidden');       
220      }
221      else{
222        $('#botonsGVA').removeClass('hidden');
223      }     
224    }
225    function gestiona(identificador,vector){       
226        var nouEstat = $('#botons'+identificador+' input').is(':checked');       
227        var AccioAfer = Esborrar;
228        if (nouEstat) //volem afegir
229          AccioAfer=Afegir;
230        AccioAfer(identificador,vector);
231      }
232    function carregaInicialRepositorisPropis(){
233     var fs = require('fs');
234        fs.readFile(arxiu_reps, 'utf8', function (err,data) {
235       
236            if (err) {           
237              return;
238            }
239            var __liniesRepos = data.split("\n");
240            __liniesRepos.pop();
241            for(var i=0;i<__liniesRepos.length;i++){
242              __linia = __liniesRepos[i].split("#");             
243              respositorisPropis.push({nom:__linia[0],repositori:__linia[1]});
244            }//hem d'esborar la darrera linia           
245            var nouHtml = creaCheckBoxRepositorisPropis(respositorisPropis);
246            $('#repositorisPropis').html(nouHtml); 
247            $.material.init();
248        });
249    }
250    function carregaInicial(){       
251       
252        CarregaInicialdetectaIdioma();
253        /*carregaInicialRepositorisPropis();
254        var fs = require('fs');
255        fs.readFile('/etc/apt/sources.list', 'utf8', function (err,data) {
256            if (err) {
257              return console.log(err);
258            }
259            linies = data.split("\n");
260            var html =creaTaula(linies);                       
261            $('#mostrador_grafic').html(html);
262        var sys = require('sys');
263        var exec = require('child_process').exec;
264        var child;       
265       
266        child = exec("lliurex-version", function (error, stdout, stderr) {
267            if (stdout.indexOf('gva')!=-1){
268              visibleGVA = true;
269            }
270            if(stdout.indexOf('server')!=-1){
271             visibleLocals = true;
272            }
273            if(stdout.indexOf('client')!=-1){
274              visibleServidorsAula = true;
275            }
276            comprovaBotonsVisible();           
277            setTimeout(comprovaBotonsChecked,100);           
278            if (error !== null) {
279              console.log('exec error: ' + error);
280            }
281       
282        });           
283        });
284*/
285    }
286  function gestionaPropis(index){   
287    gestiona("Repositori_"+index,[respositorisPropis[index].repositori]);
288  }
289  function creaCheckBoxRepositorisPropis(_propis){
290    var html = " <div class='form-group'>";   
291    for(var i=0;i<_propis.length;i++){
292      var checked = '';
293      if (linies.indexOf(_propis[i].repositori)!=-1){
294        checked ='checked';
295      }
296      html +="<div id='botonsRepositori_"+i+"' class='checkbox' ><label><input type='checkbox' onClick='gestionaPropis("+i+")'>&nbsp;"+_propis[i].nom+"</input></label></div>";     
297    }
298    html +="</div>";
299    return html;
300  }
301  function afegirRespositori(){
302    var _respositori = $('#repositoriManual').val();
303     if(_respositori!=''){
304         linies.push(_respositori);
305         var nouHTML = creaTaula(linies);         
306         $('#mostrador_grafic').html(nouHTML);         
307         
308         $('#repositoriManual').val('');
309    }
310  }
311  function visible(boto){
312    if($('#botons'+boto).hasClass('hidden'))
313       $('#botons'+boto).removeClass('hidden');
314    else
315      $('#botons'+boto).addClass('hidden');
316  }
317  function mostrarOpcions(){
318        var html =" <div class='form-group'>";
319        if (!visibleLocals){
320            html+="<div id='botonsLocalOpcio' class='checkbox' ><label><input type='checkbox' class='styled' onClick='visible(&apos;Local&apos;)' ></input>"+idioma.repositorisLocals+"</label></div>";           
321        }
322        if (!visibleServidorsAula){
323          html += "<div id='botonsAulaOpcio' class='checkbox' ><label><input type='checkbox' class='styled' onClick='visible(&apos;Aula&apos;)'></input>"+idioma.repositorisServidorAula+"</label></div>";
324        }       
325        html +="</div>";
326        BootstrapDialog.show({ 
327             title: idioma.habilitarRepositori,
328             message:html,
329             buttons:[
330               {
331                label:'ok',
332                action: function(dialogItself){                     
333                dialogItself.close();
334                        }
335              },
336              ],
337              onshown: function(){ $.material.init();}
338         });
339      }
340  function mostrarAfegirRespositori(){
341    var html = "<div class='input-group'><span class='input-group-addon' id='basic-addon1'>"+idioma.nom+":</span><input id='repositoriManualNom' type='text' class='form-control' placeholder='nom' aria-describedby='basic-addon1'></div>";
342    html += "<div class='input-group'><span class='input-group-addon' id='basic-addon2' >"+idioma.repositori+":</span><input id='repositoriManualRepositori' type='text' class='form-control' placeholder='repositori' aria-describedby='basic-addon1'></div>";
343   
344          BootstrapDialog.show({ 
345             title:idioma.afegirRepositori,
346             message:html,
347             buttons:[
348               {
349                label:'ok',
350                action: function(dialogItself){                     
351                        var nom = $('#repositoriManualNom').val();
352                        var rep  = $('#repositoriManualRepositori').val();
353                        if ((nom!='') && (rep!=''))
354                           {
355                              respositorisPropis.push({nom:nom,repositori:rep});
356                              var nouHtml = creaCheckBoxRepositorisPropis(respositorisPropis);
357                              $('#repositorisPropis').html(nouHtml);
358                              var fs = require('fs');
359                              var dadesRepositori ='';
360                              for(var i=0;i<respositorisPropis.length;i++){
361                                dadesRepositori +=respositorisPropis[i].nom + "#"+respositorisPropis[i].repositori+"\n";
362                              }                             
363                              fs.writeFile(arxiu_reps, dadesRepositori, function(err) {
364                              if(err) {
365                                return console.log(err);
366                                }
367                              }); 
368
369                              dialogItself.close();
370                           }
371                      }
372              },
373              {
374                label:idioma.cancelar,
375                action: function(dialogItself){
376               
377                  dialogItself.close();
378                }
379              }
380             
381              ]
382         });
383  }
384 
385  function mostrarResultatUpdate(){ 
386    if ($('#mostrarResultatUpdate').hasClass('hidden')){
387      $('#mostrarResultatUpdate').removeClass('hidden');
388      $('#canviarHiddenResultat').removeClass('glyphicon-plus');
389      $('#canviarHiddenResultat').addClass('glyphicon-minus');
390    }
391    else{
392      $('#mostrarResultatUpdate').addClass('hidden');
393      $('#canviarHiddenResultat').removeClass('glyphicon-minus');
394      $('#canviarHiddenResultat').addClass('glyphicon-plus');   
395    }
396  }
397  function AcceptarCanvis(){
398    var fs = require('fs');
399    fs.writeFile("/tmp/sources.list", linies.join("\n"), function(err) {
400    if(err) {
401        return console.log(err);
402    }
403    var sys = require('sys');
404    var exec = require('child_process').exec;
405    var child; 
406    var dialegTancar;
407    BootstrapDialog.show({ 
408      title:'<div class="bg-primary">'+idioma.actualitzantFontsPaquets+'</div>',
409      message:'<div class="bg-info">'+idioma.espereuUnMoment+'</div>',
410      onshow:function (dialogP){ dialegTancar = dialogP}
411    });
412    child = exec("apt-get update", function (error, stdout, stderr) { 
413        dialegTancar.close();
414        var html = idioma.mostrarEixida+":<span style='cursor:pointer' class='glyphicon glyphicon-plus' id='canviarHiddenResultat' onclick='mostrarResultatUpdate()'></span><div id='mostrarResultatUpdate' class='hidden'>"+stdout+"</div>";
415         BootstrapDialog.show({ 
416             title:idioma.finalitzat,
417             message:html,
418             buttons:[{
419              label:'ok',
420              action:function(dialogP) {dialogP.close();}
421             } ]             
422             });
423    });
424   
425  });
426  } 
427  function CancelarClick(){
428    var gui = require('nw.gui');
429    var win = gui.Window.get();
430    win.close();
431  }
432 
433 
434  function carregaIdioma(){ 
435   
436    $('#textRepositorisLliurex').html(idioma.repositorisLliureX);
437    $('#textRepositorisLocal').html(idioma.repositorisLocals);
438    $('#textRepositorisAula').html(idioma.repositorisServidorAula);       
439    $('#textRepositorisGVA').html(idioma.respositorisGVA);   
440    $('#textRepositorisEducatius').html(idioma.repositorisEducatius);   
441    $('#textRepositorisUbuntu').html(idioma.respositorisUbuntu);
442   
443   
444   
445    $('#repositoriManual').attr('placeholder',idioma.afegirRepositori);
446    $('#btnOpcions').html(idioma.opcions);
447    $('#btnAcceptar').html(idioma.acceptar);
448    $('#btnCancelar').html(idioma.cancelar);
449    $('#panellRepositorisHeader1').html(idioma.repositoris);
450    $('#panellRepositorisHeader2').html(idioma.repositoris);
451  }
452  function CarregaInicialdetectaIdioma(){
453    //var sys = require('sys');
454    //var exec = require('child_process').exec;
455    var child; 
456    idioma = idioma_val;
457    carregaIdioma();
458    return;
459    child = exec("echo $LANG", function (error, stdout, stderr) {       
460      if (stdout.indexOf('es_ES')!=-1)
461        idioma=idioma_cas;
462      carregaIdioma();     
463    }
464    );   
465  }
466  //$(document).ready(carregaInicial);
467    </script>
468    </head>
469   
470   
471<body>
472<div class="container">
473  <br/><br/>
474  <div class="row col-md-16">   
475         <div class='panel panel-primary col-md-4' >
476            <div id='panellRepositorisHeader1' class="panel-heading"></div>
477            <div id='mostrador_grafic2' class='panel-body'>             
478              <!--div id='botonsLliurex' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Lliurex&apos;,repositorisLliurexNet)'></input><label id='labelRepositorisLliurex'></label></div-->
479              <!--div id='botonsLliurex' class="checkbox" ><input type="checkbox" onClick='gestiona(&apos;Lliurex&apos;,repositorisLliurexNet)'></input><label id='labelRepositorisLliurex'></label></div-->
480              <div class='form-group'>
481                <div id='botonsLliurex' class='checkbox' >
482                  <label>
483                    <input type="checkbox" onClick='gestiona(&apos;Lliurex&apos;,repositorisLliurexNet)'>&nbsp;<span id='textRepositorisLliurex'></span></input>
484                  </label>
485                </div>
486             
487             
488              <!--div id='botonsLocal' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Local&apos;,repositorisLocals)' ></input><label></label></div!-->
489             
490             
491                <div id='botonsLocal' class='checkbox' >
492                  <label>
493                    <input type="checkbox" onClick='gestiona(&apos;Aula&apos;,respositoriServidorLocal)'>&nbsp;<span id='textRepositorisLocal'></span></input>
494                  </label>
495                </div>
496             
497<!--div id='botonsAula' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Aula&apos;,respositoriServidorAula)'></input><label></label></div-->
498
499                <div id='botonsAula' class='checkbox' >
500                  <label>
501                    <input type="checkbox" onClick='gestiona(&apos;Aula&apos;,respositoriServidorAula)'>&nbsp;<span id='textRepositorisAula'></span></input>
502                  </label>
503                </div>
504
505             
506             
507              <!--div id='botonsGVA' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;GVA&apos;,respositorisGVA)'></input><label></label></div-->
508
509                <div id='botonsGVA' class='checkbox' >
510                  <label>
511                    <input type="checkbox" onClick='gestiona(&apos;GVA&apos;,respositorisGVA)'>&nbsp;<span id='textRepositorisGVA'></span></input>
512                  </label>
513                </div>
514
515                           
516              <!--div id='botonsEducatius' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Educatius&apos;,respositorisEducatius)'></input><label></label></div-->
517
518                <div id='botonsEducatius' class='checkbox' >
519                  <label>
520                    <input type="checkbox" onClick='gestiona(&apos;Educatius&apos;,respositorisEducatius)'>&nbsp;<span id='textRepositorisEducatius'></span></input>
521                  </label>
522                </div>
523             
524             
525              <!--div id='botonsUbuntu' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Ubuntu&apos;,respositorisUbuntu)'></input><label></label></div-->
526             
527             
528                <div id='botonsUbuntu' class='checkbox' >
529                  <label>
530                    <input type="checkbox" onClick='gestiona(&apos;Ubuntu&apos;,respositorisUbuntu)'>&nbsp;<span id='textRepositorisUbuntu'></span></input>
531                  </label>
532                </div>
533              </div> 
534             
535              <hr>
536              <!-- Repositoris particulars-->
537              <div id='repositorisPropis'></div>
538              <div class='input-group'><input id='repositoriManual' type='text' disabled class='form-control' placeholder='' aria-describedby='basic-addon1'><span class='input-group-addon' id='basic-addon1' onClick='mostrarAfegirRespositori()'><div class='glyphicon glyphicon-plus' style='cursor:pointer'></div></span></div>
539              </div>
540                  <br/><div class='row'>
541                        <button id='btnOpcions' class='btn btn-info' onClick='mostrarOpcions()' style='font-size:14px;padding-right:15px;padding-left:15px'></button>
542                        <button id='btnAcceptar' class='btn btn-info' onClick='AcceptarCanvis()' style='font-size:14px;padding-right:15px;padding-left:15px'></button>
543                        <button id='btnCancelar' class='btn btn-info' onClick='CancelarClick()' style='font-size:14px;padding-right:15px;padding-left:15px'></button> </div>
544                 
545
546             
547             
548             
549             
550            <!--/div-->
551       </div>
552
553       <div class='panel panel-primary col-md-6 col-md-offset-1 '>
554          <div class="panel-heading"><h3 class="panel-title" id='panellRepositorisHeader2'></h3></div>
555          <div id='mostrador_grafic' class='panel-cp body'>    </div>
556       </div>
557  </div>
558
559 
560</div>
561</body>
562
563
564<!--script>$.material.init();</script-->
565
566</html>
Note: See TracBrowser for help on using the repository browser.