La date/heure actuelle est Ven 29 Mar 2024 - 5:51
3 résultats trouvés pour logout
Notifications pour rien
Détails techniques
Version du forum : InvisionPoste occupé : Administrateur
Navigateur(s) concerné(s) : Google Chrome
Personnes concernées par le problème : Plusieurs utilisateurs
Problème apparu depuis : Février 2020
Lien du forum : http://www.anciens-cols-bleus.net
Description du problème
Bonjour à toutes et à tousConcernant ce problème, j'avais déjà demandé de l'aide:
- 05/02/2020
https://forum.forumactif.com/t402325-notifications-pour-rien#3356817
- 23/02/2020
https://forum.forumactif.com/t402403-script-d-annonce-de-mp#3357498
- Pour info, Fanch a déjà eu ce problème en 2013
https://forum.forumactif.com/t354405-resolu-code-java-qui-bug-annonce-d-un-mp#3018139
Des membres reçoivent des notifications de message "Vous avez reçu un MP", alors qu'il n'y a rien dans leur messagerie privée du forum.
Script sous le spoiler:
- Spoiler:
- var sec_inter= 60;
function cook_no_new_message() { my_setcookie("new_message",-new Date(),1,0); no_new_message(); }
function no_new_message() { $('#new_message').remove(); }
function cook_new_message() { my_setcookie("new_message",+new Date(),1,0); new_message(); }
function new_message() { $("body").append('<div id="new_message" style="position:fixed;bottom:50%;left:50%"><a href="/privmsg?folder=inbox" onClick="cook_no_new_message();return true;"><img src="http://acbpr.fr/cb/boutons/mp.png" /></a></div>'); }
function new_message_update() {
var dnew_message= my_getcookie("new_message");
var enew_message= dnew_message>0;
if(($('#new_message').length>0)==enew_message)
{
if(!enew_message) dnew_message*=-1;
if(dnew_message<+new Date()-1000*sec_inter)
$.get('http://'+document.location.host+'/privmsg?mode=newpm',function(data){
if(!data.match("Vous n'avez pas de nouveau message privé")!=enew_message)
{
if(enew_message) cook_no_new_message();
else cook_new_message();
}
});
}
else
{
if(enew_message) new_message();
else no_new_message();
}
}
$(function(){
if(!$("#logout").length) return;
if($('#i_icon_mini_new_message').length) cook_new_message();
else cook_no_new_message();
setInterval("new_message_update()",5000);
});
- le Mer 23 Déc 2020 - 9:54
- Rechercher dans: Archives des problèmes avec un code
- Sujet: Notifications pour rien
- Réponses: 25
- Vues: 1469
Problème affichage barre de navigation
Détails techniques
Version du forum : phpBB2
Poste occupé : Fondateur
Navigateur(s) concerné(s) : Google Chrome
Capture d'écran du problème :
- Voir l'image:
Personnes concernées par le problème : Tous les utilisateurs
Lien du forum : (lien masqué, vous devez poster pour le voir)
Description du problème
Bonsoir,Je viens vous voir pour vous présenter le problème suivant;
N'aimant que moyennement l'espace "de base" se trouvant entre chaque mot de la barre de navigation, j'ai souhaité le réduire. Je suis passé par une div dans le template overall_header pour pouvoir modifier l'apparence de celle-ci depuis le css. J'y ai appliqué la balise word-spacing: -10px; mais comme les menus de message et de connexion peuvent se retrouver avec plusieurs mots pour un même lien disons. Le menu "déconnexion [utilisateur]" par exemple, pour résoudre le problème j'ai utilisé la balise "#logout {word-spacing:0px;}" ce qui a très bien fonctinné comme sur la capture d'écran.
Or, le soucis reviens pour le "1 nouveau message". Je souhaiterais donc que ceci ne subisse pas le word-spacing du menu en général, y'a-t-il une balise tel que #logout ou bien un moyen pour résoudre le problème?
Merci de votre attention.
- le Dim 26 Avr 2015 - 18:36
- Rechercher dans: Archives des problèmes avec un code
- Sujet: Problème affichage barre de navigation
- Réponses: 2
- Vues: 886
Exécuter un code javascript sous certaines conditions
Exécuter un code Javascript sous certaines conditions |
Le Javascript est un langage de script qui permet à son exécution de modifier des éléments de la page. Il est possible de mettre des codes Javascript dans le Panneau d'administration pour qu'ils soient exécutés sur le forum (voir Gestion des codes Javascript). Accessibilité aux éléments de la page par le code JavascriptLe code javascript a accès à tout les éléments existant avant là où il se trouve, les codes javascript mis dans le panneau d'administration sont mis dans la partie <head> ... </head> du forum (où on spécifie l'adresse de la feuille de style, le titre de la page, l'encodage de la page), ce qui veut dire que le script n'a accès au départ à aucun des éléments du contenu de la page (vu qu'ils se trouvent après). Comment accéder aux éléments se trouvant après le script ?C'est assez simple, il suffit de retarder l'exécution du code. Il y a moyen de le faire avec des dispositifs de base de Javascript, mais en les utilisant mal (et beaucoup de scripts existants les utilisent mal), deux scripts auraient de fortes chances de ne pas fonctionner l'un avec l'autre. Alors plutôt que d'utiliser ce moyen, il est préférable d'utiliser celui fourni par jQuery (qui est une bibliothèque de javascript disposant de fonctions simplifiant les actions à faire pour arriver au résultat voulu). En jQuery pour retarder l'exécution du code à quand tout les éléments de la page existent, il suffit de mettre :
Le code que vous mettez à la place de /* votre code javascript */ sera exécuté à la fin de la page ( c'est à dire quand tout les éléments de la page existent et sont accessibles par le code ). Pourquoi ne pas le faire automatiquement sur tout les codes ?De nombreuses raisons peuvent faire que votre script n'a pas besoin d'accéder aux éléments de la page, par exemple, si le titre de page est Poster un nouveau sujet et que nous souhaitons le remplacer par Ouvrir un nouveau topic de discussion, il suffit de mettre ce script :
Et pas besoin de le retarder, ça fonctionne bien juste comme cela. Comment mettre une condition sur le code ?C'est très simple il suffit de mettre :
Comment faire une condition ?Il suffit de mettre un élément, il sera évalué et suivant sa valeur la valeur de la condition sera vrai ou faux. Ce qui est vrai :
Ce qui est faux :
Pour comparer 2 valeurs (et que le résultat donne vrai ou faux) il faut utiliser un opérateur de comparaison parmi les suivants :
Comment combiner plusieurs conditions ?Vous pouvez soit combiner plusieurs if, par exemple :
Ou bien il y a des opérateurs qui permettent de combiner une condition à l'autre :
Ainsi l'exemple de juste au dessus pourrait s'écrire simplement :
ExemplesVous avez tout ce qu'il vous faut pour exécuter un code javascript sous certaines conditions, mais voici quelques exemples pour mettre cela en application. Changer la bannière si on est sur le sujet 40 :Tout d'abord, il faut mettre le script juste sur les pages de sujet. Ensuite chaque sujet à un numéro qu'on retrouve dans l'adresse de la page, par exemple /t40- pour le sujet 40 (ou /t40p15- pour une page du sujet). Tout les éléments concernant la page, se trouve dans l'objet document, ce qui nous intéresse dedans est document.location qui a plusieurs propriétés concernant la page sur laquelle on se trouve, par exemple si on était sur https://forum.forumactif.com/h3-tutoriels?test#bonjour, voici les propriétés qu'il y aurait :
Grâce à ces variables on a moyen de récupérer l'adresse de la page sur laquelle on est (ensuite il suffit de la tester pour voir si on est sur la bonne page), ici donc les adresses pourraient être :
Donc il faut que notre test fonctionne avec tout cela. On ne peut pas faire simplement un test d'égalité car si le sujet fait 4 pages il faudrait déjà faire :
Et si il en fait 200 n'en parlons pas. Donc plutôt que d'utiliser cela on va utiliser les expressions régulières (des "modèles" pour lesquels on peut tester si une chaîne de caractère y correspond ou pas). Pour faire une expression régulière il suffit de mettre :
Et on peut l'utiliser de plusieurs façons, pour ce qu'on veut faire on peut l'utiliser de cette façon :
Si l'expression régulière /test/ est trouvée dans la chaîne, vrai est renvoyé sinon faux est renvoyé. Donc il nous suffit de trouver une expression régulière qui correspond à l'url de la page et ce sera notre condition pour exécuter le code. L'expression régulière qui convient ici si on teste le document.location.pathname (donc /t40p2145-nom-du-sujet) est :
Le ^ permet de signifier ce que je trouve doit commencer par ce qui suit, le \/ c'est juste pour chercher le / (vu que c'est le caractère qui signale la fin de l'expression régulière on doit mettre \/ pour l'utiliser dedans), ensuite le (contenu)?, les parenthèse permettent juste de sélectionner une partie, et le ? signifie ce qui précède doit être présent ou pas (donc le contenu de la parenthèse est facultatif), le [1-9], le [ et ] signifie une des lettres qui me compose (donc par exemple aaa[edc]bbb ça trouvera aaaebbb, aaadbbb et aaacbbb), le trait d'union à l'intérieur et entre deux caractère signifie "et tout ce qu'il y a entre" (donc [1-7] c'est pareille à mettre [1234567]) et puis pour finir le * signifie ce qui précède est présent 0 ou plusieurs fois. Donc si on voulait exprimer ce que fait le /^\/t40(p[1-9][0-9]*)?-/ ce serait trouver les chaînes de caractères qui commencent par /t40 après quoi il peut y avoir p1 à p9999... (autant qu'on veut) après quoi il y a un trait d'union. Donc on a notre code final :
Pour ce qui est du code pour changer la bannière, le $("selecteur") (de la librairie jQuery inclue sur les forum Forumactif) permet de sélectionner des éléments par un sélecteur CSS, le sélecteur #pun-logo,#i_logo,#logo img permet de sélectionner la bannière (#i_logo celle de PhpBB2, #logo img celle de PhpBB3 et Invision et #pun_logo celle de... PunBB), ensuite à cette sélection d'élément on peut faire un peu tout ce qu'on veut, nous on utilise la méthode attr("nom de l'attribut","valeur qui doit lui être mise") qui permet de modifier la valeur d'un attribut afin de changer l'adresse de l'image dans notre cas. Plus d'informations sur les expressions régulières : Plus d'informations sur les sélecteurs d'élément en jQuery : Plus d'informations sur la méthode attr() de jQuery : Mettre une alerte "hello amigo" à un membre qui n'avait pas visité le forum depuis 24hTout d'abord pour savoir si un membre est connecté ou pas, on peut utiliser le lien de déconnexion de la barre de menu, il est comme ceci :
Et n’apparaît évidemment que si on est connecté, on peut le sélectionner facilement avec $("#logout") et il y a la propriété length de jQuery qui peut nous renvoyer combien d'éléments sont sélectionnés (donc si on est connecter $("#logout").length renverra 1, et si on est déconnecté cela renverra 0). Ensuite pour savoir si le membre n'a pas ouvert de page depuis 24h, il suffit à chaque page ouverte d'enregistrer un cookie avec la date. Pour avoir la date il faut faire new Date() qui nous renvoie un objet Date contenant la date actuelle (et pour le transformé en entier qui sont plus facile à utiliser, il suffit de mettre un + devant). Forumactif inclut des fonctions pour lire et écrire des cookies sur ses forums. Il suffit de faire my_setcookie("nom du cookie","valeur",1,0) pour écrire un cookie et my_getcookie("nom du cookie") pour lire un cookie (si on lit un cookie qui n'existe pas, la valeur null sera renvoyée). On a tout ce qu'il nous faut, voici le code pour résoudre notre désir :
Pour plus d'information sur la propriété length de jQuery : Afficher un message à l'écriture d'un nouveau sujet dans le forum 6, 7 et 8Cette fois encore, il faut faire en fonction de l'adresse, l'adresse pour écrire un message dans le forum 7 est :
Donc il faut que le .document.location.pathname soit ./post et que le .document.location.search soit .?f=7&mode=newtopic ou .?f=8&mode=newtopic ou .?f=9&mode=newtopic, on a ainsi déjà notre condition :
Il faut mettre \? à la place de ? quand on veut le chercher, car ? est un caractère spécial, et le $ signifie ce qui précède doit finir la ligne. Il nous reste juste à mettre un message, ce qui nous donne :
prepend est une méthode de jQuery qui permet d'ajouter du code html au début d'un élément, aussi il faut faire attention car on met le contenu à afficher sous forme de chaîne javascript, dans une chaîne de texte javascript :
S'il est dans la chaîne, il faut mettre devant le caractère de fin et début (qui est soit ' soit ") un antislash (\). |
Cette astuce a été proposée par Ea. Et actualisée en août 2021. Aucune reproduction possible sans notre accord, conformément à l’article L122-1 du CPI. |
- le Dim 31 Juil 2011 - 7:16
- Rechercher dans: Trucs et astuces
- Sujet: Exécuter un code javascript sous certaines conditions
- Réponses: 0
- Vues: 11820