SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Plone 5 Theming 
Unleashed 
Albert Casado 
Víctor Fernández de Alba
Albert 
• Interaction designer – IxD / UI / UX 
• New plone.org 
• Plone 5 default Barceloneta theme 
• new Plone 5 UI elements 
@albertcasado
Víctor 
• Lead web developer and IT architect 
• plone.app.multilingual 
• New plone.org 
• Plone 5 default Barceloneta theme 
• Author of Plone 3 intranets (2010, PacktPub) 
@sneridagh
Relationship 
Genweb (Plone 2.5), Genweb 3 (Plone 4), UPC.edu (Plone 3), UPC.tv (Plone 3) …
Designer-frontend developer 
• Visual designer (PS, Ai) 
• HTML/CSS expert, cross-browsing and accessibility 
• At least basic JS (jquery, integrator of other libs) 
• Knows about Plone internals and structure 
• <Knowing=“Diazo” helps />
Plone backend developer 
• Proficient Plone developer 
• Good CSS & HTML 
• Strong JS 
• Diazo and XSLT 
• Limited design capabilities and doubtful taste ;)
New all-in-one toolbar
Toolbar markup
Friendlier Site setup 
Stay in this room: next talk Resource Registry
Rewritten UI elements
Rewritten UI elements
New markup: less Diazo 
• Updated Header 
• Updated Navigation 
• Updated Breadcrumbs 
• Updated Alerts 
• Updated Portlets 
• Updated Search 
• … 
• Just turn off Diazo adding ?diazo.off=1
Diazo off = Plone naked 
Designer, really, save this: ?diazo.off=1
/test_rendering 
All usual elements in one page
Fontello font 
Updatable with JSON file: you all can update easily to your own glyphs
We all like Bootstrap, but use Plone classes instead 
.context:extend(.btn-primary) { }
So Plone 5 is 
• HTML5 
• ARIA & WCAG 
• Responsive 
• LESS 
• Best JS ever 
• No layout tables 
• DL DT DD with pleasure! 
• Updated .pt files 
• Clever setup
Many things has been updated 
Accessibility Addons Alerts Assignments Autotabs Breadcrumbs Buttons 
Code Control panel Dashboard Document by line Dropzone Error page 
Event Folder listing Forms Fullscreen image Header Image product Login 
Mail reset Maintenance Manage portlets Members Mixins Modal Navigation 
News Pagination Pick a date Portlets Recenty modified Search results 
Sharing Site map Site nav Sortable States Strutcture Tabbing Tables 
Tablesorter Thumbs TOC Toolbar Tree Types User settings Variables Views … 
Check everything on Barceloneta
Just a recap for best practices!
Designer frontend developer 
• Learn basic rules of Diazo 
• Reuse the fine existing Plone markup 
• Understand Plone structure 
• Have in mind Plone default classnames 
• Prototype in static HTML: Prototype, prototype, prototype 
• A “vainilla” Plone site to experiment with
Plone structure 
Header 
Nav 
Breadcrumbs 
Alerts 
<main> 
Portlets 
Left 
Column 
Portlets footer 
Footer 
Portlets 
Right 
Column 
Content
Plone classes and IDs 
• .portlet .portletNews 
• .formHelp, .formControls 
• .context, .standalone, .destructive 
• .documentFirstHeading 
• #portal-column-content 
• #edit-bar
Do not create from scratch 
• Use the default Plone’s HTML before Diazoing 
• Understand Plone structure and distribution of elements, reuse it! 
• Copy/Reuse Barceloneta LESS and adapt it
Ei designer: prototype 
• If you reuse Plone structure… 
• If you reuse Plone classes… 
• If you reuse Plone elements… 
Developers will love you
Transfer prototype 
into a Diazo Theme for Plone
About prototyping 
• Prototype based on the default Plone markup as far as possible 
• Know the limits of prototyping (:after limits sitelive) 
• Start to build the theme using the prototypes as baseline
Use a package generator 
https://github.com/collective/zopeskel.diazotheme/ 
• Works with Plone 5. 
• We’ll have to add some new things, specially new resource 
registries GenericSetup .xml
Diazo 
• Use Diazo to move blocks around 
• Do easy modifications to the default markup 
• Do not forget to make space for the toolbar just 
after the <body> tag with this rule: 
<replace css:theme=“#portal-toolbar" 
css:content-children=“#edit-bar" 
css:if-not-content=“.ajax_load" 
css:if-content=".userrole-authenticated"/>
Only if strictly needed 
• Modify existing templates to match the prototypes ones 
using z3c.jbot for default viewlets, views and **portlets** 
• Only when Diazo rules turn insane or overcomplicated is 
when “jboting” is easier, quicker and hassle free
Backend features 
• Implement the backend features 
using the prototype’s markup for templates
Iterative improvement 
• Over the Diazo theme in the development site 
• Demo it to the customer frequently 
• Iterate over the feedback and bugs found
Do not forget 
• Add custom styling for standard user generated markup 
Not anymore the custom you are thinking about
main_template 
• No longer a portal_skins resource 
• Now it’s a BrowserView 
Products/CMFPlone/browser/templates/main_template.pt 
Products/CMFPlone/browser/main_template.py
New Resource registries 
• Completely updated 
for modern frontend developing 
• Don’t want to reveal too much on them 
Spoilers 
Remember: Do not miss Rob’s and Ramon’s talk in this room after this talk
New Resource registries 
Bundles 
Plone bundle 
Barceloneta bundle 
Legacy bundle 
Resources 
plone.less plone.js 
barceloneta.plone.less 
plone-legacy.less 
plone-legacy.js 
TTW customization and overrides 
Spoiler Alert!
New Resource registries 
Spoiler Alert!
New Resource registries 
Spoiler Alert! 
manifest.cfg
Development mode 
• Compilation on browser of LESS/JS resources 
• Compilation on console via grunt watch task 
Spoiler Alert!
Production mode 
Have we said that you should assist to the 
next talk? 
Spoiler Alert!
Plone 5 
Barceloneta 
Barcelona, Catalonia
Pretty well ordered 
plonetheme > barceloneta > static > less
Why not SASS? 
• LESS is done in JS and can be compiled in browser 
• Because we decided it and we don’t care. 
• Still not convinced? https://github.com/ekryski/less2sass
Plone 5 and Barceloneta
Deductible 
LESS 
structure 
and file naming
Just modify variables
@import "@{sitePath}/++plone++barceloneta/less/variables.plone.less"; 
Reuse Barceloneta LESS
Let’s Plone a bit
Thanks / Gràcies 
@albertcasado 
@sneridagh

