Jak tworzyć TODO listy w Drupalu? Przegląd modułu Checklist API

Jak tworzyć TODO listy w Drupalu? Przegląd modułu Checklist API

Lista rzeczy do zrobienia jest podstawowym narzędziem produktywnego człowieka. Pomaga w codziennej pracy i pozwala lepiej wykonywać swoje obowiązki. Jak się okazuje, pewne jej elementy można wprowadzić także do panelu administracyjnego strony internetowej na Drupalu.

W tym artykule przyjrzymy się modułowi Checklist API, który dostarcza użytkownikom Drupala ciekawą implementację listy TODO.

Daty

Pierwsze wydanie alpha modułu ukazało się w 2012 roku dla Drupala 7. Wersja stabilna 1.0 została opublikowana kilkanaście miesięcy później. Do dziś stworzono 12 stabilnych wersji, w tym najnowszy oznaczony numerem 2.0, przeznaczony dla Drupala 8 i 9.

Popularność

Mimo że moduł Checklist API nie jest w ścisłej czołówce popularności, przez lata stał się dość rozpoznawalny. Obecnie według oficjalnych statystyk wykorzystuje go ponad 30 tysięcy stron opartych o Drupala, w tym 63% z nich stanowi gałąź 7.x-1.x.

Oficjalne statystyki wykorzystania modułu Drupala Checklist API

Twórcy modułu

Moduł utrzymuje Travis Carden z firmy Acquia, który jest nadzwyczaj aktywny w społeczności Drupala. Oprócz niego w projekcie brało dotąd udział 11 osób. Łącznie utworzono ok. 170 commitów.

Przeznaczenie modułu

Moduł Checklist API służy do tworzenia list z checkboxami. Status wykonania zadań zapisywany jest do konfiguracji lub do State API, można modyfikować go za pomocą kodu. Checklist API może być wykorzystane do zbudowania listy rzeczy do zrobienia, ale jest to tylko jeden ze sposobów jego użycia.

W przypadku dystrybucji Droopler moduł Checklist API posłużył nam jako mechanizm wspomagający proces aktualizacji. Gdy automatyczne procesy zawiodą, zwracamy uwagę użytkownikowi, aby wykonał ręcznie operacje niezaznaczone na liście. Jako pomoc służą mu szczegółowe instrukcje i linki:

Użycie modułu Checklist API w dystrybucji Drupala Droopler

Checklist API jest używane przez wiele narzędzi do sprawdzania stron pod kątem SEO i jakości, w tym między innymi SEO Checklist oraz QA Checklist.

Unboxing

Moduł jest dostępny na stronie Drupal.org. Możesz go zainstalować zarówno poprzez Composer (komendą composer require drupal/checklistapi), jak i z pliku .zip dostępnego na stronie Drupal.org.

Użycie modułu

Zapewne po uruchomieniu modułu Checklist API zaskoczy Cię fakt, że nie ma on żadnego panelu administracyjnego. Nowe listy można stworzyć wyłącznie za pośrednictwem API. Służy do tego hook - hook_checklistapi_checklist_info().

Oto przykładowy hook dodający prostą checklistę z rzeczami do zrobienia przy publikowaniu nowej strony internetowej:

/**
* Implements hook_checklistapi_checklist_info().
*
* Defines an example deploy checklist.
* .
*/
function mylist_checklistapi_checklist_info() {
 $definitions = [];
 $definitions['mylist'] = [
   '#title' => t('Website deploy checklist'),
   '#path' => '/admin/config/development/website-checklist',
   '#callback' => 'mylist_checklistapi_checklist_items',
   '#description' => t('An example deploy checklist for the website.'),
   '#help' => t('<p>This is an example deploy checklist for your website, provided by the hook_checklistapi_checklist_items().</p>'),
   '#storage' => 'state',
 ];
 return $definitions;
}

Hook ten odwołuje się do funkcji mylist_checklistapi_checklist_items, która zwraca wielowymiarową tablicę. Checklistę dzielimy na taby z zadaniami. Każde zdefiniowane zadanie może mieć opis i listę linków ułatwiających użytkownikowi jego realizację:

/**
* Implements callback_checklistapi_checklist_items() for mylist.
*/
function mylist_checklistapi_checklist_items() {
 return [
   'tab1' => [
     '#title' => t('Drupal admin panel'),
     '#description' => t('<p>Set up the Drupal installation for PROD environment.</p>'),
     'aggregate_css_js' => [
       '#title' => t('Enable JS/CSS aggregation'),
       '#description' => t('Enable optimization of the site assets, it is crucial for page speed.'),
       'handbook_page' => [
         '#text' => t('Performance options'),
         '#url' => Url::fromUri('base://admin/config/development/performance'),
       ],
     ],
     'disable_devel' => [
       '#title' => t('Disable "devel" module'),
       'handbook_page' => [
         '#text' => t('Module list'),
         '#url' => Url::fromUri('base://admin/modules'),
       ],
     ],
   ],
   'tab2' => [
     // ...
   ],
 ];
}

Po wywołaniu powyższego kodu, każdy uprawniony użytkownik strony otrzyma dostęp do nowej checklisty. Gdy odznaczy kolejne pozycje, uzyska przejrzystą informację o stopniu zakończenia zadań:

Przykład checklisty w Drooplerze, dystrybucji Drupala

Definiowanie treści za pośrednictwem kodu ma tu jedną podstawową zaletę - możliwość manipulacji zadaniami, w tym automatycznego oznaczania ich jako ukończone. Patrząc na powyższy przykład, moglibyśmy napisać moduł, który sam sprawdzi, czy agregacja CSS/JS jest włączona oraz czy moduł “devel” został odinstalowany. W ten sposób potencjalny użytkownik zaoszczędzi sporo czasu.

Oto przykładowy fragment kodu, który ładuje checklistę i wymusza jej stan początkowy. Jeśli moduł “devel” jest aktywny, dotyczący go checkbox zostanie automatycznie zaznaczony.

$handler = \Drupal::service('module_handler');
$checklist = checklistapi_checklist_load('mylist');
$progress = [
 'tab1' => [
   'disable_devel' => $handler->moduleExists('devel'),
 ],
];
$checklist->saveProgress($progress);

Podsumowanie

Checklist API jest bardzo przydatny przy wykonywaniu powtarzalnych czynności, jak na przykład te, które robimy przy publikowaniu nowej strony internetowej. Moduł może również służyć jako narzędzie wspomagające monitoring bezpieczeństwa i optymalizację stron, wykonywaną w ramach usług mających na celu utrzymanie i wsparcie Drupala.

Przy niewielkim nakładzie pracy, Checklist API zapewnia dużo możliwości oraz udostępnia wygodny interfejs dla nietechnicznych użytkowników. Zdecydowanie polecam bliższe zapoznanie się z jego funkcjonalnościami.

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