paquerette Flower Power... | Voila le XSL qui permet a partir de 3 chiffre de genéner les liens de pagination :
<< 1, 2, 3, ... 9, 10, [11], 12, 13, ... 25, 26, 27 >>
à partir de 3 infos : Page courante,
Nombre de page,
Taille de la fenetre glissante (nombre de liens a afficher autour de la page courante, de la premiere et derniere page)
le XSL est constitué de 2 templates (l'une récursive qui boucle sur les n° de page et l'autre qui affiche les liens << >> et appel le template récursif)
Les choses a modifier : La facon dont les liens sont fait.
Dans mon environnement de dev, j'ai besoin de faire des onclick()... donc c'est des onclick...
Et il faut 2 images, changer les liens.
Merci à Mara's dad pour le script original...
Pour ma part, je me suis bien pris la tete pour afficher les '...' une fois.
La template à appeler :
Code :
- <!--
- Affiche une pagination pour une liste du type :
- << 1, 2, 3, ... 9, 10, [11], 12, 13, ... 25, 26, 27 >>
- Paramètres :
- currentPageNb : N° de page courante (dans l'exemple précédent: 11)
- numberOfPage : Nombre de page totale(dans l'exemple précédent: 27)
- windowSize : détermine le nombre de liens à afficher autour de la première, dernière page et de la page courante (dans l'exemple précédent: 3)
- exemple d'appel :
- <xsl:call-template name="ListeTacheFragment_pagination">
- <xsl:with-param name="currentPageNb" select="queue/pageNumber" />
- <xsl:with-param name="numberOfPage" select="queue/numberOfPage" />
- <xsl:with-param name="windowSize" select="3" />
- </xsl:call-template>
- -->
- <xsl:template name="ListeTacheFragment_pagination">
- <xsl:param name="currentPageNb" />
- <xsl:param name="numberOfPage" />
- <xsl:param name="windowSize" />
- <center>
- <table border="0" class="ListeTacheFragment_pagination_table">
- <tr>
- <td class="ListeTacheFragment_pagination_td_prev">
- <xsl:if test="$currentPageNb!='1'">
- <xsl:variable name="previousPage"></xsl:variable>
- <img src="../../theme/images/Evenement/prev.gif"
- onclick="document.getElementById('ListeTacheFragment_pageNb').value={$currentPageNb - 1};document.getElementById('ListeTacheFragment_ACTION').value='EVENEMENT.ListeTacheFragment.navigate';submitPage();"
- alt="Page précédente"
- class="ListeTacheFragment_pagination_prev"
- />
- </xsl:if>
- </td>
- <td class="ListeTacheFragment_pagination_td_nav">
- <xsl:call-template name="ListeTacheFragment_pagination_rec">
- <xsl:with-param name="currentPageNb" select="$currentPageNb " />
- <xsl:with-param name="pageToDisplay" select="1" />
- <xsl:with-param name="numberOfPage" select="$numberOfPage" />
- <xsl:with-param name="windowSize" select="$windowSize" />
- <xsl:with-param name="displayLeftDots" select="false" />
- <xsl:with-param name="displayRightDots" select="false"/>
- </xsl:call-template>
- </td>
- <td class="ListeTacheFragment_pagination_td_next">
- <xsl:if test="$currentPageNb!=$numberOfPage">
- <img src="../../theme/images/Evenement/next.gif"
- onclick="document.getElementById('ListeTacheFragment_pageNb').value={$currentPageNb + 1};document.getElementById('ListeTacheFragment_ACTION').value='EVENEMENT.ListeTacheFragment.navigate';submitPage();"
- alt="Page suivante"
- class="ListeTacheFragment_pagination_next"
- />
- </xsl:if>
- </td>
- </tr>
- </table>
- </center>
- </xsl:template>
|
La template Récursive :
Code :
- <!-- template récursif pour la pagination à ne pas appeler directement -->
- <xsl:template name="ListeTacheFragment_pagination_rec">
- <xsl:param name="currentPageNb" />
- <xsl:param name="pageToDisplay" />
- <xsl:param name="numberOfPage" />
- <xsl:param name="windowSize" />
- <xsl:param name="displayLeftDots" />
- <xsl:param name="displayRightDots"/>
- <xsl:variable name="displayCondition"><xsl:value-of select="$pageToDisplay < $windowSize or $pageToDisplay > $currentPageNb - $windowSize and $pageToDisplay < $currentPageNb+$windowSize or $pageToDisplay > $numberOfPage - ($windowSize - 1)"/></xsl:variable>
- <!--debug
- <div style="border:1px solid red;color:black;">
- currentPage :<xsl:value-of select="$currentPageNb" /><br/>
- pageToDisplay :<xsl:value-of select="$pageToDisplay" /><br/>
- numberOfPage :<xsl:value-of select="$numberOfPage" /><br/>
- windowSize :<xsl:value-of select="$windowSize" /><br/>
- displayCondition :<xsl:value-of select="$displayCondition" /><br/>
- displayLeftDots :<xsl:value-of select="$displayLeftDots" /><br/>
- displayRightDots :<xsl:value-of select="$displayRightDots" /><br/>
- </div>
- -->
- <!-- Affiche le numéro de page en lien si ce n'est pas la page courante -->
- <xsl:if test="$displayCondition='true'">
- <xsl:if test="$pageToDisplay = $currentPageNb">
- <span class="ListeTacheFragment_pagination_selected">
- <xsl:value-of select="$pageToDisplay"/>
- </span>
- <xsl:if test="$pageToDisplay != $numberOfPage">
- <b>,</b>
- </xsl:if>
- </xsl:if>
- <xsl:if test="not($pageToDisplay = $currentPageNb)">
- <a class="ListeTacheFragment_pagination">
- <xsl:attribute name="onClick">document.getElementById('ListeTacheFragment_pageNb').value=<xsl:value-of select="$pageToDisplay"/>;document.getElementById('ListeTacheFragment_ACTION').value='EVENEMENT.ListeTacheFragment.navigate';submitPage();</xsl:attribute>
- <xsl:value-of select="$pageToDisplay"/>
-
- <xsl:if test="$pageToDisplay != $numberOfPage">
- <b>,</b>
- </xsl:if>
-
- </a>
- </xsl:if>
- </xsl:if>
- <!-- Détermine s'il faut afficher les '...' (on est dans du récursif et il faut n'afficher les ... qu'une seule fois) -->
- <xsl:variable name="leftDotsOn" ><xsl:if test="$displayCondition='false'"><xsl:if test="$pageToDisplay < $currentPageNb"><xsl:value-of select="not($displayLeftDots='false')" /></xsl:if><xsl:if test="not($pageToDisplay < $currentPageNb)">false</xsl:if></xsl:if><xsl:if test="$displayCondition='true'">false</xsl:if></xsl:variable>
- <xsl:variable name="rightDotsOn" ><xsl:if test="$displayCondition='false'"><xsl:if test="$pageToDisplay > $currentPageNb"><xsl:value-of select="not($displayRightDots='false')"/></xsl:if><xsl:if test="not($pageToDisplay > $currentPageNb)">false</xsl:if></xsl:if><xsl:if test="$displayCondition='true'">false</xsl:if></xsl:variable>
- <!-- debug
- <div style="border:1px solid blue;color:black;">
- leftDotsOn :'<xsl:value-of select="$leftDotsOn" />'<br/>
- rightDotsOn :'<xsl:value-of select="$rightDotsOn" />'<br/>
- displayLeftDots :'<xsl:value-of select="$displayLeftDots" />'<br/>
- displayRightDots :'<xsl:value-of select="$displayRightDots" />'<br/>
- nextParamLeft :'<xsl:value-of select="$displayLeftDots='true' or $leftDotsOn='true'" />'<br/>
- nextParamRight :'<xsl:value-of select="$displayRightDots='true' or $rightDotsOn='true'"/>'<br/>
- </div>
- -->
- <xsl:if test="$leftDotsOn='true' or $rightDotsOn='true'">
- <span class="ListeTacheFragment_pagination_dots">...</span>
- </xsl:if>
- <!-- appel de la page suivante-->
- <xsl:if test="$pageToDisplay < $numberOfPage">
- <xsl:call-template name="ListeTacheFragment_pagination_rec">
- <xsl:with-param name="currentPageNb" select="$currentPageNb " />
- <xsl:with-param name="pageToDisplay" select="$pageToDisplay + 1" />
- <xsl:with-param name="numberOfPage" select="$numberOfPage" />
- <xsl:with-param name="windowSize" select="$windowSize" />
-
- <xsl:with-param name="displayLeftDots" select="$displayLeftDots='true' or $leftDotsOn='true'" />
- <xsl:with-param name="displayRightDots" select="$displayRightDots='true' or $rightDotsOn='true'"/>
-
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
|
CSS :
Code :
- .ListeTacheFragment_pagination {cursor: pointer;margin-left:3px;font-size: 15px;font-family: Verdana;}
- .ListeTacheFragment_pagination_selected {margin-left:3px;font-size: 15px;font-family:Verdana;font-weight:bold;color:blue;}
- .ListeTacheFragment_pagination:hover {color: red;}
- .ListeTacheFragment_pagination_dots {margin-left:10px; margin-right:10px;font-size:30px;font-weight:bolder;}
- #ListeTacheFragment_pagination_row td {height:36px;padding:2px;text-align:center;}
- .ListeTacheFragment_pagination_prev {cursor: pointer;margin-right:10px;}
- .ListeTacheFragment_pagination_next {cursor: pointer;margin-left:10px;}
- .ListeTacheFragment_pagination_td_prev {}
- .ListeTacheFragment_pagination_td_nav {height:34px;vertical-align:middle;}
- .ListeTacheFragment_pagination_td_next {}
- .ListeTacheFragment_link {cursor: pointer;}
|
Message édité par paquerette le 28-01-2005 à 17:11:42
|