Nachrichtenbereich für die Seitenleiste

:information_source: Zusammenfassung Fügt Links zu persönlichen und Gruppen-Nachrichten-Posteingängen zur Seitenleiste hinzu, einschließlich Indikatoren für ungelesene Nachrichten
:eyeglasses: Vorschau Theme Creator
:hammer_and_wrench: Repository GitHub - moin-Jana/sidebar-messages-section: Adds personal and group message inbox links to the sidebar, including unread message indicators.
:question: Installationsanleitung Wie man ein Theme oder eine Theme-Komponente installiert
:open_book: Neu bei Discourse Themes? Anfängerleitfaden zur Verwendung von Discourse Themes

Diese Theme-Komponente installieren

Die Komponente fügt der Seitenleiste einen Abschnitt Nachrichten mit Links zu persönlichen Nachrichten-Posteingängen hinzu – sowohl zum persönlichen Posteingang des Benutzers als auch zu allen Gruppen-Posteingängen, auf die er Zugriff hat. Der Abschnitt enthält außerdem neben der Überschrift des Abschnitts eine Schaltfläche zum Verfassen einer neuen persönlichen Nachricht.

Persönlicher Posteingang

Standardmäßig fügt die Komponente allen Benutzern einen Link zum persönlichen Posteingang hinzu. Mit der Einstellung show_personal_inbox können Administratoren ihn auch ganz ausblenden oder ihn nur für Benutzer anzeigen, die basierend auf der Website-Einstellung „Gruppen, für die private Nachrichten aktiviert sind“ (Personal message enabled groups) private Nachrichten erstellen dürfen. Dies spiegelt wider, wie der Link zum persönlichen Posteingang im Benachrichtigungsmenü, im Profil des Benutzers und im Community-Bereich der Seitenleiste angezeigt wird.

:bulb: Um doppelte Links zum persönlichen Posteingang zu vermeiden, sollten Sie den Nachrichtenlink im ersten Abschnitt der Seitenleiste entfernen. Sie können dies tun, indem Sie das Menü Mehr öffnen, Diesen Abschnitt anpassen auswählen und dann den Nachrichtenlink aus dem Abschnitt entfernen.

Gruppen-Posteingänge

Alle Gruppen-Posteingänge, die mindestens eine Nachricht enthalten und deren Mitglied der Benutzer ist, werden automatisch in seiner Seitenleiste angezeigt. Administratoren können bestimmte Gruppen-Posteingänge mit der Einstellung hide_group_inboxes ausblenden, was nützlich sein kann, wenn ein Gruppen-Posteingang nicht mehr aktiv genutzt wird.

Eine separate Einstellung, use_group_page_inbox, ermöglicht es Ihnen zu wählen, ob Gruppen-Posteingangs-Links in der Nachrichtenoberfläche des Benutzers (/my/messages/group/{group_name}) oder auf der Gruppenseite (/g/{group_name}/messages/inbox) geöffnet werden sollen.

Ungelesen-Anzeige

Jeder Posteingangs-Link zeigt den aktuellen Nachrichtenstatus basierend auf der Präferenz des Benutzers für „Anzahl neuer Elemente anzeigen“ an: entweder ein Punkt oder die numerische Anzahl. Werte über 100 werden als 99+ angezeigt.

Erweiterte Konfiguration des Gruppen-Posteingangs

Um die Reihenfolge der Gruppen-Posteingänge zu ändern oder den in der Seitenleiste angezeigten Namen zu ändern, können Sie die Einstellung advanced_group_inbox_configuration verwenden.

In dieser Einstellung können Sie:

  • eine Gruppe aus einem Dropdown-Menü auswählen
  • optional einen benutzerdefinierten Namen definieren, der in der Seitenleiste angezeigt wird
  • die konfigurierten Gruppen mithilfe der Schaltflächen unten neu anordnen

Der benutzerdefinierte Name ist auch innerhalb der Einstellung selbst hilfreich.
Wenn kein Name angegeben wird, wird der Eintrag als group 1, group 2 usw. (basierend auf seiner Position) bezeichnet. Das Hinzufügen eines temporären Namens kann die Neuanordnung erleichtern, und Sie können ihn vor dem Speichern wieder entfernen, wenn Sie möchten.

