Ślęcząc ostatnio nad drupalem odkryłem, że większość można załatwić css'ami. Chwała im za to. 90% problemów zamiotłem pod dywan za pomocą display: none; bądź porozstawiałem floatami po kątach. Praktycznie całą potrzebną mi funkcjonalność znalazłem w gotowych modułach. Schody zaczęły się przy trackbackach, więc zajrzałem do kodu, a to, co tam znalazłem opisałbym na przykładzie gry na pomysł której wpadłem, gdy po kilku godzinach dałem sobie spokój.
Gra jest prosta i zatytułuję ją "Gra dla EMO". Jest typu RPG, a jej fabuła zaczyna się od tego, że zostajemy okradzeni z całego złota. Na dzień dobry pojawia się nam okienko dialogowe "Zostałeś okradziony. Czy chcesz się pochlastac?". Pod nim mamy dwie opcje wyboru. "Tak" oraz "Później". Po kliknięciu w pierwszą pojawia się nam kolejne okno dialogowe z treścią "Pochlastałeś się. Czy chcesz pochlastać się ponownie?", a pod nim dwa przyciski wyboru - "Tak", "Później". Po kliknięciu w pierwszy pojawia się ponownie to samo okno z tą samą treścią i tymi samymi klawiszami. Po kliknięciu w drugą opcję dostajemy okno dialogowe z komunikatem o treści "Czy zdecydowałeś się już na pochlastanie?" i tymi samymi, co wcześniej opcjami do wyboru. Po wybraniu bramki nr 2 dostajemy ponownie to samo okienko, a po kliknięciu w "Tak" wracamy do poprzedniego okna dialogowego z treścią "Pochlastałeś się. Czy chcesz pochlastać się ponownie?". I tak w koło Macieju.
Wielkim bossem, którego mamy do pokonania w grze jest drupalowy kod, a walka jest nierówna, ponieważ gamemasterzy drupala dołożyli starań, by przewidzieć wszelką możliwą funkcjonalność. Algorytmu gry z powodzeniem można użyć w celach dydaktycznych jako przykładu na wyjaśnienie czym jest rekurencja.
Istnieje tylko jeden sensowny sposób na pokonanie bossa. Tak samo jak w vim'ie jest nim wyjście i, również tak samo jak w nim, pierwszym sensownym sposobem jaki przychodzi do głowy niewtajemniczonemu jest skorzystanie z dobroczynnej funkcjonalności polecenia kill.
Obranie innej taktyki grozi nieprzewidzianymi wynikami gry. U siebie osiągnąłem między innymi zakończenie strony wraz z jej nagłówkiem. Ze zdobytej wcześniej wiedzy wiem jednak, że prościej uzyskać ten sam efekt wizualny stosując body { display: none; }
Szybciej i mniej nerwów. Serdecznie polecam.