Discourse: Vollständiger Name in Erwähnungen anzeigen

|||
|-|-|-|
| :eyeglasses:|Vorschau| https://theme-creator.discourse.org/theme/megothss/discourse-show-name-mentions |
| : hammer_and_wrench:|Repository| GitHub - megothss/discourse-show-name-mentions: A discourse theme component to display the full name instead of usernames in @mentions |
| : question:|Installationsanleitung|How to install a theme or theme component|
| : open_book:|Neu bei Discourse Themes?| Beginner’s guide to using Discourse Themes

Install this theme component

Eine Theme-Komponente, um den vollständigen Namen anstelle von Benutzernamen in @mentions anzuzeigen.

Diese Theme-Komponente lädt den vollständigen Namen des Benutzers und zeigt @vollständigername anstelle von @benutzername in Erwähnungen an.

Diese Komponente funktioniert, indem sie einfach den Benutzernamen durch den Namen des Benutzers (falls verfügbar) ersetzt, wenn die Beiträge angezeigt werden. Beim Bearbeiten ändert sich nichts. Sie markieren @benutzername wie immer im Composer.

Sie fügt der a.mention-Anker-Element auch die Klasse .mention-fullname hinzu, falls Sie vollständige Namensnennungen auf eine bestimmte Weise gestalten möchten.

Das Anzeigen der Karte beim Klicken auf die @vollständigername-Erwähnungen bleibt voll funktionsfähig.

Anwendungsfall:

Stellen Sie sich eine Discourse-Instanz vor, bei der jeder Benutzername dem Muster X9999999 folgt (ein Buchstabe und sieben Zahlen). Stellen Sie sich nun vor, es sind 100.000 Benutzer registriert.

Nicht sehr benutzerfreundlich, oder? Leider ist dies ein sehr reales Szenario und kein imaginäres. Die Discourse-Instanz ist an SSO gebunden und alle Benutzernamen folgen der Unternehmensrichtlinie.

In diesem Fall ist es viel besser, @John Doe anstelle von @X9999999 zu lesen.

Einstellungen:

  • show_fullname_in_mentions: Wenn aktiviert, zeigen @mentions den @vollständigername anstelle des @benutzernamens an.
17 „Gefällt mir“

Hallo Sérgio, danke für die Theme-Komponente!

Ich habe es ausprobiert, aber nach dem Experimentieren sehe ich, dass es eine gewisse Inkonsistenz in Bezug auf die Benutzererfahrung verursacht.

Hier ist, was passiert: Ich habe diesen Benutzer, dessen Benutzername „oli44“ und vollständiger Name „Henri Oliver“ ist. Mit Ihrer Theme-Komponente wird jetzt „Henri Oliver“ angezeigt, was großartig ist und mehr Kontext bietet. Aber sagen wir, ich bin ein anderer Benutzer, der nicht weiß, dass „Henri Oliver“ unter dem Benutzernamen „oli44“ bekannt ist. Wie erwähne ich ihn dann in meinem Beitrag?

Ich werde nach „Henri Oliver“ suchen und tatsächlich „oli44“ sehen, aber woher weiß ich, dass es die tatsächliche Person ist?

Aus diesem Grund werde ich es vorerst nicht aktivieren. Kennen Sie vielleicht eine andere Theme-Komponente/Plugin, die dieses Problem lösen würde? Ich habe versucht, danach zu suchen, konnte aber nichts finden.

Oder vielleicht gibt es eine Möglichkeit, wie Ihre Theme-Komponente immer noch den Benutzernamen anzeigen könnte (z. B. @Henri Oliver (oli44)), damit ich weiß, wonach ich suchen muss, wenn ich diese Person erwähnen muss?

Trotzdem vielen Dank für diese großartige Ergänzung.

3 „Gefällt mir“

Sie geben einfach @ gefolgt von Henri Oliver ein. Nach der Bestätigung wird @+Benutzername in Ihren Beitrag eingefügt.

Bei der Suche werden sowohl der Benutzername als auch der vollständige Name angezeigt.
Wo liegt das Problem?

Sie können das Rendering in einer Abspaltung (Fork) einfach anpassen:

1 „Gefällt mir“

Ich sehe zwei Probleme:

Es wird eine Ajax-Anfrage pro Erwähnung an den Server gesendet.
Könnte dies zu Drosselungen auf Seiten mit vielen Benutzernamen führen (wie z. B. benutzergenerierte Benutzerverzeichnisse)?

Die zwischengespeicherte Zuordnung von Benutzernamen zu vollständigen Namen erkennt keine Änderungen an den vollständigen Namen. Wie lange lebt dieser Cache?

Ich frage mich, ob die benötigten Informationen (Benutzername → vollständiger Name) über ein Begleit-Plugin bereitgestellt werden könnten, was diese Probleme überflüssig machen würde.

Da wir die erwarteten Probleme hatten, habe ich ein Plugin erstellt, das die vollständigen Namen zusammen mit den Erwähnungen bereitstellt:

Entsprechend wurde die Ajax-Anfrage aus der Komponente entfernt.

