SlideShare a Scribd company logo
1 of 53
Extending eZ Platform 2.x with Symfony and React
With the eZ Platform 2.x development case
The Past
The technology decisions, regarding eZ Platform 1.x
were made at some point between 2013 and 2014
Technology stack in eZ Platform 1.x
• PHP 5.6,
• Symfony 2.x,
• YUI3,
• No CSS pre-processors,
Developing features in eZ Platform 1.x
• Difficult,
• Slow,
• Lack of programmers resources
The biggest problem
Infamous YUI3
The goals for eZ Platform 2.x
Make editors/developers happy again
• Increase app performance,
• Eliminate the loading spinner headache,
• Make it easy to extend
Seeking for right solution
The sources of inspirations
• Community,
• Meetups,
• Conferences,
• Our own experience
AdminUI backend technology stack
• PHP 7.1,
• PHP Symfony framework 3.x,
• Twig templates,
• Symfony Forms,
• KNP Menu Bundle,
• Translations Bundle
AdminUI frontend technology stack
• JavaScript ES6+,
• ReactJS 16.x,
• Bootstrap 4.x,
• SASS,
• Webpack,
• AlloyEditor
On the frontend side
Why ReactJS?
• Mechanism of quick UI updates,
• Easy way to manage state and data flow,
• Easy to implement event handlers,
• Paradigm of splitting code into smaller components,
• No need to use any extra templating engines, like Handlebars,
• Easy to combine with any other JS library or framework (if needed).
Why not Web Components?
• Difficult to extend existing Web Components when ShadowDOM is on,
• Custom Elements are just another way of writing divs with CSS classes,
• Not many good practices for Web Components development,
• Slow to develop new features.
Should you avoid using Web Components?
No!
Browsers support in theAdminUI
The latest version of the following browsers:
• Mozilla Firefox,
• Google Chrome,
• Microsoft Edge,
• Safari,
• Opera
Why only the latest versions of browsers?
• Latest JS features,
• Latest CSS features,
• HTML5 APIs
What about mobile devices?
This is not our target, because of Page Builder feature.
Extensible UI parts
What can you extend in theAdminUI?
Everything in AdminUI can be extended:
• with PHP code (in most cases),
• with JavaScript/ReactJS (in some cases).
Extension points for frontend developers
ReactJS modules
• Universal Discovery (the only one loaded everywhere),
• Sub-Items List,
• Multi-File Upload
Injecting stylesheets and scripts
JS, CSS and Twig files can be injected
by using YAML config and tags
UI Component classes on backend
EzSystemsEzPlatformAdminUiComponentTwigComponent
EzSystemsEzPlatformAdminUiComponentScriptComponent
EzSystemsEzPlatformAdminUiComponentLinkComponent
Sample tag usage
tags:
- { name: ezplatform.admin_ui.component, group: 'script-head' }
Injection points
• stylesheet-head
• script-head
• custom-admin-ui-modules
• custom-admin-ui-config
• stylesheet-body
• script-body
• content-edit-form-before
• content-edit-form-after
• content-create-form-before
• content-create-form-after
• dashboard-blocks
Extending Universal Discovery
(function (global, eZ) {
eZ = eZ || {};
eZ.adminUiConfig = eZ.adminUiConfig || {};
eZ.adminUiConfig.universalDiscoveryWidget =
eZ.adminUiConfig.universalDiscoveryWidget || {};
eZ.adminUiConfig.universalDiscoveryWidget.extraTabs =
eZ.adminUiConfig.universalDiscoveryWidget.extraTabs || [];
eZ.adminUiConfig.universalDiscoveryWidget.extraTabs.push({
id: 'tab-identifier',
title: 'tab-title',
iconIdentifier: 'tab-icon-identifier',
panel: CustomTabContentPanel,
attrs: {}
});
})(window, window.eZ);
Universal Discovery – result of extension
Extending Sub-Items List
ReactDOM.render(React.createElement(eZ.modules.SubItems, {
handleEditItem,
generateLink,
parentLocationId: container.dataset.location,
sortClauses: {[sortField]: sortOrder},
restInfo: {token, siteaccess},
extraActions: [{
component: SomeCustomComponent,
attrs: Object.assign({}, mfuAttrs, {
onPopupClose: doSomethingOnClose,
})
}],
items,
contentTypesMap,
totalCount: subItemsList.ChildrenCount
}), container);
Sub-Items List – result of extension
Extending Field Type validators – class
class CustomFieldTypeValidator extends global.eZ.BaseFieldValidator {
validateValue(event) {
return {
isError: false,
errorMessage: ''
};
}
}
Extending Field Type validators – implementation
const validator = new CustomFieldTypeValidator({
classInvalid: 'is-invalid',
fieldSelector: '.ez-field-edit--custom-field-type',
eventsMap: [
{
selector: '.ez-field-edit--custom-field-type input',
eventName: 'blur',
callback: 'validateValue',
errorNodeSelectors: ['.ez-field-edit__label-wrapper'],
},
],
});
validator.init();
eZ.fieldTypeValidators = eZ.fieldTypeValidators ?
[...eZ.fieldTypeValidators, validator] :
[validator];
Extension points for backend developers
Field Types in YAML
tags:
- { name: ez.fieldFormMapper.definition, fieldType: ezboolean }
- { name: ez.fieldFormMapper.value, fieldType: ezboolean }
Field Types in PHP
class PageFormMapper implements FieldValueFormMapperInterface {
public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data) {
$fieldDefinition = $data->fieldDefinition;
$formConfig = $fieldForm->getConfig();
$names = $fieldDefinition->getNames();
$label = $fieldDefinition->getName($formConfig->getOption('mainLanguageCode')) ?:
reset($names);
$fieldForm->add(
$formConfig->getFormFactory()->createBuilder()->create('value',
PageFieldType::class, [
'required' => $fieldDefinition->isRequired,
'label' => $label,
]
)
->setAutoInitialize(false)
->getForm()
);
}
}
ExtendingApplication Menu
The extension point is based on KNP Menu bundle.
It uses Event Listeners to extend existing menus.
ExtendingApplication Menu
class ConfigureMainMenuListener implements TranslationContainerInterface
{
public function onMenuConfigure(ConfigureMenuEvent $event)
{
$root = $event->getMenu();
$options = $event->getOptions();
// ...
$root->addChild(self::ITEM_PAGE, [
'extras' => [
'icon' => 'content-list',
'translation_domain' => 'ezplatform_page_builder_menu',
'routes' => [
'ezplatform.page_builder.location_preview',
'ezplatform.page_builder.url_preview',
],
],
]);
}
}
ExtendingApplication Menu– the result
Adding new tabs to Location view
Similar concept as in case of extending the application menu
The Location view tabs
Adding new tabs – the YAML code
EzSystemsEzPlatformAdminUiTabLocationViewContentTab:
public: true
autowire: true
arguments:
$siteAccessLanguages: '$languages$'
tags:
- { name: ezplatform.tab, group: location-view }
Adding new tabs – the Twig code
{{ ez_platform_tabs('location-view', {
'content': content,
'location': location
}, '@EzPlatformAdminUi/parts/tab/locationview.html.twig') }}
Field Types
• Content editing is now powered by Symfony Forms,
• Developers have to provide mapping service between repository fieldtype and
Symfony Forms,
• Templating is easier,
• Customizable via EventListeners, DataTransformers, Type Extensions etc.
Other approaches of extendingAdminUI
• Overriding Twig templates,
• Overriding service definitions,
• Compiler passes,
• Bundle's extension class,
• Semantic configuration,
• Event listeners
Performance comparison – Login page 1.x
Performance comparison – Login page 2.x
Login page summary
eZ Platform 1.x eZ Platform 2.x
Requests 158 7
Download size 6.5M 608KB
HTML load time 3.5s 681ms
Page ready time 16.13s 715ms
The Login page loads almost 23x faster in 2.x!
Performance comparison – Location view 1.x
Performance comparison – Location view 2.x
Location page summary
eZ Platform 1.x eZ Platform 2.x
Requests 190 22
Download size 6.7M 2.2M
HTML load time 24.6s 2.2s
Page ready time 40.99s 2.69s
The Location page loads almost 16x faster in 2.x!
Who are we?
Piotr Nalepa
Senior UI Developer @ eZ Systems
@sunpietro
Maciej Kobus
PHP Developer @ eZ Systems

