Ołówki

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.
Formularz typu 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.

Typ grupy - zakładki

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.

Uprawnienia grupy


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:

Typ grupy - role

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).

Typ grupy - zawartość

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.
Dodawanie nowej 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.
 

W ramach wsparcia dla Drupala utrzymujemy istniejące strony internetowe i rozbudowujemy je o nowe funkcjonalności