CrĂ©dits Photo : You’re invited by anetz, on Flickr

Voici un plugin expérimental qui se propose de prendre le relai du composant "Friend Connections" de BuddyPress, si toutefois ce dernier est désactivé, pour maintenir la disponibilité des fonctionnalités d'invitation à des groupes et d'autocompletion du champ destinataire du composant de messagerie privée.

Avez vous remarqué que, dans le monde "corporate", le terme "Ami" était quelque peu inapproprié ? On utilise plus volontiers des termes tels que "collÚgue", "collaborateur", "client interne", "partenaire", etc.. Mais dans ce monde, je ne crois pas qu'on puisse dire que l'amitié soit une relation encouragée et encore moins recherchée !

Ainsi, on peut ĂȘtre tentĂ©, dans le cadre de communautĂ©s Intranet, de faire l'impasse sur le le composant "Friend Connections" de BuddyPress. Simplement, cette dĂ©sactivation aura un impact sur d'autres fonctionnalitĂ©s de ce plugin car il joue un rĂŽle important dans le comportement de deux autres :

  • Les groupes utilisateurs
  • La messagerie privĂ©e

Pour le premier : il conditionne la disponibilité de la fonction d'invitation à rejoindre un groupe depuis l'écran "send-invites" d'un groupe.

L'interface native de BuddyPress pour gérer les invitations à rejoindre un groupe

Pour le second, il conditionne l'autocompletion du champ destinataire de l'écran de composition d'un message privé.

Autocompletion des destinataires d'un message privé

Alors, pour conserver ces fonctions importantes, on peut ruser et remplacer les occurrences du terme "Ami" par "Contact" dans le fichier de traduction du plugin. Et lĂ  on rĂ©flĂ©chit deux secondes 😉 Dans une entreprise on est tous des contacts les uns des autres ! Du coup, dans cet environnement particulier, je prĂ©fĂšre dĂ©sormais me passer de ce composant.

Oui mais voilĂ ! Une fois le composant "Friend Connections" dĂ©sactivĂ©, quid du comportement des deux composants Ă©voquĂ©s plus haut.. But wait! for the "i'm not a french" readers, i've built this quite long (15 mins!!) screencast to explain why i've created this experimental plugin and also to demonstrate it 🙂

Le composant "Friend Connections" est donc désactivé. Si on s'amuse alors à créer un groupe "masqué", c'est à dire dont seul le créateur et les membres disposent du lien pour y accéder. La fonction d'invitation à rejoindre le groupe n'étant plus disponible, et du fait de son caractÚre "caché" le lien d'adhésion non plus, il y a un fort risque qu'on se sente éternellement trÚs seul dans ce groupe !

Bien entendu, on peut constituer une liste d'utilisateurs à intégrer au groupe, puis envoyer un mail à l'administrateur de la communauté pour que depuis l'interface de gestion des groupes de l'administration WordPress, il les ajoute.. Ce qui me paraßt un peu fastidieux..

Une autre solution est d'avoir recours à "invite anyone", un plugin de l'excellent Boone qui permet comme son nom l'indique d'inviter potentiellement tout le monde à rejoindre le groupe ou le site de la communauté.

Mon propos du jour est donc d'ajouter une nouvelle alternative. Pour la bùtir, j'avais vraiment envie de soigner l'interface de sélection des membres, car il peut y en avoir potentiellement beaucoup !! Si vous "scrollez" vers le haut de cet article, lorsqu'il s'agit de lister les amis, on peut utiliser une série de cases à cocher.. Dans notre cas c'est plus problématique. Aussi, j'ai décidé d'inviter BackBone.js pour m'épauler dans la construction de cette partie du plugin. Voici une librairie qui retient tout particuliÚrement mon attention comme j'ai pu l'expliquer dans un article précédent. Ainsi, aprÚs avoir ausculté le mécanisme de BuddyPress et puisé de l'inspiration dans "invite anyone", j'ai conçu cette interface :

L'interface de sélection des "WorkMates" du plugin.

WorkMates en détail

Ce plugin expĂ©rimental "dĂ©tourne" l'Ă©diteur de media de WordPress (introduit depuis la version 3.5) afin de lister les membres de la communautĂ©, de les sĂ©lectionner en cliquant sur leurs avatars pour remplir la liste de membres Ă  inviter dans la partie basse de la fenĂȘtre, laquelle joue le rĂŽle d'un "panier" de membres qui est rĂ©initialisable Ă  tout moment en cliquant sur le lien "Clear" ou "Annuler" en français. Il est Ă©galement possible d'utiliser le champ de recherche en haut Ă  droite afin de trouver un membre en particulier. Si plus de 20 membres composent la communautĂ©, la navigation au dessus des avatars s'active, et il est possible de passer d'une page Ă  l'autre.

A l'origine conçue pour gĂ©rer et notamment uploader des media, l'Ă©diteur WordPress inclut par dĂ©faut sa version "plupload" ce qui pour le cas prĂ©sent n'Ă©tait d'aucune utilitĂ©. Il a donc fallu ruser sĂ©vĂšre pour garantir le fonctionnement de cet Ă©diteur sans cette librairie spĂ©cifique 😉 Ensuite, j'ai crĂ©Ă© mes propres modĂšles, collections et views BackBone en "extend"-ant ceux et celles de WordPress afin de manipuler des membres et non plus des fichiers ou des images.

Ce plugin, à la différence d'"invite anyone", ne remplace pas l'action du composant "Friend Connections" de BuddyPress dans la gestion des invitations à rejoindre un groupe. D'ailleurs, comme je l'explique dans la vidéo de démonstration en "franglish" : si ce dernier est activé, WorkMates se met en mode "veille". En revanche, il s'enclenche dés que le composant "Friend Connections" est désactivé, garantissant ainsi la disponibilité d'invitation à rejoindre des groupes et ce pour l'intégralité des inscrits à la communauté.

Ce n'est pas tout! Lorsque le composant "Friend Connections" est désactivé, on a vu précédemment que l'autocompletion des destinataires de la messagerie privée n'était plus disponible. Il s'agit alors de se rendre sur le champ de profil d'un membre pour cliquer sur le bouton "Private Message" pour pouvoir précisément lui en envoyer un. Or un des avantages de ce composant est de pouvoir discuter à plusieurs à l'abri des regards. Aussi WorkMates, s'accroche à la globale buddypress()->messages->autocomplete_all pour la définir à true et permettre ainsi de bénéficier de l'autocompletion pour tous les membres et ce indépendamment de l'activation du composant "Friend Connections". Pour information, si vous recherchez uniquement ce comportement pour la messagerie privée, il vous suffit de définir la constante adéquate dans votre wp-config.php par exemple.

// Autocomplete sur tous les utilisateurs
define( 'BP_MESSAGES_AUTOCOMPLETE_ALL', true );

Enfin, dernier point : si toutefois le composant des profils Ă©tendus Ă©tait dĂ©sactivĂ©, j'ai prĂ©vu un filtre pour permettre Ă  cette autocompletion de s'effectuer malgrĂ© tout, en attendant la rĂ©solution de ce ticket 😉

Vous pouvez jouer avec le plugin en veillant Ă  disposer de cette configuration minimale :

  1. WordPress 3.8 RC
  2. BuddyPress 1.9-beta2

Petite astuce en passant, j'anticipe une question qui risque de m'ĂȘtre posĂ©e ! Si vous souhaitez modifier le titre de l'onglet "Invite Workmates", il vous suffit depuis le functions.php du thĂšme actif d'insĂ©rer ce code :

7 rĂ©flexions au sujet de « WorkMates invite BackBone.js Ă  jouer dans #BuddyPress »

  1. Sylvain

    Salut Imath !

    J’utilise beaucoup de tes excellents plugins pour mon rĂ©seau social ! Merci pour tout le trvail que tu abats d’ailleurs ! C’est vraiment trĂšs chouette !

    Je suis venu te dire que Invite Workmates semble ne plus fonctionner correctement depuis le passage Ă  BP 2.0 et WP 3.9…

    En effet, la liste des membres en popup affiche les premiers membres, mais impossible de charger les pages suivantes …
    Peut ĂȘtre as-tu dĂ©jĂ  constatĂ© la chose ?
    Peut ĂȘtre que je peux rĂ©gler le souci moi-mĂȘme si tu me guides un peu .. 😉

    Bien Ă  toi !

    Sylvain

  2. Sylvain

    Hello Imath !

    Encore moi héhé!

    Je me demandais comment est-ce que pouvais activer Workmates, mĂȘme si le composant friends est activĂ© ?
    J’utilise sur mon site le bp-follow, mais aussi le composant friend. Car il y a des etudiants et des enseignants, il serait mal placĂ© de demander en ami un de ses enseignants. Donc les gens peuvent s’abonner Ă  tout le monde.

    Mais les Ă©tudiants me rĂ©clament de pouvoir s’ajouter en ami quand mĂȘme … Je cĂšde devant la pression, d’oĂč ma question.

    Bien Ă  toi !

  3. Sylvain

    je crois avoir trouvé :

    ligne 168 de workmates.php, j’enlĂšve le point d’exclamation:

    if( bp_is_active( 'groups' ) && bp_is_active( 'friends' ) && self::buddypress_version_check() )
    require( $this->includes_dir . 'groups.php' );

    J’ai bon ? Mais alors j’aurais pu utiliser Invite Anyone … mais je prĂ©fĂšre ton plugin 😉

    1. imath Auteur

      Je pense qu’il faut peut ĂȘtre enlever && bp_is_active( ‘friends’ ) car si tu enlĂšves le point d’exclamation uniquement cela veut dire que le composant friends doit ĂȘtre actif. Sinon j’ai pas testĂ© avec le composant friends actif…
      Invite anyone a l’avantage de permettre l’utilisation d’un email pour « recruter » un nouveau membre qui n’est pas encore inscrit.
      Merci pour ton intĂ©rĂȘt pour ce plugin 😉

Les commentaires sont fermés.