source: admin-center-alpha/var/www/admin-center/modules/lliurex-apt/src/main.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.8 KB
Line 
1    <script> 
2    function lliurexApt(){
3    }
4    lliurexApt.prototype.init=function(){
5      carregaInicial()
6    }
7    var counter=0;
8    var arxiu_reps = '/usr/share/lliurex-apt2/reps';
9    var idioma_val = {
10      repositorisLocals:'Repositoris locals',
11      repositorisServidorAula:"Repositoris del Servidor d'Aula",
12      habilitarRepositori:'Habilitar repositoris',
13      nom:'Nom',
14      repositori:'Repositori',
15      repositoris:'Repositoris',
16      afegirRepositori:'Afegir repositori',
17      cancelar:'Cancel·lar',
18      actualitzantFontsPaquets:'Actualitzant fonts de paquets',
19      espereuUnMoment:'Espereu un moment',
20      repositorisLliureX:'Repositoris LliureX',
21      respositorisGVA:'Repositoris de GVA',
22      repositorisEducatius:'Repositoris de recursos educatius',
23      respositorisUbuntu:"Repositoris d'Ubuntu",
24      acceptar:'Acceptar',
25      opcions:'Opcions',     
26      mostrarEixida:'Mostrar eixida',
27      finalitzat:'Finalitzat',
28    };
29    var idioma_cas = {
30      repositorisLocals:'Repositorios locales',
31      repositorisServidorAula:"Repositorios del servidor de aula",
32      habilitarRepositori:'Habilitar repositorios',
33      nom:'Nombre',
34      repositori:'Repositorio',
35      repositoris:'Repositorios',
36      afegirRepositori:'Añadir repositorio',
37      cancelar:'Cancelar',
38      actualitzantFontsPaquets:'Actualizando fuentes de paquetes',
39      espereuUnMoment:'Espera un momento',
40      repositorisLliureX:'Repositorios LliureX',
41      respositorisGVA:'Repositorios de GVA',
42      repositorisEducatius:'Repositorios de recursos educativos',
43      respositorisUbuntu:"Repositorios de Ubuntu",
44      acceptar:'Aceptar',
45      opcions:'Opciones',     
46      mostrarEixida:'Mostrar salida',
47      finalitzat:'Finalizado',
48    }   
49      var idioma;
50      var linies = [];
51      var visibleLocals = false;
52      var visibleServidorsAula = false;     
53      var visibleGVA = false;
54      var repositorisLliurexNet = [
55        "deb http://lliurex.net/trusty trusty main restricted universe multiverse",
56        "deb http://lliurex.net/trusty trusty-updates main restricted universe multiverse",
57        "deb http://lliurex.net/trusty trusty-security main restricted universe multiverse"
58      ];
59      var repositorisLocals = [
60        "deb file:///net/mirror/llx1505 trusty main restricted universe multiverse",
61        "deb file:///net/mirror/llx1505  trusty-updates main restricted universe multiverse",
62        "deb file:///net/mirror/llx1505  trusty-security main restricted universe multiverse"
63      ];
64      var respositoriServidorAula = [
65        "deb http://mirror/llx1505 trusty main restricted universe multiverse",
66        "deb http://mirror/llx1505  trusty-updates main restricted universe multiverse",
67        "deb http://mirror/llx1505  trusty-security main restricted universe multiverse"
68      ];
69    var respositorisUbuntu = [
70        "deb http://es.archive.ubuntu.com/ubuntu trusty main restricted universe multiverse",
71        "deb http://es.archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse",
72        "deb http://es.archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse"
73     
74    ];
75    var respositorisEducatius = [
76     "deb http://lliurex.net/recursos-edu trusty main restricted universe multiverse",
77    ];
78    var respositorisGVA = [
79      "deb http://repositorios.gva.es/dgti/trusty trusty main restricted universe multiverse",
80      "deb http://repositorios.gva.es/dgti/trusty trusty-updates main restricted universe multiverse",
81      "deb http://repositorios.gva.es/dgti/trusty trusty-security main restricted universe multiverse",
82      "deb http://repositorios.gva.es/dgti/trusty-gva trusty main restricted universe multiverse",
83      "deb http://repositorios.gva.es/dgti/trusty-gva trusty main restricted universe multiverse",
84      "deb http://repositorios.gva.es/dgti/trusty-gva trusty main restricted universe multiverse",
85    ];
86    var respositorisPropis = [];
87    function esborraLinia(index){
88      linies.splice(index,1);
89      var html =creaTaula(linies);
90      $('#mostrador_grafic').html(html);
91     
92    }
93    function creaTaula(_linies){
94      var html = "<ul class='list-group' width='100%'>";
95        for(var i=0;i<_linies.length;i++){
96              var color_verd = '';
97              var fons_gris = '';
98              if (_linies[i][0]=='#'){ //línia comentada
99                  color_verd = " style='color:green'";             
100              }
101              if (_linies[i].trim()==''){ //linia buida
102                //fons_gris = " style='background:lightgrey'";
103                fons_gris = "background:lightgrey;";
104              }               
105              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>";             
106            }
107        html +="</ul>";
108        return html;
109    }   
110
111    function Afegir(identificador, vector){
112      for(var i=0;i<vector.length;i++){
113         linies.push(vector[i]);
114      }
115       var html =creaTaula(linies);
116      $('#mostrador_grafic').html(html);
117    }
118    function Esborrar(identificador,vector){
119      for(var j=0;j<vector.length;j++){
120        index=linies.indexOf(vector[j]);
121        if (index!=-1){
122          linies.splice(index,1);
123        }
124      }
125      var html =creaTaula(linies);           
126      $('#mostrador_grafic').html(html);
127    } 
128    function comprovaBotonsChecked(){       
129     
130      //Repositoris Lliurex               
131      if ((linies.indexOf(repositorisLliurexNet[0])!=-1) || (linies.indexOf(repositorisLliurexNet[1])!=-1) || (linies.indexOf(repositorisLliurexNet[2])!=-1)){
132          $('#botonsLliurex input').attr('checked',true).change(); 
133      }     
134      else{
135          $("#botonsLliurex input").attr('checked',true).change();         
136          setTimeout(function(){$("#botonsLliurex input").removeAttr('checked');}
137          ,50
138          );
139      }
140       //Repositoris locals
141      if ((linies.indexOf(repositorisLocals[0])!=-1) || (linies.indexOf(repositorisLocals[1])!=-1) || (linies.indexOf(repositorisLocals[2])!=-1)){
142          $('#botonsLocals input').attr('checked',true).change();
143      }
144      else{         
145          $("#botonsLocals input").attr('checked',true).change();         
146          setTimeout(function(){$("#botonsLocals input").removeAttr('checked');}
147          ,50
148          );
149      }
150       //Repositoris Aula
151      if ((linies.indexOf(respositoriServidorAula[0])!=-1) || (linies.indexOf(respositoriServidorAula[1])!=-1) || (linies.indexOf(respositoriServidorAula[2])!=-1)){
152          $('#botonsAula input').attr('checked',true).change();
153      }
154      else{         
155          $("#botonsAula input").attr('checked',true).change();         
156          setTimeout(function(){$("#botonsAula input").removeAttr('checked');}
157          ,50
158          );
159      }
160      if ((linies.indexOf(respositorisEducatius[0])!=-1)){
161          $('#botonsEducatius input').attr('checked',true).change();
162      }
163      else{         
164          $("#botonsEducatius input").attr('checked',true).change();         
165          setTimeout(function(){$("#botonsEducatius input").removeAttr('checked');}
166          ,50
167          );
168      }   
169 //Repositoris Ubuntu
170      if ((linies.indexOf(respositorisUbuntu[0])!=-1) || (linies.indexOf(respositorisUbuntu[1])!=-1) || (linies.indexOf(respositorisUbuntu[2])!=-1)){
171          $('#botonsUbuntu input').attr('checked',true).change();
172      }
173      else{     
174          $("#botonsUbuntu input").attr('checked',true).change();         
175          setTimeout(function(){$("#botonsUbuntu input").removeAttr('checked');}
176          ,50
177          );
178      }     
179       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)){
180          $('#botonsGVA input').attr('checked',true).change();
181         
182      }
183      else{         
184          $("#botonsGVA input").attr('checked',true).change();         
185          setTimeout(function(){$("#botonsGVA input").removeAttr('checked');}
186          ,50
187          );
188      } 
189     
190      for(var i=0;i<respositorisPropis.length;i++){
191          $('#botonsRepositori_'+i +' input').attr('checked',true).change();         
192          var content=$('#botonsRepositori_'+i +' input');                   
193          if (linies.indexOf(respositorisPropis[i].repositori)==-1){
194          setTimeout(function(){
195            content.removeAttr('checked');           
196            }
197            ,50
198            );
199         }
200      }     
201     
202    }
203    function comprovaBotonsVisible(){     
204      if (!visibleLocals){       
205        $('#botonsLocal').addClass('hidden');       
206      }
207      else{
208        $('#botonsLocal').removeClass('hidden');
209      }
210      if (!visibleServidorsAula){       
211        $('#botonsAula').addClass('hidden');       
212      }
213      else{
214        $('#botonsAula').removeClass('hidden');
215      }
216      if (!visibleGVA){       
217        $('#botonsGVA').addClass('hidden');       
218      }
219      else{
220        $('#botonsGVA').removeClass('hidden');
221      }     
222    }
223    function gestiona(identificador,vector){       
224        var nouEstat = $('#botons'+identificador+' input').is(':checked');       
225        var AccioAfer = Esborrar;
226        if (nouEstat) //volem afegir
227          AccioAfer=Afegir;
228        AccioAfer(identificador,vector);
229      }
230    function carregaInicialRepositorisPropis(){
231     var fs = require('fs');
232        fs.readFile(arxiu_reps, 'utf8', function (err,data) {
233       
234            if (err) {           
235              return;
236            }
237            var __liniesRepos = data.split("\n");
238            __liniesRepos.pop();
239            for(var i=0;i<__liniesRepos.length;i++){
240              __linia = __liniesRepos[i].split("#");             
241              respositorisPropis.push({nom:__linia[0],repositori:__linia[1]});
242            }//hem d'esborar la darrera linia           
243            var nouHtml = creaCheckBoxRepositorisPropis(respositorisPropis);
244            $('#repositorisPropis').html(nouHtml); 
245            $.material.init();
246        });
247    }
248    function carregaInicial(){   
249       
250        CarregaInicialdetectaIdioma();
251         $.material.init();         
252        return;
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   
456    var child; 
457    idioma = idioma_val;
458    carregaIdioma();
459    return;
460    child = exec("echo $LANG", function (error, stdout, stderr) {       
461      if (stdout.indexOf('es_ES')!=-1)
462        idioma=idioma_cas;
463      carregaIdioma();     
464    }
465    );   
466  }
467  //$(document).ready(carregaInicial);
468 
469    </script>
470   
471<body onLoadasdad='carregaInicial()'>
472
473<div class="container">
474  <br/><br/>
475  <div class="row col-md-16">   
476         <div class='panel panel-primary col-md-4' >
477            <div id='panellRepositorisHeader1' class="panel-heading"></div>
478            <div id='mostrador_grafic2' class='panel-body'>             
479              <!--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-->
480              <!--div id='botonsLliurex' class="checkbox" ><input type="checkbox" onClick='gestiona(&apos;Lliurex&apos;,repositorisLliurexNet)'></input><label id='labelRepositorisLliurex'></label></div-->
481              <div class='form-group'>
482                <div id='botonsLliurex' class='checkbox' >
483                  <label>
484                    <input type="checkbox" onClick='gestiona(&apos;Lliurex&apos;,repositorisLliurexNet)'>&nbsp;<span id='textRepositorisLliurex'></span></input>
485                  </label>
486                </div>
487             
488             
489              <!--div id='botonsLocal' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Local&apos;,repositorisLocals)' ></input><label></label></div!-->
490             
491             
492                <div id='botonsLocal' class='checkbox' >
493                  <label>
494                    <input type="checkbox" onClick='gestiona(&apos;Aula&apos;,repositorisLocals)'>&nbsp;<span id='textRepositorisLocal'></span></input>
495                  </label>
496                </div>
497             
498<!--div id='botonsAula' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Aula&apos;,respositoriServidorAula)'></input><label></label></div-->
499
500                <div id='botonsAula' class='checkbox' >
501                  <label>
502                    <input type="checkbox" onClick='gestiona(&apos;Aula&apos;,respositoriServidorAula)'>&nbsp;<span id='textRepositorisAula'></span></input>
503                  </label>
504                </div>
505
506             
507             
508              <!--div id='botonsGVA' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;GVA&apos;,respositorisGVA)'></input><label></label></div-->
509
510                <div id='botonsGVA' class='checkbox' >
511                  <label>
512                    <input type="checkbox" onClick='gestiona(&apos;GVA&apos;,respositorisGVA)'>&nbsp;<span id='textRepositorisGVA'></span></input>
513                  </label>
514                </div>
515
516                           
517              <!--div id='botonsEducatius' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Educatius&apos;,respositorisEducatius)'></input><label></label></div-->
518
519                <div id='botonsEducatius' class='checkbox' >
520                  <label>
521                    <input type="checkbox" onClick='gestiona(&apos;Educatius&apos;,respositorisEducatius)'>&nbsp;<span id='textRepositorisEducatius'></span></input>
522                  </label>
523                </div>
524             
525             
526              <!--div id='botonsUbuntu' class="checkbox checkbox-info checkbox-circle" ><input type="checkbox" class='styled' onClick='gestiona(&apos;Ubuntu&apos;,respositorisUbuntu)'></input><label></label></div-->
527             
528             
529                <div id='botonsUbuntu' class='checkbox' >
530                  <label>
531                    <input type="checkbox" onClick='gestiona(&apos;Ubuntu&apos;,respositorisUbuntu)'>&nbsp;<span id='textRepositorisUbuntu'></span></input>
532                  </label>
533                </div>
534              </div> 
535             
536              <hr>
537              <!-- Repositoris particulars-->
538              <div id='repositorisPropis'></div>
539              <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>
540              </div>
541                  <br/><div class='row'>
542                        <button id='btnOpcions' class='btn btn-info' onClick='mostrarOpcions()' style='font-size:14px;padding-right:15px;padding-left:15px'></button>
543                        <button id='btnAcceptar' class='btn btn-info' onClick='AcceptarCanvis()' style='font-size:14px;padding-right:15px;padding-left:15px'></button>
544                        <button id='btnCancelar' class='btn btn-info' onClick='CancelarClick()' style='font-size:14px;padding-right:15px;padding-left:15px'></button> </div>
545                 
546
547             
548             
549             
550             
551            <!--/div-->
552       </div>
553
554       <div class='panel panel-primary col-md-6 col-md-offset-1 '>
555          <div class="panel-heading"><h3 class="panel-title" id='panellRepositorisHeader2'></h3></div>
556          <div id='mostrador_grafic' class='panel-cp body'>    </div>
557       </div>
558  </div>
559
560 
561</div>
Note: See TracBrowser for help on using the repository browser.