[spip-dev] Impossible de supprimer la vignette d'un document

Bonjour,

Avec un SPIP dernière révision:

Sur une page ?exec=articles&id_article=1 le lien de suppression de lavignette d'un document type document est:
arg=1/article/553/549
pourtant sur la page ?exec=articles_edit&id_article=1 le même lien est
arg=-1/article/553

Quand j'appuie sur le premier j'ai dans les logs,
action_documenter 1/article/553/549 pas compris
et bien sur ma vignette n'est pas supprimée.

Et pour cause dans action/documenter.php:
",^(-?)(\d+)\W(\w+)\W?(\d*)$,"
une ou deux séparation, mais pas trois (ou j'interprète mal).

C'est cette ligne: http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc/legender.php#L220
la coupable, mais je n'arrive pas a comprendre son utilité:

$f = (!$s AND $id_vignette) ? "/$id_document" : '';

puis "$s$id/$type/$id_vignette$f"

Merci.

ArnAud.

As tu une version RC1 ou es-tu sur la branche dev ?
Ce bug a été corrigé, au moins sur la branche RC1...

Cédric

cedric.morin@yterium.com a écrit :

As tu une version RC1 ou es-tu sur la branche dev ?
Ce bug a été corrigé, au moins sur la branche RC1...

La RC1 c'est celle de branches/spip-2.0/ ?

Si oui, j'ai refais une installation vierge dans le doute:
Mais entre la dev et la rc1, le code de inc/legender est le même, et rajoute un quatrième argument au arg sur l'action documenter qui n'est pas compris par la regexp.

J'ai vu que dans http://trac.rezo.net/trac/spip/changeset/13183/branches/spip-2.0/ecrire/inc/legender.php tu dis corriger le problème, mais ça ne le fait pas.

Pourquoi rajouter ce quatrième argument, pourquoi uniquement sur un exec non *_edit et quand $ancre=='documents', ça je n'arrive pas à le comprendre.

Investigation:
http://trac.rezo.net/trac/spip/changeset/11080 rajoute ce 4ème argument en rajoutant bien dans inc/documenter la regexp qui va bien:
!preg_match(",^(-?)(\d+)\W(\w+)\W?(\d*)\W?(\d*)$,"

mais http://trac.rezo.net/trac/spip/changeset/12472/spip/ecrire/action/documenter.php revient sur cette décision et remet
preg_match(",^(-?)(\d+)\W(\w+)\W?(\d*)$,"
Ce qui n'est plus compatible avec le changement dans inc/legender.php

Alors à mon avis, soit il faut remettre la bonne regex dans action/documenter, soit effacer la ligne dans inc/legender

ArnAud.

Cédric

cedric.morin@yterium.com a écrit :

As tu une version RC1 ou es-tu sur la branche dev ?
Ce bug a été corrigé, au moins sur la branche RC1...

La RC1 c'est celle de branches/spip-2.0/ ?

Si oui, j'ai refais une installation vierge dans le doute:
Mais entre la dev et la rc1, le code de inc/legender est le même, et rajoute un quatrième argument au arg sur l'action documenter qui n'est pas compris par la regexp.

J'ai vu que dans http://trac.rezo.net/trac/spip/changeset/13183/branches/spip-2.0/ecrire/inc/legender.php tu dis corriger le problème, mais ça ne le fait pas.

Pourquoi rajouter ce quatrième argument, pourquoi uniquement sur un exec non *_edit et quand $ancre=='documents', ça je n'arrive pas à le comprendre.

Ce code spaghetti est devenu completement incompréhensible et in-maintenable. Bourrés de cas dérogatoires, de branches parrallèles (ajax/pas ajax, images/documents/ espace privé/pas espace privé...) toutes combinatoires, dont on ne teste évidemment jamais chaque cas.
Une horreur qu'il faudra très vite faire disparaître maintenant qu'on a un schema de developpement pour ce type de formulaire.
Et si tu n'as pas mis le nez dans le action/joindre qui va derrière, tu peux t'estimer un homme heureux.

Mais le portage est loin d'être trivial et demande un peu de temps et de tests.
J'avais prévu de le faire pour la 2.0, mais ça n'a pas été possible.

Investigation:
http://trac.rezo.net/trac/spip/changeset/11080 rajoute ce 4ème argument en rajoutant bien dans inc/documenter la regexp qui va bien:
!preg_match(",^(-?)(\d+)\W(\w+)\W?(\d*)\W?(\d*)$,"

mais http://trac.rezo.net/trac/spip/changeset/12472/spip/ecrire/action/documenter.php revient sur cette décision et remet
preg_match(",^(-?)(\d+)\W(\w+)\W?(\d*)$,"
Ce qui n'est plus compatible avec le changement dans inc/legender.php

Alors à mon avis, soit il faut remettre la bonne regex dans action/documenter, soit effacer la ligne dans inc/legender

Plutot ça, probablement. Tu peux essayer, et si c'est ok, envoie le patch dans un ticket.
Cédric

cedric.morin@yterium.com a écrit :

Plutot ça, probablement. Tu peux essayer, et si c'est ok, envoie le patch dans un ticket.

http://trac.rezo.net/trac/spip/ticket/1635

a,