Projet

Général

Profil

Bug #9701

autosave: ne pas effectuer de store si le formulaire est déjà validé

Ajouté par Thomas Noël il y a plus de 8 ans. Mis à jour il y a environ 8 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
Version cible:
Début:
19 janvier 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Sur certains formulaires avec beaucoup de contraintes à calculer (et surtout des sources externes => contraintes depuis des webservice), la validation d'une page peut prendre du temps.

Dans ce cas, il est possible qu'un autosave() soit lancé, prenne du temps à faire la validation des données (4 ou 5 secondes, voire beaucoup plus).

Si entre temps l'utilisateur a cliqué sur "suivant", il est possible que le formdata soit mis à jour (store)... et que l'autosave précédent se finisse encore plus tard, déclenchant un second store qui pourrait contenir des données anciennes !

Il faut donc dans l'autosave avoir un système de protection, qui n'enregistre jamais un formdata s'il est plus agé que la date du début de la requête autosave.


Fichiers

Révisions associées

Révision 92e51885 (diff)
Ajouté par Frédéric Péters il y a plus de 8 ans

forms: don't let autosave() replace values that were submitted later on (#9701)

Révision e910a614 (diff)
Ajouté par Frédéric Péters il y a plus de 8 ans

forms: don't let autosave() with errors modify user session (#9701)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 8 ans

Et donc là-dessus, ce que j'écrivais : « ce que je verrais c'est un compteur, +1 lors du submit des pages du formulaire (que ça soit pour aller en avant ou en arrière), la valeur du compteur est passée dans l'autosave, elle est vérifiée juste avant son store(), si elle est différente, on passe. » (compteur associé au magictoken).

#3

Mis à jour par Frédéric Péters il y a plus de 8 ans

  • Assigné à mis à Frédéric Péters

Même pas besoin de compteur, juste un token qui serait remplacé lors du submit; j'étudierai ça demain.

#5

Mis à jour par Frédéric Péters il y a plus de 8 ans

  • 0001 : correspond au commentaire précédent, un jeton est ajouté, s'il n'est plus là quand l'autosave se termine, on n'enregistre pas la demande.
  • 0002 : évolution du patch que j'avais en #9685, en cas d'erreur de autosave(), on n'enregistre pas la session. (cf #9685 pour le détail de ce qui se passait)
  • 0003 : on notait toujours dans le js l'appel à autosave() comme un succès, boulet.
  • 0004 : plutôt que toutes les cinq secondes, on attend que l'appel précédent ait terminé avant de relancer un autosave().
#6

Mis à jour par Thomas Noël il y a plus de 8 ans

0004-forms-let-autosave-call-finish-before-starting-a-new.patch : je pense qu'il faut relancer le timer dans un "complete: function() { ... }" de ajax, et pas dans success

#8

Mis à jour par Thomas Noël il y a plus de 8 ans

Tout ça me semble bel et bon. Ack.

#9

Mis à jour par Frédéric Péters il y a plus de 8 ans

  • Statut changé de Nouveau à Résolu (à déployer)
  • Patch proposed changé de Non à Oui
commit 63c850e1cb866077afde5b0170bfbd6a3abcf044
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Jan 20 14:28:50 2016 +0100

    forms: let autosave() call finish before starting a new one

commit 5fa59bdcc4c08863cde3539c9898df6900fdb419
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Jan 20 14:21:46 2016 +0100

    forms: don't record autosave() error as success

commit e910a6148e978e15d9893a47aac2c05e5e05f58f
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Mon Jan 18 22:20:06 2016 +0100

    forms: don't let autosave() with errors modify user session (#9701)

commit 92e51885221427abbcd2dbf3a4b0f25adb76e6e8
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Jan 20 14:06:42 2016 +0100

    forms: don't let autosave() replace values that were submitted later on (#9701)
#10

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Version cible mis à v1.29
#11

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF