[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-wpkg/sources/www/ -> admin.html (source)

   1  <html>
   2  <!-- ## $Id: admin.html 6923 2012-02-23 19:15:30Z olikin $ ## -->
   3  <head>
   4  <meta http-equiv="content-style-type" content="text/css">
   5  <link  href='../style.css' rel='StyleSheet' type='text/css'>
   6  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
   7  <title>Déploiement d'applications</title>
   8  <link  href='se3-wpkg.css' rel='StyleSheet' type='text/css'>
   9  <script language="javascript" src="testConfigWpkg.php"></script>
  10  <script language="javascript" src="WindowsUpdate.js"></script>
  11  <script type = "text/javascript">
  12  
  13      var WindowObjectReference; // objet autre fenetre 
  14      var Debug=false;
  15      // dans testConfigWpkg.php
  16      //
  17      var PageEnCours="PackagesProfiles";
  18      var PageDestination;
  19  
  20      var wpkgXml="wpkg.php";
  21      var urlUpload="index.php?upload=1";  // http://se3:909/wpkg/index.php?upload=1
  22  
  23      // url de la page fournissant les packages officiels SambaEdu
  24      //var urlWawadeb="http://www.etab.ac-caen.fr/serveurmalherbe/se3/wpkg/packages/packages.html"
  25      var urlWawadeb="http://svn.tice.ac-caen.fr/svn/SambaEdu3/wpkg-packages/stable";
  26      // url du fichier md5sum sur le secure serveur
  27      //var urlWawadebMD5="http://www.etab.ac-caen.fr/serveurmalherbe/se3/wpkg/packages/packages.md5";
  28      var urlWawadebMD5="http://wawadeb.crdp.ac-caen.fr/unattended/se3_wpkglist.php";
  29      var se3urlWawadeb;
  30  
  31      var UpdateEnCours="";
  32      // transformation pour afficher le tableau profiles x Apps
  33      var PackagesProfiles="PackagesProfiles.xsl";
  34      // transformation bidon (en fait c'est du html fixe) pour afficher la page upload des applis
  35      var AjoutPackage="AjoutPackage.xsl";
  36      // transformation pour afficher la définition d'un profile
  37      var AfficheProfile="AfficheProfile.xsl";
  38      //var ProfileEnCours="_TousLesPostes";
  39      var ProfileEnCours="";
  40      // transformation pour afficher la définition d'un package
  41      var AffichePackage="AffichePackage.xsl";
  42      var PackageEnCours="";
  43      // transformation pour afficher le détail d'un poste (host)
  44      var AfficheHost="AfficheHost.xsl";
  45      var HostEnCours="", ipHost;
  46      
  47      var nav="inconnu";
  48      var nCmdWait = 0;
  49      var iCmd = 0;
  50      var wpkgDoc;  // Contiendra le document wpkg.xml
  51      var Profiles; // Liste des profiles  (dans /wpkg/profiles/profile)
  52      var ListProfiles; // Liste des profiles  (dans /wpkg/profiles/profile)
  53  
  54      var documentEnCours;
  55      var inChangePageEnCours = false; // indique si un calcule de rafraichissement de page est en cours
  56      
  57      var Tableau, ordre ;
  58      var headTableau=''; // pour IE
  59      var nChamps;
  60      var KeyActuel;
  61      
  62      var sortPackages='ascending'; //ordre de tri des Packages sur la page 'Associations Appli.<->Parcs'
  63      var sortProfiles='ascending'; //ordre de tri des Parcs sur la page 'Associations Appli.<->Parcs'
  64      
  65      var busy = 0; // cursor busy
  66      var noReloadWpkgXml = false; //pour empêcher la relecture de wpkg.xml
  67      var AssocierOperation, AssocierIdProfile, AssocierIdPackage;
  68      var aXmlDoc = new Array();  //  wpkg.php (contient hosts, packages, rapports) , profiles.php, timeStamps.php, wpkglist.php, wpkgtesting.php
  69      //var aUrl = new Array('wpkg.php', 'profiles.php', 'timeStamps.php', 'wpkglist.php', 'wpkgtesting.php');  //  wpkg.php (contient hosts, packages, rapports) , profiles.php, timeStamps.php, wpkglist.php, wpkgtesting.php
  70      var aLastModified = new Array();  //  date de modif des fichiers
  71      var aIsModified = new Array();  //  aXmlDoc a été mis à jour
  72      var aXmlNeeded = new Array();  //  array des xml nécessaires à la construction de wpkgDoc
  73      
  74      var decalX=0, decalY=0, H, L, X, Y; // scrolling de la page PackagesProfiles
  75      
  76      var MAJPackages = 0;
  77      
  78      if (window.ActiveXObject) var LastModified = new ActiveXObject("Scripting.Dictionary");
  79  
  80      ///////////////////////////////////
  81      function FirstLoad(evt){
  82          //processParameters();
  83          // Teste si la configuration de wpkg a été effectuée par l'admin
  84          var i, j;
  85          var s="", t, lien;
  86          var destPage;
  87          try {
  88              if (window.XSLTProcessor && window.XMLHttpRequest) {
  89                  // Navigateur type Firefox
  90                  window.nav='firefox'
  91              } else if (window.ActiveXObject) {
  92                  window.nav = "ie";                
  93              } else {
  94                  alert("Pas de processeur xml pour ce navigateur");
  95                  return 0;
  96              }                
  97          } catch (e) {
  98              alert("FirstLoad\n" + e);
  99              return e;
 100          }
 101                  
 102          //alert("In Firstload\nwpkgAdmin=" + wpkgAdmin + "\nwpkgUser=" + wpkgUser + "\nlogin=" + login);
 103          alertConfigWpkg();
 104          if ( ShowParcsUpdateLink ) document.getElementById("liensUpdateParcs").style.display = "block";
 105          
 106          document.getElementById("Debian").innerHTML = Debian;
 107          //document.getElementById("bonjour").innerHTML = "Bonjour " + login + ( wpkgAdmin ? " (wpkgAdmin)" : wpkgUser ? " (wpkgUser)" : " (?)" );
 108          document.getElementById("bonjour").innerHTML = "Bonjour " + login ;
 109          destPage = processParameters();
 110          var TagA;
 111          var TmpPageDest;
 112          
 113          //alert( "typeof(parent.frames['menu']=" + typeof parent.frames["menu"]);
 114          if ( (typeof parent.frames["menu"]) != 'undefined' ) {
 115              // Changement des liens du menu
 116              documentEnCours = parent.frames["main"].document;
 117              parent.frames["main"].onunload = quitter;
 118              //alert("in FirstLoad : onunload=\n" + onunload);
 119              TagA = parent.frames["menu"].document.getElementsByTagName("a");
 120              //alert("testencours=" + typeof(TagA) + " length=" + TagA.length);
 121              for (i = 0; i< TagA.length; i++) {
 122                  t = TagA[i];
 123                  lien = t.getAttribute("href");
 124                  j = lien.indexOf("wpkg/admin.html?PageEnCours=");
 125                  if ( j >= 0 ) {
 126                      //alert("in FirstLoad, lien=" + lien + ", j=" + j);
 127                      TmpPageDest = lien.substr(j+28);
 128                      t.setAttribute("href", "javascript:ChangePageEnCoursFromMenu('" + TmpPageDest + "');");
 129                  }
 130              }
 131          } else {
 132              documentEnCours = document;
 133          }
 134          
 135          ChangePageEnCours(destPage, true);
 136          
 137      }
 138      function testUpdatedXml() {
 139          //var forceRefresh = documentEnCours.getElementById("forceRefresh").checked;
 140          // Appelé à partir de AjoutPackage.xsl
 141          MAJPackages = 1;
 142          //alert("In testUpdatedXml() MAJPackages=" + MAJPackages + ", forceRefresh=" + forceRefresh);
 143          var target = documentEnCours.getElementById("transform");
 144          target.innerHTML = "Accès au serveur svn.tice.ac-caen.fr. Veuillez patienter ...";
 145          // Mise à jour des applis du forum
 146          var http = null; 
 147          if(window.nav=='firefox') // Firefox 
 148              http = new XMLHttpRequest(); 
 149          else if(window.nav=='ie') // Internet Explorer 
 150              http = new ActiveXObject("Microsoft.XMLHTTP"); 
 151          else { // XMLHttpRequest non supporté par le navigateur 
 152              alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
 153              return false; 
 154          } 
 155          // Requete en mode asynchrone
 156          //var url = "wpkgtesting.php";
 157          var url = "wpkglist.php";
 158          //if ( forceRefresh ) {
 159          //    url += "?refresh=1";
 160          //}
 161          //if (urlWawadebMD5 == "http://wawadeb.crdp.ac-caen.fr/unattended/se3_wpkglist.php" ) {
 162          //    url = "wpkglist.php";
 163          //}
 164          http.open("GET", url , true); 
 165          http.onreadystatechange = function() { 
 166              if (http.readyState == 4) {
 167                  if ( http.status == "200" ) {
 168                      //alert("http.status = " + http.status + "\n" + http.responseText); 
 169                      ChangePageEnCours('AjoutPackage');
 170                  } else {
 171                      target.innerHTML = http.responseText; 
 172                      alert("http.status = " + http.status + "\n" + http.responseText);
 173                      ChangePageEnCours('AjoutPackage');
 174                  }
 175              }
 176          }
 177          http.send(null); 
 178          
 179          
 180      }
 181      function dateFromIso8601(iso8601) {
 182          //var d = new Date('06/09/2007 23:51:18+0200'); 
 183          //2007-06-07T21:35:36+0000
 184          if (iso8601 == "") {
 185              return "";
 186          } else {
 187              var d0;
 188              d0 = iso8601.substr(5 , 2) + '/' + iso8601.substr(8 , 2) + '/' + iso8601.substr(0 , 4) + ' ' + iso8601.substr(11, 8) + ' ' + iso8601.substr(19, 5) ;
 189              //alert ("iso8601=" + iso8601 + ", d0=" + d0);
 190              //var dInt = Date.parse(d0); 
 191              var d = new Date(Date.parse(d0));
 192              //return "iso8601="+iso8601+"<br>d0='"+d0+"'<br>" + d.toLocaleString();
 193              return d.toLocaleString();
 194          }
 195      }
 196  
 197      function updateTableau() {
 198          //alert("In updateTableau");
 199          var i, l;
 200          var idScriptTableau = document.getElementById('ScriptTableau');
 201          if ( idScriptTableau != null ) {
 202              var InitTableau = idScriptTableau.innerHTML;
 203              // initialise le tableau en exécutant le script
 204              eval(InitTableau);
 205              //alert("In updateTableau : typeof Tableau=" + (typeof Tableau) + "\nTableau.length=" + Tableau.length);
 206              if ( Tableau.length > 0 ) {
 207                  if (nav == 'ie') {
 208                      try {
 209                          if (headTableau == '')    headTableau = document.getElementById('headTableau').innerHTML;
 210                          var r = '<table class="postes"><thead id="headTableau">' + headTableau + '</thead><tbody id="bodyTableau">' + Tableau.join("") + '</tbody></table>';
 211                          try {
 212                              document.getElementById('divTableau').innerHTML =  r;
 213                              nChamps = Tableau[0].length - 2; // indice du champ n°
 214                          } catch (e) {
 215                              alert( "Erreur updateTableau : innerText : r=\n" + r + "\n" +e + "\n" + e.description);
 216                          }
 217                      } catch (e) {
 218                          alert("Erreur updateTableau InitTableau : InitTableau=\n" + InitTableau + "\n" +e);
 219                          return e;
 220                      }
 221                  } else {
 222                      var idTableau = documentEnCours.getElementById('bodyTableau');
 223                      if ( idTableau != null ) {
 224                          
 225                          idTableau.innerHTML = Tableau.join("");
 226                          //alert("updateTableau : Tableau.length=" + Tableau.length);
 227                          nChamps = Tableau[0].length - 2; // indice du champ n°
 228                      }
 229                  }
 230                  if ( (typeof ordre) == 'object' ) {
 231                      //alert("In updateTableau ordre.length=" + ordre.length + "\nordre=" + ordre + "\nnChamps=" + nChamps);
 232                      tri(nChamps+1); // tri pour rétablir l'ordre du tableau avant le rafraichissement de la page
 233                  } else {
 234                      // alert("In updateTableau typeof ordre=" + (typeof ordre));
 235                      l = Tableau.length;
 236                      ordre = new Array(l);
 237                      for (i=0; i<l; i++ ) ordre[i] = i;
 238                      //alert("In updateTableau avant tri nChamps=" + nChamps);
 239                      try {
 240                          tri(nChamps + 1);
 241                      } catch (e) {
 242                          alert("Erreur updateTableau tri : nChamps=" + nChamps + "\n" +e);
 243                          return e;
 244                      }
 245                      //alert("In updateTableau apres tri");
 246                  }
 247              }
 248          }
 249      
 250      }
 251      function processParameters() {
 252          // lit les paramètres passés lors de l'appel de la page html
 253          var destPage = PageEnCours;
 254          var parameters = location.search.substring(1).split("&");
 255          
 256          var temp = parameters[0].split("=");
 257          var varName;
 258          var varVal;
 259          varName = unescape(temp[0]);
 260          varVal = unescape(temp[1]);
 261          if ( varName == 'PageEnCours' ) destPage = unescape(temp[1]);
 262          //alert("varName=" + varName + ", varVal=" + varVal);
 263          return destPage;
 264      }
 265      function to_utf8 (doc) {
 266          // Function inutilisée
 267          if (window.nav=='firefox') {
 268              // Navigateur type Firefox
 269              //window.nav='firefox'
 270              var processor;
 271              //alert("typeof(doc)=" + typeof(doc));
 272              var xslt= document.implementation.createDocument("", "", null);
 273              //alert("xsl=" +xsl + ", xslt défini!");
 274              xslt.async=false;
 275              xslt.load(to_utf8.xsl);
 276              if (Debug) alert(xsl + " chargé ! , typeof(xslt)=" + typeof(xslt));
 277              processor = new XSLTProcessor();
 278              try {
 279                  processor.importStylesheet(xslt);
 280                  try {
 281                      //var resultat = processor.transformToFragment(doc, document);
 282                      var resultat = processor.transformToDocument(doc);
 283                      return resultat;
 284                      
 285                  } catch (e) {
 286                      alert("processor.transformToDocument(doc)\n" + e);
 287                      return e;
 288                  }
 289              } catch (e) {
 290                  alert("processor.importStylesheet(xslt)\n" + e);
 291                  return e;
 292              }
 293          }
 294      }
 295  
 296  
 297  	function GetHTML(url){
 298          var XmlHttp;
 299          if (window.nav=='firefox') // Firefox 
 300              XmlHttp = new XMLHttpRequest(); 
 301          else if(window.nav=='ie') // Internet Explorer 
 302              XmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
 303          
 304          XmlHttp.open('GET', url, true);
 305          XmlHttp.onreadystatechange = function() {
 306              var runfunction2 = runfunction;
 307              if ( XmlHttp.readyState == 4 ) {
 308                  alert(url + " XmlHttp.readyState == 4, XmlHttp.status=" + XmlHttp.status);
 309                  window.aLastModified[url] = XmlHttp.getResponseHeader('Last-Modified');
 310                  window.aXmlDoc[url] = XmlHttp.responseXML;
 311                  window.aIsModified[url] = true;
 312                  window.aXmlNeeded[url] = false;
 313                  //buildWpkgXml(runfunction);
 314              }
 315          }
 316          XmlHttp.send(null);
 317      }
 318      function PP(evt, idSrc, redraw) {
 319          // appellé lors d'un click sur une case du Tableau profiles/packages (de la page PackageProfile)
 320          // ou lors d'un clic sur une case 'Installer sur ce poste' (de la page AfficheHost ou AffichePackage)
 321          // idSrc de la forme : "idProfile:idPackage"
 322          if (typeof redraw == "undefined") redraw = false;
 323  
 324          var e = (evt ? evt : window.event);
 325          var eltsrc = (e.target ? e.target : e.srcElement);
 326          
 327          var a;
 328          a = idSrc.split(":");
 329          //alert("a.length=" + a.length + "\nidSrc=" + idSrc);
 330          var idProfile = a[0];
 331          var idPackage = a[1];
 332          var status;
 333          PackageEnCours=idPackage;
 334          status = eltsrc.style.zIndex;
 335          // zIndex = 3 : Non installé
 336          // zIndex = 4 : installé
 337          
 338          var checked = (status==4 ) ? true : false;
 339          //alert("in PP idPackage=" + idPackage + "\nidProfile=" + idProfile + "\nredraw=" + redraw + "\nchecked=" + checked);
 340  
 341          try {
 342  
 343              if (status==4) {
 344                  // On retire l'association
 345                  try {
 346                      associer(eltsrc, idProfile, idPackage, 'Dissocier', redraw);
 347                  } catch (e) {
 348                      alert("Suppression association\n" + e + "\n" + e.description);
 349                      return e;
 350                  }
 351              } else {
 352                  // On ajoute l'association
 353                  try {
 354                      try {
 355                          //updateCmdWait ( ++nCmdWait );
 356                          associer(eltsrc, idProfile, idPackage, 'Associer', redraw);
 357                      } catch (e) {
 358                          alert("Cmd Associer\n" + e);
 359                          return e;
 360                      }
 361                  } catch (e) {
 362                      alert("Ajout association\n" + e);
 363                      return e;
 364                  }
 365              }
 366          } catch (e) {
 367              alert("PP()\n" + e);
 368              return e;
 369          }
 370          // alert ("Sortie PP()");
 371          return true;
 372      }
 373      function modeDebug() {
 374          Debug = document.getElementById("idDebug").checked;
 375          ChangePageEnCours('PackagesProfiles');
 376      }
 377      function defPackage(idPackage) {
 378          // Affichage de la page de définition du Package
 379          PackageEnCours=idPackage;
 380          ChangePageEnCours('AffichePackage');
 381          //setTimeout("document.getElementById('idPackage').focus();", 200);
 382      }
 383      function defParcPackage(idPackage) {
 384          // Affichage de la page de définition du Package
 385          PackageEnCours=idPackage;
 386          ChangePageEnCours('AffichePackage');
 387          setTimeout("document.getElementById('idParcPackage').focus();", 200);
 388      }
 389      function defProfile(idProfile) {
 390          // Affichage de la page de définition du Profile
 391          ProfileEnCours=idProfile;
 392          ChangePageEnCours('AfficheProfile');
 393          //setTimeout("document.getElementById('idProfile').focus();", 200);
 394      }
 395      function defHost(idHost) {
 396          // Affichage de la page de détail d'un poste
 397          HostEnCours=idHost;
 398          ChangePageEnCours('AfficheHost');
 399          //setTimeout("document.getElementById('idHost').focus();", 200);
 400      }
 401      function posteini(NomPoste, Param, Valeur) {
 402          var url, contentHtml;
 403          url = "posteconf.php?Poste=" + NomPoste + "&Param=" + Param + "&Valeur=" + Valeur;
 404          // alert("NomPoste=" + NomPoste + ", Param=" + Param + ", Valeur=" + Valeur + "\nurl=" + url);
 405          documentEnCours.getElementById("posteparam").innerHTML = getHttp( url, "html" );
 406      }
 407      function startHost(NomPoste, AddIp, Masque, Mac) {
 408          var Broadcast, i;
 409          var ArrAddIp, ArrMasque, ArrBroadcast = new Array();
 410          // Nettoyage des chaines par prudence
 411          AddIp = AddIp.replace( /[^0-9\.]/g , "" );
 412          Masque = Masque.replace( /[^0-9\.]/g , "" );
 413          ArrAddIp = AddIp.split(".");
 414          if ((typeof(Masque) == 'undefined') || (Masque == '')) {
 415              Masque = "255.255.255.0";
 416          }
 417          ArrMasque = Masque.split(".");
 418          
 419          //alert("ArrAddIp.length=" + ArrAddIp.length + ", ArrMasque.length=" + ArrMasque.length );
 420          for ( i in ArrAddIp) {
 421              ArrBroadcast[i] = eval( "(" + ArrAddIp[i] + " | ( ~ " + ArrMasque[i] + ")  & 0xFF )" );
 422          }
 423          Broadcast = ArrBroadcast.join(".");
 424          // alert("Envoi d'une trame réseau pour démarrer le poste '" + NomPoste + "'.\n" + "\nwakeonlan -i " + Broadcast + " " + Mac);
 425          getHttp( "restart-client.php?Poste=" + NomPoste + "&Broadcast=" + Broadcast + "&Mac=" + Mac  + "&Ip=" + AddIp );
 426          
 427      }
 428      function getHttp( url, content) {
 429          // envoi une requête http et affiche le résultat dans une alert
 430          var http = null; 
 431          if(window.nav=='firefox') // Firefox 
 432              http = new XMLHttpRequest(); 
 433          else if(window.nav=='ie') // Internet Explorer 
 434              http = new ActiveXObject("Microsoft.XMLHTTP"); 
 435          else { // XMLHttpRequest non supporté par le navigateur 
 436              alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
 437              return false; 
 438          } 
 439          
 440          if (typeof(content) == "undefined") {
 441              // Requete en mode asynchrone
 442              http.open("GET", url , true); 
 443              http.onreadystatechange = function() { 
 444                  if (http.readyState == 4) {
 445                      if ( http.status != "200" ) {
 446                          alert("http.status = " + http.status + "\n" + http.responseText); 
 447                      } else {
 448                          alert(http.responseText); 
 449                      }
 450                  }
 451              }
 452              http.send(null); 
 453          } else if (content == "html"){
 454              // Requete en mode synchrone
 455              http.open("GET", url , false); 
 456              http.send(null); 
 457              if(http.readyState == 4) {
 458                  if ( http.status != "200" ) {
 459                      alert("http.status = " + http.status + "\n" + http.responseText); 
 460                  } else {
 461                      return http.responseText;
 462                  }
 463              }
 464          }
 465      }
 466      
 467      function tri(key, evt) {
 468          
 469          var evnt = (evt ? evt : window.event);
 470          //alert("In tri apres var evnt : typeof evnt=" + (typeof evnt));
 471          try {
 472              var eltsrc = ((typeof evnt == "undefined") ? undefined : (evnt.target ? evnt.target : evnt.srcElement));
 473          } catch (e) {
 474              //var eltsrc = "undefined";
 475          }
 476          var sens=0;
 477          
 478          //alert("In tri apres var eltsrc");
 479          
 480          KeyActuel = key;
 481          //alert("In tri : nav=" + nav);
 482          if (nav == "ie") {
 483              headTableau = '';
 484              //alert("In tri apres var : typeof eltsrc=" + typeof eltsrc);
 485              if ((typeof eltsrc) != "undefined" ) {
 486                  if ( eltsrc.id == '') {
 487                      if (eltsrc.style.cursor == "ne-resize") {
 488                          Tableau.sort(triTableau);
 489                          eltsrc.style.cursor = "nw-resize";
 490                      } else {
 491                          Tableau.sort(triRevTableau);
 492                          eltsrc.style.cursor = "ne-resize";
 493                      }
 494                  }
 495              } else {
 496                  // tri pour remettre le résultat du dernier tri
 497                  //alert("In tri : KeyActuel=" + KeyActuel + ", nChamps=" + nChamps + " typeof ordre=" + typeof ordre);
 498                  try {
 499                      Tableau.sort(triTableau);
 500                  } catch (e) {
 501                      alert("Erreur Tableau.sort \n" + e + "\n" + e.description);
 502                  }
 503                  //alert("In tri apres Tableau.sort");
 504              }
 505          } else {
 506              // firefox
 507              if ((typeof eltsrc) != "undefined" ) {
 508                  if (eltsrc.style.cursor == "ne-resize") {
 509                      Tableau.sort(triTableau);
 510                      eltsrc.style.cursor = "nw-resize";
 511                  } else {
 512                      Tableau.sort(triRevTableau);
 513                      eltsrc.style.cursor = "ne-resize";
 514                  }
 515              } else {
 516                  // tri pour remettre le résultat du dernier tri
 517                  Tableau.sort(triTableau);
 518              }
 519          }
 520          
 521          var i;
 522          var nli = Tableau.length;
 523          
 524          //alert("In tri : Tableau.length=" + Tableau.length + "\nsens=" + sens + "\nkey=" + key);
 525          for (i=0; i<nli; i++) ordre[Tableau[i][nChamps]] = i;
 526          if (nav == 'ie') {
 527              if (headTableau == '')    headTableau = documentEnCours.getElementById('headTableau').innerHTML;
 528              var r = '<table class="postes"><thead id="headTableau">' + headTableau + '</thead><tbody id="bodyTableau">' + Tableau.join("") + '</tbody></table>';
 529              documentEnCours.getElementById('divTableau').innerHTML =  r;
 530          } else {
 531              var idTableau = documentEnCours.getElementById('bodyTableau');
 532              idTableau.innerHTML = Tableau.join("");
 533          }
 534      }
 535      function triTableau(a, b) {
 536          //alert("a[" + KeyActuel+"]="+a[KeyActuel]+" <> "+b[KeyActuel]+"=b[" + KeyActuel + "]");
 537          try {
 538              if(a[KeyActuel] > b[KeyActuel]) {
 539                  return 1;
 540              } else if(a[KeyActuel] < b[KeyActuel]) {
 541                  return -1;
 542              } else {
 543                  //alert("a[" + KeyActuel+"]="+a[KeyActuel]+" <> "+b[KeyActuel]+"=b[" + KeyActuel + "]\n" + (typeof ordre[a[nChamps]]) + "\n" + (typeof ordre[b[nChamps]]));
 544                  if ( (typeof ordre[a[nChamps]]) == 'undefined' ) {
 545                      return 0;
 546                  } else {
 547                      if ( (typeof ordre[b[nChamps]]) == 'undefined' ) {
 548                          return 0;
 549                      } else {
 550                          return ordre[a[nChamps]] - ordre[b[nChamps]] ;
 551                      }
 552                  }
 553              }
 554          } catch(e) {
 555              alert("Erreur : triTableau e=" + e + "\n" + e.description);
 556          }
 557  
 558      }
 559      function triRevTableau(a, b) {
 560          try {
 561              if(a[KeyActuel] > b[KeyActuel])    return -1;
 562              if(a[KeyActuel] < b[KeyActuel])    return 1;
 563              return ordre[a[nChamps]] - ordre[b[nChamps]] ;
 564          } catch(e) {
 565              alert("Erreur : triRevTableau e=" + e + "\n" + e.description);
 566          }
 567      }
 568  	function associer(eltsrc, idProfile, idPackage, Associer, redraw) {
 569          var http = null; 
 570          if(window.nav=='firefox') // Firefox 
 571              http = new XMLHttpRequest(); 
 572          else if(window.nav=='ie') // Internet Explorer 
 573              http = new ActiveXObject("Microsoft.XMLHTTP"); 
 574          else { // XMLHttpRequest non supporté par le navigateur 
 575              alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
 576              return false; 
 577          } 
 578          
 579          updateCmdWait ( ++nCmdWait );
 580          
 581          if ( Associer == "Associer" ) {
 582              eltsrc.style.zIndex = 4;
 583              eltsrc.style.backgroundColor = "#6699CC";
 584          } else {
 585              eltsrc.style.zIndex = 3;
 586              eltsrc.style.backgroundColor = "#F0F8FF";
 587          }
 588          eltsrc.style.borderColor = "#FF80A0";
 589          with (documentEnCours.getElementById("idBusy").style) {
 590              cursor = "wait";
 591              zIndex = "10";
 592              height = documentEnCours.body.scrollHeight;
 593              display = "block";
 594          }
 595          
 596          if (redraw) {
 597              //alert("in associer  Appel ChangePageEnCours(" + PageEnCours + ")");
 598              with (documentEnCours.getElementById("idBusy").style) {
 599                  cursor = "default";
 600                  zIndex = "-1";
 601                  height = documentEnCours.body.scrollHeight;
 602                  display = "none";
 603              }
 604          }
 605          //alert("associer(idProfile=" + idProfile + ", idPackage=" + idPackage + ", Associer=" + Associer + ",redraw=" + redraw + "\neltsrc.onclick=" + eltsrc.onclick + ")");
 606          
 607          try {
 608              http.open("GET", "index.php?iCmd=" + iCmd + "&associer=" + Associer + "&idPackage=" + idPackage + "&idProfile=" + idProfile, true); 
 609          //    http.setRequestHeader("Content-Type","text/xml");
 610              try {
 611                  http.onreadystatechange = function(Associer, idPackage, idProfile) { 
 612                      if (http.readyState == 4) {
 613                          var localRedraw = redraw;
 614                          var localPageEnCours = PageEnCours;
 615                          var Appli = idPackage;
 616                          var Parc = idProfile;
 617                          var Operation = Associer;
 618                          var src = eltsrc;
 619                          var NomPackage = idPackage;
 620                          if ( http.status == "200" ) {
 621                              src.style.borderColor = "#8080A0";
 622                              // Mise à jour du doc Xml
 623                              updateCmdWait ( --nCmdWait );
 624                              if (localRedraw && (nCmdWait == 0)) {
 625                                  //alert("in associer  Appel ChangePageEnCours(" + PageEnCours + ")");
 626                                  ChangePageEnCours(localPageEnCours, true);
 627                              }
 628                              //alert("Les données ont été sauvegardées!\nhttp.status=" + http.status + "\n" + http.responseText+ "\nAppli=" + Appli + "\nParc=" + Parc+ "\nOperation=" + Operation +"\nnCmdWait=" + nCmdWait); 
 629                          } else {
 630                              // Refus de la modif => on remet comme c'était
 631                              
 632                              if ( http.status == "403" ) {
 633                                  alert("Vous n'êtes pas autorisé à effectuer cette opération.\n\n" + http.responseText + "\nLa modification demandée a été refusée.\n"); 
 634                              } else {
 635                                  alert("Erreur : Les données n'ont pas été sauvegardées!\nhttp.status=" + http.status + "\n" + http.responseText); 
 636                              }
 637                              //alert("typeof CePackage = " + (typeof CePackage) + "\nsrc.style.zIndex = " + src.style.zIndex + "\nsrc.style.zIndex=" + src.style.zIndex + "\nAppli=" + Appli + "\nParc=" + Parc+ "\nOperation=" + Operation);
 638                              // Rafraichissement de la page
 639                              ChangePageEnCours(localPageEnCours, true);
 640                              updateCmdWait ( --nCmdWait );
 641                          }
 642                          with (documentEnCours.getElementById("idBusy").style) {
 643                              cursor = "default";
 644                              zIndex = "-1";
 645                              //height = documentEnCours.body.scrollHeight;
 646                              height = 1;
 647                              display = "none";
 648                              //height = "0px";
 649                          }
 650                      } else {
 651                          //alert( "http.readyState=" + http.readyState);
 652                      } 
 653                  }
 654                  
 655                  try {
 656                      http.send("");
 657                  
 658                  } catch (e) {
 659                      alert("http.send('')\n" + e);
 660                      return e;
 661                  }
 662              } catch (e) {
 663                  alert("http.onreadystatechange = function()\n" + e);
 664                  return e;
 665              }
 666          } catch (e) {
 667              alert("http.open('POST', 'index.php?....', true)\n" + e);
 668              return e;
 669          }
 670          return        
 671      }
 672      function cursorBusy(busy) {
 673          //alert("busy=" + busy);
 674          if ( busy > 0 ) {
 675              //documentEnCours.body.style.cursor = "wait";
 676              with (documentEnCours.getElementById("idBusy").style) {
 677                  cursor = "wait";
 678                  zIndex = "10";
 679                  height = documentEnCours.body.scrollHeight;
 680                  //display = "none";
 681                  //height = "0px";
 682              }
 683          } else {
 684              //documentEnCours.body.style.cursor = "default";
 685              //documentEnCours.getElementById("idBusy").style.display = "none";
 686              with (documentEnCours.getElementById("idBusy").style) {
 687                  cursor = "pointer";
 688                  zIndex = "-10";
 689                  height = documentEnCours.body.scrollHeight;
 690                  display = "block";
 691                  //height = "0px";
 692              }
 693          }
 694      }
 695      function updateCmdWait (nCmdWait) {
 696          // Indique si les données du serveur sont à jour
 697          if (nCmdWait == 0 ) {
 698              documentEnCours.getElementById("Etat").src = "img/etat_ok.gif";
 699              //ChangePageEnCours(PageEnCours, false);
 700          } else {
 701              documentEnCours.getElementById("Etat").src = "img/etat_transfert.gif";
 702          }
 703          //documentEnCours.getElementById("nCmdWait").innerHTML = nCmdWait;
 704      }
 705  
 706      function ChangePageEnCours(destPage, forceReload) {
 707          var url="AffichePage.php?page=" + destPage;
 708          //alert("In ChangePageEnCours(destPage=" + destPage + ", forceReload=" + forceReload);
 709      //busy++ ;
 710          //documentEnCours.body.style.cursor = "wait";
 711          //documentEnCours.getElementById("transform").innerHTML = "Construction de la page en cours ...";
 712          documentEnCours.getElementById("ImgBusy").style.display = "block";
 713          if (typeof forceReload == "undefined") forceReload = false;
 714          if ( typeof destPage == "undefined" ) destPage = PageEnCours;
 715          PageDestination = destPage;
 716          
 717          var http = null; 
 718          if(window.nav=='firefox') { // Firefox 
 719              http = new XMLHttpRequest(); 
 720              url += "&Navigateur=firefox" + "&stamp=" + Math.round(100000*Math.random( ));
 721          } else if(window.nav=='ie') { // Internet Explorer 
 722              http = new ActiveXObject("Microsoft.XMLHTTP");
 723              url += "&Navigateur=ie" + "&stamp=" + Math.round(100000*Math.random( ));            
 724          } else { // XMLHttpRequest non supporté par le navigateur 
 725              alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
 726              return false; 
 727          }
 728          
 729          switch (destPage) {
 730              case "WindowsUpdate" :
 731                  
 732                  break;
 733              case "PackagesProfiles" :
 734                  url += "&sortPackages=" + sortPackages + "&sortProfiles=" + sortProfiles;
 735                  break;
 736              case "AjoutPackage" : 
 737                  url += "&urlWawadebMD5=" + urlWawadebMD5 + "&urlWawadeb=" + urlWawadeb + "&MAJPackages=" + MAJPackages;
 738                  MAJPackages=0;
 739                  break;
 740              case "AfficheProfile" : 
 741                  url += "&idProfile=" + ProfileEnCours;
 742                  break;
 743              case "AffichePackage" : 
 744                  url += "&idPackage=" + PackageEnCours + "&idProfile=" + ProfileEnCours;
 745                  break;
 746              case "AfficheHost" : 
 747                  url += "&idHost=" + HostEnCours;
 748                  break;
 749          }
 750          
 751          if (destPage != PageEnCours) ordre = undefined;
 752          headTableau='';
 753          window.inChangePageEnCours = true;
 754          with (documentEnCours.getElementById(PageEnCours)) {
 755              src = "img/" + PageEnCours + "0.gif";
 756              with (parentNode) {
 757                  style.zIndex = 1;
 758              }
 759          }
 760          // Requete en mode asynchrone
 761          //alert("In ChangePageEnCours url=" + url); 
 762          http.open("GET", url , true); 
 763          http.onreadystatechange = function() { 
 764              if (http.readyState == 4) {
 765                  if ( http.status != "200" ) {
 766                      alert("http.status = " + http.status + "\n" + http.responseText); 
 767                  } else {
 768                      // alert("http.status = " + http.status + "\n" + http.responseText); 
 769                      documentEnCours.getElementById("transform").innerHTML = http.responseText;
 770                      with (documentEnCours.getElementById(destPage)) {
 771                          src = "img/" + destPage + ".gif";
 772                          with (parentNode) {
 773                              style.zIndex = 2;
 774                          }
 775                      }
 776                      PageEnCours = destPage;
 777                      updateTableau();
 778                      window.inChangePageEnCours = false;
 779                      documentEnCours.getElementById("ImgBusy").style.display = "none";
 780                      with (documentEnCours.getElementById("idBusy").style) {
 781                          cursor = "default";
 782                          zIndex = "-1";
 783                          height = documentEnCours.body.scrollHeight;
 784                          display = "none";
 785                      }
 786                      if ( PageEnCours == 'AfficheHost' ) {
 787                          //alert("typeof initConsoleWpkg = " + typeof initConsoleWpkg + "\nipHost=" + ipHost);
 788                          var idinitConsoleWpkg = document.getElementById('initConsoleWpkg');
 789                          if ( idinitConsoleWpkg != null ) {
 790                              var initConsoleWpkg = idinitConsoleWpkg.innerHTML;
 791                              // initialise la console
 792                              //alert("initConsoleWpkg = " + initConsoleWpkg);
 793                              eval(initConsoleWpkg);
 794                          }
 795                      }
 796                  }
 797              }
 798          }
 799          http.send(null); 
 800      }
 801      function onclickSelectMajAppli(appliIsChk, numero, forumEnCours, autreforumExiste) {
 802          // Mise à jour des checkboxes du tableau pour actualisation OK si un tri est demandé
 803          //alert("appliIsChk=" + appliIsChk + ", numero=" + numero + "\nTableau[numero][0]=" + Tableau[numero][0] + "\n" + Tableau[numero][1]);
 804          //alert("appliIsChk=" + appliIsChk + ", numero=" + numero + "\nforumEnCours=" + forumEnCours + "\nautreforumExiste=" + autreforumExiste);
 805          if (appliIsChk) {
 806              if ( autreforumExiste == 'test' || autreforumExiste == 'stable') {
 807                  alert("Attention : cette application est également disponible en version '" + autreforumExiste + "'\nSoyez sûr que la version que vous installez est bien celle que vous souhaitez");
 808              }
 809              Tableau[numero][0] = Tableau[numero][0].replace('<input ', '<input checked="true" ');
 810              Tableau[numero][1] = true;
 811          } else {
 812              Tableau[numero][0] = Tableau[numero][0].replace('<input checked="true" ', '<input ');
 813              Tableau[numero][1] = false;
 814          }
 815      }
 816      function ChangePageEnCoursFromMenu(destPage) {
 817          //alert("in ChangePageEnCoursFromMenu=" + typeof parent.frames["main"].document);
 818          documentEnCours = parent.frames["main"].document;
 819          with (parent.frames["main"] ) {
 820              ChangePageEnCours(destPage);
 821          }
 822      }
 823      function aurevoir (event) {
 824  
 825          if ( ! nCmdWait == 0 ) {
 826              return "Les données saisies n'ont pas été complètement sauvegardées !\n" +
 827                      "\nVoulez-vous quand même quitter cette page ?\n" ;
 828          }
 829      }
 830      window.onunload = quitter;
 831      window.onresize = scroll;
 832      function quitter (event) {
 833          var TagA, t;
 834          var i, j , k;
 835          //alert("in quitter : typeof parent.frames['menu']=" + typeof parent.frames["menu"]);
 836          if ( (typeof parent.frames["menu"]) != 'undefined' ) {
 837              //remet les liens d'origine dans le menu
 838              TagA = parent.frames["menu"].document.getElementsByTagName("a");
 839              //alert("in quitter : " + typeof(TagA) + " length=" + TagA.length);
 840              for (i = 0; i< TagA.length; i++) {
 841                  t = TagA[i];
 842                  lien = t.getAttribute("href");
 843                  j = lien.indexOf("ChangePageEnCoursFromMenu");
 844                  //alert("typeof lien=" +  typeof lien + ", lien=" + lien);
 845                  if ( j >= 0 ) {
 846                      k = lien.indexOf("');");
 847                      //alert("in quitter, Nouveau lien=\n" + "/wpkg/admin.html?PageEnCours=" + lien.substring(27+j, k) + "\nj=" + j + ", k=" + k);
 848                      if (k > 0) {
 849                          t.setAttribute("href", "/wpkg/admin.html?PageEnCours=" + lien.substring(27+j, k));
 850                      } else {
 851                          alert("quitter : Error lien non conforme :\nlien=" + lien);
 852                      }
 853                  }
 854              }
 855          }
 856      }
 857  
 858      
 859      function scroll() {
 860          //alert("document.readyState=" + document.readyState);
 861          if ( PageEnCours == 'PackagesProfiles' ) {
 862              var idOnglets = documentEnCours.getElementById("Onglets");
 863                  
 864              with (documentEnCours.body) {
 865                  H = (clientHeight)?clientHeight:documentEnCours.documentElement.clientHeight;
 866                  L = (clientWidth)?clientWidth:documentEnCours.documentElement.clientWidth;
 867                  X = (scrollLeft)?scrollLeft:documentEnCours.documentElement.scrollLeft;
 868                  Y = (scrollTop)?scrollTop:documentEnCours.documentElement.scrollTop;
 869              }
 870              var refX = idOnglets.offsetLeft;
 871              var refY = idOnglets.offsetTop + 50;
 872              decalX = X - refX;
 873              decalY = Y - refY;
 874              
 875              
 876              var PosX = documentEnCours.getElementById("PosX");
 877              var PosY = documentEnCours.getElementById("PosY");
 878              var PosXY = documentEnCours.getElementById("PosXY");
 879              var ClipX = documentEnCours.getElementById("ClipX");
 880              var ClipY = documentEnCours.getElementById("ClipY");
 881              var ClipXY = documentEnCours.getElementById("ClipXY");
 882              var ScrollX = documentEnCours.getElementById("ScrollX");
 883              var ScrollY = documentEnCours.getElementById("ScrollY");
 884              var ScrollXY = documentEnCours.getElementById("ScrollXY");
 885              
 886              if ( ScrollY == null ) {
 887                  //alert("setTimeout(scroll();, 500)");
 888                  setTimeout("scroll();", 500);
 889                  return false;
 890              }
 891              
 892              // scroll vertical
 893              if (decalY < 0) decalY = 0;
 894              
 895              Vscroll = ScrollY.offsetHeight;
 896              //alert("Vscroll=" + Vscroll);
 897  /*            alert("In scroll Avant : refX=" + refX + ", refY=" + refY + "\nX=" + X + ", Y=" + Y + ", H=" + H + ",  L=" + L + 
 898                  "\nTdecalY=" + decalY + "\nPosY.style.top=" + PosY.style.top + ", PosX.style.top=" + PosX.style.top + ", ScrollY.style.top=" + ScrollY.style.top);
 899  */            PosY.style.top = (decalY -10) + 'px';
 900              PosX.style.top = (decalY +122)+ 'px';
 901              PosXY.style.top = decalY + 'px';
 902              ScrollY.style.top = -decalY + 'px';
 903              ScrollXY.style.top = -decalY + 'px';
 904              if (Vscroll > decalY) {
 905                  ClipY.style.height = (Vscroll - decalY) +'px';
 906                  ClipXY.style.height = (Vscroll - decalY) +'px';
 907              }
 908      /*
 909              alert("In scroll : refX=" + refX + ", refY=" + refY + "\nX=" + X + ", Y=" + Y + ", H=" + H + ",  L=" + L + 
 910              "\nTdecalY=" + decalY + "\nPosY.style.top=" + PosY.style.top + ", ScrollY.style.top=" + ScrollY.style.top +
 911              "\nPosXY.style.top=" + PosXY.style.top + ", ScrollXY.style.top=" + ScrollXY.style.top );
 912      */
 913              // scroll horizontal
 914              if (decalX < 0) decalX = 0;
 915          
 916              Hscroll = ScrollX.offsetWidth;
 917              //alert("Hscroll=" + Hscroll);
 918              PosX.style.left = decalX + 'px';
 919              PosY.style.left = (decalX + 124) + 'px';
 920              PosXY.style.left = decalX + 'px';
 921              ScrollX.style.left = -decalX + 'px';
 922              ScrollXY.style.left = -decalX + 'px';
 923              if (Hscroll > decalX) {
 924                  ClipX.style.width = (Hscroll - decalX ) +'px';
 925                  ClipXY.style.width = (Hscroll - decalX ) +'px';
 926              }
 927      /*
 928              alert("In scroll : refX=" + refX + ", refY=" + refY + "\nX=" + X + ", Y=" + Y + ", H=" + H + ",  L=" + L + 
 929              "\nTdecalX=" + decalX + "\nPosX.style.left=" + PosX.style.left + ", ScrollX.style.left=" + ScrollX.style.left +
 930              "\nPosXY.style.left=" + PosXY.style.left + ", ScrollXY.style.left=" + ScrollXY.style.left );
 931      */
 932          return true;
 933          }
 934      }
 935  </script>
 936  </head>
 937  <body onload="javascript:FirstLoad(event);" onbeforeunload="return aurevoir(event);" onunload="return quitter(event);" onscroll="scroll();">
 938  <h3 align="right" id="bonjour" style="font-family:Arial,Helvetica,sans-serif;font-size:12px;color:#6699cc;font-weight:bold;letter-spacing:4px;">Bonjour </H3>
 939  <div id="idBusy" onclick="javascript:alert('debug : In idBusy');return false;" class="busy" ></div>
 940  <div id="idDivDebug" style="background-color:#FFA07A;display:none;">
 941      <table>
 942          <tr>
 943              <td><font size="1">Ce bandeau sera supprimé.<br>quand tout sera au point... </font></td>
 944              <td > &nbsp; </td>
 945              <td >Options : </td>
 946              <td>
 947                  <input id="idDebug" name="chkboxDebug"  type="checkbox" value="1" onclick="modeDebug();">Debug 
 948                  <input id="idText" type="checkbox" value="1" onclick="ChangePageEnCours('PackagesProfiles');">Debug Texte (IE seulemt)
 949              </td>
 950          </tr>
 951      </table>
 952      <hr>
 953  </div>
 954  <div id="liensUpdateParcs" style="display:none;">
 955      <a style="font-size:xx-small;" title="A virer dès que la mise à jour sera effectuée dans l'interface de gestion des parcs" href="index.php?updateProfiles=1">Mettre à jour les fichiers hosts.xml et profiles.xml pour prendre en compte les modifications des parcs</a><br>
 956      <a style="font-size:xx-small;" title="A virer dès que la mise à jour sera effectuée dans l'interface de gestion des parcs" href="index.php?updateDroits=1">Mettre à jour le fichier droits.xml pour prendre en compte les modifications de délégation de parcs</a>
 957  </div>
 958  <h1 align="center">Déploiement d'applications <font size="3">( sur Win2000, WinXP, Vista et Win7 )</font></h1>
 959  <div id="Onglets" style="border-bottom:3px solid black;height:37px;width:100%;">
 960      <script type = "text/javascript">
 961          if ( (typeof(lsusInstalled) != "undefined") && lsusInstalled ) {
 962              document.write("<div style='position:absolute;left:690px;z-index:1;cursor:pointer;' onclick='ChangePageEnCours(&#34;WindowsUpdate&#34;);'><img id='WindowsUpdate' alt='Mises à jour Microsoft' src='img/WindowsUpdate0.gif'></div>");
 963          }
 964      </script>
 965      <div style="position:absolute;left:568px;z-index:1;cursor:pointer;" onclick="ChangePageEnCours('AfficheHost');"><img id="AfficheHost" alt="Afficher les données d'un poste" src="img/AfficheHost0.gif"></div>
 966      <div style="position:absolute;left:446px;z-index:1;cursor:pointer;" onclick="ChangePageEnCours('AffichePackage');"><img id="AffichePackage" alt="Afficher les données d'une application" src="img/AffichePackage0.gif"></div>
 967      <div style="position:absolute;left:324px;z-index:1;cursor:pointer;" onclick="ChangePageEnCours('AfficheProfile');"><img id="AfficheProfile" alt="Afficher les données d'un parc" src="img/AfficheProfile0.gif"></div>
 968      <div style="position:absolute;left:202px;z-index:1;cursor:pointer;" onclick="ChangePageEnCours('AjoutPackage');"><img id="AjoutPackage" alt="Ajouter une application" src="img/AjoutPackage0.gif"></div>
 969      <div style="position:absolute;left:80px;z-index:2;cursor:pointer;" onclick="ChangePageEnCours('PackagesProfiles');"><img id="PackagesProfiles" alt="Associer les Applications aux Parcs" src="img/PackagesProfiles.gif"></div>
 970      
 971      <div style="position:absolute;width:35px;left:68px;font-size:xx-small;padding-top:8px;z-index:9;" title="Etat de synchronisation des données sur le serveur">
 972          <img id="Etat" src="img/etat_ok.gif"></img><span> </span><span title="Nombre de requêtes en attente" id="nCmdWait"></span>
 973      </div>
 974      <div id="ImgBusy" style="display:none;position:absolute;width:35px;left:62px;font-size:xx-small;padding-top:2px;z-index:10;" title="Calcul en cours...">
 975          <img src="img/busy.gif"></img>
 976      </div>
 977      <div align="right" id="Debian" style="position:relative;width:100%;height:12px;font-size:xx-small;padding-top:24px;z-index:0;">Version deb</div>
 978  </div>
 979  <br>
 980  <div id="transform" align="left">
 981  </div>
 982  </body>
 983  </html>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1