More Related Content

What's hot

Introducing Assetic: Asset Management for PHP 5.3
Introducing Assetic: Asset Management for PHP 5.3Introducing Assetic: Asset Management for PHP 5.3
Introducing Assetic: Asset Management for PHP 5.3Kris Wallsmith
 
Chef 0.8, Knife and Amazon EC2
Chef 0.8, Knife and Amazon EC2Chef 0.8, Knife and Amazon EC2
Chef 0.8, Knife and Amazon EC2Robert Berger
 
Enrich your extensions with Joomla! ACL support
Enrich your extensions with Joomla! ACL supportEnrich your extensions with Joomla! ACL support
Enrich your extensions with Joomla! ACL supportSander Potjer
 
OSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský
OSCamp #4 on Foreman | CLI tools with Foreman by Martin BačovskýOSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský
OSCamp #4 on Foreman | CLI tools with Foreman by Martin BačovskýNETWAYS
 
Brisbane Drupal meetup - 2016 Mar - Build module in Drupal 8
Brisbane Drupal meetup - 2016 Mar - Build module in Drupal 8Brisbane Drupal meetup - 2016 Mar - Build module in Drupal 8
Brisbane Drupal meetup - 2016 Mar - Build module in Drupal 8Vladimir Roudakov
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 moduletedbow
 
