Vérifiez vos informations

Il semblerait que les informations techniques de votre profil n'aient pas été actualisées depuis un certain temps... Pour que l'aide apportée vous soit efficace, il est important que ces informations soient à jour : prenez quelques secondes pour confirmer ou compléter les informations suivantes.


Lien de votre forum
Version de ce forum
Vous êtes le fondateur de ce forum
Vous avez modifié le CSS de ce forum
Vous avez modifié les templates de ce forum
Votre navigateur

Temps de connexion total d'un membre

Voir le sujet précédent Voir le sujet suivant Aller en bas

En cours Temps de connexion total d'un membre

Message par Night Elensar le Mer 31 Oct 2018 - 12:41

Détails techniques

Version du forum : phpBB2
Poste occupé : Fondateur
Navigateur(s) concerné(s) : Mozilla Firefox, Google Chrome
Personnes concernées par le problème : Tous les utilisateurs
Problème apparu depuis : - - -
Lien du forum : http://elfs-school.forumactif.com/

Description du problème

Bonjour à tous !

Je n'ai présentement pas de "problème" avec mon Forum, mais pour l'améliorer je souhaiterais pouvoir ajouter un message (personnalisé - avec les codes) aux membres connectés sous le menu de navigation. Du style "Bonjour [USERNAME]".

Jusque là, rien de bien folichon, je sais faire. Mais dans ce message je souhaiterais également ajouter le temps de connexion TOTAL que le joueur a passé sur le Forum depuis son inscription - ou au moins depuis l'installation de ce compteur...

Je ne sais pas si un tel code existe, si oui, quel est-il ?

Merci pour votre aide !


Dernière édition par Night Elensar le Ven 2 Nov 2018 - 10:29, édité 2 fois
avatar

Night Elensar
Nouveau membre

Féminin
Messages : 16
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

En cours Re: Temps de connexion total d'un membre

Message par Ea le Mer 31 Oct 2018 - 18:30

Bonjour,


Voici un exemple de script:

Code:
$(function () {
    if (!window.localStorage || !window._userdata || _userdata["user_id"] === -1) return; 
    var intervalTime = 19000;
    var savingField = 12;
    var updateLastSeen = function () {
        var now = +new Date();
        var lastSeen = parseInt(localStorage.lastSeenCT);
        localStorage.lastSeenCT = now;
        if (!lastSeen || now - intervalTime - 1000 > lastSeen) {
            return;
        } 
        localStorage.timeToAddCT = parseInt(localStorage.timeToAddCT || 0) + now - lastSeen;
        if (localStorage.timeToAddCT > 300000) {
            var timeToAdd = parseInt(localStorage.timeToAddCT / 60000);
            $.get('/u'+uid).then(function (profil) {
                var currentVal = parseInt($('[name="profile_field_10_'+savingField+'"]', profil).val() || 0);
                localStorage.fullCT = currentVal + timeToAdd;
                $.post("/ajax_profile.forum?jsoncallback=?", {
                    user: uid, id: savingField,
                    content: '[["profile_field_10_'+savingField+'", "' + (currentVal + timeToAdd) +'"]]', tid: tid, 'active': 1,
                }, undefined, 'json').then(function () {
                    localStorage.timeToAddCT %= 60000;
                });
            });
        }
    };
    var tid = $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href") || "").replace(/^.*&tid=([a-z0-9]*)?.*$/, "$1");
    var uid = _userdata["user_id"];
    // update connection time
    setInterval(updateLastSeen, intervalTime);
    updateLastSeen();
    // display connection time
    var $el = $('#displayCT');
    if (!$el.length) return;
    var def = $.when();
    if (localStorage.fullCT === undefined) {
        def = $.get('/u'+uid).then(function (profil) {
            var currentVal = parseInt($('[name="'+savingField+'"]', profil).val() || 0);
            localStorage.fullCT = currentVal;
        });
    }
    def.then(function () {
        var connectionTime = parseInt(localStorage.fullCT || 0);
        var minutes = connectionTime % 60;
        var hours = parseInt(connectionTime / 60) % 24;
        var days = parseInt(connectionTime / 1440);
        $el.text((days ? days + " jour" + (days > 1 ? "s" : "") : "") + (hours ? hours + " heure" + (hours > 1 ? "s" : "") : "") + (minutes + " minute" + (minutes > 1 ? "s" : "")));
    })
});