Gruppen mit Nachrichten, die nicht zur erweiterten Konfiguration hinzugefügt wurden, werden weiterhin in der Seitenleiste angezeigt, nach den konfigurierten Gruppen und sortiert nach ihrer Gruppen-ID.

Gruppen, die in der Einstellung hide_group_inboxes aufgeführt sind, werden immer ausgeblendet, unabhängig davon, ob sie auch in der erweiterten Konfiguration vorhanden sind oder Nachrichten haben. Eine Warnung nur für Administratoren hilft dabei hervorzuheben, wenn eine Gruppe zu beiden Einstellungen hinzugefügt wird.

Sie können ein Beispiel für die Konfiguration und wie sie die Reihenfolge und die angezeigten Namen beeinflusst, in den folgenden Screenshots sehen:


Position des Nachrichten-Abschnitts

Um die Position des Nachrichten-Abschnitts zu ändern, können Sie entweder CSS verwenden, zum Beispiel

Alternativ können Sie die Komponente Navigation (sidebar) menu display control installieren, die eine Einstellung zum Ändern der Reihenfolge der Abschnitte in der Seitenleiste enthält. Verwenden Sie inbox-section als Abschnittsnamen, wenn Sie dessen Position anpassen.

16 „Gefällt mir“

wow, gut gemacht Moin! :clap: :tada:

4 „Gefällt mir“

Kleiner Vorschlag: Vielleicht sollte javascripts/discourse/api-initializers/group-inboxes-in-sidebar.gjs eine JS-Datei anstelle von GJS sein?

Großartiges Plugin!


Ich habe die letzten 10 Minuten damit verbracht, den Code und die Kernklassen zu untersuchen, und ich muss sagen, wie bemerkenswert Discourse gemacht wurde (und ist), sodass alles so gut passt.

2 „Gefällt mir“

Ja, die API bietet fast alles, was Sie benötigen, um den Bereich so aussehen und funktionieren zu lassen wie alle anderen. Auch der Chat verwendet sie, was die Entwicklung wahrscheinlich beeinflusst hat. Die Funktionen wurden gleichzeitig entwickelt.
Leider wird get badgeText(), welches die Anzahl ungelesener Themen in den Kernbereichen anzeigt, nicht unterstützt, daher musste ich bei den Zahlen etwas kreativ werden.

4 „Gefällt mir“

Ich konnte keine Admin-Einstellung dafür finden, daher dieser PSA (Öffentliche Bekanntmachung), dass dies per CSS ausgeblendet wird:

.sidebar-section-link[data-link-name="my-messages"] {
    display: none;
}
2 „Gefällt mir“

Warum bevorzugen Sie es, den Link mit CSS zu verstecken, anstatt die vorhandene Option für Administratoren zur Anpassung der Seitenleiste zu verwenden? Das Verstecken mit CSS scheint anfälliger für Fehler zu sein als die Verwendung der integrierten Discourse-Optionen.

2 „Gefällt mir“

Derp, du hast recht. Ich habe zu kompliziert gedacht und dachte, es wäre eine Einstellung in der Admin-Konsole und/oder eine Kernfunktionalität.

1 „Gefällt mir“

Sie waren nicht der Einzige, der dort gesucht hat. :joy:


Das ist eine nette Komponente!

2 „Gefällt mir“

Ich habe die Notiz erweitert:

5 „Gefällt mir“

Ja, das haben Sie. Aber als Administratoren sind wir es oft gewohnt, über das Admin-Panel zu gehen. :wink:. Wenn wir also Anweisungen überfliegen, übersehen wir möglicherweise einige Details.

Selbst bei Core-Updates bin ich sicher, dass viele von uns nicht immer alle Details lesen, bis etwas, das wir verwenden, in einen anderen Bereich verschoben wurde.

Vor langer, langer Zeit bei Android zum Beispiel, wenn ich mich recht erinnere, hatte Gingerbread Nav & Maps. Ich habe etwa 10 Minuten damit verbracht, nach Nav zu suchen, nachdem sie es in einem Update mit Maps zusammengelegt hatten. :joy:

Dies ist eine brillante Theme-Komponente, die gut zu Seiten passt, die stark auf Nachrichten setzen! Danke @moin für deine ausgezeichnete Arbeit!

Um es für diejenigen, die Gruppen häufig nutzen (Nachrichten sind eine wichtige Komponente davon), noch besser zu machen, würdest du bitte diese Vorschläge in Betracht ziehen?

