Dodatki #5: ProStats

ProStats - SaeedGh

Dość stara i zapomniana wtyczka ProStats, to doskonałe narzędzie na "wąskie fora". Obecnie wtyczka ma już prawie 5 lat i dorobiła się nawet "własnej" strony internetowej: https://prostats.wordpress.com Jak sama nazwa wskazuje, dodatek ten dodaje nam 7 różnych statystyk, które sami wybierzemy. Wyjątkiem są ostatnie tematy forum, na które nie mamy wpływu. Wszystkie statystyki widzimy w przejrzystej tabeli, którą możemy ustawić dosłownie wszędzie, gdzie tylko chcemy. Tabela ta pobiera styl naszego forum dopasowując swój wygląd do całego forum. 

   

Wbrew pozorom ostatnich tematów wyświetlanych jest 10, a wszystkie statystyki również mogą być wyświetlane jednocześnie. W ACP mamy dość ciekawy system ich konfiguracji:

   

Dodatkowo mamy kilka innych ciekawych opcji w tym domyślne miejsce wyświetlania tabeli czy listę ignorowanych działów. Jest to naprawdę świetne narzędzie dla forów, które nie mają panelu bocznego bądź też stylistycznej możliwości wpakowania do niego kolejnych elementów. 


⇒ Plugin dostępny jest w naszej bazie dodatków: KLIK
⇒ Plugin dostępny jest na stronie autora: KLIK

Zalety:
  • Dodaje statystyki nie przeznaczone dla panelu bocznego
  • Szeroki zakres ustawień
  • Pobieranie stylu forum
  • Możliwość dodania tabeli do portalu jednym kliknięciem

Dodatki #4: TopStats

TopStats - wielu autorów

TopStats to wtyczka, przy której pracowało kilka osób. Dlaczego? @baszar, jako pomysłodawca, napisał pierwszą wersję tego dodatku. Zawierała ona błąd — zapytanie w środku pętli oraz kilka innych niedopatrzeń. @Łukasz Tkacz poprawił je w wersji 2.0, która została przepisana na nowo i dodatkowo zoptymalizowana. Kolejną osobą pracującą nad tą wtyczką jest @Supryk, który wykonał niektóre zmiany i wydzielone spolszczenie. Obecnie jest to dość znany dodatek na forach niezależnie od ich tematyki. 

Co umożliwia nam ten plugin? 
Gdy poprawnie go zainstalujemy, będziemy mogli dodać szereg statystyk do naszego panelu bocznego. Wystarczy, że do szablonu odpowiedzialnego za panel boczny, wkleimy wybrane przez nas opcje:

Cytat:{$topStats['LastThreads']} - ostatnie tematy
{$topStats['LastActiveThreads']} - ostatnio aktywne tematy, ostatnie posty
{$topStats['MostViews']} - najczęściej wyświetlane tematy
{$topStats['Posters']} - użytkownicy z największą ilością tematów
{$topStats['Reputation']} - użytkownicy z największą reputacją
{$topStats['Referrals']} - użytkownicy z największą liczbą poleceń
{$topStats['TimeOnline']} - użytkownicy z najdłuższym czasem online
{$topStats['NewestUsers']} - najnowsi użytkownicy
{$topStats['Moderators']} - moderatorzy z największą liczbą przeprowadzonych akcji
Wszystkie opisane wyżej moduły wyglądają mniej więcej tak:

   

Optymalizacja Łukasza pozwala pluginowi na "pobranie" wyglądu z naszego stylu, by łatwo i wygodnie dopasował się do forum bez konieczności grzebania w szablonach. Dodatkowo, w nowszej wersji wtyczka uwzględnia uprawnienia do działów - nie uwzględnia w statystykach elementów, do których normalnie nie mamy dostępu.

W ACP mamy możliwość ustawienia widoczności, rozmiaru avatarów, działów z których czerpane są dane, oraz ilość osób widzianych w statystykach dla każdego modułu z osobna! Dzięki temu plugin jest bardzo elastyczny, co daje nam to możliwość ustawienia tylko tych statystyk, które nas interesują.


⇒ Plugin dostępny jest w naszej bazie dodatków: KLIK


Zalety:
  • Spora ilość opcji konfiguracji
  • Elastyczność
  • Różne statystyki
  • Pobiera wygląd z głównego stylu forum
  • Uwzględnia uprawnienia

O postępie prac nad MyBB 2.0 słów kilka