Contenu connexe

Tendances

Untangling spring week10
Untangling spring week10Untangling spring week10
Untangling spring week10Derek Jacoby
 
MozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: TaichungMozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: Taichunglittlebtc
 
Pyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsPyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsDylan Jay
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11Derek Jacoby
 
Untangling the web - fall2017 - class 4
Untangling the web - fall2017 - class 4Untangling the web - fall2017 - class 4
Untangling the web - fall2017 - class 4Derek Jacoby
 
Joomla! Pizza Bugs and Fun 2014 pre-event Seminar
Joomla! Pizza Bugs and Fun 2014 pre-event SeminarJoomla! Pizza Bugs and Fun 2014 pre-event Seminar
Joomla! Pizza Bugs and Fun 2014 pre-event SeminarGunjan Patel
 
Best Practice Site Architecture in Drupal 8
Best Practice Site Architecture in Drupal 8Best Practice Site Architecture in Drupal 8
Best Practice Site Architecture in Drupal 8Pantheon
 
Untangling the web9
Untangling the web9Untangling the web9
Untangling the web9Derek Jacoby
 
Internationalizing The New York Times
Internationalizing The New York TimesInternationalizing The New York Times
Internationalizing The New York TimesScott Taylor
 
Untangling spring week7
Untangling spring week7Untangling spring week7
Untangling spring week7Derek Jacoby
 
New Technologies demoed at the 2011 Plone Conference
New Technologies demoed at the 2011 Plone ConferenceNew Technologies demoed at the 2011 Plone Conference
New Technologies demoed at the 2011 Plone Conferencejcbrand
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1Derek Jacoby
 
Develop advance joomla! MVC Component for version 3
Develop advance joomla! MVC Component for version 3Develop advance joomla! MVC Component for version 3
Develop advance joomla! MVC Component for version 3Gunjan Patel
 
Blazor - .NET in the Browser!
Blazor - .NET in the Browser!Blazor - .NET in the Browser!
Blazor - .NET in the Browser!David Paquette
 
Drupal Camp LA 2011: Typography modules for Drupal
Drupal Camp LA 2011: Typography modules for DrupalDrupal Camp LA 2011: Typography modules for Drupal
Drupal Camp LA 2011: Typography modules for DrupalAshok Modi
 
Extension developer secrets - How to make money with Joomla
Extension developer secrets - How to make money with JoomlaExtension developer secrets - How to make money with Joomla
Extension developer secrets - How to make money with JoomlaTim Plummer
 
Untangling spring week12
Untangling spring week12Untangling spring week12
Untangling spring week12Derek Jacoby
 
Untangling spring week6
Untangling spring week6Untangling spring week6
Untangling spring week6Derek Jacoby
 
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...Vincenzo Barone
 

Tendances (20)

Untangling spring week10
Untangling spring week10Untangling spring week10
Untangling spring week10
 
MozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: TaichungMozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: Taichung
 
Pyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsPyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web apps
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11
 
Untangling the web - fall2017 - class 4
Untangling the web - fall2017 - class 4Untangling the web - fall2017 - class 4
Untangling the web - fall2017 - class 4
 
Joomla! Pizza Bugs and Fun 2014 pre-event Seminar
Joomla! Pizza Bugs and Fun 2014 pre-event SeminarJoomla! Pizza Bugs and Fun 2014 pre-event Seminar
Joomla! Pizza Bugs and Fun 2014 pre-event Seminar
 
Best Practice Site Architecture in Drupal 8
Best Practice Site Architecture in Drupal 8Best Practice Site Architecture in Drupal 8
Best Practice Site Architecture in Drupal 8
 
Untangling the web9
Untangling the web9Untangling the web9
Untangling the web9
 
Internationalizing The New York Times
Internationalizing The New York TimesInternationalizing The New York Times
Internationalizing The New York Times
 
Untangling spring week7
Untangling spring week7Untangling spring week7
Untangling spring week7
 
New Technologies demoed at the 2011 Plone Conference
New Technologies demoed at the 2011 Plone ConferenceNew Technologies demoed at the 2011 Plone Conference
New Technologies demoed at the 2011 Plone Conference
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1
 
Develop advance joomla! MVC Component for version 3
Develop advance joomla! MVC Component for version 3Develop advance joomla! MVC Component for version 3
Develop advance joomla! MVC Component for version 3
 
Drupal Flyover, CMS Expo
Drupal Flyover, CMS ExpoDrupal Flyover, CMS Expo
Drupal Flyover, CMS Expo
 
Blazor - .NET in the Browser!
Blazor - .NET in the Browser!Blazor - .NET in the Browser!
Blazor - .NET in the Browser!
 
Drupal Camp LA 2011: Typography modules for Drupal
Drupal Camp LA 2011: Typography modules for DrupalDrupal Camp LA 2011: Typography modules for Drupal
Drupal Camp LA 2011: Typography modules for Drupal
 
Extension developer secrets - How to make money with Joomla
Extension developer secrets - How to make money with JoomlaExtension developer secrets - How to make money with Joomla
Extension developer secrets - How to make money with Joomla
 
Untangling spring week12
Untangling spring week12Untangling spring week12
Untangling spring week12
 
Untangling spring week6
Untangling spring week6Untangling spring week6
Untangling spring week6
 
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...Philipp Von Weitershausen   Plone Age  Mammoths, Sabers And Caveen   Cant The...
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
 

Similaire à Plone 5 theming unleashed

Plone 5 theming
Plone 5 themingPlone 5 theming
Plone 5 themingsneridagh
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteelePlone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteeleT. Kim Nguyen
 
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De BlockDrupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De BlockMaarten De Block
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Dutyreedmaniac
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyLeslie Doherty
 
Modernize Plone's Classic UI
Modernize Plone's Classic UIModernize Plone's Classic UI
Modernize Plone's Classic UIStefan Antonelli
 
Alternative Approach to Plone Theming (PyConWeb 2019)
 Alternative Approach to Plone Theming (PyConWeb 2019) Alternative Approach to Plone Theming (PyConWeb 2019)
Alternative Approach to Plone Theming (PyConWeb 2019)Stefan Antonelli
 
Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Mediacurrent
 
Modernize Plone's Classic UI
Modernize Plone's Classic UIModernize Plone's Classic UI
Modernize Plone's Classic UIPloneFoundation
 
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Drupal Presentation for CapitalCamp 2011: Features Driven DevelopmentDrupal Presentation for CapitalCamp 2011: Features Driven Development
Drupal Presentation for CapitalCamp 2011: Features Driven DevelopmentMediacurrent
 
Java for XPages Development
Java for XPages DevelopmentJava for XPages Development
Java for XPages DevelopmentTeamstudio
 
Drupal 8 - Build Week Update
Drupal 8 - Build Week UpdateDrupal 8 - Build Week Update
Drupal 8 - Build Week UpdateAngela Byron
 
full-site-editing-theme-presentation.pptx
full-site-editing-theme-presentation.pptxfull-site-editing-theme-presentation.pptx
full-site-editing-theme-presentation.pptxPlasterdog Web Design
 
Pharo 11: A stabilization release
Pharo 11: A stabilization releasePharo 11: A stabilization release
Pharo 11: A stabilization releaseESUG
 
Top 8 Improvements in Drupal 8
Top 8 Improvements in Drupal 8Top 8 Improvements in Drupal 8
Top 8 Improvements in Drupal 8Angela Byron
 
Eric Steele – World Plone Day 2010 – Plone 4 Overview
Eric Steele – World Plone Day 2010 – Plone 4 OverviewEric Steele – World Plone Day 2010 – Plone 4 Overview
Eric Steele – World Plone Day 2010 – Plone 4 OverviewEric Steele
 

Similaire à Plone 5 theming unleashed (20)

Plone 5 theming
Plone 5 themingPlone 5 theming
Plone 5 theming
 
Automation in Drupal
Automation in DrupalAutomation in Drupal
Automation in Drupal
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteelePlone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
 
Plone Futures
Plone FuturesPlone Futures
Plone Futures
 
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De BlockDrupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
presentation
presentationpresentation
presentation
 
presentation
presentationpresentation
presentation
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
Modernize Plone's Classic UI
Modernize Plone's Classic UIModernize Plone's Classic UI
Modernize Plone's Classic UI
 
Alternative Approach to Plone Theming (PyConWeb 2019)
 Alternative Approach to Plone Theming (PyConWeb 2019) Alternative Approach to Plone Theming (PyConWeb 2019)
Alternative Approach to Plone Theming (PyConWeb 2019)
 
Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG)
 
Modernize Plone's Classic UI
Modernize Plone's Classic UIModernize Plone's Classic UI
Modernize Plone's Classic UI
 
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Drupal Presentation for CapitalCamp 2011: Features Driven DevelopmentDrupal Presentation for CapitalCamp 2011: Features Driven Development
Drupal Presentation for CapitalCamp 2011: Features Driven Development
 
Java for XPages Development
Java for XPages DevelopmentJava for XPages Development
Java for XPages Development
 
Drupal 8 - Build Week Update
Drupal 8 - Build Week UpdateDrupal 8 - Build Week Update
Drupal 8 - Build Week Update
 
full-site-editing-theme-presentation.pptx
full-site-editing-theme-presentation.pptxfull-site-editing-theme-presentation.pptx
full-site-editing-theme-presentation.pptx
 
Pharo 11: A stabilization release
Pharo 11: A stabilization releasePharo 11: A stabilization release
Pharo 11: A stabilization release
 
Top 8 Improvements in Drupal 8
Top 8 Improvements in Drupal 8Top 8 Improvements in Drupal 8
Top 8 Improvements in Drupal 8
 
Eric Steele – World Plone Day 2010 – Plone 4 Overview
Eric Steele – World Plone Day 2010 – Plone 4 OverviewEric Steele – World Plone Day 2010 – Plone 4 Overview
Eric Steele – World Plone Day 2010 – Plone 4 Overview
 

Plus de sneridagh

Meet Quanta - Plone's Style Guide
Meet Quanta - Plone's Style GuideMeet Quanta - Plone's Style Guide
Meet Quanta - Plone's Style Guidesneridagh
 
MAX: Realtime messaging and activity stream engine
MAX: Realtime messaging and activity stream engineMAX: Realtime messaging and activity stream engine
MAX: Realtime messaging and activity stream enginesneridagh
 
Key factors of the content management
Key factors of the content managementKey factors of the content management
Key factors of the content managementsneridagh
 
Factors claus de la gestió de continguts
Factors claus de la gestió de contingutsFactors claus de la gestió de continguts
Factors claus de la gestió de contingutssneridagh
 
Introduction to Pyramid
Introduction to PyramidIntroduction to Pyramid
Introduction to Pyramidsneridagh
 
Arquitectura de serveis per aplicacions mòbils
Arquitectura de serveis per aplicacions mòbilsArquitectura de serveis per aplicacions mòbils
Arquitectura de serveis per aplicacions mòbilssneridagh
 

Plus de sneridagh (6)

Meet Quanta - Plone's Style Guide
Meet Quanta - Plone's Style GuideMeet Quanta - Plone's Style Guide
Meet Quanta - Plone's Style Guide
 
MAX: Realtime messaging and activity stream engine
MAX: Realtime messaging and activity stream engineMAX: Realtime messaging and activity stream engine
MAX: Realtime messaging and activity stream engine
 
Key factors of the content management
Key factors of the content managementKey factors of the content management
Key factors of the content management
 
Factors claus de la gestió de continguts
Factors claus de la gestió de contingutsFactors claus de la gestió de continguts
Factors claus de la gestió de continguts
 
Introduction to Pyramid
Introduction to PyramidIntroduction to Pyramid
Introduction to Pyramid
 
Arquitectura de serveis per aplicacions mòbils
Arquitectura de serveis per aplicacions mòbilsArquitectura de serveis per aplicacions mòbils
Arquitectura de serveis per aplicacions mòbils
 

Dernier

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 

Dernier (20)

Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

Plone 5 theming unleashed

  • 1. Plone 5 Theming Unleashed Albert Casado Víctor Fernández de Alba
  • 2. Albert • Interaction designer – IxD / UI / UX • New plone.org • Plone 5 default Barceloneta theme • new Plone 5 UI elements @albertcasado
  • 3. Víctor • Lead web developer and IT architect • plone.app.multilingual • New plone.org • Plone 5 default Barceloneta theme • Author of Plone 3 intranets (2010, PacktPub) @sneridagh
  • 4. Relationship Genweb (Plone 2.5), Genweb 3 (Plone 4), UPC.edu (Plone 3), UPC.tv (Plone 3) …
  • 5. Designer-frontend developer • Visual designer (PS, Ai) • HTML/CSS expert, cross-browsing and accessibility • At least basic JS (jquery, integrator of other libs) • Knows about Plone internals and structure • <Knowing=“Diazo” helps />
  • 6. Plone backend developer • Proficient Plone developer • Good CSS & HTML • Strong JS • Diazo and XSLT • Limited design capabilities and doubtful taste ;)
  • 7.
  • 10. Friendlier Site setup Stay in this room: next talk Resource Registry
  • 13. New markup: less Diazo • Updated Header • Updated Navigation • Updated Breadcrumbs • Updated Alerts • Updated Portlets • Updated Search • … • Just turn off Diazo adding ?diazo.off=1
  • 14. Diazo off = Plone naked Designer, really, save this: ?diazo.off=1
  • 15. /test_rendering All usual elements in one page
  • 16. Fontello font Updatable with JSON file: you all can update easily to your own glyphs
  • 17. We all like Bootstrap, but use Plone classes instead .context:extend(.btn-primary) { }
  • 18. So Plone 5 is • HTML5 • ARIA & WCAG • Responsive • LESS • Best JS ever • No layout tables • DL DT DD with pleasure! • Updated .pt files • Clever setup
  • 19. Many things has been updated Accessibility Addons Alerts Assignments Autotabs Breadcrumbs Buttons Code Control panel Dashboard Document by line Dropzone Error page Event Folder listing Forms Fullscreen image Header Image product Login Mail reset Maintenance Manage portlets Members Mixins Modal Navigation News Pagination Pick a date Portlets Recenty modified Search results Sharing Site map Site nav Sortable States Strutcture Tabbing Tables Tablesorter Thumbs TOC Toolbar Tree Types User settings Variables Views … Check everything on Barceloneta
  • 20. Just a recap for best practices!
  • 21. Designer frontend developer • Learn basic rules of Diazo • Reuse the fine existing Plone markup • Understand Plone structure • Have in mind Plone default classnames • Prototype in static HTML: Prototype, prototype, prototype • A “vainilla” Plone site to experiment with
  • 22. Plone structure Header Nav Breadcrumbs Alerts <main> Portlets Left Column Portlets footer Footer Portlets Right Column Content
  • 23. Plone classes and IDs • .portlet .portletNews • .formHelp, .formControls • .context, .standalone, .destructive • .documentFirstHeading • #portal-column-content • #edit-bar
  • 24. Do not create from scratch • Use the default Plone’s HTML before Diazoing • Understand Plone structure and distribution of elements, reuse it! • Copy/Reuse Barceloneta LESS and adapt it
  • 25. Ei designer: prototype • If you reuse Plone structure… • If you reuse Plone classes… • If you reuse Plone elements… Developers will love you
  • 26. Transfer prototype into a Diazo Theme for Plone
  • 27. About prototyping • Prototype based on the default Plone markup as far as possible • Know the limits of prototyping (:after limits sitelive) • Start to build the theme using the prototypes as baseline
  • 28. Use a package generator https://github.com/collective/zopeskel.diazotheme/ • Works with Plone 5. • We’ll have to add some new things, specially new resource registries GenericSetup .xml
  • 29. Diazo • Use Diazo to move blocks around • Do easy modifications to the default markup • Do not forget to make space for the toolbar just after the <body> tag with this rule: <replace css:theme=“#portal-toolbar" css:content-children=“#edit-bar" css:if-not-content=“.ajax_load" css:if-content=".userrole-authenticated"/>
  • 30. Only if strictly needed • Modify existing templates to match the prototypes ones using z3c.jbot for default viewlets, views and **portlets** • Only when Diazo rules turn insane or overcomplicated is when “jboting” is easier, quicker and hassle free
  • 31. Backend features • Implement the backend features using the prototype’s markup for templates
  • 32. Iterative improvement • Over the Diazo theme in the development site • Demo it to the customer frequently • Iterate over the feedback and bugs found
  • 33. Do not forget • Add custom styling for standard user generated markup Not anymore the custom you are thinking about
  • 34.
  • 35. main_template • No longer a portal_skins resource • Now it’s a BrowserView Products/CMFPlone/browser/templates/main_template.pt Products/CMFPlone/browser/main_template.py
  • 36. New Resource registries • Completely updated for modern frontend developing • Don’t want to reveal too much on them Spoilers Remember: Do not miss Rob’s and Ramon’s talk in this room after this talk
  • 37. New Resource registries Bundles Plone bundle Barceloneta bundle Legacy bundle Resources plone.less plone.js barceloneta.plone.less plone-legacy.less plone-legacy.js TTW customization and overrides Spoiler Alert!
  • 38. New Resource registries Spoiler Alert!
  • 39. New Resource registries Spoiler Alert! manifest.cfg
  • 40. Development mode • Compilation on browser of LESS/JS resources • Compilation on console via grunt watch task Spoiler Alert!
  • 41. Production mode Have we said that you should assist to the next talk? Spoiler Alert!
  • 42. Plone 5 Barceloneta Barcelona, Catalonia
  • 43. Pretty well ordered plonetheme > barceloneta > static > less
  • 44. Why not SASS? • LESS is done in JS and can be compiled in browser • Because we decided it and we don’t care. • Still not convinced? https://github.com/ekryski/less2sass
  • 45. Plone 5 and Barceloneta
  • 46.
  • 47. Deductible LESS structure and file naming
  • 51. Thanks / Gràcies @albertcasado @sneridagh