Debugging in drupal 8
Debugging in drupal 8Debugging in drupal 8
Debugging in drupal 8Allie Jones
 
Wordpress Workflow
Wordpress Workflow Wordpress Workflow
Wordpress Workflow Filippo Dino
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriverRajathi-QA
 
Rails web api 开发
Rails web api 开发Rails web api 开发
Rails web api 开发shaokun
 

What's hot (12)

Introducing Assetic: Asset Management for PHP 5.3
Introducing Assetic: Asset Management for PHP 5.3Introducing Assetic: Asset Management for PHP 5.3
Introducing Assetic: Asset Management for PHP 5.3
 
Chef 0.8, Knife and Amazon EC2
Chef 0.8, Knife and Amazon EC2Chef 0.8, Knife and Amazon EC2
Chef 0.8, Knife and Amazon EC2
 
Enrich your extensions with Joomla! ACL support
Enrich your extensions with Joomla! ACL supportEnrich your extensions with Joomla! ACL support
Enrich your extensions with Joomla! ACL support
 
OSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský
OSCamp #4 on Foreman | CLI tools with Foreman by Martin BačovskýOSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský
OSCamp #4 on Foreman | CLI tools with Foreman by Martin Bačovský
 
Brisbane Drupal meetup - 2016 Mar - Build module in Drupal 8
Brisbane Drupal meetup - 2016 Mar - Build module in Drupal 8Brisbane Drupal meetup - 2016 Mar - Build module in Drupal 8
Brisbane Drupal meetup - 2016 Mar - Build module in Drupal 8
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 module
 
Debugging in drupal 8
Debugging in drupal 8Debugging in drupal 8
Debugging in drupal 8
 
Wordpress Workflow
Wordpress Workflow Wordpress Workflow
Wordpress Workflow
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
 
Silex Cheat Sheet
Silex Cheat SheetSilex Cheat Sheet
Silex Cheat Sheet
 
Javascript laravel's friend
Javascript laravel's friendJavascript laravel's friend
Javascript laravel's friend
 
Rails web api 开发
Rails web api 开发Rails web api 开发
Rails web api 开发
 

Similar to Extend eZ Platform 2.x with Symfony and React

Simplify your professional web development with symfony
Simplify your professional web development with symfonySimplify your professional web development with symfony
Simplify your professional web development with symfonyFrancois Zaninotto
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyMark Proctor
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
RichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF ApplicationsRichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF ApplicationsMax Katz
 
RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4
RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4
RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4Max Katz
 
RichFaces 4 Webinar - New and Advanced Features
RichFaces 4 Webinar - New and Advanced FeaturesRichFaces 4 Webinar - New and Advanced Features
RichFaces 4 Webinar - New and Advanced FeaturesMax Katz
 
Asp.net core 1.0 (Peter Himschoot)
Asp.net core 1.0 (Peter Himschoot)Asp.net core 1.0 (Peter Himschoot)
Asp.net core 1.0 (Peter Himschoot)Visug
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup PerformanceGreg Whalin
 
RichFaces: rich:* component library
RichFaces: rich:* component libraryRichFaces: rich:* component library
RichFaces: rich:* component libraryMax Katz
 
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSAjax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSMax Katz
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 
Wordpress beyond blogging
Wordpress beyond bloggingWordpress beyond blogging
Wordpress beyond bloggingJulien Minguely
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsFabian Jakobs
 
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)Mark Hamstra
 
Refactoring Large Web Applications with Backbone.js
Refactoring Large Web Applications with Backbone.jsRefactoring Large Web Applications with Backbone.js
Refactoring Large Web Applications with Backbone.jsStacy London
 
Refactor Large applications with Backbone
Refactor Large applications with BackboneRefactor Large applications with Backbone
Refactor Large applications with BackboneColdFusionConference
 

Similar to Extend eZ Platform 2.x with Symfony and React (20)

Simplify your professional web development with symfony
Simplify your professional web development with symfonySimplify your professional web development with symfony
Simplify your professional web development with symfony
 
Creation&imitation
Creation&imitationCreation&imitation
Creation&imitation
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
RichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF ApplicationsRichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF Applications
 
RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4
RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4
RichFaces 4 webinar #2: RichFaces 3 toRichFaces 4
 
RichFaces 4 Webinar - New and Advanced Features
RichFaces 4 Webinar - New and Advanced FeaturesRichFaces 4 Webinar - New and Advanced Features
RichFaces 4 Webinar - New and Advanced Features
 
Asp.net core 1.0 (Peter Himschoot)
Asp.net core 1.0 (Peter Himschoot)Asp.net core 1.0 (Peter Himschoot)
Asp.net core 1.0 (Peter Himschoot)
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
RichFaces: rich:* component library
RichFaces: rich:* component libraryRichFaces: rich:* component library
RichFaces: rich:* component library
 
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSAjax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
Ext JS Introduction
Ext JS IntroductionExt JS Introduction
Ext JS Introduction
 
Wordpress beyond blogging
Wordpress beyond bloggingWordpress beyond blogging
Wordpress beyond blogging
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script Applications
 
JSF2
JSF2JSF2
JSF2
 
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
 
Refactoring Large Web Applications with Backbone.js
Refactoring Large Web Applications with Backbone.jsRefactoring Large Web Applications with Backbone.js
Refactoring Large Web Applications with Backbone.js
 
Refactor Large applications with Backbone
Refactor Large applications with BackboneRefactor Large applications with Backbone
Refactor Large applications with Backbone
 

More from eZ Systems

A unified platform to build Digital Experience from Content to Commerce to Pe...
A unified platform to build Digital Experience from Content to Commerce to Pe...A unified platform to build Digital Experience from Content to Commerce to Pe...
A unified platform to build Digital Experience from Content to Commerce to Pe...eZ Systems
 
"Reconociendo al cliente personalizando su experiencia" - Andorra Turisme - e...
"Reconociendo al cliente personalizando su experiencia" - Andorra Turisme - e..."Reconociendo al cliente personalizando su experiencia" - Andorra Turisme - e...
"Reconociendo al cliente personalizando su experiencia" - Andorra Turisme - e...eZ Systems
 
"How Crédit Agricole and IT-CE managed their digital transformation thanks to...
"How Crédit Agricole and IT-CE managed their digital transformation thanks to..."How Crédit Agricole and IT-CE managed their digital transformation thanks to...
"How Crédit Agricole and IT-CE managed their digital transformation thanks to...eZ Systems
 
