Section Messages pour la barre latérale

:information_source: Résumé Ajoute des liens vers la boîte de réception des messages personnels et de groupe dans la barre latérale, y compris des indicateurs de messages non lus
:eyeglasses: Aperçu Theme Creator
:hammer_and_wrench: Dépôt GitHub - moin-Jana/sidebar-messages-section: Adds personal and group message inbox links to the sidebar, including unread message indicators.
:question: Guide d’installation Comment installer un thème ou un composant de thème
:open_book: Nouveau sur les thèmes Discourse ? Guide du débutant pour utiliser les thèmes Discourse

Installer ce composant de thème

Le composant ajoute une section Messages à la barre latérale avec des liens vers les boîtes de réception des messages personnels – à la fois la boîte de réception personnelle de l’utilisateur et toutes les boîtes de réception de groupe auxquelles il a accès. La section comprend également un bouton pour composer un nouveau message personnel à côté du titre de la section.

Boîte de réception personnelle

Par défaut, le composant ajoute un lien vers la boîte de réception personnelle pour tous les utilisateurs. Avec le paramètre show_personal_inbox, les administrateurs peuvent également la masquer complètement ou l’afficher uniquement pour les utilisateurs autorisés à créer des MP en fonction du paramètre de site Personal message enabled groups. Cela reflète la manière dont le lien de la boîte de réception personnelle apparaît dans le menu des notifications, le profil de l’utilisateur et la section Communauté de la barre latérale.

:bulb: Pour éviter les liens dupliqués vers la boîte de réception personnelle, vous voudrez peut-être supprimer le lien des messages dans la première section de la barre latérale. Vous pouvez le faire en ouvrant le menu Plus et en sélectionnant Personnaliser cette section, puis supprimez le lien Messages de la section.

Boîtes de réception de groupe

Toutes les boîtes de réception de groupe contenant au moins un message et dont l’utilisateur est membre apparaîtront automatiquement dans sa barre latérale. Les administrateurs peuvent masquer des boîtes de réception de groupe spécifiques à l’aide du paramètre hide_group_inboxes, ce qui peut être utile lorsqu’une boîte de réception de groupe n’est plus utilisée activement.

Un paramètre séparé, use_group_page_inbox, vous permet de choisir si les liens de la boîte de réception de groupe s’ouvrent dans l’interface des messages de l’utilisateur (/my/messages/group/{group_name}) ou sur la page du groupe (/g/{group_name}/messages/inbox).

Indicateur de non-lu

Chaque lien de boîte de réception affiche l’état actuel du message en fonction de la préférence de l’utilisateur pour « Afficher un compte des nouveaux éléments » : soit un point soit le compte numérique. Les valeurs supérieures à 100 sont affichées comme 99+.

Configuration avancée de la boîte de réception de groupe

Pour personnaliser l’ordre des boîtes de réception de groupe ou modifier le nom affiché dans la barre latérale, vous pouvez utiliser le paramètre advanced_group_inbox_configuration.

Dans ce paramètre, vous pouvez :

  • sélectionner un groupe dans un menu déroulant
  • éventuellement définir un nom personnalisé qui sera affiché dans la barre latérale
  • réorganiser les groupes configurés à l’aide des boutons en bas

Le nom personnalisé est également utile à l’intérieur du paramètre lui-même.
Si aucun nom n’est fourni, l’entrée sera étiquetée comme group 1, group 2, etc. (en fonction de sa position). L’ajout d’un nom temporaire peut faciliter le réarrangement, et vous pouvez le supprimer à nouveau avant de sauvegarder si vous le souhaitez.

Les groupes avec des messages qui ne sont pas ajoutés à la configuration avancée apparaîtront toujours dans la barre latérale, listés après ceux configurés et ordonnés par leur ID de groupe.

Les groupes listés dans le paramètre hide_group_inboxes seront toujours masqués, qu’ils soient également présents dans la configuration avancée ou qu’ils aient des messages. Un avertissement réservé aux administrateurs aide à signaler lorsqu’un groupe est ajouté aux deux paramètres.

Vous pouvez voir un exemple de configuration et comment elle affecte l’ordre et les noms affichés dans les captures d’écran ci-dessous :


Position de la section des messages

Pour modifier la position de la section des messages, vous pouvez utiliser du CSS, par exemple

Alternativement, vous pouvez installer le composant Navigation (sidebar) menu display control qui comprend un paramètre pour modifier l’ordre des sections dans la barre latérale. Utilisez inbox-section comme nom de section lors de l’ajustement de sa position.

16 « J'aime »

Bravo, bien joué Moin ! :clap: :tada:

4 « J'aime »

Suggestion mineure : peut-être que javascripts/discourse/api-initializers/group-inboxes-in-sidebar.gjs devrait être un fichier JS au lieu de GJS ?

Excellent composant !


J’ai passé les 10 dernières minutes à parcourir le code et à examiner les classes principales et je dois dire à quel point Discourse a été (et est) conçu de manière remarquable pour que tout s’intègre si bien.

