Bug #2740
Lorsque l'on a modifié un champs dans le dossier sans enregistrer et que l'on quitte la page ou l'onglet, montrer une alerte
100%
Description
Pour éviter les opublis d'enregistrements très fréquents. Les onglets concernés sont 'général', 'fiches administrative' et 'données à caractère médical'.
Fichiers
Révisions associées
calebasse.dossiers.js: put a warning if an error occured
Closes #2740
dossiers: alert raised when comment unsaved in "Adresses/contacts" tab
Closes #2740
Historique
Mis à jour par Mikaël Ates (de retour le 29 avril) il y a presque 11 ans
- Projet changé de APS42 à Calebasse
- Sujet changé de Lorsque l'on a modifier un champs dans le dossier sans enregistrer et que l'on quitte la page ou l'onglet, montrer une alerte à Lorsque l'on a modifié un champs dans le dossier sans enregistrer et que l'on quitte la page ou l'onglet, montrer une alerte
- Version cible
0.9supprimé
Mis à jour par Mikaël Ates (de retour le 29 avril) il y a presque 10 ans
- Version cible mis à 1.2 Amélioration du dossier patient
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Jérôme Schneider
- Patch proposed mis à Non
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Fichier 0001-dossiers-show-an-alert-when-closing-without-saving.patch ajouté
- % réalisé changé de 0 à 60
- Patch proposed changé de Non à Oui
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Fichier
0001-dossiers-show-an-alert-when-closing-without-saving.patchsupprimé
Mis à jour par Jérôme Schneider il y a plus de 9 ans
Mis à jour par Benjamin Dauvergne il y a plus de 9 ans
Juste pour la cohérence, si on utilise .on()
, je serai pour l'utiliser systématiquement et ne plus utiliser toutes les méthodes directes de mise en place de handler comme .click()
et .change()
, en plus à relire le .on()
est plus explicite alors que .change()
ou .click()
peuvent être lu comme des verbes, et sans argument il me semble aussi que ça provoque un .trigger()
(mais je n'en suis plus sûr) ce que .on()
ne fait pas.
Quand à l'utilisation de beforeunload
, apparemment renvoyer une chaîne ne marche que sur webkit: https://developer.mozilla.org/fr/docs/DOM/window.onbeforeunload (ils disent Safari mais pour moi ça veut dire webkit)
Sur IE et Firefox il faudrait faire e.returnValue = '...'
.
Idéalement il faudrait comme pour les actes vérifier que ce qui a vraiment changé, à partir de jQuery 1.6 il est possible de récupérer cette valeur initiale avec $e.attr('value')
ou $e.attr('checked') != undefined
pour les checkbox et boutons radios.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Fichier 0001-dossiers-show-an-alert-when-closing-without-saving.patch 0001-dossiers-show-an-alert-when-closing-without-saving.patch ajouté
Ce nouveau patch corrige un bug. L'auto submit ne fonctionnait plus correctement avec l'ancien.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
Benjamin Dauvergne a écrit :
Juste pour la cohérence, si on utilise
.on()
, je serai pour l'utiliser systématiquement et ne plus utiliser toutes les méthodes directes de mise en place de handler comme.click()
et.change()
, en plus à relire le.on()
est plus explicite alors que.change()
ou.click()
peuvent être lu comme des verbes, et sans argument il me semble aussi que ça provoque un.trigger()
(mais je n'en suis plus sûr) ce que.on()
ne fait pas.
C'est modifié.
Quand à l'utilisation de
beforeunload
, apparemment renvoyer une chaîne ne marche que sur webkit: https://developer.mozilla.org/fr/docs/DOM/window.onbeforeunload (ils disent Safari mais pour moi ça veut dire webkit)Sur IE et Firefox il faudrait faire
e.returnValue = '...'
.
Sous Firefox ça semble beaucoup plus tordu que ça : https://bugzilla.mozilla.org/show_bug.cgi?id=588292
J'ai essayé le coup du returnValue mais le comportement reste le même. En gros Firefox n'en a rien a foutre du beforeunload il gère ça à sa sauce et ça me convient dans le cas présent.
Pour IE je n'ai pas testé.
Tous les exemples que j'ai trouvé sur jquery avec un beforeunload ne font que renvoyer une string. Pour le moment je laisse comme ça.
Idéalement il faudrait comme pour les actes vérifier que ce qui a vraiment changé, à partir de jQuery 1.6 il est possible de récupérer cette valeur initiale avec
$e.attr('value')
ou$e.attr('checked') != undefined
pour les checkbox et boutons radios.
C'est un peu lourd à gérer pour une plus value qui me semble faible. Dans l'immédiat je pense qu'on peut s'en passer.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 60 à 100
Appliqué par commit calebasse|commit:bbf89bd4bd4379aa62eb56e7727cc56a3d4e173e.
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
- % réalisé changé de 100 à 50
Lorsqu'il y a une erreur de saisie, l'erreur est affiché à côté du champs en erreur et le formulaire n'est pas sauvegardé, cependant lorsque l'on quitte l'onglet l'alerte n'est pas affichée.
Mis à jour par Jérôme Schneider il y a plus de 9 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 50 à 100
Appliqué par commit calebasse|commit:f93684a477fd34b00442df37594e6676d0884ade.
Mis à jour par Serghei Mihai il y a plus de 9 ans
- Fichier 0001-dossiers-alert-raised-when-comment-unsaved-in-Adress.patch 0001-dossiers-alert-raised-when-comment-unsaved-in-Adress.patch ajouté
Quand on modifie le commentaire dans l'onglet "Adresses/contacts" et on change d'onglet sans sauvegarder, l'alerte n'est pas levée.
Voici le patch appelant la fonction JS en question
Mis à jour par Serghei Mihai il y a plus de 9 ans
Appliqué par commit calebasse|commit:83fdead5e5dde28acf6ea0e75519632e1f6478f6.
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) à Fermé
Ok
dossiers: show an alert when closing without saving
Closes #2740