Compatibilité Joomla! joomla! 1.6joomla! 1.7mootools in joomla!

J'ai cherché pour un développement personnel dans mon composant Template Creator à conserver et mettre à jour la durée de la session dans une page sans avoir à la recharger. Dans cette page j'ai beaucoup de choses et l'utilisateur peut y passer un certain temps, durée qui peut être supérieure à la durée de la session ce qui fait que lorsqu'il enregistre ou rafraichit la page il est déconnecté. Très embêtant comme situation...

Voilà donc une petite méthode qui permet de prolonger la session sur un simple événement (clic sur un élément de la page).

Première étape créer la fonction dans le controleur principal :

/**
 * Update the session timer
 * @return void
 */
 function updatesession() {
     $session = &JSession::getInstance('none',array());
 }

C'est la fonction qui va permettre de mettre à jour le timer de la session.

Deuxième étape créer l'événement javascript et la requête ajax :

Pour l'exemple j'ai mis l'événement dans la vue du composant qui s'exécute au clic sur un texte. On peut très bien imaginer l'encapsuler dans une fonction qu'on appelle n'importe quand dans un script.

<script type="text/javascript">
    window.addEvent('domready', function() {
        document.id('test').addEvent('click', function() {
        
            var myurl = "index.php?option=com_moncomposant&task=updatesession";
            var packageRequest = new Request.HTML({
                url:myurl
            });
            packageRequest.send();
        });
    });
</script>

et le code HTML de mon bouton de test :

<div id="test">CLICK TO TEST SESSION</div>

Voilà, c'est très simple et ça fonctionne, le timer de session.timer.last dans la base de données se met à jour à chaque clic. On peut donc rester sur la page autant de temps que l'on veut sans avoir à enregistrer ou la quitter, tout ça sans crainte de perdre sa session.

 

Site réalisé par Cédric KEIFLIN - Mentions légales

Copyright © 2010 - 2020 Tutoriels Joomla! - Tous droits réservés - Joomla! est un Logiciel Libre diffusé sous licence GNU General Public

https://tutoriels-joomla.joomlack.fr n'est ni affilié à Open Source Matters ou au projet Joomla ni approuvé par eux.
Le nom Joomla!® est utilisé sous license limitée de Open Source Matters, le propriétaire mondial de la marque de commerce.