2 « J'aime »

Oui, l’API offre presque tout ce dont vous avez besoin pour que la section ressemble et fonctionne comme toutes les autres. Le chat l’utilise également, ce qui a probablement influencé le développement. Les fonctionnalités ont été développées en même temps.
Malheureusement, get badgeText(), qui affiche le nombre de sujets non lus dans les sections principales, n’est pas pris en charge, j’ai donc dû faire preuve d’un peu de créativité avec les chiffres.

4 « J'aime »

Je n’ai pas trouvé de paramètre d’administrateur pour cela, donc PSA, ceci le masquera via CSS :

.sidebar-section-link[data-link-name="my-messages"] {
    display: none;
}
2 « J'aime »

Pourquoi préférez-vous que le lien soit masqué avec du CSS au lieu d’utiliser l’option existante pour les administrateurs afin de personnaliser la barre latérale ? Masquer avec du CSS semble plus susceptible de casser que d’utiliser les options intégrées de Discourse.

2 « J'aime »

Derp, vous avez raison. Je réfléchissais trop, pensant que ce serait un paramètre dans la console d’administration et/ou une fonctionnalité de base.

1 « J'aime »

Vous n’êtes pas le seul à regarder là. :joy:


C’est un composant adorable !

2 « J'aime »

J’ai développé la note :

5 « J'aime »

Oui, vous l’avez fait. Mais en tant qu’administrateurs, nous avons souvent l’habitude de passer par le panneau d’administration. :wink:. Ainsi, lorsque nous parcourons les instructions en diagonale, nous pouvons négliger certains détails.

Même avec les mises à jour du noyau, je suis sûr que beaucoup d’entre nous ne lisent pas toujours tous les détails jusqu’à ce que quelque chose que nous utilisons ait été déplacé vers une autre zone.

Il y a de cela très, très longtemps, avec Android, si ma mémoire est bonne, Gingerbread avait Nav et Maps. J’ai passé environ 10 minutes à chercher Nav après qu’ils l’aient fusionné avec Maps dans une mise à jour. :joy:

C’est un excellent Composant de Thème qui convient aux sites qui s’appuient fortement sur les Messages ! Merci @moin pour votre excellent travail !

Afin de l’améliorer encore pour ceux qui utilisent beaucoup les Groupes (les Messages en sont une composante majeure), pourriez-vous envisager ces suggestions ?

Position sélectionnable dans la barre latérale

Afin de mettre davantage l’accent sur les Messages dans l’interface utilisateur, je voudrais qu’ils soient en haut de la barre latérale (c’est-à-dire juste en dessous des liens). En gros, je veux que les gens puissent voir facilement leurs Messages récents (par groupe) en un coup d’œil sans dépendre des notifications.

J’ai utilisé ce CSS pour y parvenir, mais je soupçonne que je ne suis pas le seul pour qui cela serait utile :

/* Assurez-vous que la section Messages apparaît en premier dans le conteneur flexbox */
.sidebar-section-wrapper {
  order: 1;
}
.sidebar-section-wrapper[data-section-name="inbox-section"] {
  order: 0;
}

Ouvrir les boîtes de réception de groupe dans le contexte du groupe

Je veux que mes utilisateurs puissent facilement trouver et interagir avec leur(s) Groupe(s). Il me semble logique qu’ils travaillent avec les Messages dans la Boîte de réception à laquelle on accède depuis la page du Groupe (c’est-à-dire /g/le-groupe/messages/inbox) au lieu de leur page de Boîte de réception Personnelle (c’est-à-dire /my/messages/group/le-groupe)

Cela leur donne une belle page propre centrée sur le groupe, avec un accès facile aux autres membres du groupe et aux paramètres :

Ce serait génial si cela était régi par un paramètre dans le CT.

3 « J'aime »

J’y ai réfléchi, quant à savoir quelle voie est un meilleur défaut et un paramètre, mais je l’ai supprimé pour une raison dont je ne me souviens plus pour l’instant. Je vais regarder demain plus tard. Je pense que cela concernait l’indicateur de message non lu. Préféreriez-vous toujours cette voie si la conséquence était qu’il n’y aurait pas d’indicateur pour les messages non lus ?

Je pense que la position actuelle est la même que celle de la section des messages qui était dans le cœur.
Il existe déjà un excellent composant concernant la modification de l’ordre des sections dans la barre latérale : Navigation (sidebar) menu display control
Pour éviter les conflits car les deux composants tentent de remplacer l’ordre, il pourrait être judicieux que les administrateurs qui souhaitent un ordre différent utilisent le composant existant (l’auteur a confirmé que cela fonctionne en utilisant « inbox-section » comme nom de section).
Je devrai voir si je peux proposer un paramètre supplémentaire pour cela. Dans tous les cas, je veux éviter que les composants n’interfèrent les uns avec les autres.

2 « J'aime »

J’ai joué avec cela dans ma fourche, et j’ai trouvé la même chose. Cela fonctionne, mais perd à la fois l’indicateur de message non lu et la mise en surbrillance du lien dans la barre latérale. Ces deux choses ont en effet une grande valeur !

J’ai fait une demande de tirage (PR) pour là où j’en suis arrivé :

Mais pour vraiment décoller, il faut vraiment que l’indicateur de message non lu et la mise en surbrillance du lien fonctionnent, n’est-ce pas ?

Point bien soulevé ! C’est une bien meilleure idée. À ma honte, je suis en fait l’un des auteurs de ce TC !

1 « J'aime »

Pourquoi avez-vous utilisé href au lieu de route ? Je pense que href ne fonctionnait pas du tout avec les indicateurs de non-lu. J’étais plus préoccupé par le fait que les nombres sur la route group.messages.inbox n’étaient pas disponibles de la manière dont vous pouvez les utiliser à userPrivateMessages.

1 « J'aime »

Parce que je suis un développeur nul, et que j’ai essayé un tas de choses jusqu’à ce que quelque chose fonctionne ! Probablement aussi à cause de ma dépendance malsaine à l’IA générative pas si intelligente :wink:.

J’ai essayé d’utiliser les routes, mais je n’ai pas réussi à les faire remplacer les routes existantes. J’ai donc abandonné.

Je me demandais s’il était possible d’obtenir ces nombres/comportements, tout en détournant simplement le lien pour qu’il aille vers un autre endroit. Mais c’est un peu complexe pour mon petit cerveau.

N’hésitez pas à l’« améliorer » !

(Au fait, le merveilleux @moin a fait exactement cela, en ajoutant la fonctionnalité - la faisant fonctionner correctement !)

2 « J'aime »

Cela fonctionne effectivement très bien. De manière un peu embarrassante, je suis l’un des auteurs (très secondaire par rapport à @lilly) de ce TC :flushed_face: !

Ce serait formidable de l’avoir dans le message initial (OP).

2 « J'aime »

@nathank a demandé une option pour changer l’ordre des boîtes de réception de groupe dans la barre latérale. J’ai précédemment demandé des idées sur la meilleure façon d’aborder cela dans Configuring the order of groups in theme component settings, et je pense être arrivé à une solution.

J’ai combiné cela avec la demande d’afficher le nom complet d’un groupe au lieu de son nom court. Comme le nom complet n’est pas facilement disponible dans ce contexte, la solution consiste à permettre aux administrateurs de définir un nom d'affichage personnalisé à la place. Le champ qui aurait auparavant été utilisé uniquement pour afficher le nom du groupe dans la configuration est maintenant également utilisé pour contrôler le nom affiché dans la barre latérale.

Les deux fonctionnalités sont gérées via le nouveau paramètre advanced_group_inbox_configuration.

Dans ce paramètre, vous pouvez :

  • sélectionner un groupe dans un menu déroulant
  • définir éventuellement un nom personnalisé qui sera affiché dans la barre latérale
  • réorganiser les groupes configurés à l’aide des boutons en bas

Le nom personnalisé est également utile à l’intérieur du paramètre lui-même.
Si aucun nom n’est fourni, l’entrée sera étiquetée comme groupe 1, groupe 2, etc. (en fonction de sa position). L’ajout d’un nom temporaire peut faciliter la réorganisation, et vous pouvez le supprimer à nouveau avant d’enregistrer si vous le souhaitez.

Les groupes avec des messages qui ne sont pas ajoutés à la configuration avancée apparaîtront toujours dans la barre latérale, listés après ceux configurés et ordonnés par leur ID de groupe.
Les groupes listés dans le paramètre hide_group_inboxes seront toujours masqués, qu’ils soient également présents dans la configuration avancée ou qu’ils aient des messages.


Dans cet exemple, aucun nom personnalisé n’a été saisi pour le groupe modérateur, c’est pourquoi il apparaît comme groupe 1 dans la configuration. Les autres groupes ont des noms personnalisés.

Cette configuration donne :


Ici, vous pouvez voir que les boîtes de réception ‘doggo-daily’ et ‘cat_pics’ ont échangé leurs positions et sont affichées sans tirets ni underscores. La boîte de réception ‘Team’ apparaît en dessous de celles configurées dans le paramètre avancé.
Vous pouvez également voir un avertissement réservé aux administrateurs, qui apparaît parce que le groupe ‘admin’ a été ajouté à la configuration avancée et au paramètre hide_group_inboxes en même temps.

4 « J'aime »

C’est maintenant tout simplement brillant pour ceux qui utilisent les groupes pour les communications. Excellent travail, @Moin !

Merci d’avoir écouté et de vous être activement engagé avec les commentaires des autres (et les miens) - et d’avoir produit un composant de thème si bien conçu et pragmatique qui résout un problème de longue date avec tant d’élégance.

2 « J'aime »