The rise of Digital Experience Platforms
The rise of Digital Experience PlatformsThe rise of Digital Experience Platforms
The rise of Digital Experience PlatformseZ Systems
 
"How to deliver remarkable digital experiences to customers?"
"How to deliver remarkable digital experiences to customers?""How to deliver remarkable digital experiences to customers?"
"How to deliver remarkable digital experiences to customers?"eZ Systems
 
Keynote eZ Roadshow & Diginight 2019 - oslo
Keynote eZ Roadshow & Diginight 2019 - osloKeynote eZ Roadshow & Diginight 2019 - oslo
Keynote eZ Roadshow & Diginight 2019 - osloeZ Systems
 
Symfony 4.0 + - Track Technique eZ Roadshow 2019 - PARIS
Symfony 4.0 + - Track Technique eZ Roadshow 2019 - PARISSymfony 4.0 + - Track Technique eZ Roadshow 2019 - PARIS
Symfony 4.0 + - Track Technique eZ Roadshow 2019 - PARISeZ Systems
 
Brochure eZ Platform DXP
Brochure eZ Platform DXPBrochure eZ Platform DXP
Brochure eZ Platform DXPeZ Systems
 
[Webinar] Discover eZ platform v2.4
[Webinar]  Discover eZ platform v2.4[Webinar]  Discover eZ platform v2.4
[Webinar] Discover eZ platform v2.4eZ Systems
 
Community webinar discover e z platform v2.3 (9.10.2018)
Community webinar   discover e z platform v2.3 (9.10.2018)Community webinar   discover e z platform v2.3 (9.10.2018)
Community webinar discover e z platform v2.3 (9.10.2018)eZ Systems
 
Symfony Under the Hood
Symfony Under the HoodSymfony Under the Hood
Symfony Under the HoodeZ Systems
 
eZ in the Year Ahead
eZ in the Year AheadeZ in the Year Ahead
eZ in the Year AheadeZ Systems
 
Personalization on eZ Platform v2
Personalization on eZ Platform v2Personalization on eZ Platform v2
Personalization on eZ Platform v2eZ Systems
 
Choose the eZ Universe for Your Web Galaxy
Choose the eZ Universe for Your Web GalaxyChoose the eZ Universe for Your Web Galaxy
Choose the eZ Universe for Your Web GalaxyeZ Systems
 
Using eZ Platform in an API Era
Using eZ Platform in an API EraUsing eZ Platform in an API Era
Using eZ Platform in an API EraeZ Systems
 
A Roadmap to Becoming Your Customer’s Information Hub
A Roadmap to Becoming Your Customer’s Information HubA Roadmap to Becoming Your Customer’s Information Hub
A Roadmap to Becoming Your Customer’s Information HubeZ Systems
 
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...eZ Systems
 
GDPR in the Digital World
GDPR in the Digital WorldGDPR in the Digital World
GDPR in the Digital WorldeZ Systems
 
When content transforms your customer experience
When content transforms your customer experienceWhen content transforms your customer experience
When content transforms your customer experienceeZ Systems
 
Connectors Panel Discussion
Connectors Panel DiscussionConnectors Panel Discussion
Connectors Panel DiscussioneZ Systems
 

More from eZ Systems (20)

A unified platform to build Digital Experience from Content to Commerce to Pe...
A unified platform to build Digital Experience from Content to Commerce to Pe...A unified platform to build Digital Experience from Content to Commerce to Pe...
A unified platform to build Digital Experience from Content to Commerce to Pe...
 
"Reconociendo al cliente personalizando su experiencia" - Andorra Turisme - e...
"Reconociendo al cliente personalizando su experiencia" - Andorra Turisme - e..."Reconociendo al cliente personalizando su experiencia" - Andorra Turisme - e...
"Reconociendo al cliente personalizando su experiencia" - Andorra Turisme - e...
 
"How Crédit Agricole and IT-CE managed their digital transformation thanks to...
"How Crédit Agricole and IT-CE managed their digital transformation thanks to..."How Crédit Agricole and IT-CE managed their digital transformation thanks to...
"How Crédit Agricole and IT-CE managed their digital transformation thanks to...
 
The rise of Digital Experience Platforms
The rise of Digital Experience PlatformsThe rise of Digital Experience Platforms
The rise of Digital Experience Platforms
 
"How to deliver remarkable digital experiences to customers?"
"How to deliver remarkable digital experiences to customers?""How to deliver remarkable digital experiences to customers?"
"How to deliver remarkable digital experiences to customers?"
 
Keynote eZ Roadshow & Diginight 2019 - oslo
Keynote eZ Roadshow & Diginight 2019 - osloKeynote eZ Roadshow & Diginight 2019 - oslo
Keynote eZ Roadshow & Diginight 2019 - oslo
 
Symfony 4.0 + - Track Technique eZ Roadshow 2019 - PARIS
Symfony 4.0 + - Track Technique eZ Roadshow 2019 - PARISSymfony 4.0 + - Track Technique eZ Roadshow 2019 - PARIS
Symfony 4.0 + - Track Technique eZ Roadshow 2019 - PARIS
 
Brochure eZ Platform DXP
Brochure eZ Platform DXPBrochure eZ Platform DXP
Brochure eZ Platform DXP
 
[Webinar] Discover eZ platform v2.4
[Webinar]  Discover eZ platform v2.4[Webinar]  Discover eZ platform v2.4
[Webinar] Discover eZ platform v2.4
 
Community webinar discover e z platform v2.3 (9.10.2018)
Community webinar   discover e z platform v2.3 (9.10.2018)Community webinar   discover e z platform v2.3 (9.10.2018)
Community webinar discover e z platform v2.3 (9.10.2018)
 
Symfony Under the Hood
Symfony Under the HoodSymfony Under the Hood
Symfony Under the Hood
 
eZ in the Year Ahead
eZ in the Year AheadeZ in the Year Ahead
eZ in the Year Ahead
 
Personalization on eZ Platform v2
Personalization on eZ Platform v2Personalization on eZ Platform v2
Personalization on eZ Platform v2
 
Choose the eZ Universe for Your Web Galaxy
Choose the eZ Universe for Your Web GalaxyChoose the eZ Universe for Your Web Galaxy
Choose the eZ Universe for Your Web Galaxy
 
Using eZ Platform in an API Era
Using eZ Platform in an API EraUsing eZ Platform in an API Era
Using eZ Platform in an API Era
 
A Roadmap to Becoming Your Customer’s Information Hub
A Roadmap to Becoming Your Customer’s Information HubA Roadmap to Becoming Your Customer’s Information Hub
A Roadmap to Becoming Your Customer’s Information Hub
 
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
 
GDPR in the Digital World
GDPR in the Digital WorldGDPR in the Digital World
GDPR in the Digital World
 
When content transforms your customer experience
When content transforms your customer experienceWhen content transforms your customer experience
When content transforms your customer experience
 
Connectors Panel Discussion
Connectors Panel DiscussionConnectors Panel Discussion
Connectors Panel Discussion
 

Recently uploaded

Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsstephieert
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Delhi Call girls
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...aditipandeya
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of indiaimessage0108
 
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$kojalkojal131
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Roomishabajaj13
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607dollysharma2066
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service PuneVIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service PuneCall girls in Ahmedabad High profile
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 

Recently uploaded (20)

Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girls
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of india
 
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girls
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service PuneVIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 

