Un problème qui revient régulièrement, c'est le tag #INTRODUCTION.
Il y avait une solution élégante dans les toutes premières versions de SPIP:
- si présence d'un descriptif, alors #INTRODUCTION est le descriptif;
- sinon, #INTRODUCTION est constitué des premiers caractères de chapo + texte.
Or, le test a disparu depuis un bon bout de temps, et #INTRODUCTION est systématiquement le raccourci de chapo+texte.
Est-ce qu'on ne pourrait pas réintroduire ce test sur la présence d'un descriptif? Cela résoudrait la plupart des problèmes liés à ce tag. Surtout, c'est beaucoup plus logique d'un point de vue éditorial (à la base, #INTRODUCTION est conçu pour ça: il s'agit de systématiquement afficher quelque chose d'explicatif dans la navigation vers les articles, ce qui est le rôle de descriptif de l'article; il s'agissait donc de pallier l'absence de descriptif).
Juste un rapport de bug suivant la modif d'Arno concernant les rubriques
créées en double.
Avec la CVS 1.4c5 du 26/05, en localhost sur OSX avec Explorer 5.1 Carbon :
Clean Install, nouvelle base.
Création première rubrique (id1)
Retour à la racine
Une 'nouvelle rubrique' (id2) y figure
La rubrique créée précedemment n'y figure pas.
Création d'une nouvelle rubrique (id3)
Retour à la racine
Les rubriques 2 et 3 y figurent, toujours pas la 1
Je tente d'éditer la rubrique 1 directement par son URL
(ecrire/naviguer.php3?coll=1).
Cette rubrique ne possède pas de titre (!)
J'en recréé un.
Je retourne à la racine.
Toujours pas de rubrique 1
Je viens d'essayer avec Netscape 6.2, il provoque les mêmes erreurs mais pas
aux mêmes endroits.
J'ai créé 3 rubriques vides les unes après les autres, au total dans la
racine, il me reste les rubriques 1 (portant bien l'id1), la rubrique 2
(id3), et une 'nouvelle rubrique' (id5). Ma rubrique 3 à disparue...
Bon, j'ai loggé les requêtes après avoir enlevé les bidouilles d'Arno.
Lorsqu'une rubrique est créée en double, on a :
020526 18:46:11 6 Connect ODBC@127.0.0.1 as anonymous on
6 Init DB test2
6 Query SELECT COUNT(*) FROM spip_meta
7 Connect ODBC@127.0.0.1 as anonymous on
6 Query SELECT * FROM spip_meta
7 Init DB test2
7 Query SELECT COUNT(*) FROM spip_meta
7 Query SELECT * FROM spip_meta
6 Query SELECT * FROM spip_auteurs WHERE login='gaston' AND statut!='5poubelle' AND statut!='6forum'
7 Query SELECT * FROM spip_auteurs WHERE login='gaston' AND statut!='5poubelle' AND statut!='6forum'
7 Query UPDATE spip_auteurs SET en_ligne=NOW() WHERE id_auteur='1'
7 Query SELECT id_rubrique FROM spip_auteurs_rubriques WHERE id_auteur=1 AND id_rubrique!='0'
7 Query INSERT INTO spip_rubriques (titre, id_parent) VALUES ('Nouvelle rubrique', '3')
7 Query SELECT * FROM spip_rubriques WHERE id_rubrique='5' ORDER BY titre
7 Query SELECT * FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE lien.id_auteur=1 AND vu='non' AND statut='publie' AND type='normal' AND lien.id_message=messages.id_message
6 Query UPDATE spip_auteurs SET en_ligne=NOW() WHERE id_auteur='1'
7 Query SELECT messages.* FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE lien.id_auteur='1' AND messages.statut='publie' AND lien.id_message=messages.id_message AND messages.rv='oui' AND messages.date_heure>DATE_SUB(NOW(),INTERVAL 1 DAY) GROUP BY messages.id_message
6 Query SELECT id_rubrique FROM spip_auteurs_rubriques WHERE id_auteur=1 AND id_rubrique!='0'
7 Query SELECT id_parent FROM spip_rubriques WHERE id_rubrique='3'
7 Query SELECT * FROM spip_rubriques WHERE id_rubrique="3"
6 Query INSERT INTO spip_rubriques (titre, id_parent) VALUES ('Nouvelle rubrique', '3')
6 Query SELECT * FROM spip_rubriques WHERE id_rubrique='6' ORDER BY titre
6 Query SELECT * FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE lien.id_auteur=1 AND vu='non' AND statut='publie' AND type='normal' AND lien.id_message=messages.id_message
7 Query SELECT * FROM spip_rubriques WHERE id_rubrique="1"
7 Query SELECT * FROM spip_auteurs WHERE id_auteur!=1 AND imessage!='non' AND messagerie!='non' AND en_ligne>DATE_SUB(NOW(),INTERVAL 5 MINUTE)
020526 18:46:12 7 Quit
6 Query SELECT messages.* FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE lien.id_auteur='1' AND messages.statut='publie' AND lien.id_message=messages.id_message AND messages.rv='oui' AND messages.date_heure>DATE_SUB(NOW(),INTERVAL 1 DAY) GROUP BY messages.id_message
6 Query SELECT id_parent FROM spip_rubriques WHERE id_rubrique='3'
6 Query SELECT * FROM spip_rubriques WHERE id_rubrique="3"
6 Query SELECT * FROM spip_rubriques WHERE id_rubrique="1"
6 Query SELECT * FROM spip_auteurs WHERE id_auteur!=1 AND imessage!='non' AND messagerie!='non' AND en_ligne>DATE_SUB(NOW(),INTERVAL 5 MINUTE)
6 Quit
Il y a donc au même instant, deux processus se connectent pour effectuer
les mêmes requêtes (en double, donc). De plus, c'est la première rubrique
créée qui est prise en compte (i.e. affichée), or c'est en fait le deuxième
processus (numéro 7 ici) qui fait la première requête INSERT. Ca correspond
bien à un HEAD invisible suivi d'un GET (MSIE essaie d'abord de connaître
les caractéristiques de la page avant de la charger, visiblement).
Notons que quand on crée une deuxième sous-rubrique dans une rubrique,
elle n'est plus créée en double car MSIE connaît déjà l'URL
(.../ecrire/rubriques_edit.php3?new=oui&retour=nav&id_parent=3), donc
il ne refait pas de HEAD parasite.
Donc ce qu'il faut c'est basculer la création de rubrique dans un POST,
c'est-à-dire le plus simple, de la créer une fois qu'on a appuyé sur
"Valider".
PS : on ne peut pas déplacer une rubrique en interface simplifiée... ?