Drupal: S čím přichází verze 7?

Jeden z nejznámějších volně dostupných redakčních systémů (CMS) Drupal je v současnosti dostupný v šesté verzi. Vývojáři však pracují na nové verzi, která by měla být dostupná během několika měsíců. S některými novinkami, které přinese sedmá verze tohoto systému, se seznámíme v dnešním článku.

Drupal verze 6 vyšel již před více než rokem a půl, a od té doby se šíří po světě s nebývalým úspěchem. Po počátečním zaváhání kvůli čekání na některé důležité přídavné moduly je již každému jasné, že na svět přišlo opět vydání pravděpodobně nejlepšího webového PHP CMS na světě. Vývoj Drupalu 7 od té chvíle pokračuje vysokým tempem a díky prodlouženému vývojovému cyklu v něm opět nezůstane kámen na kameni (K revolučním změnám se vrátíme později, mnoho změn potěší hlavně překladatele).

Dnes se spolu podíváme na dosavadní změny v Drupalu 7 z pohledu vývojářů ať již jádra, či modulů. Změny to nejsou konečné a samozřejmě ani nestihneme popsat všechny, na to by nám nestačilo ani deset článků. Zájemci o kompletní výpis mohou sledovat release notes Drupalu 7.x-dev.

Javascript a mírně z uživatelského rozhraní

Drupal 7 upgradoval na jQuery 1.3.2 a jQuery Forms 2.21. Od minulého měsíce se také můžeme těšit z jQuery UI přímo v jádře. Co to znamená? Hlavně více možností pro interaktivnější rozhraní a již žádná nutnost instalace modulů pro jQuery UI. Drupal byl jedním z prvních CMS, který jQuery zahrnul v jádře, a troufám si říct, že mu tak pomohl ke slávě a velkému rozšíření.

SimpleTest aneb Kdo netestuje, ať nejí

Přidaný jaderný modul pro testy – SimpleTest, umožňuje psaní vlastních testů pro moduly, jejich spouštění a reporting. Samozřejmě – 99 % jaderných modulů je již pokryto testy, infrastruktura na drupal.org má vlastního testovacího robota, takže jakýkoliv jaderný patch se vám nepodaří prosadit, pokud nesplní testy.

Testy jsou velký příspěvek ke kvalitě kódu a konzistenci vývoje, což jen potvrzuje fakt, že Drupal nechává primárně blogovací systémy typu WordPress či systémy s břemenem minulosti typu Joomla! daleko za sebou a sebevědomě se vydává na pole enterprise systémů, které se nebojí nasadit takové společnosti jako Warner Brothers či americká vláda (recovery.gov).

Star Trek, The New Generation (tedy spíš DBTNG)

Hlavní autor DBTNG, Larry Garfield, se jasně inspiroval populárním sériálem a
vytvořil databázové API nové generace s obrovským množstvím funkcí.

Celé API je postaveno okolo PHP PDO. Podporuje master/slave MySQL konfigurace a v podstatě libovolný databázový engine. (Drupal nyní běží na SQLite! Co třeba ho provozovat na iPhone? Proč ne…)

Většina jaderných modulů byla přepsána tak, aby používala nové API s dynamickými dotazy. Dotaz již nyní není nějaký SQL string, je to plnohodnotný objekt, se kterým můžeme dále pracovat, místo dříve používaného (a někdy neobratného) parsování regulárními výrazy:

<?php
// SELECT ... FROM node n
$query = db_select('node', 'n', $options);
// LEFT JOIN user u ON n.uid = u.uid AND u.uid = 5
$table_alias = $query->join('user', 'u', 'n.uid = u.uid AND u.uid = :uid', array(':uid' => 5));
// Pole pro vrácení výsledku
$query->fields('n', array('nid', 'title', 'created', 'uid'));
// ORDER BY title DESC
$query->orderBy('title', 'DESC');
// LIMIT 5, 10
$query->range(5, 10);
?>

Nová generace databázového API také uvedla výchozí nastavení InnoDB enginu pro tabulky.

Field API v jádře