Ich habe auch eine Option hinzugefügt, um die Vorlage zu konfigurieren, die zum Rendern von Erwähnungen verwendet wird:

2 „Gefällt mir“

Waren Ajax-Anfragen zwingend erforderlich, wenn wir bei einer Theme-Komponente bleiben wollten?

Wenn dies der Fall ist, lade ich Sie ein, ein neues #plugin-Thema zu erstellen, wenn Sie Ihre Arbeit als zuverlässig genug erachten, um von anderen genutzt zu werden :slight_smile:

Ich darf in dieser Kategorie nicht schreiben …

Ich weiß es nicht. Da ich mich nur mit der Plugin-/Komponentenentwicklung beschäftige, habe ich mich entschieden, diese beiden Hacks zu sammeln, um das gewünschte Verhalten zu erzielen.

Aber vielleicht möchten sich andere anschließen, um es zu verfeinern.

1 „Gefällt mir“

Du musst den Zugriff auf der Gruppenseite beantragen :slight_smile:

https://meta.discourse.org/g/plugin_authors

1 „Gefällt mir“

Sie haben das gerade gepostet und ich habe gerade das Plugin des Originalautors installiert, als Sie gepostet haben. Die Sache ist, mir ist aufgefallen, dass das Plugin des Originalautors keine vollständigen Namen für Gruppen unterstützt. Es sieht jedoch so aus, als hätten Sie Gruppen hinzugefügt. Wenn ja, herzlichen Glückwunsch! Ihr Plugin verdient einen eigenen Thread, angesichts dessen, was Sie ermöglicht haben!

Vielleicht mache ich etwas falsch, aber ich habe Ihre Theme-Komponente und Ihr Plugin aktiviert und sehe den vollständigen Namen in Erwähnungen nicht mehr.

Hast du deine Beiträge neu gebacken?

1 „Gefällt mir“

Danke! Das habe ich jetzt auch. Wäre es auch möglich, Gruppen zu durchsuchen? Ich habe meine trust_level_0-Gruppe als „everyone“ benannt. Wenn das Plugin auch den vollständigen Namen für die Gruppen-Erwähnungen verwenden könnte, wäre dies eine coole Möglichkeit, globale trust_level_0-Erwähnungen wie eine „everyone“-Erwähnung aussehen zu lassen.

Das tut es jetzt (Sie müssen auch die Komponente aktualisieren).

Leider wird der Gruppenname-Link die Gruppe nicht öffnen, wenn darauf geklickt wird.

1 „Gefällt mir“

Da das Plugin die Informationen beim Backen der Beiträge einbezieht. Beachten Sie, dass, wenn der Benutzer den vollständigen Namen aktualisiert, dieser im Beitrag nicht aktualisiert wird, es sei denn, der Beitrag wird neu gebacken.

Ich muss ein paar Dinge in dieser Theme-Komponente aktualisieren. Das Entfernen von Ajax-Aufrufen ist jetzt möglich, wenn der Benutzerstatus aktiviert ist.

Ich werde versuchen, es bald zu tun.

2 „Gefällt mir“

Genau. Es sollte Benutzer- und Gruppenumbenennungen beobachten:

2 „Gefällt mir“

Das erneute Backen ist teuer. Dies kann in einigen Communities problematisch sein, je nachdem, wie häufig die Benutzer ihre Namen ändern.

Behalten Sie dies im Hinterkopf.

1 „Gefällt mir“

Danke. In unserer formelleren Schulgemeinschaft werden sich die Namen nicht häufig ändern.

Grundsätzlich könnten die Namen hinzugefügt werden, während bereits Inhalte ausgeliefert werden. Anscheinend bevorzugen Sie diesen Weg?

Es funktioniert größtenteils. Ich bin mir nicht sicher warum, aber obwohl ich Vertrauensstufe 0 in “Jeder” umbenannt habe, wird das Label nicht angewendet.


Nicht vertrauensbasierte Gruppen funktionieren jedoch alle und zeigen ihre vollständigen Namen an.

EDIT: Ah, weil die Spalte full_name in der Tabelle groups nicht den modifizierten vollständigen Namen von Vertrauensstufengruppen enthält! Wenn ich den Daten-Explorer überprüfe, ist er null. Hmm?

Aufgrund des obigen Bildes scheint es, dass Sie i18n-Einträge für trust_level_0 geändert haben.

Versuchen Sie Group.find(10).update! full_name: "TESTTEST" in der Rails-Konsole.

Dies könnte Nebenwirkungen haben, da die Änderung von vollständigen Namen integrierter Gruppen in der Benutzeroberfläche nicht zulässig ist.

In der Tat. Ich habe das versucht, und es hat ohne ernsthafte Auswirkungen funktioniert. Gibt es eine Möglichkeit, Gruppen zu integrieren, ohne das Plugin verwenden zu müssen und nur die Theme-Komponente zu verwenden? Das wäre mir tatsächlich lieber, da ich das Raking nicht mag, wenn ich es vermeiden kann.