developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.
#340 closed enhancement (fixed)
Amélioration du plugin de template Pagelinks
Reported by: | xian | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | Jelix 1.0 RC1 |
Component: | jelix:tpl | Version: | 1.0 beta 3.1 |
Severity: | normal | Keywords: | pagination, pagelinks, plugin, template |
Cc: | Blocked By: | ||
Blocking: | Documentation needed: | ||
Hosting Provider: | Php version: |
Description
Je propose une amélioration pour le plugin Pagelinks, avec l'ajout des fonctionnalités suivantes :
- Affichage de liens (optionnels) vers la première page de résultats disponible, la page de résultats précédente, la page de résultats suivante et la dernière page de résultats disponible.
- Les intitulés des liens sont paramétrables directement à partir du fichier de template.
- Le nombre de liens à afficher avant et après la page courante est paramétrable (par défaut tous les liens sont affichés).
- Des classes CSS (pagelinks, pagelinks-start, pagelinks-prev, pagelinks-next et pagelinks-end) vous permettent de mettre en forme les liens comme bon vous semble.
- Le plugin fonctionne de base sans qu'il y ait besoin de modifier les appels existants dans les templates de vos applis. Par contre pour un autre comportement que le comportement prévu par défaut, il faudra modifier les appels dans vos templates.
Attachments (2)
Change History (19)
comment:1 Changed 13 years ago by xian
- Milestone set to Jelix 1.0 RC1
comment:2 follow-up: ↓ 3 Changed 13 years ago by laurentj
- Component changed from jelix to jelix:tpl
comment:3 in reply to: ↑ 2 Changed 13 years ago by xian
Replying to laurentj:
- je pense qu'il est préférable de tester si les labels sont vides plutôt que de les comparer à la valeur "none".
En fait, y'a trois cas :
- soit un label est renseigné, auquel cas on l'affiche,
- soit un label est vide, et alors on affiche le libellé prévus par défaut,
- soit un label est positionné à "none" et dans ce cas on ne l'affiche pas du tout.
donc vide et none sont deux cas de figure différents.
comment:4 Changed 13 years ago by laurentj
Et si on veut mettre le nom "none" ?
plus sérieusement, je n'aime pas trop quand il y a des valeurs fixes représentant des cas exceptionnelle. Ça peut toujours être source de problème pour l'utilisateur, qui peut ne pas comprendre pourquoi quand il met telle valeur ça ne fonctionne pas comme il espère.
Je préfère donc ceci :
- si le développeur veut mettre la valeur par défaut : il n'indique tout simplement pas de valeur dans le tableau qu'il passe en paramètre. Il faudra donc faire un isset pour tester si il faut mettre la valeur par défaut ou non.
- si le développeur ne veut pas pas afficher le lien, il mettra une valeur vide
- et sinon il met la valeur qu'il veut.
comment:5 follow-up: ↓ 6 Changed 13 years ago by laurentj
Autre chose : faut-il vraiment mettre les liens dans une liste HTML ? Ce n'est pas forcément plus sémantique, et c'est plus embêtant à styler, puisque la plupart du temps, on les préfère aligné à l'horizontal. Ce qui veut dire qu'on devra mettre la plupart du temps des display:inline, ce qui est assez délicat sous IE à utiliser.
Je mettrais donc plutôt ces liens dans une div, et les labels qui n'ont pas de liens dans un span. Les liens ayant la même classe que le <li> correspondant dans ta version. L'autre avantage, c'est que ça ne cassera pas le design de ceux qui utilisent déjà pagelinks, comme les templates par défaut de jControllerDaoCrud ;-)
comment:6 in reply to: ↑ 5 Changed 13 years ago by xian
Je dois t'avouer que je trouve la solution de la liste html malgré tout plus sémantique qu'un simple enchaînement de liens : car il s'agit bien avant tout d'une LISTE de liens, non ? ;-)
Après je suis d'accord, si on utilise une liste, il faut que ceux qui utilise déjà le plugin ajoutent le stylage CSS pour gérer l'affichage horizontal de la liste.
Question : mais ne vaut-il mieux pas profiter du fait que Jelix est encore en beta pour le faire et avoir ainsi un truc bien carré pour la version 1 officielle ?
Enfin, c'est toi qui décide, si tu préfères néanmoins garder la solution que tu m'as indiquée au dessus, dis moi, et je me mets au travail sur les modifs illico ;-)
comment:7 follow-up: ↓ 8 Changed 13 years ago by laurentj
Après demande d'avis sur le channel irc #jelix, la conclusion est que c'est mieux de garder le ul :-)
J'attend donc ton nouveau patch incluant les autres modifs...
Changed 13 years ago by xian
Fichier diff contenant les modifcations effectuées sur le plugin pagelinks
comment:8 in reply to: ↑ 7 Changed 13 years ago by xian
Voilà je viens de poster le patch + la doc avec les modifications demandées.
J'ai également ajouté un petit test supplémentaire qui évite l'affichage des liens dans le cas où il y a moins de deux pages de résultats.
comment:9 follow-up: ↓ 10 Changed 13 years ago by laurentj
- Resolution set to fixed
- Status changed from new to closed
Patch ok :-) J'ai rajouté une classe pagelinks-disabled sur les items désactivés, ça permet de les styler plus facilement.
Patch inclus dans le trunk. Merci pour le patch !
comment:10 in reply to: ↑ 9 Changed 13 years ago by xian
De rien, je suis enchanté de pouvoir apporter une pierre à l'édifice Jelix. Merci à toi de nous permettre de contribuer...
Juste pour faire mon chieur ;-) et revenir à la classe pagelinks-disabled : es-tu certain que cela soit vraiment nécessaire ?
En effet pour styler les items désactivés il suffit simplement de styler les balises "li". Et ensuite on style les autres items (premier, précédent, courant, suivant et dernier) à l'aide de leurs classes respectives.
J'ai donc peur que le class="pagelinks-disabled" sur chaque balise li inactive (les plus nombreuses à priori) ne fasse qu'alourdir le xhtml généré (et donc les performances), sans apporter de réel bénéfice au niveau des possibilités de stylage.
Qu'en penses-tu ?
comment:11 follow-up: ↓ 12 Changed 13 years ago by laurentj
les plus nombreuses à priori
Je ne suis pas trop d'accord avec toi. À priori, les seules li inactives sont les extremités. Donc y a pas tant de disabled que ça sur une liste de liens.
sans apporter de réel bénéfice au niveau des possibilités de stylage.
Si, c'est plus simple pour celui qui ne maitrise pas toutes les subtilités de CSS ;-)
comment:12 in reply to: ↑ 11 ; follow-up: ↓ 13 Changed 13 years ago by xian
Je ne suis pas trop d'accord avec toi. À priori, les seules li inactives sont les extremités. Donc y a pas tant de disabled que ça sur une liste de liens.
oui exact, tu as raison en fait ;-)
comment:13 in reply to: ↑ 12 Changed 13 years ago by xian
Question : pour la mise en ligne de la documentation du plugin, on attends que Jelix v1.0 soit sortie ?
comment:14 Changed 13 years ago by laurentj
Non, tu l'intègre dans le wiki à l'emplacement adéquate, en précisant les choses qui sont spécifiques à 1.0 http://jelix.org/articles/references/tplplugins
comment:15 Changed 13 years ago by bballizlife
J'arrive un peu tard dans la discussion de ce plugin mais j'ai cependant deux remarques à faire concernant les paramètres demandés par celui-ci : nombre total de résultats, résultat courant et nombre de résultat par page.
- Les paramètres cités ci-dessus ne pourraient-ils pas être embarqués dans un objet jPageCounter pour diminuer le nombre de paramètres à passer au plugin et pour déporter une partie de sa logique (et pour pouvoir s'en servir ailleurs si besoin) ? (cf l'énoncé du ticket #261).
- C'est peut-être une préférence de ma part mais je ne suis pas fan d'utiliser directement l'offset de la requête SQL comme paramètre. A celui-ci je préfère largement un numéro de page, c'est bien plus cohérent il me semble (et pourrait être traité par jPageCounter justement).
comment:16 Changed 13 years ago by laurentj
@bballizlife :
Pour ton point 1 : rien n'empechera à fournir un autre plugin qui fonctionnerait sur le principe dont tu parles.
Pour le point 2 : d'une part, la version initiale de ce plugin fonctionnait avec des indexes sur une liste d'enregistrement, autant donc continuer comme ça pour ne pas trop casser l'ancien fonctionnement. D'autre part, fonctionner sur des vrais numéros de pages, implique dans l'action qui affiche la liste, de calculer soi même l'offset qui correspond au numéro de page (puisqu'on n'a pas encore de jPageCounter). Donc c'est moins facile pour le développeur. (et chiant pour être honnête).
Ceux qui voudront des vrais numéros de page, utiliseront le future autre plugin avec la future classe jPageCounter &cie ;-)
comment:17 Changed 13 years ago by bballizlife
Dans ce cas, ok, pas de souci ! :)
patch presque ok :
Il est préférable de faire un test if classique, afin que cela soit plus lisible. Et ne faire qu'un test :
Faire de même pour les autres liens.
Note aussi que pour les instructions echo, il est plus performant de séparer les differentes choses à afficher avec une virgule, plutôt que de les concatener.
Enfin, vu que l'on utilise plusieurs fois jUrl::getEngine(), peut être vaut mieux mettre son résultat dans une variable et de faire appel à cette variable.