[SPIP Zone] [Ne Me quitte pas !] Limites avec l'Ajax de SPIP

Bonjour,

Le plugin Ne me quitte pas ! rencontre des limites du fait de l'Ajax de l'espace d'admin (cf https://zone.spip.org/trac/spip-zone/changeset/103437).

En effet, il se base sur l'événement navigateur de déchargement de la page (onbeforeunload).
Donc, tout ce qui est navigation Ajax n'est pas pris en compte.
Donc, si on modifie un article, le bouton retour fait revenir à la page des propriétés de l'article en perdant le contenu édité.
Pareil pour le bouton back du navigateur.

Donc, pour que le plugin marche partout, il me semble que ça ne peut pas se faire sans modification du cœur de SPIP et demande de confirmation sur tous les boutons qui font de l'Ajax pouvant faire perdre le contenu édité.

(ceci me semble aussi expliquer que les codes que je suis allés voir dans les autres CMS sont profondément imbriqués avec ces CMS, et pas juste un script de plus appelé sur les pages).

Est-ce que ça inspire quelqu'un ?

--
RealET

Hop,

Le 22/03/2017 à 11:27, RealET a écrit :

Bonjour,

Le plugin Ne me quitte pas ! rencontre des limites du fait de l'Ajax de
l'espace d'admin (cf
Connexion · GitLab).

En effet, il se base sur l'événement navigateur de déchargement de la
page (onbeforeunload).
Donc, tout ce qui est navigation Ajax n'est pas pris en compte.
Donc, si on modifie un article, le bouton retour fait revenir à la page
des propriétés de l'article en perdant le contenu édité.

Ne suffit-il pas de se brancher sur l'event clic du bouton en question depuis ton script ?

".entete-formulaire .retour a" et zou, non ?

++
b_b

Bruno Bergot a écrit le 22/03/2017 à 11:53 :

Hop,

Le 22/03/2017 à 11:27, RealET a écrit :

Bonjour,

Le plugin Ne me quitte pas ! rencontre des limites du fait de l'Ajax de
l'espace d'admin (cf
Connexion · GitLab).

En effet, il se base sur l'événement navigateur de déchargement de la
page (onbeforeunload).
Donc, tout ce qui est navigation Ajax n'est pas pris en compte.
Donc, si on modifie un article, le bouton retour fait revenir à la page
des propriétés de l'article en perdant le contenu édité.

Ne suffit-il pas de se brancher sur l'event clic du bouton en question
depuis ton script ?

".entete-formulaire .retour a" et zou, non ?

C'est fort possible.
Mais je ne sais pas faire.

:frowning:

Tu peux m'aider ?

--
RealET

Hello,

dans l’idée ça devrait avoir l’air de ça


<script type="text/javascript">
//<![CDATA[

jQuery(function($){

    $('a.loader').on('click',function(e){
        e.preventDefault();
        $('.filter-list').find('a.label-success').removeClass('label-success').addClass('label');
        var categorie = $(this).attr('data-categorie');
        ajaxReload('documents',{
            args: {
                categorie: categorie
            }
        });
        $(this).removeClass('label').addClass('label-success');    
    });

});
// ]]>
</script>

j’nai pas encore testé le plugin, mais je jetterais un œil…