Bug #2457
Eviter le double get pour les generic ajaxform
0%
Description
La fonction generic_ajaxform_dialog dans calebasse.dialog.js fait un double get. Il faudrait gérer ça comme la event_dialog de l'agenda.
Fichiers
Historique
Mis à jour par Mikaël Ates (de retour le 29 avril) il y a environ 11 ans
- Version cible changé de 0.4 à 0.9
Mis à jour par Mikaël Ates (de retour le 29 avril) il y a presque 11 ans
- Projet changé de APS42 à Calebasse
- Version cible
0.9supprimé
Mis à jour par Mikaël Ates (de retour le 29 avril) il y a presque 11 ans
Pour éviter le double get, remplacer:
$('.stats').click(function() {
var url = 'form/' + this.id;
generic_ajaxform_dialog(url, 'Choix des parametres',
'#ajax-dlg', '700px', 'Extraire', false,
function (dialog) {
// code spe
});
});
par
$('.stats').click(function() {
var url = 'form/' + this.id;
$('#ajax-dlg').load(url,
function () {
$(this).dialog({title: 'Choix des parametres', width: '700px',
buttons: [ { text: "Fermer",
click: function() { $(this).dialog("close"); } },
{ text: "Extraire",
click: function() { $("#ajax-dlg form").submit(); $(this).dialog("close"); } }]});
// code spe
});
return false;
});
});
Mis à jour par Mikaël Ates (de retour le 29 avril) il y a presque 10 ans
- Version cible mis à 1.1.3
Mis à jour par Serghei Mihai il y a plus de 9 ans
- Patch proposed mis à Non
Ce n'est pas l'appel à generic_ajax_dialog
qui genere plusieurs appels GET, mais des multiples binds au click sur des boutons.
J'ajouterais un /
à la fin de la variable url
pour éviter un redirect vers l'url avec /
Mis à jour par Serghei Mihai il y a plus de 9 ans
- Fichier 0001-statistics-fix-the-stats-form-url.patch 0001-statistics-fix-the-stats-form-url.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
Juste pour que ce soir clair: en quoi l'ajout du /
limite les bind sur l'event click du bouton ?
Mis à jour par Serghei Mihai il y a plus de 9 ans
J'avais mal compris le problème.
Le souci vient du fait qu'on ne peut pas intercepter les redirects suite à la sousmission des formulaires.
La fonction generic_ajaxform_dialog
ne voit pas la redirection et recharge la même page, dans la plupart des cas, ce que donne au final 2 GET sur la même url.
Cela pose d'autres problèmes ailleurs, comme l'affichage des notifications via django messages.
Je pense que nous devrions revoir notre façon de gerer les formulaires ajax
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
Ok donc il n'y a pas vraiment deux GET émis par le js mais 2 gets suite à redirection ce qui n'est pas bien grave. Par contre je ne vois pas en quoi ça perturbe les messages (en dehors du fait que ça ne doit pas marcher du tout si on extrait juste un bout de la page HTML renvoyée).
Si vous refondez cette partie du code vous pouvez regarder ce qu'on a fait sur gadjo et la nouvelle admin authentic, c'est assez simple et efficace:
- http://repos.entrouvert.org/gadjo.git/tree/gadjo/static/js/gadjo.js
- http://repos.entrouvert.org/authentic.git/tree/authentic2/manager/views.py#n45
On évite complètement les redirections en fin de vue en générant un JSON avec l'URL de l'entête Location. Je sais juste que ça ne marcherait pas avec des boites de dialogue récursives à cause des #id
qui se marchent dessus.
Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 9 ans
- Statut changé de Résolu (à déployer) à En cours
- Version cible changé de 1.1.3 à 1.3
Le problème étant plus complexe que prévu et non résolu, je déplace le ticket vers la prochaine version.