[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-wpkg/sources/www/ -> PackagesProfiles.xsl (source)

   1  <?xml version="1.0" encoding="iso-8859-1"?>
   2  <!--  Création du tableau Packages, Profiles pour indiquer les associations 
   3          S'applique à wpkg.xml
   4          
   5      ## $Id: PackagesProfiles.xsl 3106 2008-07-14 13:45:37Z jlebail $ ##
   6  -->
   7  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   8      <xsl:output method="html" encoding="utf-8" />
   9      <xsl:param name="login" select="''" />
  10      <xsl:param name="Navigateur" ><xsl:text>inconnu</xsl:text></xsl:param>
  11      <xsl:param name="Debug" select="false()" />
  12      <xsl:param name="Local" select="false()" />
  13      <xsl:param name="sortPackages" select="'ascending'" />
  14      <xsl:param name="sortProfiles" select="'ascending'" />
  15      
  16      <xsl:key name="PackageFromId" match="/wpkg/packages/package" use="@id" />
  17      <xsl:key name="ProfileFromId" match="/wpkg/profiles/profile" use="@id" />
  18      <xsl:key name="ProfilePackage" match="/wpkg/profiles/profile/package" use="concat(../@id, ':', @package-id)" />
  19      
  20      <xsl:variable name="PROFILES" select="/wpkg/profiles"/>
  21      <xsl:variable name="PACKAGES" select="/wpkg/packages"/>
  22      <xsl:variable name="HOSTS" select="/wpkg/hosts"/>
  23      
  24      <xsl:variable name="ListProfilesCanRead" select="$PROFILES/profile[not(depends/@profile-id = '_TousLesPostes')]"/>
  25      <xsl:variable name="TousLesParc" select="key('ProfileFromId', '_TousLesPostes') | $ListProfilesCanRead"/>
  26      <xsl:variable name="ListProfilesCanWrite" select="$ListProfilesCanRead[@canWrite = '1']"/>
  27      
  28      <xsl:variable name="nbHosts">
  29          <xsl:value-of select="count($HOSTS/host)"/>
  30      </xsl:variable>
  31      <xsl:variable name="nbProfiles">
  32          <xsl:value-of select="count($ListProfilesCanRead)"/>
  33      </xsl:variable>
  34      <xsl:variable name="nbPackages">
  35          <xsl:value-of select="count($PACKAGES/package)"/>
  36      </xsl:variable>
  37      
  38      <xsl:variable name="HLigneTitre" select="'120'"/> <!-- Hauteur de la ligne de Titre (packages) -->
  39      <xsl:variable name="LColTitre" select="'120'"/>   <!-- Largeur de la colonne de Titre (profiles) -->
  40      <xsl:variable name="Lcase" select="'24'"/>  <!-- Largeur d'une case du tableau -->
  41      <xsl:variable name="Hcase" select="'24'"/>  <!-- Hauteur d'une case du tableau -->
  42      <xsl:variable name="LTable">  <!-- Largeur du tableau (cases)-->
  43          <xsl:choose >
  44              <xsl:when test = "$Navigateur = 'ie'" >
  45                  <xsl:value-of select="$nbProfiles * $Lcase" />
  46              </xsl:when> 
  47              <xsl:otherwise>
  48                  <xsl:value-of select="($nbProfiles + 5) * $Lcase" />
  49              </xsl:otherwise>
  50          </xsl:choose >
  51      </xsl:variable>
  52      <xsl:variable name="HTable" select="$nbPackages * $Hcase" />  <!-- Hauteur du tableau (cases)-->
  53      
  54      <xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
  55      <xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
  56      
  57      <xsl:template match="/">
  58          <xsl:if test="$Debug">
  59              <pre>
  60                  login=<xsl:value-of select="$login" />
  61                  Debug=<xsl:value-of select="$Debug" />
  62                  nbHosts=<xsl:value-of select="$nbHosts" />
  63                  nbProfiles=<xsl:value-of select="$nbProfiles" />
  64                  nbPackages=<xsl:value-of select="$nbPackages" />
  65                  nbProfilesCanRead=<xsl:value-of select="$nbProfiles" />
  66                  nbProfilesCanWrite=<xsl:value-of select="count($ListProfilesCanWrite)" />
  67  
  68              </pre>
  69          </xsl:if>
  70          <div style="position:relative;left:0px;top:0px;width:{$HLigneTitre + $LTable}px;height:{$LColTitre + $HTable}px;z-index:0;">
  71              <!-- Affiche la 1ère ligne (Titres des colonnes = Profiles) -->
  72              <xsl:call-template name="TitresProfiles" />
  73              <!-- div contenant la 1ère colonne (liste des id de package) -->
  74              <div id="PosX" style="position:absolute;left:0px;top:{$HLigneTitre}px;">
  75                  <div id="ClipY" style="overflow: hidden;position:absolute;top:0px;left:0px;width:{$LColTitre + 5}px;height:{($nbPackages)*$Hcase}px;">
  76                      <div id="ScrollY" style="position:absolute;top:0px;left:0px;width:{$LColTitre + 5}px;height:{($nbPackages)*$Hcase}px;">
  77                          <xsl:for-each select="$PACKAGES/package">
  78                              <xsl:sort select="translate(@id, $ucletters, $lcletters)" order="{$sortPackages}" />
  79                              <xsl:variable name="iPack" select="position()"/>
  80                              <xsl:call-template name="caseTitrePackage">
  81                                  <xsl:with-param name="idPackage" select="@id" />
  82                                  <xsl:with-param name="iPackage" select="$iPack" />
  83                              </xsl:call-template>
  84                          </xsl:for-each>
  85                      </div>
  86                  </div>
  87                  <!-- Bouton de tri des applis -->
  88                  <input value=" Tri " title="Trier les applications." type="button" 
  89                          onclick="sortPackages=(sortPackages==&quot;ascending&quot;)?&quot;descending&quot;:&quot;ascending&quot;;ChangePageEnCours('PackagesProfiles', true);setTimeout('scroll();', 400);"
  90                          style="position:absolute;top:-25px;left:10px;font-size:xx-small;cursor:pointer;">
  91                  </input>
  92              </div>
  93              
  94              <!-- Affichage des cases cochées ou non selon l'affectation -->
  95              <!-- div contenant toutes les cases ( associations ) -->
  96              <div style="position:absolute;left:{$LColTitre+5}px;top:{$HLigneTitre+1}px;border:none;height:{$HTable}px;width:{$LTable}px;">
  97                  <div id="PosXY" style="position:absolute;top:0px;left:0px;">
  98                      <div id="ClipXY" style="overflow: hidden;position:absolute;top:0px;left:0px;height:{$HTable}px;width:{$LTable}px;">
  99                          <div id="ScrollXY" style="position:absolute;top:0px;left:0px;">
 100                              <xsl:for-each select="$TousLesParc">
 101                                  <xsl:sort select="translate(@id, $ucletters, $lcletters)" order="{$sortProfiles}" />
 102                                  <!-- seuls les profiles ne dépendant pas de 'TousLesPostes' sont affichés.
 103                                          En clair : seuls les parcs sont indiqués ( les profils des postes sont masqués ) -->
 104                                  <xsl:call-template name="PackagesDeCeProfile">
 105                                      <xsl:with-param name="idProfile" select="@id" />
 106                                      <xsl:with-param name="iProfile" select="position()" />
 107                                  </xsl:call-template>
 108                              </xsl:for-each>
 109                          </div>
 110                      </div>
 111                  </div>
 112              </div>
 113          </div>
 114      </xsl:template>
 115      
 116      <xsl:template name="PackagesDeCeProfile">
 117          <!-- Affiche les cases cochées ou non pour les Packages activés de ce profile -->
 118          <xsl:param name="idProfile" />
 119          <xsl:param name="iProfile" />
 120          <xsl:variable name="ProfileEnCours" select="key('ProfileFromId', $idProfile)"/>
 121          <xsl:variable name="canWrite" select="$ProfileEnCours/@canWrite"/>
 122          <xsl:for-each select="$PACKAGES/package">
 123              <xsl:sort select="translate(@id, $ucletters, $lcletters)" order="{$sortPackages}" />
 124              <xsl:variable name="idPackage" select="@id"/>
 125              <xsl:variable name="iPackage" select="position()"/>
 126              <!-- Protection de ', remplacé par ¤ -->
 127              <xsl:variable name="idCase" select="concat($idProfile, ':', $idPackage)"/>
 128              <!--  Affiche une case qui indique l'état activé ou non de cette appli pour ce profil -->
 129              <xsl:element name="div">
 130                  <xsl:attribute name="class">
 131                      <xsl:choose>
 132                          <xsl:when test="$canWrite">
 133                              <xsl:text>CasePackageProfile</xsl:text>
 134                          </xsl:when>
 135                          <xsl:otherwise>
 136                              <xsl:text>CasePackageProfileReadOnly</xsl:text>
 137                          </xsl:otherwise>
 138                      </xsl:choose>
 139                  </xsl:attribute>
 140                  <xsl:attribute name="style">
 141                      <xsl:text>
 142                          /* background-color:#F0F8FF; */
 143                          </xsl:text>
 144                              <!-- A remplacer par des images ou icônes -->
 145                              <xsl:choose>
 146                                  <xsl:when test="key('ProfilePackage', $idCase)">
 147                                      <!-- installer -->
 148                                      <xsl:text>background-color:#6699CC;z-index:4;</xsl:text>
 149                                  </xsl:when>
 150                                  <xsl:otherwise>
 151                                      <!-- NE PAS installer -->
 152                                      <xsl:text>background-color:#F0F8FF;z-index:3;</xsl:text>
 153                                  </xsl:otherwise>
 154                              </xsl:choose>
 155                          <xsl:text>
 156                          top:</xsl:text><xsl:value-of select="($iPackage - 1) * $Hcase + 2" /><xsl:text>px;
 157                          left:</xsl:text><xsl:value-of select="($iProfile - 1) * $Lcase + 2" /><xsl:text>px;
 158                      </xsl:text>
 159                  </xsl:attribute>
 160                  <xsl:attribute name="align"><xsl:text>center</xsl:text></xsl:attribute>
 161                  <xsl:attribute name="title">
 162                      <xsl:value-of select="concat($idPackage, ' -&gt; ', $idProfile)"/>
 163                  </xsl:attribute>
 164                  <xsl:choose>
 165                      <xsl:when test="$canWrite">
 166                          <xsl:attribute name="onclick">
 167                              <xsl:text>PP(event,&quot;</xsl:text><xsl:value-of select="$idCase" /><xsl:text>&quot;);</xsl:text>
 168                          </xsl:attribute>
 169                      </xsl:when>
 170                      <xsl:otherwise>
 171                          <xsl:text>x</xsl:text>
 172                      </xsl:otherwise>
 173                  </xsl:choose>
 174              </xsl:element>
 175          </xsl:for-each>
 176      </xsl:template>
 177      
 178      <xsl:template name="TitresProfiles">
 179          <!-- Ligne Titre des lignes (Nom des profiles) -->
 180          <!-- div contenant la 1ère ligne Titres (liste des id de profiles) -->
 181          <div id="PosY" style="position:absolute;left:{$LColTitre + 4}px;top:-10px;height:{$HLigneTitre + 10}px;z-index:2;">
 182              <!-- div 'Liste des parcs' à décaler verticalement à chaque scroll pour qu'il soit toujours visible -->
 183              <div id="ClipX" style="overflow: hidden;position:absolute;top:0px;left:0px;width:{$LTable}px;height:{$HLigneTitre + 10}px;">
 184                  <div id="ScrollX" style="position:relative;top:0px;left:0px;width:{$LTable}px;height:{$HLigneTitre + 10}px;">
 185                      <xsl:for-each select="$TousLesParc">
 186                          <xsl:sort select="translate(@id, $ucletters, $lcletters)" order="{$sortProfiles}" />
 187                          <!-- seuls les profiles ne dépendant pas de '_TousLesPostes' sont affichés.
 188                                      En clair : seuls les parcs sont indiqués ( les profils des postes sont masqués ) -->
 189                          <xsl:choose >
 190                              <xsl:when test = "$Navigateur='ie'" >
 191                                  <xsl:call-template name="CaseTitreProfileIE">
 192                                      <xsl:with-param name="iPack" select="position()" />
 193                                      <xsl:with-param name="idProfile" select="@id" />
 194                                  </xsl:call-template>
 195                              </xsl:when> 
 196                              <xsl:otherwise>
 197                                  <xsl:call-template name="CaseTitreProfileFireFox">
 198                                      <xsl:with-param name="iPack" select="position()" />
 199                                      <xsl:with-param name="idProfile" select="@id" />
 200                                  </xsl:call-template>
 201                              </xsl:otherwise>
 202                          </xsl:choose >
 203                      </xsl:for-each>
 204                  </div>
 205              </div>
 206              <!-- Bouton de tri des parcs -->
 207              <input value=" Tri " title="Trier les parcs." type="button" 
 208                      onclick="sortProfiles=(sortProfiles==&quot;ascending&quot;)?&quot;descending&quot;:&quot;ascending&quot;;ChangePageEnCours('PackagesProfiles', true);setTimeout('scroll();', 400);"
 209                      style="position:absolute;top:10px;left:-40px;font-size:xx-small;cursor:pointer;">
 210              </input>
 211              <!-- img src="img/wpkg.png" style="position:absolute;top:25px;left:-145px;font-size:xx-small;" / -->
 212          </div>
 213      </xsl:template>
 214      
 215      <xsl:template name="CaseTitreProfileFireFox">
 216          <!-- Affiche un Titre d'une colonne (Profile) pour FireFox -->
 217          <xsl:param name="iPack" />
 218          <xsl:param name="idProfile" />
 219          <!-- Je ne sais pas afficher du texte vertical avec firefox donc j'ai fait un truc un peu compliqué :
 220                       Affichage en escalier sur 4 Id -->
 221          <xsl:element name="div">
 222              <!-- div VerticalGauche -->
 223              <xsl:attribute name="class"><xsl:text>CaseTitreProfileFireFox</xsl:text></xsl:attribute>
 224              <xsl:attribute name="style">
 225                  <xsl:text>
 226                      left:</xsl:text><xsl:value-of select="($iPack - 1) * $Lcase + 3" /><xsl:text>px;
 227                      width:4px;
 228                      z-index:</xsl:text><xsl:value-of select="(($iPack -1) mod 5)" /><xsl:text>;
 229                      top:</xsl:text><xsl:value-of select="((($iPack + 4) mod 5) * ($HLigneTitre div 4.8)) " /><xsl:text>px;
 230                      height:</xsl:text><xsl:value-of select="($HLigneTitre - 8) - ((($iPack + 4) mod 5) * ($HLigneTitre div 4.8)) + 10" /><xsl:text>;
 231                  </xsl:text>
 232              </xsl:attribute>
 233              <xsl:attribute name="onclick">
 234                  <xsl:value-of select="concat('defProfile(&quot;',$idProfile,'&quot;)')" />
 235              </xsl:attribute>
 236          </xsl:element>
 237          <xsl:element name="div">
 238              <!-- div HorizontalHaut (contient le nom du profile) -->
 239              <xsl:attribute name="class"><xsl:text>CaseTitreProfileFirefox</xsl:text></xsl:attribute>
 240              <xsl:attribute name="style">
 241                  <xsl:text>
 242                      left:</xsl:text><xsl:value-of select="($iPack - 1) * $Lcase + 3" /><xsl:text>px;
 243                      z-index:</xsl:text><xsl:value-of select="(($iPack -1) mod 5)" /><xsl:text>;
 244                      top:</xsl:text><xsl:value-of select="((($iPack + 4) mod 5) * ($HLigneTitre div 4.8))" /><xsl:text>px;
 245                      height:</xsl:text><xsl:value-of select="$Hcase - 9" /><xsl:text>;
 246                      width:auto;
 247                  </xsl:text>
 248              </xsl:attribute>
 249              <!-- <xsl:attribute name="align"><xsl:text>left</xsl:text></xsl:attribute> -->
 250              <xsl:attribute name="id"><xsl:value-of select="$idProfile" /></xsl:attribute>
 251              <xsl:attribute name="title">
 252                  <xsl:value-of select="concat('Le parc &quot;', $idProfile, '&quot; contient ', count($PROFILES/profile/depends[@profile-id = $idProfile]), ' poste(s)')"/>
 253              </xsl:attribute>
 254              <xsl:attribute name="onclick">
 255                  <xsl:value-of select="concat('defProfile(&quot;',$idProfile,'&quot;)')" />
 256              </xsl:attribute>
 257          
 258              <xsl:value-of select="$idProfile"/>
 259              
 260          </xsl:element>
 261          
 262      </xsl:template>
 263  
 264      <xsl:template name="CaseTitreProfileIE">
 265          <!-- Affiche un Titre d'une colonne (profile) pour IE -->
 266          <xsl:param name="iPack" />
 267          <xsl:param name="idProfile" />
 268          <xsl:element name="div">
 269              <xsl:attribute name="class"><xsl:text>CaseTitreProfileIE</xsl:text></xsl:attribute>
 270              <xsl:attribute name="style">
 271                  <xsl:text>
 272                      left:</xsl:text><xsl:value-of select="($iPack - 1) * $Lcase" /><xsl:text>px;
 273                  </xsl:text>
 274                  <xsl:text>
 275                      writing-mode : tb-rl;
 276                      filter: flipH() flipV();
 277                      top:0px;
 278                  </xsl:text> 
 279              </xsl:attribute>
 280              <xsl:attribute name="align"><xsl:text>left</xsl:text></xsl:attribute>
 281              <xsl:attribute name="id"><xsl:value-of select="$idProfile" /></xsl:attribute>
 282              <xsl:attribute name="title">
 283                  <xsl:value-of select="concat('Contient ', count(../profile/depends[@profile-id = $idProfile]), ' poste(s)')"/>
 284              </xsl:attribute>
 285              <xsl:attribute name="onclick">
 286                  <xsl:value-of select="concat('defProfile(&quot;',$idProfile,'&quot;)')" />
 287              </xsl:attribute>
 288              <xsl:value-of select="$idProfile"/>
 289          </xsl:element>
 290          
 291      </xsl:template>
 292  
 293      <xsl:template name="caseTitrePackage">
 294          <!-- Affiche un Titre de package dans la 1ère colonne -->
 295          <xsl:param name="iPackage" />
 296          <xsl:param name="idPackage" />
 297          <xsl:element name="div">
 298              <xsl:attribute name="id"><xsl:value-of select="$idPackage"/></xsl:attribute>
 299              <xsl:attribute name="class">
 300                  <xsl:text>caseTitrePackage</xsl:text>
 301              </xsl:attribute>
 302              <xsl:attribute name="style"><xsl:text>
 303                  top:</xsl:text><xsl:value-of select="($iPackage - 1) * $Hcase " /><xsl:text>px;
 304                  width:</xsl:text><xsl:value-of select="$LColTitre - 2" /><xsl:text>px;
 305                  </xsl:text>
 306              </xsl:attribute>
 307              <xsl:attribute name="onclick">
 308                  <xsl:value-of select="concat('defPackage(&quot;',$idPackage,'&quot;)')" />
 309              </xsl:attribute>
 310              <xsl:attribute name="align"><xsl:text>right</xsl:text></xsl:attribute>
 311              <xsl:attribute name="title">
 312                  <xsl:value-of select="concat(@name, ' (Rev:', @revision,')')" />
 313              </xsl:attribute>
 314              <xsl:value-of select="$idPackage" />
 315          </xsl:element>
 316      </xsl:template>
 317  
 318  </xsl:stylesheet>


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