Kdo někdy použil Drupal, určitě ví, co je Content Construction Kit (CCK) – prostředek na efektivní vkládání nových políček typů obsahu. Představte si možnost vytvářet nejenom obsah s nadpisem a textem, ale i externími odkazy, soubory, obrázky, referencemi na
jiné uzly, select boxy či čímkoliv jiným. Existujících polí jsou stovky. Společně s Views je CCK pravděpodobně jednou z nejsilnějších zbraní Drupalu.

Mimo jiné na CCK se v předchozí verzi velmi dlouho čekalo, vzhledem k tomu, že byl přepsán skoro kompletní zdrojový kód. Proto se vývojáři rozhodli zařadit určitou formu CCK přímo do jádra, čímž vzniklo Field API. Má stejné možnosti jako CCK pro Drupal 6, je to však jen API, poskytující pole jiným modulům. Z CCK se v Drupalu 7 stane pouze uživatelské rozhraní pro Field API (pokud se samotné UI nedostane do jádra, což je možné).

RDF namespace registry

Drupal v jádru nyní obsahuje RDF namespace, viz screenshot:

drupal RDF screenshot

Je to opět ukázka náskoku, který Drupal oproti obdobným systémům má – v současnosti asi neexistuje jiný Open Source PHP CMS, který bude mít RDF v jádře.

Výkon a bezpečnost

Jako Drupal 6 představil Theme registry, Drupal 7 nyní uvede Code registry – registr všech implementací hooků z modulů, stejně jako všech dalších funkcí, který je v cache. To mimo jiné umožňuje použít lazy-loading techniku includování souborů a zrychluje celé načtení stránky. Weby trpící na Digg/Slashdot efekt budou nyní moci kompletně vypnout anonymní sessions a tak ušetřit další drahocenné milisekundy.

Bezpečnost Drupalu byla díky robustnímu API vždy výborná (o tom někdy příště), nicméně vinou vývojářů modulů se často objevovala XSS zranitelnost v modulech, které nesprávně používaly drupal_set_title(). Tato funkce nyní sama o sobě filtruje vstup, který jí přijde, proto již nehrozí nebezpečí od takto neznalých vývojářů.

Závěr

Změny, které jsme si naznačili, nejsou jediné, ve skutečnosti jsou jich stovky. Pokusil jsem se shrnout jen ty nejdůležitější a největší, které se zatím udály. S vývojem však není konec, oficiální „code-freeze“ je 1. září, můžeme se tedy stále těšit.

V příštím článku se pomocí mnoha screenshotů podíváme na změny z hlediska usability, což je hlavní téma současného vývoje.

Autor je propagátor Drupalu v ČR. Provozuje server Drupal.cz, je členem Drupal security teamu a napsal pro Drupal několik volně dostupných modulů.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 26

Přehled komentářů

neotaa používám 6. je super
Martin Malý Re: používám 6. je super
Jakub Suchy Re: používám 6. je super
David Majda Je třeba se navážet do ostatních?
andb Re: Je třeba se navážet do ostatních?
David Majda Re: Je třeba se navážet do ostatních?
Shabbi Re: Je třeba se navážet do ostatních?
David Majda Re: Je třeba se navážet do ostatních?
bodlinka Re: Je třeba se navážet do ostatních?
Borek Bernard Re: Je třeba se navážet do ostatních?
Petr Objektovost
JS Re: Objektovost
Martin modla drupaláků CCK je vlastně šílený humus
d.f.h Re: modla drupaláků CCK je vlastně šílený humus
Lamicz Re: modla drupaláků CCK je vlastně šílený humus
Tomas Re: modla drupaláků CCK je vlastně šílený humus
Mark Re: modla drupaláků CCK je vlastně šílený humus
Mastodont Překlad
blizz.boz Hahaha
Tomas Re: Hahaha
Pche Re: Hahaha
lzap Tři výborné články
Drupal je lepší než Re: Drupal: S čím přichází verze 7?
Asterixx zajimava studie
petiar Čo má Drupal na rozdiel od ostatných CMS?
aaa Re: Čo má Drupal na rozdiel od ostatných CMS?
Zdroj: https://www.zdrojak.cz/?p=3049