[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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=="ascending")?"descending":"ascending";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, ' -> ', $idProfile)"/> 163 </xsl:attribute> 164 <xsl:choose> 165 <xsl:when test="$canWrite"> 166 <xsl:attribute name="onclick"> 167 <xsl:text>PP(event,"</xsl:text><xsl:value-of select="$idCase" /><xsl:text>");</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=="ascending")?"descending":"ascending";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("',$idProfile,'")')" /> 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 "', $idProfile, '" 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("',$idProfile,'")')" /> 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("',$idProfile,'")')" /> 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("',$idPackage,'")')" /> 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>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |