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 les 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 du 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+.

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.

13 « 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 !

1 « 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 très bien en effet ! Ce serait formidable de l’avoir dans le message initial.

2 « J'aime »