Extend eZ Platform 2.x with Symfony and React

  • 1. Extending eZ Platform 2.x with Symfony and React With the eZ Platform 2.x development case
  • 2. The Past The technology decisions, regarding eZ Platform 1.x were made at some point between 2013 and 2014
  • 3. Technology stack in eZ Platform 1.x • PHP 5.6, • Symfony 2.x, • YUI3, • No CSS pre-processors,
  • 4. Developing features in eZ Platform 1.x • Difficult, • Slow, • Lack of programmers resources
  • 6. The goals for eZ Platform 2.x
  • 7. Make editors/developers happy again • Increase app performance, • Eliminate the loading spinner headache, • Make it easy to extend
  • 8. Seeking for right solution
  • 9. The sources of inspirations • Community, • Meetups, • Conferences, • Our own experience
  • 10. AdminUI backend technology stack • PHP 7.1, • PHP Symfony framework 3.x, • Twig templates, • Symfony Forms, • KNP Menu Bundle, • Translations Bundle
  • 11. AdminUI frontend technology stack • JavaScript ES6+, • ReactJS 16.x, • Bootstrap 4.x, • SASS, • Webpack, • AlloyEditor
  • 13. Why ReactJS? • Mechanism of quick UI updates, • Easy way to manage state and data flow, • Easy to implement event handlers, • Paradigm of splitting code into smaller components, • No need to use any extra templating engines, like Handlebars, • Easy to combine with any other JS library or framework (if needed).
  • 14. Why not Web Components? • Difficult to extend existing Web Components when ShadowDOM is on, • Custom Elements are just another way of writing divs with CSS classes, • Not many good practices for Web Components development, • Slow to develop new features.
  • 15. Should you avoid using Web Components? No!
  • 16. Browsers support in theAdminUI The latest version of the following browsers: • Mozilla Firefox, • Google Chrome, • Microsoft Edge, • Safari, • Opera
  • 17. Why only the latest versions of browsers? • Latest JS features, • Latest CSS features, • HTML5 APIs
  • 18. What about mobile devices? This is not our target, because of Page Builder feature.
  • 20. What can you extend in theAdminUI? Everything in AdminUI can be extended: • with PHP code (in most cases), • with JavaScript/ReactJS (in some cases).
  • 21. Extension points for frontend developers
  • 22. ReactJS modules • Universal Discovery (the only one loaded everywhere), • Sub-Items List, • Multi-File Upload
  • 23. Injecting stylesheets and scripts JS, CSS and Twig files can be injected by using YAML config and tags
  • 24. UI Component classes on backend EzSystemsEzPlatformAdminUiComponentTwigComponent EzSystemsEzPlatformAdminUiComponentScriptComponent EzSystemsEzPlatformAdminUiComponentLinkComponent
  • 25. Sample tag usage tags: - { name: ezplatform.admin_ui.component, group: 'script-head' }
  • 26. Injection points • stylesheet-head • script-head • custom-admin-ui-modules • custom-admin-ui-config • stylesheet-body • script-body • content-edit-form-before • content-edit-form-after • content-create-form-before • content-create-form-after • dashboard-blocks
  • 27. Extending Universal Discovery (function (global, eZ) { eZ = eZ || {}; eZ.adminUiConfig = eZ.adminUiConfig || {}; eZ.adminUiConfig.universalDiscoveryWidget = eZ.adminUiConfig.universalDiscoveryWidget || {}; eZ.adminUiConfig.universalDiscoveryWidget.extraTabs = eZ.adminUiConfig.universalDiscoveryWidget.extraTabs || []; eZ.adminUiConfig.universalDiscoveryWidget.extraTabs.push({ id: 'tab-identifier', title: 'tab-title', iconIdentifier: 'tab-icon-identifier', panel: CustomTabContentPanel, attrs: {} }); })(window, window.eZ);
  • 28. Universal Discovery – result of extension
  • 29. Extending Sub-Items List ReactDOM.render(React.createElement(eZ.modules.SubItems, { handleEditItem, generateLink, parentLocationId: container.dataset.location, sortClauses: {[sortField]: sortOrder}, restInfo: {token, siteaccess}, extraActions: [{ component: SomeCustomComponent, attrs: Object.assign({}, mfuAttrs, { onPopupClose: doSomethingOnClose, }) }], items, contentTypesMap, totalCount: subItemsList.ChildrenCount }), container);
  • 30. Sub-Items List – result of extension
  • 31. Extending Field Type validators – class class CustomFieldTypeValidator extends global.eZ.BaseFieldValidator { validateValue(event) { return { isError: false, errorMessage: '' }; } }
  • 32. Extending Field Type validators – implementation const validator = new CustomFieldTypeValidator({ classInvalid: 'is-invalid', fieldSelector: '.ez-field-edit--custom-field-type', eventsMap: [ { selector: '.ez-field-edit--custom-field-type input', eventName: 'blur', callback: 'validateValue', errorNodeSelectors: ['.ez-field-edit__label-wrapper'], }, ], }); validator.init(); eZ.fieldTypeValidators = eZ.fieldTypeValidators ? [...eZ.fieldTypeValidators, validator] : [validator];
  • 33. Extension points for backend developers
  • 34. Field Types in YAML tags: - { name: ez.fieldFormMapper.definition, fieldType: ezboolean } - { name: ez.fieldFormMapper.value, fieldType: ezboolean }
  • 35. Field Types in PHP class PageFormMapper implements FieldValueFormMapperInterface { public function mapFieldValueForm(FormInterface $fieldForm, FieldData $data) { $fieldDefinition = $data->fieldDefinition; $formConfig = $fieldForm->getConfig(); $names = $fieldDefinition->getNames(); $label = $fieldDefinition->getName($formConfig->getOption('mainLanguageCode')) ?: reset($names); $fieldForm->add( $formConfig->getFormFactory()->createBuilder()->create('value', PageFieldType::class, [ 'required' => $fieldDefinition->isRequired, 'label' => $label, ] ) ->setAutoInitialize(false) ->getForm() ); } }
  • 36. ExtendingApplication Menu The extension point is based on KNP Menu bundle. It uses Event Listeners to extend existing menus.
  • 37. ExtendingApplication Menu class ConfigureMainMenuListener implements TranslationContainerInterface { public function onMenuConfigure(ConfigureMenuEvent $event) { $root = $event->getMenu(); $options = $event->getOptions(); // ... $root->addChild(self::ITEM_PAGE, [ 'extras' => [ 'icon' => 'content-list', 'translation_domain' => 'ezplatform_page_builder_menu', 'routes' => [ 'ezplatform.page_builder.location_preview', 'ezplatform.page_builder.url_preview', ], ], ]); } }
  • 39. Adding new tabs to Location view Similar concept as in case of extending the application menu
  • 41. Adding new tabs – the YAML code EzSystemsEzPlatformAdminUiTabLocationViewContentTab: public: true autowire: true arguments: $siteAccessLanguages: '$languages$' tags: - { name: ezplatform.tab, group: location-view }
  • 42. Adding new tabs – the Twig code {{ ez_platform_tabs('location-view', { 'content': content, 'location': location }, '@EzPlatformAdminUi/parts/tab/locationview.html.twig') }}
  • 43. Field Types • Content editing is now powered by Symfony Forms, • Developers have to provide mapping service between repository fieldtype and Symfony Forms, • Templating is easier, • Customizable via EventListeners, DataTransformers, Type Extensions etc.
  • 44. Other approaches of extendingAdminUI • Overriding Twig templates, • Overriding service definitions, • Compiler passes, • Bundle's extension class, • Semantic configuration, • Event listeners
  • 45. Performance comparison – Login page 1.x
  • 46. Performance comparison – Login page 2.x
  • 47. Login page summary eZ Platform 1.x eZ Platform 2.x Requests 158 7 Download size 6.5M 608KB HTML load time 3.5s 681ms Page ready time 16.13s 715ms
  • 48. The Login page loads almost 23x faster in 2.x!
  • 49. Performance comparison – Location view 1.x
  • 50. Performance comparison – Location view 2.x
  • 51. Location page summary eZ Platform 1.x eZ Platform 2.x Requests 190 22 Download size 6.7M 2.2M HTML load time 24.6s 2.2s Page ready time 40.99s 2.69s
  • 52. The Location page loads almost 16x faster in 2.x!
  • 53. Who are we? Piotr Nalepa Senior UI Developer @ eZ Systems @sunpietro Maciej Kobus PHP Developer @ eZ Systems