Problème FA Messenger et templates modifiés

2 participants

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

Résolu Problème FA Messenger et templates modifiés

Message par noxeternam Dim 4 Fév 2024 - 22:02

Version du forum : modernBB
Poste occupé : Fondateur
Navigateur(s) concerné(s) : Google Chrome, Safari
Personnes concernées par le problème : Tous les utilisateurs
Lien du forum : https://amyforumtest.forumactif.com/

Bonjour et merci de vous intéresser à mon problème qui me fait m'arracher les cheveux Rolling Eyes

J'ai créé un forum où je souhaite implémenter le Forumactif Messenger de Ange Tuteur (lien ici). J'ai modifié les templates HTML donc il y a un manque de cohérence entre les noms de classe de mes templates vs. ceux dans le Javascript du Messenger.

Je précise que je suis tombée sur ce sujet en cherchant la solution à mon problème. J'ai donc essayé de faire les modifications suites aux conseils de @"Oka.mi" sur le sujet en question (en adaptant ses changements à mes balises) ; en vain. Je n'arrive pas à récupérer mes infos, que ce soit les pseudos, les avatars, la date, le contenu du message... Et je n'ai même pas la possibilité d'envoyer un message car la barre de chat ne s'affiche pas.

J'ai sincèrement essayé de régler tout ça par moi-même maintes et maintes fois, mais en vain... Au bout de d'un mois d'essais, je m'avoue vaincue. Le Messenger est indispensable pour l'expérience utilisateur de notre forum et j'aimerais vraiment venir à bout de cette fonctionnalité.

Je vous joins ci-dessous mes templates modifiés + le Javascript que j'ai actuellement : https://www.aht.li/3831079/javascript-messenger.txt

Merci d'avance pour votre aide précieuse I love you

index_body:

index_box:

topics_list_box:

viewforum_body:

viewtopic_body:
noxeternam

noxeternam
Nouveau membre

Messages : 4
Inscrit(e) le : 04/02/2024

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

Résolu Re: Problème FA Messenger et templates modifiés

Message par Toryudo Lun 5 Fév 2024 - 8:57

Problème FA Messenger et templates modifiés 4qhGdLE
Bienvenue sur le forum de support de Forumactif

Puisque vous êtes nouveau, voici quelques sujets susceptibles de vous intéresser :
N'hésitez pas à ouvrir un nouveau sujet si vous ne trouvez pas votre réponse.

Bonjour !

On va regarder les problèmes un par un ; qui sait, ça pourra peut-être vous débloquer assez vite.
Pour cette partie du script de base, vous avez un problème déjà fatal :
Code:
// set forum version
FAM.fVersion = document.querySelector('.bodylinewidth') ? 0 :
           document.getElementById('phpbb') ? 1 :
           document.querySelector('div.pun') ? 2 :
           document.getElementById('ipbwrapper') ? 3 :
           document.getElementById('fa_edge') ? 4 :
           document.getElementById('modernbb') ? 5 :
           document.getElementById('dimmer') ? 6 :
           'badapple';

