Redirection problématique imposée par le formulaire joindre_documents #4134

Open
opened 5 years ago by b_b · 5 comments
b_b commented 5 years ago
Owner

Depuis la version 3.1, le formulaire joindre_documents impose une redirection dans sa fonction traiter, cf :

https://zone.spip.org/trac/spip-zone/browser/core/plugins/medias/formulaires/joindre_document.php#L358

Cela pose problème quand on utilise ce formulaire dans l'espace public. Sur deux squelettes qui l'utilisaient sans problème en 2.1 et 3.0, j'ai maintenant une redirection sur la page d'accueil du site suivie de #docXXX. Faute de mieux, je surcharge le traitement du formulaire depuis le pipeline formulaire_traiter comme ici 77ae473749

J'ai cherché l'origine de ce changement de comportement dans les logs sans succès :\

Depuis la version 3.1, le formulaire joindre_documents impose une redirection dans sa fonction traiter, cf : https://zone.spip.org/trac/spip-zone/browser/_core_/plugins/medias/formulaires/joindre_document.php#L358 Cela pose problème quand on utilise ce formulaire dans l'espace public. Sur deux squelettes qui l'utilisaient sans problème en 2.1 et 3.0, j'ai maintenant une redirection sur la page d'accueil du site suivie de `#docXXX`. Faute de mieux, je surcharge le traitement du formulaire depuis le pipeline `formulaire_traiter` comme ici https://github.com/geodiversite/geodiversite/commit/77ae473749e7d8a757beb67472ef195a086b7458 J'ai cherché l'origine de ce changement de comportement dans les logs sans succès :\
Owner

Ce redirect existe depuis... toujours ou presque, donc je pense pas que ce soit la raison.

Par contre si le redirect est une ancre et que le formulaire est ajax normalement on ne redirige pas grace à
https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/headers.php#L112
qui injecte juste un html qui sera récupéré côté client et décodé.
Donc soit il y a en amont quelque part du code qui transforme l'ancre de redirection en URL complète, ce qui provoque la redirection, soit il y a un bug dans le JS de ajaxcallback qui provoque ça

Ce redirect existe depuis... toujours ou presque, donc je pense pas que ce soit la raison. Par contre si le redirect est une ancre et que le formulaire est ajax normalement on ne redirige pas grace à https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/headers.php#L112 qui injecte juste un html qui sera récupéré côté client et décodé. Donc soit il y a en amont quelque part du code qui transforme l'ancre de redirection en URL complète, ce qui provoque la redirection, soit il y a un bug dans le JS de ajaxcallback qui provoque ça
b_b commented 4 years ago
Poster
Owner

Merci pour les pistes, je vais regarder ça en détail.
Statut changé à En cours

Merci pour les pistes, je vais regarder ça en détail. **Statut changé à En cours**
b_b commented 4 years ago
Poster
Owner

Justement dans mon cas, le formulaire joindre_document n'est pas en ajax. Je tombe donc dans le cas où $res['redirect'] = '#docXX' qui donne cette valeur à $url dans redirige_formulaire() qui lance un redirige_par_entete() sur cette url https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/headers.php#L114

Justement dans mon cas, le formulaire joindre_document *n'est pas en ajax*. Je tombe donc dans le cas où `$res['redirect'] = '#docXX'` qui donne cette valeur à $url dans `redirige_formulaire()` qui lance un `redirige_par_entete()` sur cette url https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/headers.php#L114
Owner

Version cible mise à 4.0

**Version cible mise à 4.0**
Collaborator

Peut être lié à ce bug aléatoire https://www.mail-archive.com/spip`rezo.net/msg80645.html ?

Peut être lié à ce bug aléatoire https://www.mail-archive.com/spip`rezo.net/msg80645.html ?
Sign in to join this conversation.
No Milestone
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.