à mettre sur toutes les pages Index > Panneau d'administration > Modules > HTML & JAVASCRIPT | Gestion des codes Javascript > Créer un nouveau javascript.

Avec ce code, il faut:

- ajouter où souhaité:

Code:
<span id="displayCT"/>

Le script mettra à l'intérieur de cet élément le temps de connection.

Il faut aussi ajouter un champ de profil (Index > Panneau d'administration > Utilisateurs & Groupes > Utilisateurs | Profils > +) comme ceci:


Les parties qu'il faut pour ce champ sont:

- Type: Nombre
- Affichage: [V] Profil
- Qui peut modifier la valeur de son contenu? [V] L'utilisateur lui-même
- Afficher ce champs pour les utilisateurs ayant au moins le statut : Membres

Une fois créé, il faut retourner sur le champ et dans la barre d'adresse il devrait y avoir "id=12" ou un autre chiffre:


Il faut remplacer le chiffre que vous avez dans votre cas dans cette ligne du script donné plus haut:

Code:
    var savingField = 12;

Cordialement.


Dernière édition par Ea le Ven 2 Nov 2018 - 13:04, édité 1 fois (Raison : correction du script)
avatar

Ea
Aidactif
Aidactif

Messages : 23536
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

En cours Re: Temps de connexion total d'un membre

Message par Night Elensar le Ven 2 Nov 2018 - 9:59

Bonjour !

Merci pour ce tuto express ! Je l'ai appliqué et j'ai essayé de faire des modifications afin d'avoir les secondes également, sans succès !

Quoi qu'il en soit, merci encore !

Bonne journée à toi !
avatar

Night Elensar
Nouveau membre

Féminin
Messages : 16
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

En cours Re: Temps de connexion total d'un membre

Message par Night Elensar le Ven 2 Nov 2018 - 10:29

Je constate que le compteur reste bloqué à 5 minutes......
avatar

Night Elensar
Nouveau membre

Féminin
Messages : 16
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.
  • 0

En cours Re: Temps de connexion total d'un membre

Message par Ea le Ven 2 Nov 2018 - 13:02

Oui désolé, j'ai fait une simplification juste avant de poster et j'avais oublié d'adapté une partie.

Avec ce code ça ne devrait pas être bloqué à 5 minutes et il devrait y avoir les secondes:

Code:
$(function () {
    if (!window.localStorage || !window._userdata || _userdata["user_id"] === -1) return;
    var intervalTime = 19000;
    var savingField = 12;
    var updateLastSeen = function () {
        var now = +new Date();
        var lastSeen = parseInt(localStorage.lastSeenCT);
        localStorage.lastSeenCT = now;
        if (!lastSeen || now - intervalTime - 1000 > lastSeen) {
            return;
        }
        localStorage.timeToAddCT = parseInt(localStorage.timeToAddCT || 0) + now - lastSeen;
        if (localStorage.timeToAddCT > 300000) {
            var timeToAdd = parseInt(localStorage.timeToAddCT / 60000);
            $.get('/u'+uid).then(function (profil) {
                var currentVal = parseInt($('[name="profile_field_10_'+savingField+'"]', profil).val() || 0);
                localStorage.fullCT = currentVal + timeToAdd;
                $.post("/ajax_profile.forum?jsoncallback=?", {
                    user: uid, id: savingField,
                    content: '[["profile_field_10_'+savingField+'", "' + (currentVal + timeToAdd) +'"]]', tid: tid, 'active': 1,
                }, undefined, 'json').then(function () {
                    localStorage.timeToAddCT %= 60000;
                });
            });
        } 
    }; 
    var tid = $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href") || "").replace(/^.*&tid=([a-z0-9]*)?.*$/, "$1");
    var uid = _userdata["user_id"];
    // update connection time
    updateLastSeen();
    setInterval(updateLastSeen, intervalTime);
    // display connection time
    var $el = $('#displayCT');
    if (!$el.length) return;
    var def = $.when();
    if (localStorage.fullCT === undefined) {
        def = $.get('/u'+uid).then(function (profil) {
            var currentVal = parseInt($('[name="'+savingField+'"]', profil).val() || 0);
            localStorage.fullCT = currentVal;
        });
    } 
    def.then(function () {
        var connectionTime = parseInt(localStorage.fullCT || 0) * 60 + parseInt((new Date() - localStorage.lastSeenCT + parseInt(localStorage.timeToAddCT || 0)) / 1000) - 1;
        var updateTime = function () {
            connectionTime++;
            var days = parseInt(connectionTime / 86400);
            var hours = parseInt(connectionTime / 3600) % 24;
            var minutes = parseInt(connectionTime / 60) % 60;
            var seconds = connectionTime % 60;
            var show = [];
            if (days) show.push(days+' jour'+(days > 1 ? 's':''));
            if (hours) show.push(hours+' heure'+(hours > 1 ? 's':''));
            if (minutes) show.push(minutes+' minute'+(minutes > 1 ? 's':''));
            if (seconds) show.push(seconds+' seconde'+(seconds > 1 ? 's':''));
            $el.text(show.length ? show.join(' ') : 'aucune');
        }; 
        updateTime();
        setInterval(updateTime, 1000);
    }) 
});
Cordialement.
avatar

Ea
Aidactif
Aidactif

Messages : 23536
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

En cours Re: Temps de connexion total d'un membre

Message par Chacha le Jeu 8 Nov 2018 - 9:53

Bonjour,

Attention, cela fait 6 jours que nous n'avons pas de nouvelles concernant votre demande, si vous ne voulez pas voir votre sujet déplacé à la corbeille, merci de poster dans les 24h qui suivent ce message.

Si votre sujet est résolu, merci d'éditer votre premier message et de cocher l'icône « résolu »
avatar

Chacha
Modéractif
Modéractif

Masculin
Messages : 57978
Inscrit(e) le : 21/08/2010

https://forum.forumactif.com/
Chacha a été remercié(e) par l'auteur de ce sujet.

En cours Re: Temps de connexion total d'un membre

Message par Night Elensar le Jeu 8 Nov 2018 - 19:33

Malheureusement, le compteur se remet à zéro à chaque connexion...il n'y a pas de réel "temps total".
avatar

Night Elensar
Nouveau membre

Féminin
Messages : 16
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

En cours Re: Temps de connexion total d'un membre

Message par Ea le Lun 12 Nov 2018 - 3:22

Bonjour,


En me déconnectant et reconnectant au même compte, ça me redonne bien le temps passé.

Le champ affiché dans le profil est bien changé pour un chiffre après plusieurs minutes ? Et il est remi à 0 après la reconnection ?

Sur un forum de test, si j'ai par exemple 31 minutes de connexion ( screenshot: https://i.imgur.com/4MfGBAI.png) je me déconnecte et reconnecte et je n'ai pas perdu le temps (screenshot: https://i.imgur.com/lZjOCZy.png).

Cordialement.
avatar

Ea
Aidactif
Aidactif

Messages : 23536
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

En cours Re: Temps de connexion total d'un membre

Message par Night Elensar le Lun 12 Nov 2018 - 14:38

Oui, il me remet le compte à zéro ou alors il reprend à 5 minutes ou 9 minutes...alors que ça devrait faire facilement 2h ! xD
Pourtant j'ai bien suivi la procédure !
avatar

Night Elensar
Nouveau membre

Féminin
Messages : 16
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

En cours Re: Temps de connexion total d'un membre

Message par Ea le Lun 12 Nov 2018 - 15:44

Sur le forum indiqué dans le demande je vois dans le script:

Code:
var savingField=12;

C'est le bon ID de champ ? C'est celui dans le script que j'ai indiqué mais c'est étrange que ce soit le même.

Cordialement.
avatar

Ea
Aidactif
Aidactif

Messages : 23536
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum