Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO

676 views

Published on

Guarda il talk su http://www.youtube.com/watch?v=_CjKg-UbE-A
E dai un giudizio su https://joind.in/talk/view/7710

  • Be the first to comment

  • Be the first to like this

Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO

  1. 1. DRUPAL 8:I CAMBIAMENTI CHE CI ASPETTANO Marco Pagliarulo (@Morpheus80ta) Corrado Grimoldi (@coreykck)
  2. 2. Indice• In & Out• Theming con Twig• HTML5• Responsive Layout + Mobile• CMI: la proposta• Punti di contatto con Symfony
  3. 3. • Views In & Out • Blog • Profile• Date API• DrupalUnitTestBase • Dashboard• Breakpoint• Picture • Garland
  4. 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. 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. 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. 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
  8. 8. Theming con Twig Componenti estendibili:• Loaders• Extension • Tags (for, if, include,import, block ...) • Filters (date, format, replace, capitalize ...) • Functions (range, constant, cycle …) • Tests ( even, odd, divisibleby, empty)
  9. 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. 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. 11. HTML5• Nuovi elementi HTML5 nelle Form API • Color * • Date • Email * • Number * • Range * • Search • Tel * • Url ** Anche nuovi field Widget
  12. 12. Responsive Layout + Mobile• Moduli Breakpoint e Picture• Nuona architettura blocchi plugin-based• Nuovo container layout nel theming• Web services RESTful nel core
  13. 13. Layout
  14. 14. Layout
  15. 15. CMI: la proposta• Problemi attuali: • migrazione configurazione • versionamento e revert delle revisioni di configurazione
  16. 16. CMI: la proposta
  17. 17. cosè• un set riutilizzabile di componenti php• un framework request/response che astrae le specifiche http• un "facilitatore" per la standardizzazione del codice, linteroperabilità il riutilizzo• e buon ultimo una nutrita comunità di sviluppatori
  18. 18. Perchè usarlo?• Standardizzare• Strutturare• codice maggiormente leggibile• codice maggiormente manutenibile• costo di sviluppo contenuto• Accuratezza stima
  19. 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. 20. Tutto?• Non tutto Symfony entrerà a far parte del core di drupal • Class loader • Service container • Event dispatcher • HTTP foundation • Http kernel
  21. 21. Class loader• Le classi non ancora definite vengono caricate da un meccanismo di autoloading• Convenzione PSR-0
  22. 22. Service container (Dependency Injection)• Consente di standardizzare e centralizzare il modo in cui sono costruiti gli oggetti nellapplicazione• architettura orientata ai servizi• Gestione centralizzata opzioni/dipendenze• testing
  23. 23. Event dispatcher• Implementa il pattern Observer• Tecnologia “simile” agli hook• Oggetti si sottoscrivono e ricevono notifica di cambiamento di stato dalloggetto osservato
  24. 24. HTTP foundation• definisce un livello orientato agli oggetti per le specifiche HTTP.
  25. 25. Http kernel• Core di Symfony• Basato su Foundation• Request → Controller → Response
  26. 26. Quindi?
  27. 27. No PANIC• Sistema hook• TODO • Gestione degli environment
  28. 28. Bibliografia• http://nikic.github.com/2011/12/27/Dont-be-STUPID-GRASP-SOLID.html• http://symfony.com/it/doc/2.0/components/• http://groups.drupal.org/node/191283• http://drupal.org/community-initiatives/drupal-core• http://drupal.org/node/1022338• http://drupal.org/node/1193054• http://twig.sensiolabs.org/• http://drupal.org/node/1841584
  29. 29. DICE GRAZIE A SPONSOR MEDIA PARTNER IN COLLABORAZIONE CONFIRMATO: GLI ORGANIZZATORI ;)

×