Spip-contrib ayant un grand nombre d'auteurs, la page http://www.spip-contrib.net/ecrire/auteurs.php3?tri=nom&debut=180 permet de
se rendre compte d'un bug.
Description :
Les liens « 0 | 30 | 60 | 90 | 120 | 150 | 161 | 180 » permettent bien de
passer d'une page auteurs à l'autre
Mais les liens « - 3 6 9 < A B C D E É F G H I J K L M N O P Q R S T U V W X
Y Z ^ _ » eux renvoient sur n'importe quoi ; ex, P renvois sur http://www.spip-contrib.net/ecrire/auteurs.php3?tri=nom&debut=1300
Piste de résolution :
Manifestement, les premiers liens et le deuxièmes n'ont pas la même echelle.
Le code fautif est ici : lignes 256 et suivantes :
if (($tri == 'nom' OR !$tri) AND $options == 'avancees') {
// affichage des lettres
echo "<tr bgcolor='white'><td colspan='5'>";
echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
while (list($key,$val) = each($lettre)) {
if ($val == $debut)
echo "<b>$key</b> ";
else
echo "<a href=$retour&debut=$val>$key</a> ";
}
echo "</font>";
echo "</td></tr>\n";
}
Il doit falloir remplacer &debut=$val> par
&debut=".intval($val/$max_par_page).">
Mais comme je n'ai pas assez d'auteurs sur ma base, je ne peux pas vérifier.
J'ai continué à lire le code et je suis tombé sur ce commentaire:
// si on n'est pas minirezo, supprimer les auteurs sans article publie
// sauf les admins, toujours visibles.
Alors, je comprend mieux ce qui se passe : le calcul des pages est bon, mais
le calcul des premiers auteurs commençant par telle lettre est fait *avant*
cette suppression.
Donc, pour constater le bug, il ne faut pas être connecté avec le statut
minirezo.
Vu, c'est dans le Todo.txt (comme quoi, celui-ci a au moins un lecteur)
Une remarque sur Nouveautés et Todo : est-ce que les mettre dans le wiki de
spip-contrib n'améliorerait pas leur audience et leur lisibilité ?
Spip-contrib ayant un grand nombre d'auteurs, la page http://www.spip-contrib.net/ecrire/auteurs.php3?tri=nom&debut=180
permet de se rendre compte d'un bug.
Description :
Les liens « 0 | 30 | 60 | 90 | 120 | 150 | 161 | 180 » permettent
bien de passer d'une page auteurs à l'autre
Mais les liens « - 3 6 9 < A B C D E É F G H I J K L M N O P Q R S T
U V W X Y Z ^ _ » eux renvoient sur n'importe quoi ; ex, P renvois sur http://www.spip-contrib.net/ecrire/auteurs.php3?tri=nom&debut=1300
Piste de résolution :
Manifestement, les premiers liens et le deuxièmes n'ont pas la même
echelle.
Et voici le diff du correctif :
--- D:\wwwrootDev\spip.net\spip\ecrire\auteurs.php3 Thu Sep 23 15:36:38 2004
UTC
+++ D:\wwwrootDev\spip.net\testspipcvs\ecrire\auteurs.php3 Tue Oct 5
21:34:38 2004 UTC
@@ -115,11 +115,6 @@
$nombre_auteurs ++;
Excellent, merci. (Pour affiner encore cette page il faudrait sortir
la "vraie" première lettre y compris en unicode ou notation × --
pour affiner encore plus il faudrait gérer les blocs multi...)
Excellent, merci. (Pour affiner encore cette page il faudrait sortir
la "vraie" première lettre y compris en unicode ou notation × --
pour affiner encore plus il faudrait gérer les blocs multi...)
Tout se joue ligne 147 : $premiere_lettre =
addslashes(strtoupper(substr($auteur['nom'],0,1)));
$auteur['nom'] contient la valeur du champ nom de l'auteur
Donc, si je comprends bien ta requète, il faut appliquer 2 filtres existant
déjà dans spip :
- typo ou propre ou autre pour échaper les caractère
- eclate_multi (valeur, langue courante) pour gérer les "traductions" du nom
de l'auteur (et ne pas avoir un auteur dont la première lettre est < )
Peux-tu me dire qu'elles sont précisément les fonctions de SPIP à utiliser
(je chercherai la syntaxe) ?
Merci
Excellent, merci. (Pour affiner encore cette page il faudrait sortir
la "vraie" première lettre y compris en unicode ou notation × --
pour affiner encore plus il faudrait gérer les blocs multi...)
-- Fil
Et encore plus, permettre de faire ca dans la partie publique avec une boucle et un filtre.