Wählbare Position in der Seitenleiste

Um Nachrichten in der Benutzeroberfläche stärker hervorzuheben, möchte ich sie oben in der Seitenleiste haben (d. h. direkt unter den Links). Im Grunde möchte ich, dass die Leute ihre letzten Nachrichten (pro Gruppe) auf einen Blick sehen können, ohne sich auf Benachrichtigungen verlassen zu müssen.

Ich habe dieses CSS verwendet, um dies zu erreichen, vermute aber, dass dies nicht nur für mich hilfreich wäre:

/* Stellt sicher, dass der Nachrichtenbereich zuerst im Flexbox-Container erscheint */
.sidebar-section-wrapper {
  order: 1;
}
.sidebar-section-wrapper[data-section-name="inbox-section"] {
  order: 0;
}

Gruppen-Posteingänge im Gruppenkontext öffnen

Ich möchte, dass meine Benutzer ihre Gruppen leicht finden und mit ihnen interagieren können. Es erscheint mir sinnvoll, dass sie mit Nachrichten im Posteingang arbeiten, auf den von der Gruppenseite aus zugegriffen wird (d. h. /g/die-gruppe/nachrichten/posteingang), anstatt auf ihrer persönlichen Posteingangsseite (d. h. /mein/nachrichten/gruppe/die-gruppe)

Dies gibt ihnen eine schöne, saubere, gruppenorientierte Seite mit einfachem Zugriff auf die anderen Gruppenmitglieder und Einstellungen:

Es wäre großartig, wenn dies durch eine Einstellung in der TC gesteuert werden könnte.

3 „Gefällt mir“

Ich habe darüber nachgedacht, welche Route besser als Standard und als Einstellung geeignet wäre, aber ich habe sie aus einem Grund entfernt, an den ich mich gerade nicht erinnere. Ich werde es mir morgen später ansehen. Ich glaube, es ging um die Anzeige ungelesener Nachrichten. Würden Sie diesen Weg trotzdem bevorzugen, wenn die Konsequenz wäre, dass es keine Anzeige für ungelesene Nachrichten gäbe?

Ich denke, die aktuelle Position ist dieselbe wie bei dem Nachrichtenbereich, der im Kern enthalten war.
Es gibt bereits eine großartige Komponente zum Ändern der Reihenfolge der Abschnitte in der Seitenleiste: Navigation (sidebar) menu display control
Um Konflikte zu vermeiden, da beide Komponenten versuchen, die Reihenfolge zu überschreiben, könnte es sinnvoll sein, dass Administratoren, die eine andere Reihenfolge wünschen, die bestehende Komponente verwenden (der Autor hat bestätigt, dass dies mit dem Abschnittsnamen „inbox-section“ funktioniert).
Ich muss sehen, ob ich eine zusätzliche Einstellung dafür anbieten kann. Auf jeden Fall möchte ich vermeiden, dass die Komponenten sich gegenseitig beeinflussen.

2 „Gefällt mir“

Ich habe damit in meiner Fork herumgespielt und dasselbe festgestellt. Es funktioniert, verliert aber sowohl die Anzeige ungelesener Nachrichten als auch die Hervorhebung von Links in der Seitenleiste. Beides sind in der Tat sehr wichtige Dinge!

Ich habe einen PR für das erstellt, was ich bisher erreicht habe:

Aber um wirklich gut zu funktionieren, müssen die Anzeige ungelesener Nachrichten und die Hervorhebung von Links funktionieren, nicht wahr?

Guter Punkt! Das ist eine viel bessere Idee. Zu meiner Schande bin ich tatsächlich einer der Autoren dieses TC!

1 „Gefällt mir“

Warum hast du href anstelle von route verwendet? Ich glaube, href funktionierte überhaupt nicht mit ungelesenen Indikatoren. Ich war mehr besorgt, dass die Zahlen auf der group.messages.inbox-Route nicht so verfügbar waren, wie man sie bei userPrivateMessages verwenden kann.

1 „Gefällt mir“

Weil ich ein lausiger Entwickler bin und einiges ausprobiert habe, bis etwas hängen geblieben ist! Wahrscheinlich auch wegen meiner ungesunden Abhängigkeit von nicht so schlauer generativer KI :zwinker:.

