[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
1. DRUPAL 8:
I CAMBIAMENTI CHE CI
ASPETTANO
Marco Pagliarulo (@Morpheus80ta)
Corrado Grimoldi (@coreykck)
2. Indice
• In & Out
• Theming con Twig
• HTML5
• Responsive Layout + Mobile
• CMI: la proposta
• Punti di contatto con Symfony
3. • Views
In & Out
• Blog
• Profile
• Date API
• DrupalUnitTestBase
• Dashboard
• Breakpoint
• Picture
• Garland
4. Theming con Twig
I motivi della scelta:
"We hand themers a loaded gun and tell
them to hammer in a nail with it. Oh,
and be careful" (John Albin)
• Sicurezza sopra ogni altra cosa
5. Theming con Twig
I vantaggi:
• Maggiore sicurezza
• Separazione tra le logiche applicative e la
presentazione
• Codice pulito, manutenibile, riusabile
• Non è necessario conoscere PHP
• Estendibile
• Template engine di Symfony
6. Theming con Twig
NODE.TPL.PHP NODE.TWIG
<article id="node-{{ node.nid }}" class="{{ attributes.class
<article id="node-<?php print $node->nid; ?>" class="<?php print }} clearfix"{{ attributes }}>
$attributes['class']; ?> clearfix"<?php print $attributes; ?>>
<?php print render($title_prefix); ?> {{ title_prefix }}
<?php if (!$page): ?> {% if not page %}
<h2<?php print $title_attributes; ?>><a href="<?php print <h2{{ title_attributes }}>
$node_url; ?>" rel="bookmark"><?php print $label; ?></a></h2> <a href="{{ node_url }}"
<?php endif; ?> rel="bookmark">{{ label }}</a>
<?php print render($title_suffix); ?> </h2>
{% endif %}
<?php if ($display_submitted): ?> {{ title_suffix }}
<footer>
<?php print render($user_picture); ?> {% if display_submitted %}
<p class="submitted"><?php print $submitted; ?></p> <footer>
</footer> {{ user_picture }}
<?php endif; ?> <p class="submitted">{{ submitted }}</p>
<div class="content"<?php print $content_attributes; ?>> </footer>
<?php {% endif %}
// We hide the comments and links now so that we can render
them later. <div class="content"{{ content_attributes }}>
hide($content['comments']); {# We hide the comments and links now so that we can
hide($content['links']); render them later. #}
print render($content); {% hide(content.comments) %}
?> {% hide(content.links) %}
</div> {{ content }}
</div>
<?php print render($content['links']); ?>
<?php print render($content['comments']); ?> {{ content.links }}
{{ content.comments }}
</article>
</article>
7. Theming con Twig
I vantaggi:
• Maggiore sicurezza
• Separazione tra le logiche applicative e la
presentazione
• Codice pulito, manutenibile, riusabile
• Non è necessario conoscere PHP
• Estendibile
• Template engine di Symfony
9. Theming con Twig
Gli svantaggi:
• Minori performance
• Apprendere il markup
• Non poter usare il theming come base
di formazione per i nuovi developer
10. HTML5
• Garantire la retro compatibilità
• HTML5shiv
• Nuovi elementi HTML5 nelle Form API
• Re-factor dei template
• Codice generato piùsnello e
comprensibile
• Normalize, Modernizr
11. HTML5
• Nuovi elementi HTML5 nelle Form API
• Color * • Date
• Email * • Number *
• Range * • Search
• Tel * • Url *
* Anche nuovi field Widget
12. Responsive Layout
+ Mobile
• Moduli Breakpoint e Picture
• Nuona architettura blocchi plugin-based
• Nuovo container layout nel theming
• Web services RESTful nel core
17. cos'è
• un set riutilizzabile di componenti php
• un framework request/response che
astrae le specifiche http
• un "facilitatore" per la standardizzazione
del codice, l'interoperabilità il riutilizzo
• e buon ultimo una nutrita comunità di
sviluppatori
19. Perchè usarlo?
• In pratica, CON I DOVUTI
ACCORGIMENTI, è più facile non
produrre STUPID code
• Singleton Tight coupling Untestability
Premature optimization Indescriptive
naming Duplication
20. Tutto?
• Non tutto Symfony entrerà a far parte
del core di drupal
• Class loader
• Service container
• Event dispatcher
• HTTP foundation
• Http kernel
21. Class loader
• Le classi non ancora definite vengono
caricate da un meccanismo di
autoloading
• Convenzione PSR-0
22. Service container
(Dependency Injection)
• Consente di standardizzare e
centralizzare il modo in cui sono costruiti
gli oggetti nell'applicazione
• architettura orientata ai servizi
• Gestione centralizzata
opzioni/dipendenze
• testing
23. Event dispatcher
• Implementa il pattern Observer
• Tecnologia “simile” agli hook
• Oggetti si sottoscrivono e ricevono
notifica di cambiamento di stato
dall'oggetto osservato
24. HTTP foundation
• definisce un livello orientato agli oggetti
per le specifiche HTTP.
25. Http kernel
• Core di Symfony
• Basato su Foundation
• Request
→ Controller
→ Response