Bonjour,
Je signale ici un petit problème relatif au calcul d'URL propre lorsqu'on utilise le bouton voir en ligne ET lorsqu'on a définit dans spip_urls une URL pour l'objet en question à une date supérieure à celle actuelle.
Imaginons un article français "IMG" en id=1 et au même titre en anglais en id=2 (le problème apparait déjà avec une seule langue)
spip_urls : url, objet, id_objet, date
"IMG", article, 1, 2010 ;
"repertoire_IMG", article, 1, 2020 ;
"directory_IMG", article, 2, 2020 ;
* Problème numéro 1 :
Alors que les URLs propres de ces objets sont correctement calculées si l'on est dans l'espace public, cela est différent si l'on est sur l'article 1 de l'espace privé et que l'on clique «voir en ligne». Que se passe t'il :
1) on récupère l'URL valide actuellement, soit "repertoire_IMG"
2) puisque voir_en_ligne permet de recalculer une url, SPIP calcule l'url propre de l'objet en question via le pipeline adéquat, ce qui donne «IMG».
3) on compare les 2 URLs : si elles sont différentes, on conclut que l'URL de l'objet a changé (sans vérifier les dates). Si elles sont différentes comme ici, on arrive à :
4) insertion de la nouvelle URL à la date du jour, ce qui correspond a actualiser l'entrée "IMG" de spip_urls
5) on quitte en disant que l'URL de l'objet est celle qu'on vient de calculer.
Bref, a aucun moment là, on a tenu compte des dates des URLs, ce qui fait que «voir en ligne» m'amène sur l'URL «mon_site_spip/IMG» ce qui évidemment tente d'afficher ce répertoire.
* mini Problème numéro 2
Imaginons qu'on fait «voir en ligne» sur l'article de même titre en anglais...
4) va écraser l'entrée «IMG» déjà présente ! En mettant à la place l'identifiant de son article à lui. Il ne tient pas compte de la présence d'une URL déjà identique dans la base semble-t-il :
«IMG», article, 2, 2010 ;