[spip-dev] Petit problème avec les URLs propres et le bouton «voir en ligne»

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 ;

Là, il devrait normalement créer l'URL "IMG-2" (le 2 étant l'id)

-Nicolas