Group - przegląd modułu dla Drupala
Tworzenie grup użytkowników z dostępem do wybranych treści to jedno z częstych wymagań stawianych w specyfikacjach portali internetowych. Moduł Group pozwala zaoszczędzić setki godzin programowania, dostarczając gotowe i łatwo rozszerzalne mechanizmy. Sprawdź, jak wiele przydatnych funkcji możesz znaleźć w tym module.
Group powstał jako alternatywa do modułu Organic Groups (OG), w którym mechanizmy relacji opierają się na polach i zawartości. W module Group stworzono natomiast pełnoprawne encje posiadające własne pola, dające się roszerzyć i weksportować. Każda grupa może posiadać swoich własnych użytkowników, czy unikalnie skonfigurowane uprawnienia.
Daty
Początki modułu sięgają jeszcze wersji Drupala 7, dla którego pierwsza wersja dev ukazała się w 2010 roku. Wersja modułu dla Drupala 8 została natomiast wydana po raz pierwszy w marcu 2016 i rozwijana jest do dziś. Najnowsza, stabilna 1.2, została wydana 4 sierpnia 2020.
Popularność modułu
Moduł Group cieszy się sporą popularnościa i obecnie korzysta z niego ponad 9 000 serwisów internetowych. Zdecydowaną większość, bo około 8200, stanowią projekty bazowane na Drupalu 8.
Autorzy modułu
Głównym opiekunem modułu jest Kristiaan Van den Eynde (kristiaanvandeneynde), który dokonał w module już blisko 900 commitów. Moduł jest wspierany finansowo przez firmę Factorial GmbH, a wprzeszłości był wspierany przez inne firmy i organizacje. Oczywiście za rozwojem modułu i jego podmodułów stoi także rzesza programistów społeczności Drupala.
Dotychczas w rozwój modułu wkład miało 56 deweloperów. Pełna listę zajdziesz tutaj: https://www.drupal.org/node/711148/committers
Do czego służy moduł
Moduł Group rozwiązuje problem, którego w Drupalu nie da się rozwiązać za pomocą wbudowanych mechanizmów. Pozwala on na podzielenie użytkowników na grupy, w obrębie których można zarządzać zarówno uprawnieniami użytkowników, jak i tworzyć dedykowane jedynie dla członków grupy treści.
Jest to niezwykle złożony od strony programistycznej projekt. Posiada szereg klas i funkcji zapewniajacych kluczowe funkcjonalości, m.in. obsługę uprawnień, cache, czy integracje z modułami znajdującymi się w rdzeniu Drupala. W repozytorium modułu znajduje się podmoduł gnode, umożliwiający tworzenie relacji między zawartością a grupami. Moduł Group można także roszerzyć o funkcjonalność tworzenia podgrup, a jest to możliwe przy wykorzystaniu modułów Subgroup lub Subgroup (Graph).
Przykładowe sytuacje wykorzystania to:
- zarządzanie klasami w szkole, gdzie nauczyciele pełnią rolę administratorów, uczniowie są członkami danej grupy, a wszyscy oni posiadają dostęp do wspólnych materiałów,
- dostęp do odpłatnych treści poprzez ograniczenie dostępości materiałów dla członków grupy (przykład znajdziesz w naszym artykule Drupal Commerce - Sprzedawaj produkty elektroniczne)
- portale dla organizacji/społeczności o hierarchicznej strukturze (szereg jednostek zależnych od siebie, ale posiądających różnych członków i administratorów)
- organizacja i zarządzanie konferencjami (zapisy na wykłady, dostęp do materiatłów, dyskusyje).
Group to zatem świetne narzędzie, które w ramach usług drupalowych wykorzystujemy, aby tworzyć zamknięte grupy użytkowników z dostępem do konkretnych treści.
Unboxing
Moduł możesz pobrać ze strony https://www.drupal.org/project/group.
Po instalacji między zakładkami Konfiguracja a Użytkownicy w głównym menu systemowy pojawi się nowa grupa w menu Groups (/admin/group).
Group dostarcza nowy rodzaj encji, a zatem w submenu znajdziemy odnośniki do takich stron jak typy grup czy lista. Posiada także stronę z konfiguracją, na której możliwe jest ustawienie skórki administracyjnej dla stron edycji group, użytkowników grup, itp.
Moduł Group nie wymagana żadnej specyficznej konfiguracji, aby można było z niego korzystać.
Użycie modułu
W celu utworzenia grup musimy najpierw zdefiniować przynajmniej jeden typ grupy. Należy przejść pod adres "/admin/group/types" i stworzyć nowy typ grupy. Proces ten przypomina tworzenie nowego typu zawartości, czy słownika, ale posiada też dodatkowe pola konfiguracyjne związane z uprawnieniami użytkowników tworzących grupy.
Po utworzeniu typu grupy mamy możliwość konfiguracji pól grupy, a także wiążących się z tym widoków formularza i wyświetlania grupy.
W celu określenia uprawnień mamy także możliwośc przejścia do zakładki Permissions, pod którą możemy zdefiniować podstawowe uprawnienia w podziale na:
- anonimowych użytkwników,
- członków grupy,
- użytkowników nie będących członkami grupy,
- członków grupy posiadających określoną rolę w grupie.
Dostępna jest także zaawansowana konfiguracja uprawnień użytkowników z poza grupy z wykorzystaniem ról systemowych.
Dla danego typu grupy możliwe jest definiowanie ról (analogicznie do ról definiowanych w core Drupala). Możliwe jest to z poziomu zakładki Roles:
Jedną z najważniejszych zakładek jest Content, z poziomu której możemy zainstalować dostępnę roszerzenia dla grupy, a są wśród nich: rodzaje zawartości, członkostwo w grupie, czy też subgrupy (po zainstalowaniu wspomnianych wcześniej modułów).
Po przejściu przez wszystkie formularze, tworzenie nowych grup danego typu staje się banalnie proste. Wystarczy przejść na stronę listy grup (/admin/group) i dodać potrzebne nam grupy.
Jak widać opcji konfiguracyjnych zwłaszcza dotyczących uprawnień w module jest całkiem sporo, jednakże są one niezbędne do jego poprawnego działania i z pewnością w toku użytkowania modułu można docenić ich zalety.
Bardzo ciekawe zastosowanie modułu Group znajdziesz w dystrybucji Open Social.
Hooki i integracje
Moduł posiada możliwość modyfikowania linków z operacjami na encji osadzanych w bloku na stronie grupy za pomocą hooku hook_group_operations_alter, który w swych argumentach przyjmuje tablicę linków oraz obiekt grupy.
Group zapewnia integrację z modułami:
- Views oferując pluginy takie jak: access, argument, default argument, relationship.
- Tokens - 21 tokenów dla grupy i jej zawartości.
Podsumowanie
Moduł Group to bardzo dojrzały i złożony programistycznie moduł. Dodaje on mechanizm do tworzenia grup i powiązanych z nimi treści, których próżno szukać w czystej instalacji CMS Drupal. Został on napisany z zachowaniem należytej dbałości o wysoką jakość kodu, przy jednocześnej trosce o łatwe jego rozszerzenie o nowe funkcjonalności. Jeśli moduł ten wpisuje się w potrzeby Twojego projektu, nasi konsultanci Drupala rekomendują, aby użyć bez wahania.