Matt Butcher, Larry Garfield, John Wilkins, Matt Farina, Ken Rickard, Greg Dunlap
Drupal Programování modulů
Computer Press, a. s. Brno 2011
K1911_sazba.indd 1
14.9.2011 10:04:30
Drupal Programování modulů Matt Butcher, Larry Garfield, John Wilkins, Matt Farina, Ken Rickard, Greg Dunlap Computer Press, a. s., 2011. Vydání první. Překlad: Ondřej Baše Jazyková korektura: Veronika Ukropová Sazba: René Kašík Rejstřík: Tereza Dusíková Obálka: Martin Sodomka Komentář na zadní straně obálky: Martin Domes
Technická spolupráce: Jiří Matoušek, Zuzana Šindlerová, Dagmar Hajdajová Odpovědný redaktor: Martin Domes Technický redaktor: Jiří Matoušek Produkce: Petr Baláš
Copyright © Packt Publishing 2010. First published in the English language under the title ‘Drupal 7 Module Development’ Autorizovaný překlad z originálního anglického vydání Drupal 7 Module Development. Originální copyright: © Packt Publishing 2010. Překlad: © Computer Press, a.s., 2011. Computer Press, a. s., Holandská 3, 639 00 Brno Objednávky knih: http://knihy.cpress.cz distribuce@cpress.cz tel.: 800 555 513 ISBN 978-80-251-3440-5 Prodejní kód: K1911 Vydalo nakladatelství Computer Press, a. s., jako svou 4081. publikaci. © Computer Press, a. s. Všechna práva vyhrazena. Žádná část této publikace nesmí být kopírována a rozmnožována za účelem rozšiřování v jakékoli formě či jakýmkoli způsobem bez písemného souhlasu vydavatele.
K1911_sazba.indd 2
16.9.2011 12:59:49
Obsah Předmluva ............................................................................... 13 O autorech............................................................................... 15 O odborných korektorech...................................................... 19 Úvodem ................................................................................... 21 Co najdete v této knize ....................................................................................................21 Komu je tato kniha určena .............................................................................................22 Konvence ..............................................................................................................................23 Zpětná vazba od čtenářů................................................................................................24 Zdrojové kódy ke knize ...................................................................................................24 Errata ......................................................................................................................................24
Kapitola 1 Úvod do vývoje modulů Drupalu.......................................... 25 Úvod do Drupalu (pro vývojáře) ..................................................................................26 Technologie pohánějící Drupal ....................................................................................26 Jazyk PHP...............................................................................................................................................27 Databáze a systém MySQL ..............................................................................................................27 Jazyky HTML, CSS a JavaScript ......................................................................................................28 Další technologie ................................................................................................................................28 Webový server .....................................................................................................................................28 Operační systém .................................................................................................................................28
Architektura Drupalu ........................................................................................................28 Hlavní knihovny Drupalu .................................................................................................................30 Háčky Drupalu .....................................................................................................................................30 Hlavní moduly Drupalu ....................................................................................................................31 Databáze ................................................................................................................................................31
K1911_sazba.indd 3
14.9.2011 10:04:49
4
Obsah Systém témat vzhledu ......................................................................................................................32
Hlavní subsystémy Drupalu ...........................................................................................33 Témata vzhledu ...................................................................................................................................33 Nabídky ..................................................................................................................................................33 Uzly ..........................................................................................................................................................33 Soubory ..................................................................................................................................................34 Uživatelé ................................................................................................................................................34 Komentáře.............................................................................................................................................34 Pole a entity ..........................................................................................................................................35 Rozhraní Forms API ............................................................................................................................35 Instalační profily ..................................................................................................................................35 Framework Simple Test ....................................................................................................................35 Bloky ........................................................................................................................................................36 Ostatní subsystémy............................................................................................................................36
Nástroje pro vývoj v Drupalu ........................................................................................36 Správa verzí pomocí systémů Git a CVS .....................................................................................36 Webové stránky popisující rozhraní API a programovací standardy ...............................37 Moduly určené vývojářům ..............................................................................................................37
Shrnutí ...................................................................................................................................38
Kapitola 2 První modul ............................................................................ 39 Náš cíl – modul s blokem ................................................................................................39 Vytvoření nového modulu .............................................................................................40 Názvy modulů......................................................................................................................................40 Kam náš modul patří? .......................................................................................................................41 Vytvoření adresáře modulu ............................................................................................................42 Soubor .info ..........................................................................................................................................43 Tvorba souboru .module .................................................................................................................46
Práce s rozhraním Block API...........................................................................................54 Háček hook_block_info() .................................................................................................................55 Háček hook_block_view() ...............................................................................................................56 První modul v akci ..............................................................................................................................58
Psaní automatických testů .............................................................................................59 Vytváření testu.....................................................................................................................................60
Shrnutí ...................................................................................................................................67
K1911_sazba.indd 4
14.9.2011 10:04:49
Obsah
5
Kapitola 3 Témata vzhledu Drupalu........................................................ 69 Řídicí logika vs. prezentační logika .............................................................................70 Rozlišení dat.........................................................................................................................72 Jádra témat vzhledu .........................................................................................................73 Dva způsoby jak na témata vzhledu ..........................................................................73 Funkce témat vzhledu ......................................................................................................................73 Soubory šablon ...................................................................................................................................76
Zobrazované elementy....................................................................................................82 Zobrazované vlastnosti ....................................................................................................................84 Háček hook_element_info() ...........................................................................................................85 Háček hook_page_alter() ................................................................................................................86
Síla funkce theme() ...........................................................................................................86 Návrhy na háčky témat vzhledu ...................................................................................................87
Registr témat vzhledu ......................................................................................................89 Výchozí hodnoty proměnných ......................................................................................................89 Háček hook_theme() .........................................................................................................................90 Háček hook_theme_registry_alter() ............................................................................................92
Co ještě zbývá? ...................................................................................................................93 Shrnutí ...................................................................................................................................93
Kapitola 4 Stylování modulu ................................................................... 95 Opakované používání implementace výchozího tématu vzhledu .................96 Další setkání s bloky Drupalu .........................................................................................................97 Stylování bloku Drupalu ............................................................................................................... 101 Zobrazovaný element a návrh na háček tématu vzhledu ................................................ 102 Tvorba funkce pre_render() ......................................................................................................... 103 Připojování pravidel stylů jazyka CSS k zobrazovaným polím........................................ 105 Jazyky psané zprava doleva ........................................................................................................ 105
Návod na sestavení implementace výchozího tématu vzhledu ................... 108 Implementace háčku hook_theme() ........................................................................................ 109 Proměnné versus zobrazovaný element................................................................................. 110 Funkce pro předzpracování ......................................................................................................... 110 Soubory šablon ................................................................................................................................ 115
Shrnutí ................................................................................................................................ 118
K1911_sazba.indd 5
14.9.2011 10:04:49
6
Obsah
Kapitola 5 Tvorba administračního rozhraní ....................................... 119 Modul User Warn ............................................................................................................ 120 Zahájení prací na našem modulu ............................................................................. 120 Systém nabídek Drupalu.............................................................................................. 121 Definování funkce zpětného volání stránky pomocí háčku hook_menu()................ 121 Zástupné znaky v cestách nabídek ........................................................................................... 124
Rozhraní Form API .......................................................................................................... 126 Funkce drupal_get_form() ........................................................................................................... 126 Tvorba funkce zpětného volání formuláře ............................................................................. 127 Správa trvalých dat ......................................................................................................................... 131 Proces odesílání formuláře........................................................................................................... 133 Zjednodušený způsob pro systémová nastavení ................................................................ 135 Zjednodušený způsob pro potvrzovací formuláře ............................................................. 136
Odesílání e-mailu s pomocí funkcí drupal_mail() a hook_mail() .................. 137 Volání funkce drupal_mail()......................................................................................................... 138 Implementace háčku hook_mail() ............................................................................................ 139
Systém tokenů ................................................................................................................. 141 Co jsou tokeny .................................................................................................................................. 141 Implementace tokenů v našem textu ...................................................................................... 142
Shrnutí ................................................................................................................................ 144
Kapitola 6 Práce s obsahem ................................................................... 145 Proč vytvářet své vlastní entity .................................................................................. 146 Cíl .......................................................................................................................................... 146 Svazky ................................................................................................................................. 146 Rozhraní Schema API .................................................................................................... 147 Deklarujeme naší entitu ............................................................................................... 149 Deklarace entity ............................................................................................................................... 150 Řadič entity ........................................................................................................................................ 154
Správa entit ....................................................................................................................... 156 Správa typů uměleckých děl ....................................................................................................... 157 Přidávání uměleckých děl ............................................................................................................ 159 Prohlížení uměleckých děl ........................................................................................................... 169 Editace uměleckého díla ............................................................................................................... 170
K1911_sazba.indd 6
14.9.2011 10:04:49
Obsah
7
Mazání uměleckého díla ............................................................................................................... 171
Shrnutí ............................................................................................................................... 175
Kapitola 7 Vytváření nových polí .......................................................... 177 Náš cíl: pole s rozměry .................................................................................................. 177 Jak funguje rozhraní Field API.................................................................................... 178 Tvorba našeho nového typu pole ............................................................................ 179 Deklarace pole .................................................................................................................................. 179 Definice struktury pole .................................................................................................................. 180 Rozhodnutí o prázdnosti .............................................................................................................. 181 Nastavení polí ................................................................................................................................... 182 Validace polí ...................................................................................................................................... 182
Vystavování polí rozhraní Form API s pomocí widgetů.................................... 184 Deklarace widgetu .......................................................................................................................... 184 Jednoduché formuláře widgetu ................................................................................................ 185 Složité widgety ................................................................................................................................. 187
Používání formátovačů k zobrazování našeho pole .......................................... 192 Deklarace formátovače.................................................................................................................. 192 Formátovače s jedinou hodnotou ............................................................................................. 193 Složité formátovače ........................................................................................................................ 194
Správa polí mimo systém Field .................................................................................. 197 Vyhledávání entit a polí................................................................................................ 198 Shrnutí ................................................................................................................................ 202
Kapitola 8 Povolení a zabezpečení modulů ......................................... 203 Prosazování oprávnění funkcí user_access() ........................................................ 204 Ověřování správného uživatelského účtu ............................................................. 205 Háček hook_permission() ............................................................................................ 209 Definujeme oprávnění našeho modulu .................................................................................. 210 Píšeme háček hook_permission() .............................................................................................. 211
Deklarace vlastních přístupových funkcí ............................................................... 212 Reakce na odepření přístupu ..................................................................................... 215 Povolování oprávnění programově ......................................................................... 217 Definice rolí programově ............................................................................................. 219
K1911_sazba.indd 7
14.9.2011 10:04:49
8
Obsah Zabezpečení formulářů v Drupalu ........................................................................... 219 Rozhraní Forms API ......................................................................................................................... 220 Zakazování formulářových prvků .............................................................................................. 220 Předávání citlivých dat ve formulářích .................................................................................... 221 Provádění kontroly přístupu u formulářů............................................................................... 223
Bezpečné zpracování funkcí zpětného volání Ajaxu ......................................... 224 Používání technologie Ajax ve formulářích ........................................................................... 224 Používání technologie Ajax v dalších kontextech ............................................................... 225
Shrnutí ................................................................................................................................ 229
Kapitola 9 Přístup k uzlům ..................................................................... 231 Srovnání systému Node Access s funkcí user_access() a jinými kontrolami oprávnění ................................................................................ 232 Jak Drupal přiděluje oprávnění uzlů ........................................................................................ 232 Funkce node_access() .................................................................................................................... 234 Porovnání háčku hook_node_access() s tabulkou node_access ................................... 239
Jak používat háček hook_node_access() ............................................................... 242 Ukázkový modul řízení přístupu ................................................................................................ 242 Druhý modul řízení přístupu ....................................................................................................... 244 Operace prohlížení a moduly řízení přístupu ....................................................................... 247
Kdy napsat modul přístupu k uzlům ....................................................................... 247 Tabulka node_access a její role .................................................................................................. 248 Popis schématu tabulky node_access ..................................................................................... 250 Definice přístupových pravidel našeho modulu ................................................................. 251
Tvorba modulu Role Access ........................................................................................ 252 Háček hook_node_access_records() ........................................................................................ 253 Háček hook_node_grants() ......................................................................................................... 255 Úvahy nad zabezpečením ............................................................................................................ 256 Přestavba tabulky node_access ................................................................................................. 258
Úprava chování ostatních modulů ........................................................................... 260 Háček hook_node_grants_alter() .............................................................................................. 260 Háček hook_node_access_records_alter()............................................................................. 264
Testování a ladění našeho modulu .......................................................................... 266 Používání modulu Devel Node Access .................................................................................... 267
Shrnutí ................................................................................................................................ 269
K1911_sazba.indd 8
14.9.2011 10:04:49
Obsah
9
Kapitola 10 JavaScript v systému Drupal ............................................... 271 JavaScript uvnitř Drupalu ............................................................................................ 272 Vkládání JavaScriptu...................................................................................................... 272 Přidávání souborů jazyka JavaScript a jazyka CSS do souborů .info............................ 273 Funkce drupal_add_js() ................................................................................................................. 273 Používání rozhraní Library API .................................................................................................... 278 Používání zobrazitelných polí ..................................................................................................... 280
Změna kódu JavaScriptu ............................................................................................. 281 Změna kódu jazyka CSS ................................................................................................................ 282
Kód JavaScriptu určený pro systém Drupal .......................................................... 283 Prezentace s možností použití témat vzhledu ...................................................................... 283 Přeložitelné textové řetězce ........................................................................................................ 284 Chování ............................................................................................................................................... 284
Pomocné funkce technologie AJAX ........................................................................ 286 Přidávání technologie AJAX k formulářům ............................................................................ 286 Automatické aplikovaní AJAXu .................................................................................................. 288 Ajaxové příkazy ................................................................................................................................ 290
Shrnutí ................................................................................................................................ 292
Kapitola 11 Práce se soubory a obrázky ................................................. 293 Moduly Twitpick a Watermark.................................................................................... 294 Soubory v Drupalu ......................................................................................................... 294 Rozhraní File API.............................................................................................................. 295 Obaly proudu ................................................................................................................... 298 Tvorba obalu proudu ..................................................................................................................... 299
Obrázky v Drupalu.......................................................................................................... 304 Rozhraní Image API......................................................................................................................... 305 Styly obrázků ..................................................................................................................................... 309 Tvorba obrázkových efektů ......................................................................................................... 311 Vytváření stylů obrázků z modulu............................................................................................. 316
Shrnutí ................................................................................................................................ 318
K1911_sazba.indd 9
14.9.2011 10:04:49
10
Obsah
Kapitola 12 Instalační profily ................................................................... 319 Představení instalačních profilů ................................................................................ 319 Distribuce Drupalu ......................................................................................................... 320 Založení distribuce .......................................................................................................................... 320 Standardní a minimální profily ................................................................................................... 320 Tvorba adresáře s profily ............................................................................................................... 320 Moduly a témata vzhledu profilu .............................................................................................. 321
Tvorba profilů ................................................................................................................... 321 Povolování modulů ......................................................................................................................... 322 Systém instalačních úloh .............................................................................................................. 323 Výběr instalační úlohy nebo použití háčku hook_install() ............................................... 324 Anatomie instalační úlohy ........................................................................................................... 324 Vytváření úlohy ................................................................................................................................ 325 Změna úloh........................................................................................................................................ 329 Konfigurace bloků ........................................................................................................................... 330 Nastavení proměnných ................................................................................................................. 332 Filtry textu .......................................................................................................................................... 332 Umístění zdrojového kódu........................................................................................................... 333
Spouštění instalačního nástroje z příkazového řádku ...................................... 334 Shrnutí ................................................................................................................................ 336
Příloha A Přístup k databázi ................................................................ 337 Základní dotazy ............................................................................................................... 338 Objekty výsledků ............................................................................................................ 338 Dynamické dotazy.......................................................................................................... 339 Dotazy INSERT.................................................................................................................. 341 Dotazy UPDATE ............................................................................................................... 343 Dotazy DELETE................................................................................................................. 343 Dotazy MERGE ................................................................................................................. 343 Pokročilá témata ............................................................................................................. 344 Transakce ............................................................................................................................................ 344 Sekundární servery ......................................................................................................................... 345
Shrnutí ................................................................................................................................ 346
K1911_sazba.indd 10
14.9.2011 10:04:49
Obsah
11
Příloha B Bezpečnost ............................................................................ 347 Myslete bezpečně........................................................................................................... 347 Filtrování versus escapování ....................................................................................... 348 Filtrování ............................................................................................................................................. 348 Escapování jazyka HTML ............................................................................................................... 349 Vložení kódu jazyka SQL ............................................................................................................... 349
Řízení přístupu k uzlům ................................................................................................ 350 Zpracování nezabezpečeného kódu ....................................................................... 350 Neztrácet krok s dobou ................................................................................................ 351 Shrnutí ................................................................................................................................ 352
Rejstřík .................................................................................. 353
K1911_sazba.indd 11
14.9.2011 10:04:50
K1911_sazba.indd 12
14.9.2011 10:04:50
Předmluva Projekt Drupal vytvořil z vlastní iniciativy Dries Buytaert, který je rovněž vedoucím tohoto projektu a v tehdejší době byl vysokoškolským studentem. Původně vytvořil malé webové stránky s novinkami a nástěnkou, aby mohl zůstat v kontaktu se svými přáteli. Když se pomalu blížil čas jeho promoce, umístil tento malý skript veřejně na web, kde se kolem něj začala shromažďovat malá, avšak aktivní, komunita vývojářů, hackerů, nejrůznějších všeumělů a vynálezců. Ze skriptu pohánějícího tyto webové stránky se v lednu roku 2001 stal projekt s otevřeným zdrojovým kódem nesoucí název Drupal. Projekt Drupal si rychle získal pozornost díky své rozšiřitelnosti a modulární architektuře. Od té doby se projekt Drupal se svou komunitou neuvěřitelně rozrostli. Komunita okolo tohoto projektu se skládá z více než 700 000 lidí z různých končin světa. Systém Drupal dnes pohání přes 1 % webu, a to včetně všeobecně známých stránek whitehouse.gov nebo grammy.com; z českých stránek můžeme jmenovat kupříkladu stránky phpmyadmin.cz. V současné době pracuji v komunitě okolo projektu Drupal jako vedoucí vydání na poslední verzi systému Drupal – verzi 7. Spolu s Driesem Buytaertem pomáháme hlavnímu týmu přispěvatelů upřesňovat priority, zajišťujeme konečnou kvalitu záplat a v neposlední řadě ukládáme změny do zdrojových kódů projektu, jakmile nastane správný čas. Verze Drupal 7 představuje opravdu obrovský skok kupředu oproti předchozím verzím. Hlavní tým přispěvatelů velmi pečlivě zkoumal omezení systému Drupal ze všech možných úhlů. Na několika univerzitách se uskutečnilo testování použitelnosti, které odhalilo spoustu dlouhotrvajících problémů s uživatelským rozhraním Drupalu a s jeho použitelností, do nichž se s velkou chutí pustil tým zabývající se použitelností. Vývojáři společnými silami odhalili a analyzovali ohromné množství omezení rozhraní API, která sužovala starší verze. Tým pro zajišťování kvality vyvinul značné úsilí na začlenění automatických testů do vývojového procesu, čímž velmi zlepšil schopnost přepisovat různé části systému do lepší podoby. Návrháři z komunity okolo projektu Drupal vystoupili se svými námitkami vůči nedostatečnému řešení tvorby témat vzhledu, jenž je často nutilo k přechodu na jiné frameworky. Vznikl tedy tým zabývající se přístupností, který vydává záplaty za účelem přizpůsobení systému Drupal pravidlům WCAG, ale rovněž vzdělává členy komunity v oblasti přístupnosti. Drupal 7 je pozoruhodnou verzí z mnoha důvodů, avšak především díky rozmanitosti týmu, který se podílel na jejím vývoji. Výsledkem všech těchto úprav je však to, že ve verzi Drupal 7 zůstalo jen velmi málo věcí, které se oproti předchozím verzím nezměnily. Abstraktní databázová vrstva se kompletně přepsala a nyní se zakládá na knihovně PHP Data Objects (PDO), jež zavádí novou objektově-orientovanou syntaxi dotazů. V systému Drupal 7 se kromě formulářů a určitého obsahu (například uživatelských dat nebo dat uzlů) zakládá celá stránka na zobrazitelných polích, což má fantastický dopad na témata vzhledu. K různým entitám systému můžeme přidávat pole metadat prostřednictvím vestavěného rozhraní API pro pole a entity. Tento úkon vyžadoval dříve dodatečný modul a museli jsme se smí-
K1911_sazba.indd 13
14.9.2011 10:04:50
14
Předmluva
řit se skutečností, že můžeme pouze rozbalovat obsah. Pod kapotou nové verze Drupalu se skrývají další stovky vylepšení. Tato kniha vás detailně provede skrz nejdůležitější, nové a upravené koncepce tak, abyste je mohli začít používat v praxi. Autoři tohoto vydání knihy mají více než jen hluboké znalosti vnitřního chování systému Drupal 7, jelikož ve většině případů doslova psali vše, díky čemuž tyto vnitřní funkce fungují. Larry Garfield je hlavním architektem nové objektově-orientované abstraktní databázové vrstvy ve verzi Drupal 7 a udržuje databázový systém jádra Drupalu. John Wilkins je autorem spousty vylepšení šablonových souborů a funkcí systému témat vzhledu, jež vzešla zejména z jeho tvrdé práce na tématu vzhledu Zen. Ken Rickard dohlížel na řadu vylepšení systému přístupu k uzlům v Drupalu 7 poté, co odhalil několik vnějších omezení ve svých modulech Domain Access a Menu Access. Matt Farina pomáhal se spoustou klíčových vylepšení JavaScriptu, a to včetně zaměnitelnosti jazyků CSS a JavaScript a zlepšení efektivity prezentační části systému. Greg Dunlap mnohokrát objevil prakticky neodhalitelné chyby při práci s dokumentací rozhraní API. Upřímně doufám, že tato kniha najde spoustu horlivých čtenářů, kteří nebudou rozšiřovat systém Drupal 7 jen proto, aby vyhověli svým konkrétním požadavkům, ale rozšíří řady naší aktivní komunity, poskytnou nám své zkušenosti a pomůžou nám vylepšovat systém Drupal. Angela Byron, údržbářka jádra systému Drupal 7 a tajemnice společnosti Drupal Association
K1911_sazba.indd 14
14.9.2011 10:04:50
O autorech Matt Butcher je webový vývojář a autor několika knih. Napsal dalších pět knih pro nakladatelství Packt, a to včetně titulů „Drupal 6 JavaScript and jQuery“ a „Learning Drupal 6 Module Development.“ Matt pracuje jako senior vývojář v oddělení ConsumerSearch.com společnosti New York Times, kde má na starosti vývoj jedněch z největších webových stránek na světě postavených na systému Drupal. Matt je aktivním členem komunity okolo Drupalu a udržuje několik modulů. Rovněž řídí pár projektů s otevřeným kódem – včetně projektu QueryPath. Chtěl bych poděkovat Larrymu, Kenovi, Samovi, Mattovi, Gregovi a Johnovi za spolupráci na této knize. Jedná se o skvělou skupinu lidí, s nimiž je radost spolupracovat. Také bych rád poděkoval odborným korektorům této knihy, kteří přispěli k lepší kvalitě této knihy. V neposlední řadě bych chtěl poděkovat Austinu Smithovi, Brianovi Tullymu, Cachi Kruelové, Marcovi McDougallovi, Therese Summa a zbytku týmu ConsumerSearch. com za jejich podporu. Lidé ze společnosti Palantir.net pomohli této knize vstát ze země a jsem vždy vděčný za jejich pomoc. Nakonec – Angie, Anna, Claire a Katherine obětovaly několik víkendů a večerů se mnou ve prospěch této knihy. Dlužím jim tudíž největší část svého poděkování. Greg Dunlap je softwarový analytik žijící v Stockholmu, ve Švédsku. V posledních 15 letech pracoval na široké škále projektů, a to včetně desktopových databázových aplikací, informačních kiosků, specializovaných programů pro pinball a výherní automaty a webových stránek, přičemž programoval ve více než deseti programovacích jazycích. Po dobu tří let se výrazně podílel na vývoji systému Drupal a udržuje moduly Deploy a Services; rovněž je častým mluvčím na konferencích o Drupalu. V současné době Greg řídí vývoj programů ve společnosti NodeOne. Několik lidí sehrálo klíčové role při mém vývoji systému Drupal, jelikož mi poskytovali pomoc a povzbuzovali mě, když jsem to nejvíce potřeboval. Největší poděkování si zaslouží Gary Love, Jeff Eaton, Boris Mann, Angie Byronová a Ken Rickard za zpříjemnění mé práce. Zvláště bych chtěl poděkovat Roye Naini za to, že se smířila se ztrátou několika společných večerů a víkendů, zatímco jsem dokončoval své kapitoly. Matt Farina je vývojářem Drupalu od roku 2005. Je zkušeným vývojářem prezentačních částí systémů, analytikem a vedoucím vývoje ve společnosti Palantir.net, v níž pracuje na řadě projektů – od webových stránek muzeí po velké interaktivní webové stránky. Přispívá k vývoji jádra systému Drupal a také udržuje několik modulů Drupalu.
K1911_sazba.indd 15
14.9.2011 10:04:50
16
O autorech
Matt napsal svůj první počítačový program, když byl v páté třídě. Od té doby programoval ve více než deseti programovacích jazycích. Matt je držitelem bakalářské titulu v oboru elektroinženýrství z univerzity Michigan State University. Larry Garfield je senior architekt a analytik ve společnosti Palantir.net, což je přední firma pro vývoj Drupalu se sídlem v Chicagu. Larry vytváří webové stránky od svých 16 let, což je mnohem déle, než by si rád připustil. V jazyce PHP pracuje od roku 1999. S Drupalem se seznámil v roce 2005, kdy byla ještě na výsluní zájmu verze Drupal 4.6, a v podstatě už jej neopustil. Kromě toho, že je vedoucím architektem a údržbářem databázového subsystému Drupalu, pochází od něj také řada nápadů vylepšujících samotné jádro systému a taktéž několik modulů. Larry pracoval v minulosti jako vývojář pro operační systém Palm OS a jako novinář zabývající se tématem mobilní elektroniky; mimo jiné byl technickým redaktorem knihy „Building Powerful and Robust Websites with Drupal 6“ od nakladatelství Packt. Je držitelem bakalářského a magisterského titulu v oblasti počítačových věd z univerzity DePaul University. Kdybych měl poděkovat všem lidem, kteří pomohli spatřit této knize světlo světa, potřeboval bych spoustu stránek; podobně jako seznam přispěvatelů systému Drupal 7 obsahoval okolo 700 lidí, když jsem jej prohlížel naposledy. Raději tedy poděkuji celé komunitě okolo Drupalu za její aktivitu, podporu a vůbec všechny ty úžasné věci, které mi ještě přivozují slzy na krajíčku po více než půl desetiletí. Zvláštní poděkování si zaslouží Dries Buytaert, a to nejen za to, že je vedoucím celého projektu, ale rovněž za to, že sedí poblíž mě v sídle DrupalCon Sunnyvale a povzbuzuje mě v mé šílené myšlence zapojit knihovnu PDO do databázové vrstvy Drupalu. Pochybuju o tom, že tuší, kolik starostí mu přinesu v nejbližších letech. Samozřejmě děkuju také rodičům, kteří mi vštěpovali nejen lásku k učení, ale rovněž jistou úroveň pedantství a tvrdohlavosti, bez nichž bych se nedostal v projektu Drupal tak daleko; nemluvě o této knize. Ken Rickard je senior programátor ve společnosti Palantir.net. Často přispívá k projektu Drupal a udržuje moduly Domain Access, MySite a Menu Node API. Ve společnosti Palantir.net navrhuje a staví obří webové stránky pro různorodé typy zákazníků – od vydavatelů magazínu Foreign Affairs, přes pořadatele závodů NASCAR, až po zaměstnance univerzity University of Chicago. Od roku 1998 do roku 2008 pracoval v oboru novinářství, v němž začínal svou kariéru se správou webových stránek a později se stal výzkumníkem a konzultantem ve společnosti Morris DigitalWorks. V této společnosti pomáhal spustit webové stránky blufftontoday.com – první zpravodajský server postavený na platformě Drupal. Ken spoluzaložil skupinu „Newspapers on Drupal“ (http:// groups.drupal.org/newspapers-on-drupal) a také často publikuje. V roce 2008 pomohl iniciativě Knight Drupal Initiative v jejích začátcích. Jedná se o otevřený příspěvkový proces založený nadací John L. and James S. Knight Foundation. Je taktéž členem dozorčí rady projektu PBS Engage, což je projekt nadace John L. and James S. Knight Foundation s cílem přinést sociální média do služby Public Broadcasting Service. Před vznikem této knihy byl odborným korektorem knihy „Drupal 6 Site Blueprints“ od Timiho Ogunjobiho (nakladatelství Packt).
K1911_sazba.indd 16
14.9.2011 10:04:50
O autorech
17
Musím poděkovat všem zaměstnancům společnosti Palantir.net, komunitě okolo projektu Drupal a své milované a trpělivé ženě Amy, bez nichž by nic z tohoto nebylo možné. John Albin Wilkins je webovým vývojářem už velmi dlouhou dobu. V květnu 1993 byl jedním z mála šťastlivců, kteří měli možnost vyzkoušet si první grafický webový prohlížeč – prohlížeč Mosaic 1.0. Webovým vývojem se zabývá profesionálně od roku 1994. V roce 2005 konečně zjistil, jak hloupé bylo vytvářet vlastní framework pro webové aplikace a objevil sílu Drupalu; od té doby se už nikdy neohlídl zpět. V komunitě okolo projektu Drupal je známý pod přezdívkou JohnAlbin a patří k 20 nejlepším přispěvatelům. John udržuje téma vzhledu Zen, což je velmi dobře zdokumentované a funkčně bohaté výchozí téma vzhledu s neuvěřitelně flexibilním frameworkem pro kaskádové styly. Napsal také několik pomocných modulů pro prezentační část systému – kupříkladu modul Menu Block. John v současnosti pracuje se skvělou skupinou vývojářů, návrhářů a tvůrců témat vzhledu Drupalu ve společnosti Palantir.net. Jeho příležitostné hudební příspěvky, videopříspěvky a podcasty je možné najít na adrese http:// john.albin.net/. Chtěl bych poděkovat celé komunitě okolo projektu Drupal za vynikající podporu, přátelství, rozčilování, naštvání a inspiraci; prostě podobně jako v rodině. Také chci poděkovat své skutečné rodině – své ženě Jenny a dvěma dětem, Owenovi a Elle, za to, že mi dodávají sílu do života. Miluji vás všechny.
K1911_sazba.indd 17
14.9.2011 10:04:50
K1911_sazba.indd 18
14.9.2011 10:04:50
O odborných korektorech Davy Van Den Bremt vyvíjí webové stránky založené na systému Drupal přibližně čtyři roky. Žije ve městě Ghent v Belgii a pracuje jako senior vývojář v Drupalu u společnosti Krimson. Studoval počítačové vědy na univerzitě University of Ghent, ale vrhl se na web jako návrhář a vývojář na straně klienta. Stal se vývojářem Drupalu na plný úvazek, zatímco pracoval u společnosti VRT – vlámské společnosti pro veřejné vysílání. Od té doby vytvořil webové stránky pro většinu hlavních belgických mediálních společností, reklamních agentur a vládních institucí. Stará se o blog na adrese drupalcoder.com, do nějž vkládá poznámky o všech věcech, které během své práce s Drupalem objevil a chce se s nimi podělit s ostatními uživateli. Napsal nějaké záplaty pro Drupal 7 a udržuje několik modulů, mezi které patří například moduly Administration Theme a E-mail Marketing Framework. Dave Myburgh se zabýval počítači ještě před vznikem webu. Studoval na molekulárního biologa, ale záhy zjistil, že jej práce s počítači naplňuje více než práce s bakteriemi. Měl vlastní prodejnu s počítači v Jižní Africe (kde vyrůstal) a živil se prodejem a poskytováním technické podpory. Tou dobou dokonce vytvořil několik statických webových stránek pro své klienty. Jakmile se přestěhoval do Kanady, lapil se do světa Drupalu, když po něm před pár lety jeho kamarád chtěl, aby vytvořil webové stránky pro místní historickou společnost. Potom si opět založil svou vlastní společnost a nyní staví webové stránky výhradně s pomocí Drupalu (už nevytváří nadále žádné „statické“ webové stránky). Ve světě Drupalu je vždy co dělat, proto nyní pečlivě rozděluje svůj čas mezi práci a rodinu. Dohlížel na řadu knih o systému Drupal – kupříkladu na knihy „Drupal 5 Themes“ a „Drupal 6 Themes.“ Chtěl bych poděkovat své rodině za to, jak mě a mou práci podporují. Práce z domu má své výhody i nevýhody, ale příležitost vidět vyrůstat svého syna za to určitě stojí. Jojodae Ganesh Sivaji patří do komunity okolo Drupalu přes dva roky. Sivaji je rozhodně aktivním členem; přispívá této komunitě tak, že píše záplaty pro moduly core a contrib. Účastnil se programu Google Summer of Code 2009, na němž pracoval pro společnost Drupal na zdokonalování funkcí kvízového modulu, a to spolu Mattem Butcherem a dalšími vývojáři Drupalu. Projekt se dočkal úspěšného konce pod vedením učitelů Matta Butchera a Shyamaly. Sivaji vytvořil a stará se o několik modulů a témat vzhledu na webových stránkách drupal.org. Uživatelský profil Sivaje na stránkách Drupalu lze najít zde: http://drupal.org/user/328724. V současnosti pracuje jako vedoucí webový vývojář a programátor ve společnosti SG E-ndicus InfoTech Pvt Ltd v Chennai, v Indii. V této společnosti zodpovídá za analýzu požadavků, nacházení a poskytování řešení a tvorbu a údržbu webových stránek (převážně v Drupalu a v Joomle).
K1911_sazba.indd 19
14.9.2011 10:04:50