Ich habe versucht, Routen zu nutzen, konnte sie aber nicht dazu bringen, die bestehenden Routen zu überschreiben. Also habe ich aufgegeben.

Ich habe mich gefragt, ob es möglich wäre, diese Zahlen/dieses Verhalten zu erhalten, indem man einfach den Link umleitet, um zu einem anderen Ort zu gelangen. Aber das ist für mein einfaches altes Ich etwas zu kompliziert.

Fühlen Sie sich frei, es zu „verbessern“!

(Übrigens hat der wunderbare @moin genau das getan und die Funktionalität hinzugefügt – damit es richtig funktioniert!)

2 „Gefällt mir“

Das funktioniert in der Tat sehr gut. Etwas peinlicherweise bin ich einer der Autoren (sehr viel sekundär zu @lilly) dieses TC :flushed_face:!

Wäre toll, dies im OP zu haben.

2 „Gefällt mir“

@nathank bat um eine Option gebeten, die Reihenfolge der Gruppen-Posteingänge in der Seitenleiste zu ändern. Ich habe zuvor Ideen gesammelt, wie man dies am besten angeht, unter Configuring the order of groups in theme component settings, und ich denke, ich habe nun eine Lösung gefunden.
Ich habe dies mit der Anforderung kombiniert, den vollständigen Namen einer Gruppe anstelle ihres Kurznamens anzuzeigen. Da der vollständige Name in diesem Kontext nicht einfach verfügbar ist, besteht die Lösung darin, Administratoren zu erlauben, stattdessen einen benutzerdefinierten Anzeigenamen zu definieren. Das Feld, das zuvor nur dazu diente, den Namen der Gruppe in den Einstellungen anzuzeigen, wird nun auch verwendet, um den in der Seitenleiste angezeigten Namen zu steuern.

Beide Funktionen werden über die neue Einstellung advanced_group_inbox_configuration gesteuert.

In dieser Einstellung können Sie:

  • eine Gruppe aus einem Dropdown-Menü auswählen
  • optional einen benutzerdefinierten Namen definieren, der in der Seitenleiste angezeigt wird
  • die konfigurierten Gruppen mithilfe der Schaltflächen unten neu anordnen

Der benutzerdefinierte Name ist auch innerhalb der Einstellung selbst hilfreich.
Wenn kein Name angegeben wird, wird der Eintrag als group 1, group 2 usw. (basierend auf seiner Position) bezeichnet. Das Hinzufügen eines temporären Namens kann die Neuanordnung erleichtern, und Sie können ihn vor dem Speichern wieder entfernen, wenn Sie möchten.

Gruppen mit Nachrichten, die nicht zur erweiterten Konfiguration hinzugefügt wurden, werden weiterhin in der Seitenleiste angezeigt, nach den konfigurierten Gruppen und geordnet nach ihrer Gruppen-ID.
Gruppen, die in der Einstellung hide_group_inboxes aufgeführt sind, werden immer ausgeblendet, unabhängig davon, ob sie auch in der erweiterten Konfiguration vorhanden sind oder Nachrichten haben.


In diesem Beispiel wurde kein benutzerdefinierter Name für die Moderatorengruppe eingegeben, weshalb sie in der Konfiguration als group 1 erscheint. Die anderen Gruppen haben benutzerdefinierte Namen.

Diese Konfiguration führt zu:


Hier sehen Sie, dass die Posteingänge ‘doggo-daily’ und ‘cat_pics’ ihre Positionen getauscht haben und ohne Bindestriche oder Unterstriche angezeigt werden. Der Posteingang ‘Team’ erscheint unter den in der erweiterten Einstellung konfigurierten.
Sie sehen auch eine nur für Administratoren sichtbare Warnung, die erscheint, weil die Gruppe ‘admin’ gleichzeitig zur erweiterten Konfiguration und zur Einstellung hide_group_inboxes hinzugefügt wurde.

4 „Gefällt mir“

Das ist jetzt einfach brillant für diejenigen, die Gruppen für die Kommunikation nutzen. Tolle Arbeit, @Moin!

Vielen Dank, dass Sie auf das Feedback anderer (und meines) gehört und sich aktiv damit auseinandergesetzt haben – und eine so gut durchdachte und pragmatische Theme-Komponente entwickelt haben, die ein langjähriges Problem so elegant löst.

2 „Gefällt mir“