08Portfolio
Rank badges — rangi i odznaki dla forum NodeBB
Wtyczka do forów na NodeBB 4, która przy nazwie autora każdego posta pokazuje jego rangę albo odznakę zespołu. Działa na forum wirelab z odznakami z rekinem i jeżem, a jako otwarty pakiet jest dostępna w npm i na GitHubie.
W liczbach
- Poziomy rang w domyślnej drabinie
- 6
- Poprawki z audytu w wersji 1.1.0
- 27
- Testy automatyczne
- 33
Problem
Na forum technicznym dobrze od razu widzieć, kto pisze: ktoś nowy, stały bywalec czy moderator. NodeBB 4 nie ma do tego wbudowanego mechanizmu, a gotowe dodatki albo nie działają z czwartą wersją, albo wymagają przeróbek w szablonach motywu. Forum wirelab jest do tego dwujęzyczne, więc nazwa rangi musi się pokazywać w języku osoby, która czyta, a nie w domyślnym języku forum.
Podejście
Napisałem wtyczkę, w której rangę wyznacza liczba postów, reputacja albo oba te kryteria naraz. Domyślnie jest sześć poziomów, od „Nowy na warsztacie” do „Konstruktor”, a administratorzy, moderatorzy i dowolnie wybrane grupy dostają zamiast rangi własną odznakę. Wszystko ustawia się w panelu administracyjnym, po polsku albo po angielsku: nazwy w każdym języku, progi, kolory i obrazki. Panel sprawdza ustawienia przed zapisem i ostrzega na przykład przed rangą, której nie da się zdobyć, albo grupą, której nie ma. Nazwa rangi jest w języku czytelnika także wtedy, gdy forum doładowuje posty bez przeładowania strony albo nowa odpowiedź pojawia się na żywo. Tekst wpisany w panelu nie przemyci na stronę żadnego kodu, a obrazki mogą pochodzić tylko z bezpiecznych adresów. Żeby forum nie zwalniało, gotowe odznaki trzymam w pamięci, a przynależność do grup sprawdzam raz dla całej strony, nie osobno dla każdego posta.
Efekt
Wtyczka działa na forum.wirelab.pl, gdzie każda ranga ma obrazek z rekinem albo jeżem. Wydałem ją na licencji MIT w npm i na GitHubie jako nodebb-plugin-rank-badges. Przed wersją 1.1.0 przeszła audyt, który wskazał 27 rzeczy do poprawy, od zasad naliczania rang po drobne błędy w panelu. Poprawiłem wszystkie, a zasady rang, sprawdzanie ustawień i zabezpieczenia pilnują teraz 33 automatyczne testy.
Jak to działa
01
Rangi za aktywność
Ranga rośnie razem z liczbą postów, reputacją albo jednym i drugim. Na forum wirelab każdy poziom ma własną odznakę z rekinem albo jeżem, a zamiast obrazka można pokazać pasek poziomu z nazwą.

02
Odznaki zespołu
Administratorzy, moderatorzy i członkowie wybranych grup dostają odznakę zamiast rangi. Kolejność jest stała, więc moderator kategorii zawsze ma odznakę moderatora, nawet jeśli należy też do innej grupy. Członkostwo w ukrytych grupach zostaje ukryte, tak jak w samym NodeBB.

03
W języku czytelnika
Polska i angielska wersja forum pokazują nazwy rang w języku osoby, która czyta. Dotyczy to też odpowiedzi, które przychodzą na żywo, i postów doładowywanych przy przewijaniu.
04
Ustawienia, które same się sprawdzają
Błędne wartości, na przykład próg zapisany jako ułamek albo ranga bez nazwy, są odrzucane w przeglądarce i jeszcze raz na serwerze. Jeśli panel nie zdoła odczytać zapisanych ustawień, blokuje zapis, żeby wartości domyślne ich nie nadpisały.