SlideShare a Scribd company logo
1 of 24
Rules

Wprowadzenie



                           prezentujący:
                      Jarosław, Sobiecki
               Senior software developer
Rules – kilka słów wprowadzenia




Rules – to narzędzie to implentacji logiki biznesowej w myśl modelu ECA:


➔Event - „nasłuchujemy” na zdarzenie w systemie
➔Condition – sprawdzamy czy zdarzenie nas interesuje
➔Action – jeśli tak – wykonujemy operację

Oprócz tego rules to framework dla programisty, pozwalający tworzyć te
wszystkie komponenty. O tym mówić nie będziemy.
Rules – Ćwiczenie 1




Zadanie 1.

Włącz moduł rules, rules ui wraz z zależnościami.
Potrzebujemy:
 ●  http://drupal.org/project/rules
 ●  http://drupal.org/project/entity
Rules – Wstępna konfiguracja
Rules – zdarzenia

Event, czyli zdarzenia, np.:


➔Wyświetlono stronę
➔Użytkownik zalogował się
➔Usunięto treść
➔Dodano komentarz
➔Itp...

Wykorzystujemy bibliotekę istniejących zdarzeń dostarczanych
przez moduły i moduł rules lub brudzimy sobie ręce i dodajemy
własne korzystając z API.
Rules – warunki



Condition, czyli warunki dotyczące zdarzenia, np.:


Czy treść jest artykułem?
●



Kim jest użytkownik?
●



Czy dzisiaj jest środa?
●



Czy w tytule mamy słowo „Hej”
●




Warunki można łączyć operatorami logicznymi „i” oraz „lub”
Rules – podstawy akcji




Action, czyli akcje/operacje. Przykłady:


➔   Wyświetl informację dla użytkownika
➔   Wyślij wiadomość elektroniczną
➔   Przekieruj użytkownika na inną stronę
➔   Zablokuj użytkownika

Mamy do dyspozycji bogatą bibliotekę akcji dostarczaną przez moduł rules
oraz inne moduły z drupal.org. Jak i to nie starczy, API modułu pozwala
dodawać nowe.
Rules – podstawy akcji




DEMO – wprowadzenie do UI
Rules – podstawy akcji
Rules – podstawianie danych




O potędze rules decyduje to, że możemy w warunkach i akcjach
odwoływać się do danych powiązanych z podmiotem zdarzenia, np. autor
treści, tytuł i temu podobne. Używamy do tego tokenów (zwanych różnie,
replacement patterns, data source etc.)
Rules – dostęp do danych
Rules – ćwiczenie 2




Ćwiczenie 2.

Dodajmy rules, który po zapisaniu treści wyświetli użytkownikowi
komunikat:
„Dodano treść o tytule {tytuł}. Czy chcesz {link do strony dodawania treści|
dodać kolejną}?
Rules – ćwiczenie 3



Warunki mogą być łączone operatorami koniunkcji i alternatywy.
Rules – ćwiczenie 3




Ćwiczenie 3.

Dodaj do poprzednio utworzonego rule dwa warunki.
Treść jest typu „Artykuł”
i
Treść jest opublikowana (status = 1)
Rules – Pętle




Rules obsługuje także iteracje po strukturach danych.

Na przykład:

➔Możemy wykonać akcję dla każdego termu dodanego dla artykułu osobno.
➔Możemy dla każdego użytkownika powiązanego z artykułem wysłać

wiadomość.

Pętle dodajemy jako specyficzny rodzaj operacji.
Rules – Ćwiczenie 4




Ćwiczenie 4.

Do utworzonego wcześniej rules, dodaj pętlę, która dla każdego taga
dodanego do artykułu wyświetli wiadomość: „Ta treść ma tag: {tag}”
Rules – Komponenty




Pojedynczy rules może stać się skomplikowany.
Jak współdzielić kod między rules i zaoszczędzić własnego czasu?

Odpowiedzią są komponenty. Komponenty pozwalają na tworzenie:

- Sparametryzowany zestaw warunków
- Sparametryzowany zestaw akcji
- Sparametryzowany rules lub ich zestaw
Rules – Komponenty




Ćwiczenie 5.