Choć w świecie IT widać od jakiegoś czasu trend na coraz krótsze cykle wydawnicze i obecnie przeskok z wersji 7.0 na 8.0 nie jest już tak wielkim wydarzeniem, jak kiedyś, twórcy MyBB zdają się zupełnie odporni na tę modę. Pierwsza publiczna wersja MyBB (RC1)  została wydana w grudniu 2003 r., a na wydanie 1.0 przyszło nam poczekać jeszcze dwa lata, ale minęła już cała dekada, a skrypt wciąż nie wyszedł z gałęzi 1.x. Ekipa przyjęła, że większe aktualizacje oficjalnie będą oznaczane parzystymi numerami (nieparzyste były zarezerwowane dla wersji zastrzeżonych dla developerów) i dlatego na przestrzeni lat otrzymaliśmy MyBB 1.2, 1.4, 1.6 i 1.8. Wyjątkiem od tej reguły jest jedynie wersja 1.1. Wraz z wykorzystaniem wszystkich parzystych cyfr zbliża się czas na odejście od "jedynki".
Pierwsze konkretniejsze wzmianki o MyBB 2.0 pojawiły się już w czerwcu 2011 r., choć była to w sumie tylko krótka informacja o tym, że taka wersja jest tworzona. MyBB 2.0 miało przynieść całkowicie nowy design – od instalatora po zakamarki panelu użytkownika czy administratora. Prywatne wiadomości miały bardziej przypominać  wątki: wiadomości nie były już osobnymi bytami w skrzynce odbiorczej i, ogólnie mówiąc, przestały przypominać maile. MyBB 2.0 było wówczas pisane z wykorzystaniem frameworka Yii (z ang. Yes It Is!) i silnika szablonów Twig.

   
I po tym wpisie przyszedł czas na "długo, długo nic". O wersji 2.0 wspomniano po raz kolejny dopiero w styczniu 2012 r., przy okazji ogłoszenia nowego logo i maskotki MyBB, ale dowiedzieliśmy się wtedy tylko tego, że zarówno logo, jak i maskotka wejdą w użycie wraz z premierą 2.0. Słowa słowami, nowe logo pojawiło się w wersji 1.8 i już teraz zdobi stronę główną skryptu.
Przejdźmy jednak do 2.0. Przez most. Bo wydanie 1.8 było właśnie nazywane "mostem" (pomiędzy 1.x a 2.0), który wprowadził głównie zmiany w wyglądzie. Pozbyto się domyślnego motywu (od 2008 nie przeszedł on większych zmian) i zastąpiono go popularnym stylem Apart, który jest notabene dziełem Justina S., obecnie głównego projektanta MyBB. Przy okazji wprowadzono możliwość łatwego zmieniania kolorów w motywach. Jak już zdążyłem wspomnieć, ekipa zdecydowała się również wprowadzić nowe logo i maskotkę, ale największą nowością było wprowadzenie jQuery. We wcześniejszych wersjach takie elementy jak animacje były tworzone z wykorzystaniem Prototype, ale to jQuery ostatecznie wygrało wyścig o bycie najpopularniejszą biblioteką i przejście na nią było po prostu głosem rozsądku. Oprócz tego w 1.8 pojawił się również nowy motyw panelu administratora i instalatora (choć ich układ pozostał bez zmian), pozbyto się galerii awatarów, wprowadzono możliwość stworzenia forumowego kosza, przyciski CSS i ulepszone narzędzia antyspamowe. MyBB 1.8 wydano 1 września 2014 r., twórcom więc zajęło to ponad 2 lata. Pierwsze wpisy o 1.8 pojawiły się bowiem w kwietniu – ten z pierwszego kwietnia potraktowano jako żart, ale już dwa dni później pojawiły się konkretne informacje.

   
Zostawmy jednak MyBB 1.8 i wróćmy do clou całego wpisu, czyli wersji 2.0. 9 marca pojawił się wpis wyjaśniający włamanie na konto MyBB na Twitterze i rzekomy "wyciek" kodu tej wersji. Tak naprawdę haker miał dostęp tylko do bardzo wczesnej wersji kodu (już napisanego z użyciem frameworka Laravel), którą na dobrą sprawę ciężko było nawet nazwać MyBB. Tego samego dnia pojawił się też pierwszy z tzw. "dev postów", które opisują zmiany w 2.0.
Z pierwszego z tych wpisów dowiadujemy się, że ekipa MyBB porzuciła Yii na rzecz Laravela 5. Laravel w ciągu ostatnich miesięcy zaczął szybko zyskiwać na popularności, co z pewnością przyczyniło się do decyzji o zmianie frameworka. Silnik szablonów nie zmienił się: nadal jest to Twig. Na temat bardziej widocznych zmian w MyBB w wersji 2.0 nie dowiedzieliśmy się zbyt wiele. Oprócz nawiązania do opublikowanych m.in. na Twitterze zrzutów ekranów i filmów, które pokazywały nowy domyślny styl na urządzeniach mobilnych, pokazano nam nowy wygląd tematu, adresy URL przyjazne wyszukiwarkom (obecnie osiągnięcie  tego wymaga skorzystania z pluginu Google SEO) i przyciski stworzone w SVG. Z jednej strony niewiele, z drugiej strony był to dopiero pierwszy wpis z tej serii.

   

