Bouton mentionner dans l'éditeur : avoir la liste de tous les membres du forum

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

Résolu Bouton mentionner dans l'éditeur : avoir la liste de tous les membres du forum

Message par mss92 le Ven 9 Oct 2015 - 11:34

Détails techniques


Version du forum : Invision
Poste occupé : Fondateur
Navigateur(s) concerné(s) : Mozilla Firefox, Internet Explorer, Autre
Personnes concernées par le problème : Tous les utilisateurs
Lien du forum : http://fandemetro.forumgratuit.org

Description du problème

Bonjour,

En mai dernier a été publié un tutoriel avec des codes javascript permettant de faciliter l'utilisation du système de mention.

Pour le bouton mentionner dans l'éditeur, on ne peut avoir que la liste de ses amis. Je voudrais donc savoir s'il serait possible d'avoir un code permettant d'avoir la liste de tous les membres du forum, si possible triée par ordre alphabétique.

Merci d'avance.


Dernière édition par mss92 le Ven 9 Oct 2015 - 15:11, édité 1 fois

mss92
*

Masculin
Messages : 46
Inscrit(e) le : 13/03/2012

http://fandemetro.forumgratuit.org
mss92 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Bouton mentionner dans l'éditeur : avoir la liste de tous les membres du forum

Message par Ange Tuteur le Ven 9 Oct 2015 - 13:44

Bonjour mss92,

Utiliser le script suivant :
Code:
$(function(){
  if (!$.sceditor || /\/privmsg/.test(window.location.pathname)) return;
 
  window.$fa_getting_member = false;

  $.sceditor.command.set('mention', {
      dropDown : function(editor, caller, callback) {
        var a = document.createElement('DIV'), b = document.createElement('INPUT'), c = document.createElement('INPUT'), s = document.createElement('SELECT');
        b.type = 'button';
        b.value = 'Insert';
        b.className = 'button';
 
        c.type = 'text';
        c.id = 'fa-mention';
        c.onkeyup = function() {
          if (!$fa_getting_member) {
            $fa_getting_member = true;
            var val = this.value;
           
            $.get('/memberlist?mode=lastvisit&order=DESC&submit=Ok&username=' + encodeURIComponent(val) + '&change_version=prosilver', function(d) {
              var avatar = $('.avatar-mini', d),
                  select = document.getElementById('faMemberList'),
                  str = '<option value="' + val + '">' + val + '...</option>',
                  i = 0, j = avatar.length, t;

              for (; i < j; i++) {
                t = $(avatar[i]).text().replace(/^\s|\s$/g, '');
                str += '<option value="' + t + '">' + t + '</option>';
              }

              select.innerHTML = str;
              $fa_getting_member = false;
            });
          }
        };
 
        a.innerHTML = '<div><label for="fa-mention">Pseudo de l\'utilisateur :</label></div><div><label>Mentionner un membre :</label></div><div></div>';
        a.firstChild.appendChild(c);
        a.lastChild.appendChild(b);
 
        s.innerHTML = '<option value="">Trouver un nom d\'utilisateur</option>';
        s.id = 'faMemberList';
        s.onchange = function() {
          c.value = s.value;
        };

        a.getElementsByTagName('DIV')[1].appendChild(s);
 
        b.onclick = function() {
            c.value && callback(c.value);
            editor.closeDropDown(true);
        };
 
        editor.createDropDown(caller, 'insertmention', a);
      },
 
      exec : function(c) { mention(c, this) },
      txtExec : function(c) { mention(c, this) },
 
      tooltip : 'Mentionner un membre'
  });
 
  toolbar = toolbar.replace(/quote,/,'mention,quote,');
 
  function mention(c, e) {
      $.sceditor.command.get('mention').dropDown(e, c, function(pseudo) {
        e.insertText('@"' + pseudo + '" ');
      });
  }
});

Ceci devrait afficher résultats similaires que vous tapez. Un petit exemple :

Ange Tuteur
****

Masculin
Messages : 477
Inscrit(e) le : 16/11/2013

https://github.com/SethClydesdale
Ange Tuteur a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Bouton mentionner dans l'éditeur : avoir la liste de tous les membres du forum

Message par mss92 le Ven 9 Oct 2015 - 14:29

Votre code ne fonctionne pas très bien.



Lorsque je ne tape rien dans la zone de texte, il n'y a pas de liste. Lorsque je tape un motif, cela m'affiche uniquement les noms contenant ce motif, par ordre de dernière connexion (par exemple *a* permet d'avoir tous les utilisateurs ayant un a dans leur pseudo). Lorsque je tape * (astérisque), cela m'affiche uniquement la liste des 20 derniers membres connectés, par ordre de dernière connexion (de la plus récente à la plus ancienne).

Ce que je souhaiterais avoir, c'est :
- si on ne tape rien dans la zone de texte, on obtient la liste de tous les membres du forum (pas seulement les 20 derniers connectés), par ordre alphabétique (pour faciliter la recherche d'un membre en particulier)
- recherche par motif toujours possible.

mss92
*

Masculin
Messages : 46
Inscrit(e) le : 13/03/2012

http://fandemetro.forumgratuit.org
mss92 a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Bouton mentionner dans l'éditeur : avoir la liste de tous les membres du forum

Message par Ange Tuteur le Ven 9 Oct 2015 - 14:53

Hum.. remplacer le script par :
Code:
$(function(){
  if (!$.sceditor || /\/privmsg/.test(window.location.pathname)) return;

  $.sceditor.command.set('mention', {
      dropDown : function(editor, caller, callback) {
        var a = document.createElement('DIV'), b = document.createElement('INPUT'), c = document.createElement('INPUT'), s = document.createElement('SELECT');
        b.type = 'button';
        b.value = 'Insert';
        b.className = 'button';
 
        c.type = 'text';
        c.id = 'fa-mention';
        c.onkeyup = function() {
          var val = this.value;
           
          $.get('/memberlist?mode=username&order&username=' + encodeURIComponent(val) + '&change_version=prosilver', function(d) {
            var avatar = $('.avatar-mini', d),
                select = document.getElementById('faMemberList'),
                str = '<option value="' + val + '">' + val + '...</option>',
                i = 0, j = avatar.length, t;

            for (; i < j; i++) {
              t = $(avatar[i]).text().replace(/^\s|\s$/g, '');
              str += '<option value="' + t + '">' + t + '</option>';
            }

            select.innerHTML = str;
          });
        };
 
        a.innerHTML = '<div><label for="fa-mention">Pseudo de l\'utilisateur :</label></div><div><label>Mentionner un membre :</label></div><div></div>';
        a.firstChild.appendChild(c);
        a.lastChild.appendChild(b);
 
        s.innerHTML = '<option value="">Trouver un nom d\'utilisateur</option>';
        s.id = 'faMemberList';
        s.onchange = function() {
          c.value = s.value;
        };

        a.getElementsByTagName('DIV')[1].appendChild(s);
 
        b.onclick = function() {
            c.value && callback(c.value);
            editor.closeDropDown(true);
        };
 
        editor.createDropDown(caller, 'insertmention', a);
      },
 
      exec : function(c) { mention(c, this) },
      txtExec : function(c) { mention(c, this) },
 
      tooltip : 'Mentionner un membre'
  });
 
  toolbar = toolbar.replace(/quote,/,'mention,quote,');
 
  function mention(c, e) {
      $.sceditor.command.get('mention').dropDown(e, c, function(pseudo) {
        e.insertText('@"' + pseudo + '" ');
      });
  }
});

Vous ne pouvez pas afficher tous les membres par défault, parce que ce serait trop. Les résultats dépendent sur les membres affichés dans cette page. ( /memberlist )

Ange Tuteur
****

Masculin
Messages : 477
Inscrit(e) le : 16/11/2013

https://github.com/SethClydesdale
Ange Tuteur a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Bouton mentionner dans l'éditeur : avoir la liste de tous les membres du forum

Message par mss92 le Ven 9 Oct 2015 - 15:11

OK, d'accord.

Merci quand même.

mss92
*

Masculin
Messages : 46
Inscrit(e) le : 13/03/2012

http://fandemetro.forumgratuit.org
mss92 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