// css selectors by version
FAM.select = {
  forumtitle : (FAM.fVersion == 6 ? '.forum-description h3 a[href^="/f"], .posts-description h3 a[href^="/t"]' :
            'a.forum' + ( FAM.fVersion == 0 ? 'link' : 'title' ) + ', a.topictitle'),
  post : '.post' + (FAM.fVersion == 6 ? '-wrap' : '') + '[class*="post--"]',

  row : [
   'tr', // phpbb2
   '.row', // phpbb3
   'tr', // punbb
   'tr', // invision
   '.forum-block', // forumactif edge
   '.row', // modernbb
   '.forum-section, .posts-section' // awesomebb
  ][FAM.fVersion],

  row_date : [
   '.row3Right .postdetails, .row3.over .gensmall', // phpbb2
   '.lastpost span:not(.lastpost-avatar)', // phpbb3
   '.tcr', // punbb
   '.lastaction, td:last-child > span:last-child', // invision
   '.forum-lastpost', // forumactif edge
   '.lastpost > span:not(.lastpost-avatar)', // modernbb
   '.forum-lastpost-inner > span, .posts-lastpost-inner > span' // awesomebb
  ][FAM.fVersion],

  forum_info : [
   '.topictitle', // phpbb2
   '.dterm', // phpbb3
   '.tdtopics', // punbb
   '.row1', // invision
   '.forum-info', // forumactif edge
   '.topic-title-container', // modernbb
   '.forum-description, .posts-description' // awesomebb
  ][FAM.fVersion],

  new_topic : [
   '#i_post', // phpbb2
   '.i_post', // phpbb3
   '.i_post', // punbb
   '.i_post', // invision
   '.i_post', // forumactif edge
   'a.ion-edit[href$="mode=newtopic"]', // modernbb
   'a.btn.btn-default[href$="mode=newtopic"]' // awesomebb
  ][FAM.fVersion],

  post_reply : [
   '#i_reply', // phpbb2
   '.i_reply', // phpbb3
   '.i_reply', // punbb
   '.i_reply', // invision
   '.i_reply', // forumactif edge
   'a.ion-reply[href$="mode=reply"]', // modernbb
   'a.btn.btn-default[href$="mode=reply"]' // awesomebb
  ][FAM.fVersion],

  post_avatar : [
   '.postdetails.poster-profile img', // phpbb2
   '.postprofile dt img', // phpbb3
   '.user-basic-info img', // punbb
   '.postprofile dt img', // invision
   '.user-avatar img', // forumactif edge
   '.postprofile-avatar img', // modernbb
   '.post-author-avatar img' // awesomebb
  ][FAM.fVersion],

  post_name : [
   '.name', // phpbb2
   '.postprofile dt strong', // phpbb3
   '.username', // punbb
   '.postprofile dt strong', // invision
   '.username', // forumactif edge
   '.postprofile-name', // modernbb
   '.post-author-name' // awesomebb
  ][FAM.fVersion],

  post_date : [
   '.postdetails:not(.poster-profile)', // phpbb2
   '.author', // phpbb3
   '.posthead h2', // punbb
   '.author', // invision
   '.author', // forumactif edge
   '.topic-date', // modernbb
   '.post-date' // awesomebb
  ][FAM.fVersion],

  post_message : [
   '.postbody > div', // phpbb2
   '.content > div', // phpbb3
   '.entry-content > div:not(.vote) > div', // punbb
   '.post-entry > div:not(.clear, .vote)', // invision
   '.content > div', // forumactif edge
   '.content > div', // modernbb
   '.post-content' // awesomebb
  ][FAM.fVersion],

  pagination : [
   'a[href="javascript:Pagination();"]', // phpbb2
   '.pagination:not(strong)', // phpbb3
   'p.paging', // punbb
   'div.pagination', // invision
   '.pagination:not(strong)', // forumactif edge
   '.pagination:not(strong)', // modernbb
   '.pagination:not(strong)' // awesomebb
  ][FAM.fVersion],

  page_back : [
   '.pagination .sprite-arrow_subsilver_left', // phpbb2
   '.pag-img:first-child', // phpbb3
   '.sprite-arrow_prosilver_left', // punbb
   '.sprite-arrow_prosilver_left', // invision
   '.pag-img:first-child', // forumactif edge
   '.pag-img:first-child', // modernbb
   '.pag-img:first-child' // awesomebb
  ][FAM.fVersion]
};

Ça ne va pas être simple à comprendre, mais il faut comprendre la logique des tableaux en informatique.
Prenons l'exemple de l'élément row :
Code:
  row : [
   'tr', // phpbb2
   '.row', // phpbb3
   'tr', // punbb
   'tr', // invision
   '.forum-block', // forumactif edge
   '.row', // modernbb
   '.forum-section, .posts-section' // awesomebb
  ][FAM.fVersion],

Ici, on veut associer à la variable row une valeur.
Cette valeur, on veut la trouver dans un tableau de valeurs, tableau dont les éléments sont séparés par une virgule.
Le premier élément du tableau (indice 0) est égal à "tr"
Le deuxième élément du tableau (indice 1) est égal à ".row"
Le troisième élément du tableau (indice 2) est égal à "tr"
Le quatrième élément du tableau (indice 3) est égal à "tr"
Le cinquième élément du tableau (indice 4) est égal à ".forum-block"
Le sixième élément du tableau (indice 5) est égal à ".row"
Le septième élément du tableau (indice 6) est égal à ".forum-section, .posts-section"

Et parmi toutes ces valeurs, on cherche celle dont l'indice est égal à FAM.fVersion
A quoi est égal ce FAM.fVersion ?
Code:
FAM.fVersion = document.querySelector('.bodylinewidth') ? 0 :
           document.getElementById('phpbb') ? 1 :
           document.querySelector('div.pun') ? 2 :
           document.getElementById('ipbwrapper') ? 3 :
           document.getElementById('fa_edge') ? 4 :
           document.getElementById('modernbb') ? 5 :
           document.getElementById('dimmer') ? 6 :
           'badapple';

Ici, on cherche à trouver un élément distinct sur chaque version, je vous passe le détail... mais en gros, si on est sur la version ModernBB, alors le script renvoie la valeur 5.
Si on revient à la valeur de row, on va donc chercher le sixième élément du tableau (indice 5), qui était donc '.row' (et on peut d'ailleurs voir que le commentaire "// modernbb" avait raison, on est bien sur la version ModernBB, c'est bien la valeur qu'on veut récupérer).

Si je regarde votre code maintenant, vous allez comprendre tout de suite :
Code:
  row : [
   '.cat_container, .af_suj1', // modernbb
  ][FAM.fVersion],

Vous avez un seul élément dans votre tableau : c'est le premier élément (indice 0) qui est donc égal à ".cat_container, .af_suj1".
Maintenant, ça vous fait une belle jambe, puisque FAM.fVersion est quand même égal à 5. Le script va chercher l'élément d'indice 5 (sixième élément donc) dans le tableau, élément qui n'existe pas, donc le script ne trouve rien, d'où le fait que vous n'ayez pas de résultat à de nombreux endroits.

Je pense que vous avez pensé bien faire en faisant le ménage, mais non, il fallait garder les autres éléments, même "inutiles" !
Ou alors, changer plus profondément le code, mais ce serait probablement plus compliqué et plus risqué.
Vous pouvez remettre les autres éléments des autres versions pour toutes les variables citées dans le script de base, et ça devrait déjà fonctionner un peu mieux !
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1372
Inscrit(e) le : 31/03/2020

https://deus-academia.forumactif.com/
Toryudo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème FA Messenger et templates modifiés

Message par noxeternam Lun 5 Fév 2024 - 9:56

Bonjour et merci pour cette première réponse rapide !

En effet, comme vous avez dit, je pensais bien faire en faisant le ménage Rolling Eyes

J'ai bien remis les éléments (en gardant mes classes censées être adaptées à mes templates) mais ça ne fonctionne toujours pas.

Il y avait une différence : il récupérait la div du bouton "Like" dans les messages, mais pas le message en lui même.
De ce fait, j'ai entouré la balise {postrow.displayed.MESSAGE} par une div, changé post_message : [ '.post_message', ] par '.post_message > div' pour qu'il ne récupère que la première div de .post-message (soit, la balise {postrow.displayed.MESSAGE} ) et maintenant ça fonctionne à ce niveau là, il arrive bien à récupérer le contenu du message (mais pas les autres infos, pourtant je pense avoir mis les bonnes classes...)

Code:
// set forum version
        FAM.fVersion = document.querySelector('.bodylinewidth') ? 0 :
                      document.getElementById('phpbb') ? 1 :
                      document.querySelector('div.pun') ? 2 :
                      document.getElementById('ipbwrapper') ? 3 :
                      document.getElementById('fa_edge') ? 4 :
                      document.getElementById('modernbb') ? 5 :
                      document.getElementById('dimmer') ? 6 :
                      'badapple';

        // css selectors by version
        FAM.select = {
          forumtitle : (FAM.fVersion == 6 ? '.forum-description h3 a[href^="/f"], .posts-description h3 a[href^="/t"]' :
                        'a.forum' + ( FAM.fVersion == 0 ? 'link' : 'title' ) + ', a.topictitle'),
          post : '.bp_post' + (FAM.fVersion == 6 ? '-wrap' : '') + '[class*="post--"]',

          row : [
            'tr', // phpbb2
            '.row', // phpbb3
            'tr', // punbb
            'tr', // invision
            '.forum-block', // forumactif edge
            '.cat_container, .af_suj1', // modernbb
            '.forum-section, .posts-section' // awesomebb
          ][FAM.fVersion],

          row_date : [
            '.row3Right .postdetails, .row3.over .gensmall', // phpbb2
            '.lastpost span:not(.lastpost-avatar)', // phpbb3
            '.tcr', // punbb
            '.lastaction, td:last-child > span:last-child', // invision
            '.forum-lastpost', // forumactif edge
            '.lastpost > span:not(.avatarcat)', // modernbb
            '.forum-lastpost-inner > span, .posts-lastpost-inner > span' // awesomebb
          ][FAM.fVersion],

          forum_info : [
            '.topictitle', // phpbb2
            '.dterm', // phpbb3
            '.tdtopics', // punbb
            '.row1', // invision
            '.forum-info', // forumactif edge
            '.page-title', // modernbb
            '.forum-description, .posts-description' // awesomebb
          ][FAM.fVersion],

          new_topic : [
            '#i_post', // phpbb2
            '.i_post', // phpbb3
            '.i_post', // punbb
            '.i_post', // invision
            '.i_post', // forumactif edge
            '[href$="mode=newtopic"]', // modernbb
            'a.btn.btn-default[href$="mode=newtopic"]' // awesomebb
          ][FAM.fVersion],

          post_reply : [
            '#i_reply', // phpbb2
            '.i_reply', // phpbb3
            '.i_reply', // punbb
            '.i_reply', // invision
            '.i_reply', // forumactif edge
            '[href$="mode=reply"]', // modernbb
            'a.btn.btn-default[href$="mode=reply"]' // awesomebb
          ][FAM.fVersion],

          post_avatar : [
            '.postdetails.poster-profile img', // phpbb2
            '.postprofile dt img', // phpbb3
            '.user-basic-info img', // punbb
            '.postprofile dt img', // invision
            '.user-avatar img', // forumactif edge
            '.post_avatar img', // modernbb
            '.post-author-avatar img' // awesomebb
          ][FAM.fVersion],

          post_name : [
            '.name', // phpbb2
            '.postprofile dt strong', // phpbb3
            '.username', // punbb
            '.postprofile dt strong', // invision
            '.username', // forumactif edge
            '.post_pseudo', // modernbb
            '.post-author-name' // awesomebb
          ][FAM.fVersion],

          post_date : [
            '.postdetails:not(.poster-profile)', // phpbb2
            '.author', // phpbb3
            '.posthead h2', // punbb
            '.author', // invision
            '.author', // forumactif edge
            '.post_date', // modernbb
            '.post-date' // awesomebb
          ][FAM.fVersion],

          post_message : [
            '.postbody > div', // phpbb2
            '.content > div', // phpbb3
            '.entry-content > div:not(.vote) > div', // punbb
            '.post-entry > div:not(.clear, .vote)', // invision
            '.content > div', // forumactif edge
            '.post_message > div', // modernbb
            '.post-content' // awesomebb
          ][FAM.fVersion],

          pagination : [
            'a[href="javascript:Pagination();"]', // phpbb2
            '.pagination:not(strong)', // phpbb3
            'p.paging', // punbb
            'div.pagination', // invision
            '.pagination:not(strong)', // forumactif edge
            '.pagination:not(strong)', // modernbb
            '.pagination:not(strong)' // awesomebb
          ][FAM.fVersion],

          page_back : [
            '.pagination .sprite-arrow_subsilver_left', // phpbb2
            '.pag-img:first-child', // phpbb3
            '.sprite-arrow_prosilver_left', // punbb
            '.sprite-arrow_prosilver_left', // invision
            '.pag-img:first-child', // forumactif edge
            '.pag-img:first-child', // modernbb
            '.pag-img:first-child' // awesomebb
          ][FAM.fVersion]
        };
noxeternam

noxeternam
Nouveau membre

Messages : 4
Inscrit(e) le : 04/02/2024

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

Résolu Re: Problème FA Messenger et templates modifiés

Message par Toryudo Lun 5 Fév 2024 - 10:54

Quand je recopie tout votre code, j'ai l'impression qu'il ne me reste plus qu'un seul problème sur mon forum test : la récupération de l'avatar dans la liste des sujets.
Ça se passe au niveau de cette ligne de code :
Code:
var avatar = $(FAM.fVersion == 6 ? '.avatar-default img' : '.avatarcat img', row)[0],
Qu'il faut simplement remplacer par celle-là :
Code:
var avatar = $(FAM.fVersion == 6 ? '.avatar-default img' : '.af_suj6 img', row)[0],

Qu'est-ce qu'il reste d'autre de votre côté ?
J'ai bien les noms des sujets, la date, j'ai bien les messages, les avatars... Je n'utilise pas le Forumactif Messenger donc je ne me rends pas compte, mais qu'est-ce qu'il vous manque encore ?
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1372
Inscrit(e) le : 31/03/2020

https://deus-academia.forumactif.com/
Toryudo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème FA Messenger et templates modifiés

Message par noxeternam Lun 5 Fév 2024 - 17:52

Re,

Je vous joins une capture d'écran du résultat que j'ai de mon côté. Je ne vois pas le pseudo, ni l'avatar, ni la date. De plus, je n'ai pas la barre de chat qui permet d'envoyer un message. Bref, il me manque quasi... tout. Je précise que j'ai vidé le cache, supprimé les cookies, etc...
Screenshot:

Je me permets également de vous donner le lien d'un forum où est correctement installé le Messenger pour que vous puissiez vous faire une idée de comment c'est censé fonctionner. Cliquez sur l'icone de téléphone en bas à gauche pour ouvrir le Messenger.
+ le lien de la démo du plugin
Pour contextualiser : on l'utilise sur les forums RPG pour les sujets qui concernent un échange sms entre deux personnages : ça évite d'aller à chaque fois dans le dit sujet, de rafraichir la page, et ça donne une expérience utilisateur plus sympa puisque ça reprend davantage la forme des échanges sms/chat.

Merci pour votre aide !
noxeternam

noxeternam
Nouveau membre

Messages : 4
Inscrit(e) le : 04/02/2024

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

Résolu Re: Problème FA Messenger et templates modifiés

Message par Toryudo Mar 6 Fév 2024 - 6:52

Bonjour !

Effectivement, je remarque qu'il y a une chose de plus qui est modifiée par rapport à ce que vous avez fourni, sans doute dans le Template overall_header. On revient sur ce morceau de code :
Code:
FAM.fVersion = document.querySelector('.bodylinewidth') ? 0 :
        document.getElementById('phpbb') ? 1 :
        document.querySelector('div.pun') ? 2 :
        document.getElementById('ipbwrapper') ? 3 :
        document.getElementById('fa_edge') ? 4 :
        document.getElementById('modernbb') ? 5 :
        document.getElementById('dimmer') ? 6 :
        'badapple';

On cherche ici à déterminer la version de votre forum avec un élément qui existe sur chaque page et est unique à chaque version.
Je pense que vous avez modifié votre Template overall_header, parce que de base, le body s'appelle comme ceci :
Code:
<body id="modernbb">
C'est ce qui permet au script de comprendre que FAM.fVersion doit être égal à 5.
Sur votre forum, vous avez ceci :
Code:
<body id="phpbb">
Donc le script pense que vous êtes en phpbb3, il ne récupère pas les bonnes informations non plus.
Le plus simple, pour ne pas vous faire retoucher à tout, ce sera juste de remplacer les 8 lignes du script par :
Code:
FAM.fVersion = 5;

Normalement, ça résout tous les problèmes d'affichage.
Par contre, la barre de chat, je ne vois pas encore ce que ça pourrait être, elle fonctionne bien sur mon forum de test ; je vais continuer de réfléchir et de regarder comment ça fonctionne, le forum en question n'est peut-être pas configuré comme il faut !
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1372
Inscrit(e) le : 31/03/2020

https://deus-academia.forumactif.com/
Toryudo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème FA Messenger et templates modifiés

Message par noxeternam Mar 6 Fév 2024 - 16:38

Bonjour,

J'ai bien remplacé par "FAM.fVersion = 5;" et ça a réglé tous les soucis ! J'ai même retrouvé la barre de chat et toutes les options qui vont avec.

Donc merci beaucoup !

Vous avez été super réactif et d'une grande aide pour un problème sur lequel j'étais depuis si longtemps.

Ça devrait être résolu de ce fait, je n'hésiterai pas à revenir par ici si j'ai un autre problème dans le futur.

Merci merci merci ! Problème FA Messenger et templates modifiés 1f60d Problème FA Messenger et templates modifiés 1f60d
noxeternam

noxeternam
Nouveau membre

Messages : 4
Inscrit(e) le : 04/02/2024

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

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

- Sujets similaires

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