Po przeczytaniu drugiego z wpisów dowiadujemy się, że kod MyBB jest tworzony z zachowaniem standardów PSR-2 i PSR-4. Są to wytyczne, które określają zasady formatowania kodu, nazywania zmiennych, funkcji itp. (PSR-2) i strukturę klas, która ma wspomagać ich automatyczne ładowanie (PSR-4). Co więcej, zależnościami w kodzie zarządza teraz Composer, co powinno ułatwić utrzymywanie skryptu, a wiele podstawowych funkcji (np. parser BBCode) wydzielono z kodu głównego. Oznacza to, że każdy będzie mógł w swoim projekcie skorzystać z komponentów stworzonych przez autorów MyBB. Jeśli zaś chodzi o zmiany widoczne przez zwykłego użytkownika: wprowadzono nowy wygląd listy użytkowników (wizytówki zamiast tabeli), widok tematów został uproszczony i dodano do niego awatar autora ostatniego posta (istnieje plugin, który dodaję tę funkcję do wersji 1.8), a system reputacji został rozbudowany o możliwość rozdawania tzw. polubień. Sam mechanizm oceniania wpisów jest oparty na punktach reputacji i przy aktualizacji do 2.0 ma przenieść wszystkie wspomniane punkty na tzw. "lajki". Co ciekawe, system ten nie jest ograniczony tylko do postów na forum: dodanie takiej możliwości do pluginu to kwestia kilku linijek kodu.
W trzecim wpisie autorzy dość dokładnie opisali proces tworzenia MyBB 2.0 od strony stricte technicznej, skupiając się na arkuszach CSS i skryptach JavaScript. Twórcy poszli z duchem czasu i przy tworzeniu nowego domyślnego motywu zdecydowali się na wykorzystanie preprocesora CSS. Zastosowanie takiego rozwiązania pozwala na wykorzystywanie zmiennych, zagnieżdżanie styli, dołączanie arkuszy i wykonywanie w nich działań matematycznych, co nie jest możliwe w zwykłej odmianie CSS. Arkusze są potem kompilowane do "czystego" CSS, dzięki czemu nie wymagają dodatkowych skryptów do działania. Wybór padł tutaj na Sass, jedno z najbardziej znanych narzędzi tego typu, używane w takich projektach jak Bootstrap, Foundation i wielu innych. Rozważane jest również wprowadzenie możliwości korzystania z preprocesorów w motywach użytkowników.

   

Warto też wspomnieć, że autorzy postanowili nazywać klasy zgodnie ze standardem BEM (z ang. block-element-modifier, czyli blok-element-atrybut). Wszystko to powinno sprawić, że kod CSS będzie znacznie łatwiejszy w utrzymaniu. Jeśli chodzi o skrypty, nie ma w nich zbyt wielu zmian. Nie zdecydowano się na przejście z JavaScriptu na CoffeeScriptTypeScript czy inny język, który później jest kompilowany do JS-u. Komponenty są teraz tworzone jako moduły, które należą do przestrzeni nazw "MyBB" i to chyba największa ze zmian.
Skoro mowa już o JavaScripcie, warto wspomnieć o gulp.js, kolejnym rozwiązaniu, które wspomaga prace nad MyBB 2.0. To system automatyzacji zadań, bardzo podobny do Grunta, który pozwala na wykonywanie wielu czynności automatycznie. Za pomocą gulpa możemy np. po wykryciu zmian w danym pliku .sass skompilować pliki Sassa do CSS, połączyć je w jeden arkusz, a potem go zminifkować. Znacząco przyspiesza to pracę i pozwala na zmniejszenie rozmiaru strony, co się przekłada na szybsze wczytywanie jej.
Choć w trzecim wpisie twórcy skupili się głównie na aspektach technicznych, pojawiło się również trochę informacji o rzeczach, które są bardziej widoczne dla przeciętnego użytkownika. Sporą rewolucję przeszedł wspomniany na początku tego wpisu system prywatnych wiadomości, który obecnie przypomina ten z IPB 3: poszczególne wiadomości są grupowane w wątki, a w jednej rozmowie może uczestniczyć wielu użytkowników. Panel użytkownika również został przeprojektowany, a główną zmianą jest wprowadzenie sekcji "Profil", gdzie znajdują się wszystkie ustawienia związane z kontem użytkownika (tzn. avatar, adres e-mail, hasło, pola w profilu itd.).

   