Utwórz komponent (Warunek typu „I”), który sprawdzi czy
- Po zapisaniu treść jest opublikowana (status opublikowany)
- Przed zapisaniem treść nie istniała (była nowa) lub treść nie była
opublikowana

Następnie, użyj komponentu w rules, który wyświetli ostrzeżenie „Uwaga,
treść została opublikowana. Widzi ją teraz każdy!”
Rules – Import / Eksport




Rules można importować oraz eksportować. W ramach eksportu utworzony
zostanie kod rules, który na drugim środowisku można zaimportować.
Rules – Import/export




Ćwiczenie 6.

Korzystając z panelu eksportu, wyeksportuj rules z poprzedniego ćwiczenia
do postaci kodu. Zmień w kodzie wypluwany komunikat i zaimportuj rules
ponownie (pamiętaj o opcji override).
Rules – Przykłady użycia




➔Powiadom moderatora o treści oczekującej na publikację.
➔Powiadom autora artykułu o komentarzu


➔Powiadom o odpowiedzi na komentarz


➔Zmień okruszki chleba


➔Warunkowo opublikuj artykuł (moderacja)


➔Czyszczenie cache aplikacji


➔Współpraca z modułem views (zaawansowany panel administracji)


➔Rules link
Rules – Podsumowanie




➔ W rules używa się podejścia „Co” a nie „Jak”.
➔Logika biznesowa to trójki ECA – Event / Condition / Action


➔Warunki można ze sobą łączyć (proste wyrażenia logiczne)


➔Można tworzyć pętle po strukturach danych


➔Gdy chcemy ponownie wykorzystywać „kod” – tworzymy komponenty
Rules – Podsumowanie




➔ Rules pozwalają wyeliminować potrzebę użycia wielu modułów.
Zmniejszają więc liczbę własnego kodu w projekcie.
➔ Rules pozwalają wyręczyć programistę w wielu prostszych zadaniach,

potrafią więc przyspieszyć proces deweloperski (ale nie zawsze).

Więcej informacji: http://drupalize.me/videos/introduction-rules
Dziękuję za uwagę
    Jaroslaw Sobiecki

More Related Content

What's hot

DrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
DrupalDay & Drupal Global Training Days - Wprowadzenie do DrupalaDrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
DrupalDay & Drupal Global Training Days - Wprowadzenie do DrupalaGrzegorz Bartman
 
Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Grzegorz Bartman
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Grzegorz Bartman
 
Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Droptica
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Droptica
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Droptica
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Droptica
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 
Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Droptica
 
Drupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczDrupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczGrzegorz Bartman
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychThe Software House
 

What's hot (14)

DrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
DrupalDay & Drupal Global Training Days - Wprowadzenie do DrupalaDrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
DrupalDay & Drupal Global Training Days - Wprowadzenie do Drupala
 
Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
 
Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]Nowości w drupal 9 i 10 [PL]
Nowości w drupal 9 i 10 [PL]
 
Grok Artykul
Grok ArtykulGrok Artykul
Grok Artykul
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]
 
Drupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka PiłasiewiczDrupal Features - Agnieszka Piłasiewicz
Drupal Features - Agnieszka Piłasiewicz
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 

Similar to Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki

"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbaćBartosz Ratajczyk
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Krzysztof Synak
 
Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Bartlomiej Zass
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 officialskowronkow
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynskiduchowe50k
 
Testy funkcjonalne
Testy funkcjonalneTesty funkcjonalne
Testy funkcjonalnePROSKAR
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...HighSolutions Sp. z o.o.
 
EloquentSequence - historia pewnej biblioteki Open Source
EloquentSequence - historia pewnej biblioteki Open SourceEloquentSequence - historia pewnej biblioteki Open Source
EloquentSequence - historia pewnej biblioteki Open SourceLaravel Poland MeetUp
 
Domain Driven Development
Domain Driven DevelopmentDomain Driven Development
Domain Driven DevelopmentKonrad Russa
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaWojciech Lichota
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITRedge Technologies
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...twitch.tv/katmpb
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationMaciej Zbrzezny
 

Similar to Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki (20)

"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 official
 
react-pl.pdf
react-pl.pdfreact-pl.pdf
react-pl.pdf
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
 
Testy funkcjonalne
Testy funkcjonalneTesty funkcjonalne
Testy funkcjonalne
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
 
