Zum Inhalt springen
Alle Projekte

08Portfolio

Rank badges — Ränge und Abzeichen für NodeBB-Foren

Ein Plugin für NodeBB-4-Foren, das neben dem Namen des Autors in jedem Beitrag dessen Rang oder das Team-Abzeichen anzeigt. Es läuft im wirelab-Forum mit Abzeichen mit Hai und Igel und ist als Open-Source-Paket auf npm und GitHub verfügbar.

In Zahlen

Rangstufen in der Standardleiter
6
Korrekturen aus dem Audit in Version 1.1.0
27
Automatisierte Tests
33
01

Aufgabe

In einem technischen Forum ist es hilfreich, sofort zu sehen, wer schreibt: ein Neuling, ein Stammgast oder ein Moderator. NodeBB 4 hat dafür keinen eingebauten Mechanismus, und fertige Erweiterungen funktionieren entweder nicht mit Version 4 oder erfordern Änderungen an den Templates des Themes. Das wirelab-Forum ist zudem zweisprachig, der Rangname muss also in der Sprache der lesenden Person erscheinen, nicht in der Standardsprache des Forums.

02

Vorgehen

Ich habe ein Plugin geschrieben, in dem der Rang durch die Beitragszahl, die Reputation oder beides zugleich bestimmt wird. Standardmäßig gibt es sechs Stufen, von „Neu an der Werkbank“ bis „Konstrukteur“, und Administratoren, Moderatoren sowie beliebig gewählte Gruppen erhalten statt eines Rangs ein eigenes Abzeichen. Alles wird im Administrationsbereich eingestellt, auf Polnisch oder Englisch: Namen in jeder Sprache, Schwellenwerte, Farben und Bilder. Das Panel prüft die Einstellungen vor dem Speichern und warnt zum Beispiel vor einem Rang, der nicht erreichbar ist, oder vor einer Gruppe, die es nicht gibt. Der Rangname erscheint auch dann in der Sprache des Lesers, wenn das Forum Beiträge ohne Seitenneuladen nachlädt oder eine neue Antwort live erscheint. Im Panel eingegebener Text kann keinen Code in die Seite einschleusen, und Bilder werden nur von sicheren Adressen akzeptiert. Damit das Forum nicht langsamer wird, halte ich fertige Abzeichen im Speicher und prüfe die Gruppenzugehörigkeit einmal für die ganze Seite, nicht einzeln für jeden Beitrag.

03

Ergebnis

Das Plugin läuft auf forum.wirelab.pl, wo jeder Rang ein Bild mit Hai oder Igel hat. Ich habe es unter der MIT-Lizenz auf npm und GitHub als nodebb-plugin-rank-badges veröffentlicht. Vor Version 1.1.0 durchlief es ein Audit, das 27 Punkte zur Korrektur aufzeigte, von den Regeln der Rangvergabe bis zu kleinen Fehlern im Panel. Ich habe alle behoben, und die Rangregeln, die Prüfung der Einstellungen und die Sicherheitsmaßnahmen sind jetzt durch 33 automatisierte Tests abgesichert.

So funktioniert es

  1. 01

    Ränge für Aktivität

    Der Rang wächst mit der Zahl der Beiträge, mit dem Ansehen oder mit beidem. Im wirelab-Forum hat jede Stufe ihr eigenes Abzeichen mit Hai oder Igel, und statt eines Bildes lässt sich ein Stufenbalken mit dem Namen anzeigen.

    Ränge für Aktivität
  2. 02

    Team-Abzeichen

    Administratoren, Moderatoren und Mitglieder ausgewählter Gruppen erhalten statt eines Rangs ein Abzeichen. Die Reihenfolge ist fest, daher hat ein Kategorie-Moderator immer das Moderator-Abzeichen, auch wenn er zusätzlich einer anderen Gruppe angehört. Die Mitgliedschaft in versteckten Gruppen bleibt verborgen, genau wie in NodeBB selbst.

    Team-Abzeichen
  3. 03

    In der Sprache des Lesenden

    Die polnische und die englische Version des Forums zeigen die Rangnamen in der Sprache des Lesenden. Das gilt auch für live eintreffende Antworten und für beim Scrollen nachgeladene Beiträge.

  4. 04

    Einstellungen, die sich selbst prüfen

    Fehlerhafte Werte, etwa eine als Bruch geschriebene Schwelle oder ein Rang ohne Namen, werden im Browser und noch einmal auf dem Server abgelehnt. Kann das Panel die gespeicherten Einstellungen nicht lesen, sperrt es das Speichern, damit die Standardwerte sie nicht überschreiben.

Schreiben