Z czwartego z wpisów możemy się dowiedzieć m.in. o wprowadzeniu do procesu tworzenia testów jednostkowych, za które odpowiedzialny jest framework PHPUnit. Testy takie polegają na sprawdzeniu, czy dany fragment kodu przy odpowiednich danych zachowuje się zgodnie z oczekiwaniami, np. czy po próbie rejestracji bez podania adresu e-mail pojawi się komunikat o błędzie. Takie testy zostaną stworzone np. dla nowego parsera postów, który oprócz MyCode ma też obsługiwać formatowanie z użyciem Markdown. Autorzy MyBB poszli jednak o krok dalej i zdecydowali się na skorzystanie z usługi CircleCI, która zapewnia automatyczne wykonywanie wspomnianych testów. Po raz kolejny widać, że twórcom skryptu bardzo zależy na szybkim, dynamicznym rozwoju.
Jeśli zaś chodzi o samo działanie MyBB: własne pola profilu w wersji 2.0 będzie można grupować, a same pola będą generować kod semantyczny i zgodny z HTML5. Interfejs tworzenia wspomnianych pól również został przeprojektowany, ale twórcy podkreślają, że przedstawiony design nie jest ostateczny i może ulec zmianie. Co ciekawe, twórcy zdecydowali się na wprowadzenie do skryptu możliwości cytowania selektywnego, znanej pewnie wielu użytkownikom tego forum za sprawą pluginu autorstwa naszego administratora, Łukasza. Plugin ten jest dość popularny, więc dodanie tej funkcji z pewnością ucieszy wiele osób.

   

Ostatni z wpisów poświęcony jest głównie zmianom w samym działaniu i wyglądzie skryptu. Z technikaliów mowa jedynie o wytycznych PSR-4 i PSR-2 (o których wspominano już w drugim wpisie). Jedyną zmianą jest robienie wcięć za pomocą tabulatorów, a nie 4 spacji, jak zaleca specyfikacja PSR-2, ale jest to dość gorący temat w środowisku programistów i nie ma co się rozpisywać. Jones stworzył zestaw zasad, które można wykorzystać w CodeSnifferze – narzędziu pilnującym, czy kod jest sformatowany zgodnie z przyjętymi założeniami. Wszystko to jest zintegrowane w CircleCI, o którym wspominano w czwartym wpisie.
Wróćmy jednak do funkcji samego skryptu. W wersji 2.0 dodano możliwość zwijania postów, znaną chociażby z reddita. Sporo zmian czekało system moderacji. System ten pozwala na dodawanie w pluginach nowych opcji i można go stosować również poza wątkami (np. w galerii zdjęć czy dziale pobierania). Miłym dodatkiem jest "przyklejenie" paska z narzędziami moderatorskimi do dolnej krawędzi okna, dzięki czemu jest on zawsze pod ręką. MyBB 2.0 potrafi też przycinać awatary w przeglądarce, co powinno być dużym ułatwieniem dla wielu osób. Wystarczy upuścić obrazek na nasz obecny awatar, a pojawi się interfejs kadrowania. To mała zmiana, ale zdecydowanie przydatna.

   

Podsumowując, twórcy MyBB szykują coś całkowicie nowego. Na dobrą sprawę ciężko tu pisać o zmianach, bo każdy element został napisany od nowa. Ciężko kwestionować dążenie ekipy do usprawnienia procesu tworzenia, ale pojawia się jedno, ważne pytanie: jak te decyzje wpłyną na społeczność? Twórcy stylów będą musieli nauczyć się korzystania z Twiga, a autorów pluginów czeka zgłębianie nowej struktury skryptu, wytycznych dot. kodowania czy przyjętych standardów. Nie będą oni zmuszeni do ich przestrzegania, ale z pewnością im to ułatwi pracę. Czas pokaże, co czeka MyBB po rewolucji, jaką bezsprzecznie jest wersja 2.0.

Dodatki #3: Tabela serwerów

Tabela serwerów – Supryk
Dodatek znany i używany przez większość polskich sieci serwerów gier multiplayer posiadających forum oparte na MyBB. Mimo iż wtyczka nie miała dawno aktualizacji to jej developer nie zapomniał o niej i szykuję następną wersje. Jak sama nazwa wskazuje, dodaje nam tabelę serwerów z danymi takimi jak: status serwera, rodzaj, nazwa, IP, gracze / sloty, procent graczy na serwerze, mapa (w przypadku gier) i dodatkowe ikony kierujące do strony serwera na forum, gametracker, czy ścieżki dodanej przez nas.

   