EloquentSequence - historia pewnej biblioteki Open Source
EloquentSequence - historia pewnej biblioteki Open SourceEloquentSequence - historia pewnej biblioteki Open Source
EloquentSequence - historia pewnej biblioteki Open Source
 
Ansible w praktyce
Ansible w praktyceAnsible w praktyce
Ansible w praktyce
 
Domain Driven Development
Domain Driven DevelopmentDomain Driven Development
Domain Driven Development
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
 
university day 1
university day 1university day 1
university day 1
 
M4j3
M4j3M4j3
M4j3
 
M4j3
M4j3M4j3
M4j3
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows Application
 

More from Grzegorz Bartman

Automatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaAutomatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaGrzegorz Bartman
 
Wprowadzenie do pisania własnych modułów oraz do systemu menu.
Wprowadzenie do pisania własnych modułów oraz do systemu menu. Wprowadzenie do pisania własnych modułów oraz do systemu menu.
Wprowadzenie do pisania własnych modułów oraz do systemu menu. Grzegorz Bartman
 
WYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterWYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterGrzegorz Bartman
 
Drupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboDrupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboGrzegorz Bartman
 
Drupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekDrupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekGrzegorz Bartman
 
Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Grzegorz Bartman
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Grzegorz Bartman
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Grzegorz Bartman
 
Drupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plDrupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plGrzegorz Bartman
 

More from Grzegorz Bartman (10)

Automatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaAutomatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych Drupala
 
Wprowadzenie do pisania własnych modułów oraz do systemu menu.
Wprowadzenie do pisania własnych modułów oraz do systemu menu. Wprowadzenie do pisania własnych modułów oraz do systemu menu.
Wprowadzenie do pisania własnych modułów oraz do systemu menu.
 
WYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterWYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz Rychter
 
Drupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboDrupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor Burbo
 
Drupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekDrupal Context - Agnieszka Cupek
Drupal Context - Agnieszka Cupek
 
Drupal 7 training - Views
Drupal 7 training - ViewsDrupal 7 training - Views
Drupal 7 training - Views
 
Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
 
Drupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plDrupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.pl
 

Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki

  • 1. Rules Wprowadzenie prezentujący: Jarosław, Sobiecki Senior software developer
  • 2. Rules – kilka słów wprowadzenia Rules – to narzędzie to implentacji logiki biznesowej w myśl modelu ECA: ➔Event - „nasłuchujemy” na zdarzenie w systemie ➔Condition – sprawdzamy czy zdarzenie nas interesuje ➔Action – jeśli tak – wykonujemy operację Oprócz tego rules to framework dla programisty, pozwalający tworzyć te wszystkie komponenty. O tym mówić nie będziemy.
  • 3. Rules – Ćwiczenie 1 Zadanie 1. Włącz moduł rules, rules ui wraz z zależnościami. Potrzebujemy: ● http://drupal.org/project/rules ● http://drupal.org/project/entity
  • 4. Rules – Wstępna konfiguracja
  • 5. Rules – zdarzenia Event, czyli zdarzenia, np.: ➔Wyświetlono stronę ➔Użytkownik zalogował się ➔Usunięto treść ➔Dodano komentarz ➔Itp... Wykorzystujemy bibliotekę istniejących zdarzeń dostarczanych przez moduły i moduł rules lub brudzimy sobie ręce i dodajemy własne korzystając z API.
  • 6. Rules – warunki Condition, czyli warunki dotyczące zdarzenia, np.: Czy treść jest artykułem? ● Kim jest użytkownik? ● Czy dzisiaj jest środa? ● Czy w tytule mamy słowo „Hej” ● Warunki można łączyć operatorami logicznymi „i” oraz „lub”
  • 7. Rules – podstawy akcji Action, czyli akcje/operacje. Przykłady: ➔ Wyświetl informację dla użytkownika ➔ Wyślij wiadomość elektroniczną ➔ Przekieruj użytkownika na inną stronę ➔ Zablokuj użytkownika Mamy do dyspozycji bogatą bibliotekę akcji dostarczaną przez moduł rules oraz inne moduły z drupal.org. Jak i to nie starczy, API modułu pozwala dodawać nowe.
  • 8. Rules – podstawy akcji DEMO – wprowadzenie do UI
  • 10. Rules – podstawianie danych O potędze rules decyduje to, że możemy w warunkach i akcjach odwoływać się do danych powiązanych z podmiotem zdarzenia, np. autor treści, tytuł i temu podobne. Używamy do tego tokenów (zwanych różnie, replacement patterns, data source etc.)
  • 11. Rules – dostęp do danych
  • 12. Rules – ćwiczenie 2 Ćwiczenie 2. Dodajmy rules, który po zapisaniu treści wyświetli użytkownikowi komunikat: „Dodano treść o tytule {tytuł}. Czy chcesz {link do strony dodawania treści| dodać kolejną}?
  • 13. Rules – ćwiczenie 3 Warunki mogą być łączone operatorami koniunkcji i alternatywy.
  • 14. Rules – ćwiczenie 3 Ćwiczenie 3. Dodaj do poprzednio utworzonego rule dwa warunki. Treść jest typu „Artykuł” i Treść jest opublikowana (status = 1)
  • 15. Rules – Pętle Rules obsługuje także iteracje po strukturach danych. Na przykład: ➔Możemy wykonać akcję dla każdego termu dodanego dla artykułu osobno. ➔Możemy dla każdego użytkownika powiązanego z artykułem wysłać wiadomość. Pętle dodajemy jako specyficzny rodzaj operacji.
  • 16. Rules – Ćwiczenie 4 Ćwiczenie 4. Do utworzonego wcześniej rules, dodaj pętlę, która dla każdego taga dodanego do artykułu wyświetli wiadomość: „Ta treść ma tag: {tag}”
  • 17. Rules – Komponenty Pojedynczy rules może stać się skomplikowany. Jak współdzielić kod między rules i zaoszczędzić własnego czasu? Odpowiedzią są komponenty. Komponenty pozwalają na tworzenie: - Sparametryzowany zestaw warunków - Sparametryzowany zestaw akcji - Sparametryzowany rules lub ich zestaw
  • 18. Rules – Komponenty Ćwiczenie 5. Utwórz komponent (Warunek typu „I”), który sprawdzi czy - Po zapisaniu treść jest opublikowana (status opublikowany) - Przed zapisaniem treść nie istniała (była nowa) lub treść nie była opublikowana Następnie, użyj komponentu w rules, który wyświetli ostrzeżenie „Uwaga, treść została opublikowana. Widzi ją teraz każdy!”
  • 19. Rules – Import / Eksport Rules można importować oraz eksportować. W ramach eksportu utworzony zostanie kod rules, który na drugim środowisku można zaimportować.
  • 20. Rules – Import/export Ćwiczenie 6. Korzystając z panelu eksportu, wyeksportuj rules z poprzedniego ćwiczenia do postaci kodu. Zmień w kodzie wypluwany komunikat i zaimportuj rules ponownie (pamiętaj o opcji override).
  • 21. Rules – Przykłady użycia ➔Powiadom moderatora o treści oczekującej na publikację. ➔Powiadom autora artykułu o komentarzu ➔Powiadom o odpowiedzi na komentarz ➔Zmień okruszki chleba ➔Warunkowo opublikuj artykuł (moderacja) ➔Czyszczenie cache aplikacji ➔Współpraca z modułem views (zaawansowany panel administracji) ➔Rules link
  • 22. Rules – Podsumowanie ➔ W rules używa się podejścia „Co” a nie „Jak”. ➔Logika biznesowa to trójki ECA – Event / Condition / Action ➔Warunki można ze sobą łączyć (proste wyrażenia logiczne) ➔Można tworzyć pętle po strukturach danych ➔Gdy chcemy ponownie wykorzystywać „kod” – tworzymy komponenty
  • 23. Rules – Podsumowanie ➔ Rules pozwalają wyeliminować potrzebę użycia wielu modułów. Zmniejszają więc liczbę własnego kodu w projekcie. ➔ Rules pozwalają wyręczyć programistę w wielu prostszych zadaniach, potrafią więc przyspieszyć proces deweloperski (ale nie zawsze). Więcej informacji: http://drupalize.me/videos/introduction-rules
  • 24. Dziękuję za uwagę Jaroslaw Sobiecki