Jak wspomniałem, każdy dodany serwer posiada swoją podstronę ze szczegółowymi danymi, blok przyjaciół serwera, informację o właścicielu serewra, oraz szczegółowy wykaz graczy obecnych na serwerze (nicki, czas obecności):

   

Na stronie głównej, w miejscu gracze / sloty, mamy możliwość wyboru wyświetlania ilości graczy. Do wyboru mamy dwie opcje: tradycyjne gracze/sloty – % graczy oraz pasek, którego kolor i szerokość będzie zależna od ilości graczy na serwerze. Dodatkowo, po kliknięciu w ilość graczy, pojawia nam się lista obecnych na serwerze graczy.

   

W ACP mamy dość rozbudowaną ilość opcji. By to wszystko ładnie uporządkować, po instalacji wtyczki dodawana jest automatycznie nowa zakładka „Tabela serwerów” w dziale „Konfiguracja”, przez co łatwo i wygodnie dodaje się serwery.

   

Mamy tu również ustawienia pluginu, których mamy aż jedenaście, a w tym opcje wyświetlania ilości graczy, czy wybór miejsca wyświetlania samej tabeli. Dodając serwer do  tabeli, mamy możliwość wybrania jego właściciela oraz działu forum powiązanego z serwerem.
Ważną kwestią jest również to, jakie gry są wspierane przez tabelę. Oto ich lista:

Cytat:⇒ Arma 3
⇒ Battlefield 3
⇒ Battlefield 4
⇒ Call of Duty
⇒ Counter-Strike 1.6
⇒ Counter-Strike Condition Zero
⇒ Counter-Strike Source
⇒ Counter-Strike Global Offensive
⇒ DayZ
⇒ DayZ Mod
⇒ Garry’s Mod
⇒ Left 4 Dead
⇒ Left 4 Dead 2
⇒ MineCraft
⇒ Multi Theft Auto
⇒ Mumble
⇒ San Andreas Multi Player
⇒ Rust
⇒ Terraria
⇒ Team Fortress 2
⇒ Team Fortress Classic
⇒ TeamSpeak 3
⇒ Ventrilo
⇒ Wolfenstein Enemy Territory

UWAGA! Plugin może nie działać prawidłowo na darmowych hostingach takich jak np. cba.pl!

⇒ Plugin dostępny jest w naszej bazie dodatków: KLIK

Zalety:
» Spora liczba wspieranych gier
» Intuicyjne dodawanie serwerów
» Blok przyjaciół serwera w informacjach
» Możliwość powiązania działu forum z danym serwerem

Dodatki #2: Notatka moderatora

Notatka moderatora – Supryk

Wtyczek dodających opcję notatki moderatora jest wiele. Jedne są bardziej dopracowane, inne nieco mniej. Tym razem na warsztat bierzemy „Notatkę Moderatora” od Supryka – Developera naszego forum. Czym ona różni się od pozostałych? Mamy notatkę moderatora w trzech różnych wersjach: zwykła, informacyjna i ostrzegawcza. Każdy moderator może dodać nieograniczoną ilość notatek do każdego postu, a także edytować [E] i usuwać [X] stare, niepotrzebne już notatki.

   

Pisząc notatkę, możemy korzystać z takiego samego edytora tekstu, jak przy pisaniu zwykłego wątku / postu. Mamy również możliwość wysłania Prywatnej Wiadomości (PW) do autora postu, z informacją, że napisaliśmy mu notatkę. W ACP w konfiguracji pluginu możemy określić autora owej informacji. Do wyboru mamy wówczas trzy opcje: Autor notatki, UID (np. UID bota forum), bądź anonim.

   

Dodawany jest osobny przycisk do podstrony z formularzem notki (tak jak w modnotice) „Moderuj” po kliknięciu w opcje „Edytuj post”.

   

Dodatkowo wtyczka jest integralna z pluginem MyAlerts, co nie oznacza, że nie będzie działała bez niego.

⇒ Plugin dostępny jest w naszej bazie dodatków: KLIK
⇒ Plugin dostępny jest w oficjalnej bazie dodatków: KLIK

Zalety:
» Rozbudowany system notatek
» Nieograniczona ilość notatek w jednym poście
» Możliwość edycji, usunięcia starych notatek przyciskiem
» Informacja dla użytkownika o dodaniu notatki
» Wybór autora wiadomości o notatce
» Integracja z MyAlerts
» Optymalność w porównaniz innymi pluginami tygo typu – tylko jedno zapytanie do bazy danych