SlideShare a Scribd company logo
User Interface
Customisation
in AEM 6.1
Christian Meyer
@martinischeery
Andreea Sandru
@pudelyna
About us
Andreea Miruna Corbeanu

Software Engineer, AEM Sites

Site Admin, Granite UI
Christian Meyer

Software Engineer, AEM Sites
Page Authoring, Granite UI
User Interface Customisation
AEM projects require customization of the UI
Extension points are available in the product
Let’s learn how to use them!
Agenda
Extending Component Dialogs
Customizing Page Properties
Customizing Search Forms
Extending Component Dialogs
Extending Component Dialogs
Add a field to the Image dialog?
1. Extend Image component



sling:resourceSuperType=

“foundation/components/image”
2. Provide complete dialog structure

(=> copy/paste + add new field)
Before AEM 6.1
Extending Component Dialogs
Add a field to the Image dialog?
1. Extend Image component



sling:resourceSuperType=

“foundation/components/image”
2. Provide dialog diff only

New in AEM 6.1
Sling Resource Merger
Adds an extra section in the left
navigation in AEM
Introduced in AEM 6.0
√ Customize* out of the box UI
x Extend* component dialogs
(*) By providing the diff only
Adds an extra field to the
inherited dialog
Sling Resource Merger
New in AEM 6.1
√ Customize* out of the box UI
√ Extend* component dialogs
(*) By providing the diff only
Sling Resource Merger
=> Search path-based merge

resourceResolver.getResource(“/mnt/overlay/“ + relativePath)
=> Resource type hierarchy-based merge

resourceResolver.getResource(“/mnt/override/“ + absolutePath)
Used in Touch-optimized UI to

√ Allow customization of the product UI

√ Allow cq:dialogs extension
Extending Component Dialogs
1. Always start by creating node skeleton of the part to redefine

(subtree of nt:unstructured nodes, without properties)
2. Then, only provide the “diff”
• Add a node? => simply add it with its properties
• Add a property? => simply add the property
• Update a node? => simply add changed properties
• Reorder a node? => use sling:orderBefore=“nodeName”
• Remove a node? => use sling:hideResource=true
• Remove a property? => use sling:hideProperties=[“propertyName”]
Customizing Page Properties
Different views
Create Page Wizard
Edit Page Properties
Bulk Edit Page Properties
Create Page Wizard
Edit Page Properties
Bulk Edit Page Properties
Common definition
Page properties
=
Fields of Page component
dialog
Customizing Page Properties
Use flags to control rendering of nodes for a given view
• cq:showOnCreate {Boolean}
• cq:hideOnEdit {Boolean}
• allowBulkEdit {Boolean}
Demo
Customize Page Properties views
• Reorder “Title” field before “Name” field
• Only keep a subset of fields in “Create Page Wizard”
• Allow “Title” field to be bulk edited
Customizing Search Forms
Customizing Search Forms
Out of the box reusable Search Predicates
Leverage Sling Resource Merger overlays
Customizing Search Forms
What is a Search Predicate?
Wraps Granite UI component
Backed by AEM Search API
Contains a JavaScript client library
• resetSearchFilters event
• loadSavedQuery event
Make a custom predicate
available for customization
Adding custom predicate
by drag and drop
Demo
• Customize the Page Authoring Side Panel Asset Search
• Customize the Side Admin Search Rail
Summary
Extending Components Dialogs

Override as a diff

Use sling:hideResource, sling:hideProperties, sling:orderBefore
Customizing Page Properties

Extend Page Component Dialog

Use cq:showOnCreate, cq:hideOnEdit, allowBulkEdit flags
Customizing Search Forms

Create a new custom search predicate

Use the predicate in Site admin search rail 

Configure existing search predicates for Page Authoring side panel



Resources
Documentation
https://docs.adobe.com/docs/en/aem/6-1/develop/platform/sling-resource-merger.html
https://docs.adobe.com/docs/en/aem/6-1/develop/extending/customizing-page-properties.html
https://docs.adobe.com/docs/en/aem/6-1/administer/operations/search-forms.html
Code samples
https://github.com/Adobe-Marketing-Cloud/aem-sites-extension-search-predicate
https://github.com/Adobe-Marketing-Cloud/aem-authoring-extension-page-dialog
https://github.com/Adobe-Marketing-Cloud/aem-authoring-extension-assetfinder-flickr/tree/6.1
Slides

http://www.slideshare.net/martinischeery/aem-61-user-interface-customisation
!
Thank you!
Any questions?

More Related Content

What's hot

Integration patterns in AEM 6
Integration patterns in AEM 6Integration patterns in AEM 6
Integration patterns in AEM 6
Yuval Ararat
 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template Language
Gabriel Walt
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
Ashokkumar T A
 
Infrastructure as Code: AWS Best Practices (DEV411-R3) - AWS re:Invent 2018
Infrastructure as Code: AWS Best Practices (DEV411-R3) - AWS re:Invent 2018Infrastructure as Code: AWS Best Practices (DEV411-R3) - AWS re:Invent 2018
Infrastructure as Code: AWS Best Practices (DEV411-R3) - AWS re:Invent 2018
Amazon Web Services
 
Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core Components
Gabriel Walt
 
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowHTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowPrabhdeep Singh
 
CloudFormation Best Practices
CloudFormation Best PracticesCloudFormation Best Practices
CloudFormation Best Practices
Amazon Web Services
 
Angular Dependency Injection
Angular Dependency InjectionAngular Dependency Injection
Angular Dependency Injection
Nir Kaufman
 
AEM Rich Text Editor (RTE) Deep Dive
AEM Rich Text Editor (RTE) Deep DiveAEM Rich Text Editor (RTE) Deep Dive
AEM Rich Text Editor (RTE) Deep Dive
Hanish Bansal
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
I Goo Lee.
 
MongoDB performance
MongoDB performanceMongoDB performance
MongoDB performance
Mydbops
 
Ask the expert AEM Assets best practices 092016
Ask the expert  AEM Assets best practices 092016Ask the expert  AEM Assets best practices 092016
Ask the expert AEM Assets best practices 092016
AdobeMarketingCloud
 
Oracle ADF 11g Skinning Tutorial
Oracle ADF 11g Skinning TutorialOracle ADF 11g Skinning Tutorial
Oracle ADF 11g Skinning Tutorial
Rakesh Gujjarlapudi
 
Angular 8
Angular 8 Angular 8
Angular 8
Sunil OS
 
Apache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and RESTApache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and RESTCarsten Ziegeler
 
Css
CssCss
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
Tae-Seong Park
 
Customizing the Presentation Model and Physical Renderer in Siebel Open UI
Customizing the Presentation Model and Physical Renderer in Siebel Open UICustomizing the Presentation Model and Physical Renderer in Siebel Open UI
Customizing the Presentation Model and Physical Renderer in Siebel Open UI
Tech OneStop
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
Jennifer Estrada
 

What's hot (20)

Integration patterns in AEM 6
Integration patterns in AEM 6Integration patterns in AEM 6
Integration patterns in AEM 6
 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template Language
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 
Infrastructure as Code: AWS Best Practices (DEV411-R3) - AWS re:Invent 2018
Infrastructure as Code: AWS Best Practices (DEV411-R3) - AWS re:Invent 2018Infrastructure as Code: AWS Best Practices (DEV411-R3) - AWS re:Invent 2018
Infrastructure as Code: AWS Best Practices (DEV411-R3) - AWS re:Invent 2018
 
Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core Components
 
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowHTL(Sightly) - All you need to know
HTL(Sightly) - All you need to know
 
Sightly - Part 2
Sightly - Part 2Sightly - Part 2
Sightly - Part 2
 
CloudFormation Best Practices
CloudFormation Best PracticesCloudFormation Best Practices
CloudFormation Best Practices
 
Angular Dependency Injection
Angular Dependency InjectionAngular Dependency Injection
Angular Dependency Injection
 
AEM Rich Text Editor (RTE) Deep Dive
AEM Rich Text Editor (RTE) Deep DiveAEM Rich Text Editor (RTE) Deep Dive
AEM Rich Text Editor (RTE) Deep Dive
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
MongoDB performance
MongoDB performanceMongoDB performance
MongoDB performance
 
Ask the expert AEM Assets best practices 092016
Ask the expert  AEM Assets best practices 092016Ask the expert  AEM Assets best practices 092016
Ask the expert AEM Assets best practices 092016
 
Oracle ADF 11g Skinning Tutorial
Oracle ADF 11g Skinning TutorialOracle ADF 11g Skinning Tutorial
Oracle ADF 11g Skinning Tutorial
 
Angular 8
Angular 8 Angular 8
Angular 8
 
Apache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and RESTApache Sling : JCR, OSGi, Scripting and REST
Apache Sling : JCR, OSGi, Scripting and REST
 
Css
CssCss
Css
 
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
혼자서 커뮤니티 귀동냥하며 만든 Next.js & Amplify & serverless framework 웹 플랫폼 서비스 구현(삽질) 후...
 
Customizing the Presentation Model and Physical Renderer in Siebel Open UI
Customizing the Presentation Model and Physical Renderer in Siebel Open UICustomizing the Presentation Model and Physical Renderer in Siebel Open UI
Customizing the Presentation Model and Physical Renderer in Siebel Open UI
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 

Viewers also liked

User Interface customization for AEM 6
User Interface customization for AEM 6User Interface customization for AEM 6
User Interface customization for AEM 6
Damien Antipa
 
AEM 6.0 - Author UI Customization & Features
AEM 6.0 - Author UI Customization & FeaturesAEM 6.0 - Author UI Customization & Features
AEM 6.0 - Author UI Customization & Features
Abhinit Bhatnagar
 
User interface customization for aem6 circuit
User interface customization for aem6 circuitUser interface customization for aem6 circuit
User interface customization for aem6 circuitDamien Antipa
 
UI Customization in AEM 6.0
UI Customization in AEM 6.0UI Customization in AEM 6.0
UI Customization in AEM 6.0
Gilles Knobloch
 
AEM 6.0 Touch-optimized UI
AEM 6.0 Touch-optimized UIAEM 6.0 Touch-optimized UI
AEM 6.0 Touch-optimized UI
Gilles Knobloch
 
Touching the AEM component dialog by Mateusz Chromiński
Touching the AEM component dialog by Mateusz ChromińskiTouching the AEM component dialog by Mateusz Chromiński
Touching the AEM component dialog by Mateusz Chromiński
AEM HUB
 
CIRCUIT 2015 - UI Customization in AEM 6.1
CIRCUIT 2015 - UI Customization in AEM 6.1CIRCUIT 2015 - UI Customization in AEM 6.1
CIRCUIT 2015 - UI Customization in AEM 6.1
ICF CIRCUIT
 
Adobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer IntroductionAdobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer Introduction
Yash Mody
 
REST in AEM
REST in AEMREST in AEM
REST in AEM
Roy Fielding
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
Stefano Celentano
 
Adobe AEM Commerce with hybris
Adobe AEM Commerce with hybrisAdobe AEM Commerce with hybris
Adobe AEM Commerce with hybris
Paolo Mottadelli
 
The six key steps to AEM architecture
The six key steps to AEM architectureThe six key steps to AEM architecture
The six key steps to AEM architecture
Ashokkumar T A
 
Building Quality into the AEM Publication Workflow with Active Standards by D...
Building Quality into the AEM Publication Workflow with Active Standards by D...Building Quality into the AEM Publication Workflow with Active Standards by D...
Building Quality into the AEM Publication Workflow with Active Standards by D...
AEM HUB
 
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya PallaAdobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya PallaKrishna Chaitanya Palla
 
Adobe Experience Manager 6 Certificaton
Adobe Experience Manager 6 CertificatonAdobe Experience Manager 6 Certificaton
Adobe Experience Manager 6 CertificatonRatna Kumar Kotla
 
Accelerate Your Next AEM Project
Accelerate Your Next AEM ProjectAccelerate Your Next AEM Project
Accelerate Your Next AEM Project
Mark Kelley
 
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ NeevAdobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Neev Technologies
 
CIRCUIT 2015 - Content API's For AEM Sites
CIRCUIT 2015 - Content API's For AEM SitesCIRCUIT 2015 - Content API's For AEM Sites
CIRCUIT 2015 - Content API's For AEM Sites
ICF CIRCUIT
 
When dispatcher caching is not enough...
When dispatcher caching is not enough...When dispatcher caching is not enough...
When dispatcher caching is not enough...
Jakub Wadolowski
 
Sling Component Filters in CQ5
Sling Component Filters in CQ5 Sling Component Filters in CQ5
Sling Component Filters in CQ5
connectwebex
 

Viewers also liked (20)

User Interface customization for AEM 6
User Interface customization for AEM 6User Interface customization for AEM 6
User Interface customization for AEM 6
 
AEM 6.0 - Author UI Customization & Features
AEM 6.0 - Author UI Customization & FeaturesAEM 6.0 - Author UI Customization & Features
AEM 6.0 - Author UI Customization & Features
 
User interface customization for aem6 circuit
User interface customization for aem6 circuitUser interface customization for aem6 circuit
User interface customization for aem6 circuit
 
UI Customization in AEM 6.0
UI Customization in AEM 6.0UI Customization in AEM 6.0
UI Customization in AEM 6.0
 
AEM 6.0 Touch-optimized UI
AEM 6.0 Touch-optimized UIAEM 6.0 Touch-optimized UI
AEM 6.0 Touch-optimized UI
 
Touching the AEM component dialog by Mateusz Chromiński
Touching the AEM component dialog by Mateusz ChromińskiTouching the AEM component dialog by Mateusz Chromiński
Touching the AEM component dialog by Mateusz Chromiński
 
CIRCUIT 2015 - UI Customization in AEM 6.1
CIRCUIT 2015 - UI Customization in AEM 6.1CIRCUIT 2015 - UI Customization in AEM 6.1
CIRCUIT 2015 - UI Customization in AEM 6.1
 
Adobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer IntroductionAdobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer Introduction
 
REST in AEM
REST in AEMREST in AEM
REST in AEM
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
 
Adobe AEM Commerce with hybris
Adobe AEM Commerce with hybrisAdobe AEM Commerce with hybris
Adobe AEM Commerce with hybris
 
The six key steps to AEM architecture
The six key steps to AEM architectureThe six key steps to AEM architecture
The six key steps to AEM architecture
 
Building Quality into the AEM Publication Workflow with Active Standards by D...
Building Quality into the AEM Publication Workflow with Active Standards by D...Building Quality into the AEM Publication Workflow with Active Standards by D...
Building Quality into the AEM Publication Workflow with Active Standards by D...
 
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya PallaAdobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
 
Adobe Experience Manager 6 Certificaton
Adobe Experience Manager 6 CertificatonAdobe Experience Manager 6 Certificaton
Adobe Experience Manager 6 Certificaton
 
Accelerate Your Next AEM Project
Accelerate Your Next AEM ProjectAccelerate Your Next AEM Project
Accelerate Your Next AEM Project
 
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ NeevAdobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
Adobe Experience Manager (Adobe CQ) Capabilities and Experience @ Neev
 
CIRCUIT 2015 - Content API's For AEM Sites
CIRCUIT 2015 - Content API's For AEM SitesCIRCUIT 2015 - Content API's For AEM Sites
CIRCUIT 2015 - Content API's For AEM Sites
 
When dispatcher caching is not enough...
When dispatcher caching is not enough...When dispatcher caching is not enough...
When dispatcher caching is not enough...
 
Sling Component Filters in CQ5
Sling Component Filters in CQ5 Sling Component Filters in CQ5
Sling Component Filters in CQ5
 

Similar to AEM 6.1 User Interface Customization

Making you, and your Clients Happy, by Using Reusable Components to Build Dru...
Making you, and your Clients Happy, by Using Reusable Components to Build Dru...Making you, and your Clients Happy, by Using Reusable Components to Build Dru...
Making you, and your Clients Happy, by Using Reusable Components to Build Dru...
bmx269
 
Branding & Design Opportunities/Challenges with SharePoint 2013
Branding & Design Opportunities/Challenges with SharePoint 2013Branding & Design Opportunities/Challenges with SharePoint 2013
Branding & Design Opportunities/Challenges with SharePoint 2013
Marius Constantinescu [MVP]
 
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
SPTechCon
 
SharePoint 2013 Branding
SharePoint 2013 BrandingSharePoint 2013 Branding
SharePoint 2013 Branding
Kashif Imran
 
NZYP Project Casestudy using SilverStripe CMS
NZYP Project Casestudy using SilverStripe CMSNZYP Project Casestudy using SilverStripe CMS
NZYP Project Casestudy using SilverStripe CMS
Cam Findlay
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
SPTechCon
 
Features and Context Overview
Features and Context OverviewFeatures and Context Overview
Features and Context Overview
brentratliff
 
GlassFish v3 Lite Admin Console
GlassFish v3 Lite Admin ConsoleGlassFish v3 Lite Admin Console
GlassFish v3 Lite Admin Consoleanissalam
 
Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...
Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...
Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...
Richard Calderon
 
Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webparts
Prabhu Nehru
 
Taking Your First Steps with Webydo
Taking Your First Steps with WebydoTaking Your First Steps with Webydo
Taking Your First Steps with Webydo
Zest.is
 
Breaking the limits_of_page_objects
Breaking the limits_of_page_objectsBreaking the limits_of_page_objects
Breaking the limits_of_page_objects
Robert Bossek
 
Share point 2013 Building Websites
Share point 2013 Building WebsitesShare point 2013 Building Websites
Share point 2013 Building Websites
Suhas R Satish
 
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business ToolsSUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
Anindita Bhattacharya
 
14 asp.net session20
14 asp.net session2014 asp.net session20
14 asp.net session20
Vivek chan
 
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van DongenAMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
Getting value from IoT, Integration and Data Analytics
 
Introduction to Vaadin
Introduction to VaadinIntroduction to Vaadin
Introduction to Vaadin
Jeroen Benats
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and Context
Svilen Sabev
 
CKEditor Widgets with Drupal
CKEditor Widgets with DrupalCKEditor Widgets with Drupal
CKEditor Widgets with Drupal
Ranel Padon
 

Similar to AEM 6.1 User Interface Customization (20)

Making you, and your Clients Happy, by Using Reusable Components to Build Dru...
Making you, and your Clients Happy, by Using Reusable Components to Build Dru...Making you, and your Clients Happy, by Using Reusable Components to Build Dru...
Making you, and your Clients Happy, by Using Reusable Components to Build Dru...
 
Branding & Design Opportunities/Challenges with SharePoint 2013
Branding & Design Opportunities/Challenges with SharePoint 2013Branding & Design Opportunities/Challenges with SharePoint 2013
Branding & Design Opportunities/Challenges with SharePoint 2013
 
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
 
USGS-Projects
USGS-ProjectsUSGS-Projects
USGS-Projects
 
SharePoint 2013 Branding
SharePoint 2013 BrandingSharePoint 2013 Branding
SharePoint 2013 Branding
 
NZYP Project Casestudy using SilverStripe CMS
NZYP Project Casestudy using SilverStripe CMSNZYP Project Casestudy using SilverStripe CMS
NZYP Project Casestudy using SilverStripe CMS
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
 
Features and Context Overview
Features and Context OverviewFeatures and Context Overview
Features and Context Overview
 
GlassFish v3 Lite Admin Console
GlassFish v3 Lite Admin ConsoleGlassFish v3 Lite Admin Console
GlassFish v3 Lite Admin Console
 
Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...
Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...
Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...
 
Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webparts
 
Taking Your First Steps with Webydo
Taking Your First Steps with WebydoTaking Your First Steps with Webydo
Taking Your First Steps with Webydo
 
Breaking the limits_of_page_objects
Breaking the limits_of_page_objectsBreaking the limits_of_page_objects
Breaking the limits_of_page_objects
 
Share point 2013 Building Websites
Share point 2013 Building WebsitesShare point 2013 Building Websites
Share point 2013 Building Websites
 
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business ToolsSUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
 
14 asp.net session20
14 asp.net session2014 asp.net session20
14 asp.net session20
 
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van DongenAMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
 
Introduction to Vaadin
Introduction to VaadinIntroduction to Vaadin
Introduction to Vaadin
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and Context
 
CKEditor Widgets with Drupal
CKEditor Widgets with DrupalCKEditor Widgets with Drupal
CKEditor Widgets with Drupal
 

Recently uploaded

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 

Recently uploaded (20)

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 

AEM 6.1 User Interface Customization

Editor's Notes

  1. Andreea
  2. Andreea
  3. Andreea
  4. Andreea
  5. Before diving into the extensions points, let’s first do a quick recap of the main concepts that you should be familiar with in order to understand the rest of the presentation, and more generally speaking, in order to understand how AEM Touch UI work. First thing is that our UI is actually content-driven; each console, each page, each admin screen in the product is backed by a structure of content nodes in the JCR. This implies that we can simply customize the UI by changing some node properties in the repo. And this is usually achieved by “overlaying” the product-related code (in that case: the UI content nodes) from /libs under /apps. In AEM 6.0, the previous version, we’ve introduced a more convenient way of overlaying resources by leveraging the latest Sling Resource Merger capabilities. In a nutshell, the big new thing is that when doing an overlay of an element of the UI, you don’t have to reproduce the exact same content node structure corresponding to the resource that you want to overlay; instead, you can simply provide the overlay as a “diff” of the resource. From a technical point of view, the major change here is that we’ve introduced a new resource provider, that is able to merge resources based on search paths (= so, merge the resources from /apps and /libs) instead of having the resource from /apps taking precedence over the one from /libs. Last but not least, let’s talk a little bit about Granite UI. As I said previously, our UI is based on content nodes, and each of those content nodes has a Sling resource type property leading to a Sling component responsible for its rendering. In other words, our UI is actually composed of reusable, composable and modular Sling components, and those granular components are actually coming from our framework called Granite UI Foundation. So we are using Sling components to compose our UI, in similar way like you could be using CQ Foundation components to compose CQ pages. Having that said, I’ll now let Andreea start with the customisation of the search forms.
  6. Andreea
  7. When developing components, a common use-case is to inherit from another component (= the super component) in order to extend it. By doing that, we also expect to reuse most of the super component’s functionalities. However, a common problem with component inheritance was that it was quite hard to reuse dialogs. Prior to AEM 6.0, one had to copy/paste the super dialog and then work on it. Basically, the only way of extending a super’s component dialog was to do complete local override of that dialog. This was working in an “all or nothing” way: we always had to redefine the exact whole dialog structure even if we just wanted to add a single field. In AEM 6.0, we were able to leverage the Granite UI “include” component to reuse (by including) complete subtrees of a given content node structure, and this was then used to allow reusing complete dialogs parts. For instance, we were then able to include some tabs of the super dialog, and only redefine a given tab to add a new field. This was better but still not optimal. In AEM 6.1, we now can leverage the latest SRM capabilities to do “smarter” overrides, more working like “diffs”, in opposition to the “all or nothing” overrides. This is similar to the new way of overlaying UI parts of the product in the sense that we can now provide the overriding dialog as a “diff”. Concretely speaking, instead of having to copy the super dialog content structure, we can now only provide the different parts using the SRM vocabulary.
  8. To extend a given part of the super dialog, you should always start by creating the corresponding node skeleton that you want to override. And by node skeleton here, I mean that you don’t have to copy all of the properties of the nodes part of the subtree that you’re extending: in other words, you can simply create a subtree a nt:unstructured nodes without any properties (because you don’t want to duplicate all the information that are already defined in the super dialog). And then, once you have your node skeleton in place, you can only specify the different pieces. If you want to add something (either a field or a property), then you just normally add it —nothing special here. If you want to update only a subset of properties of a field, then, following the “diff” principle, you could only add the changed properties. Particular case: if you want, for some reason, to change the ordering of a field, then you could use the sling:orderBefore property. Lastly, if you want to remove something, you could either use sling:hideResource to remove a given field, or sling:hideProperties to remove a given property. Now, remember that in the end, the dialog you’ll get will result from the merge of the super dialog, with the “diff” dialog that you’ve just created.
  9. As you may have noticed, the way we override component dialogs is now pretty similar to the way we overlay UI parts of the product. Both techniques are indeed using the SRM capabilities and rely on the fact that resources are merged, either based on their super resource type hierarchy, or on sling search paths. But before going any further, I would like to clarify how this all fits together since we could easily get confused when mixing both use-cases = when you override a component dialog of a component that is also overlaid in /apps for instance. First thing to understand is that the SRM comes with two different resource providers that were actually designed for different purposes. One allows to merge resources based on their resource type hierarchy, and is available at /mnt/override; whereas the other allows to merge resources based on sling search paths, and is available at /mnt/overlay. In Touch UI, we’ve leveraging both merged resource providers to allow you to override component dialogs and overlay UI parts in a similar manner. To recap, we’re using /mnt/override for component dialogs and /mnt/overlay for UI elements.
  10. Just to make sure that the concept is clear, here’s an example of a component dialog resolution. The common mistake that people make here is that they usually think that if the foundation list component has been overlaid under /apps, the overlaid resource will be merged with the one from /libs, which is not case: dialogs are merged according to their resource type hierarchy, and if at some point, one of the dialog resource is also overlaid, then the overlay will take complete precedence.
  11. Basically, the take-away here is the following —regarding the /apps vs. /libs overlay technique-: don’t overlay components like you overlay elements of the UI. Even if you can now overlay UI elements using diffs, you should still overlay components (for instance, like apps/foundation/components/page) using the old-fashioned “all or nothing” way. Because we’re not leveraging the SRM during the super component resolution.
  12. Now that we’ve seen how to generally extend component dialogs, let’s look at a specific use-case and see how page properties can be customized in AEM 6.1.
  13. In AEM 6.1, the Page Properties have different views throughout the product: there is the create page view, the edit page view and the bulk edit page view. Even though the properties that you can see in those views are different; you should understand that all of those views are actually based on the Page Component Dialog, where the Page Properties are actually defined.
  14. That’s the “Create Page”, visible when creating a new Page out of a Template
  15. That’s the “normal” edit page view, available from the Site Admin or the Page Editing.
  16. And that’s the bulk edit view, available from the Site Admin.
  17. As the Page Component is being frequently extended in customers projects, we’ve introduced a convenient way of customizing its different views too. And you can do that by simply extending the Page Component Dialog. The idea here is to leverage the extension point we’ve seen previously, to extend the Page Component Dialog, and add some properties to control the rendering of a field in a given view. By default, every field of the Page Component Dialog is shown in the edit view, and hidden in the other views. To allow a given field in the create page view, just flag the field with “cq:showOnCreate”. On the other side, to hide it from the edit view, flag it with “cq:hideOnEdit”. Also, to make a given field bulk editable, simply flag it with “allowBulkEdit”. And this is that simple. However, in the case of Bulk Edit, be aware that the implementation of your field has to support bulk edit. But don’t worry, this is already the case for most of the Granite UI components; however, if you want to allow your custom field to bulk editing, then you’ll probably have to update its implementation so that it knows how to behave in bulk edit. If you’re interested in this topic, the official documentation explains how you can do that. I won’t cover it in the presentation as it would take too much time. (Basically, in order for your component to play nicely with the bulk editing, it has to fulfil the following contract: Regarding the markup: you have to assign it the “foundation-field-mixed” class when it contains a mixed value, so that it won’t get submitted when submitting the form. Otherwise, you can encounter some unexpected dataloss. Regarding the JS API: you have to provide a setMixed() and setDisabled() method if your field is a composite field so that the client code can interact with your field. To do so, you can leverage the Granite UI adapter pattern, so that your field could be adapted to a foundation-field-mixed that exposes the setMixed and setDisabled methods.)
  18. Create Page: http://localhost:4502/libs/wcm/core/content/sites/createpagewizard.html/content/geometrixx Edit Page: http://localhost:4502/libs/wcm/core/content/sites/properties.html/content/geometrixx/en Bulk Edit Page: http://localhost:4502/libs/wcm/core/content/sites/properties.html?item=%2Fcontent%2Fgeometrixx%2Fen&item=%2Fcontent%2Fgeometrixx%2Ffr Let’s now dive into the demo, and see how by extending the Page Component Dialog we can also customize the different views we’ve mentioned before. I’m working here on a custom page component, which is inheriting from the Foundation Page, and I’ve changed the Geometrixx pages so that they use my component. First thing to notice, is that I’m overriding the cq:dialog node and only providing the parts that I’m interested in changing. For instance, I’m adding an RTE field labeled “abstract” under the first tab, within the “More titles” section, which I want to place before the “description” field and to allow to be bulk editable. BTW if you’re interested in the whole “how can I create custom widgets” in Touch UI, this one could be worth looking at. And I’m also customizing the “Create” view by showing the Thumbnail tab instead to the Advanced tab simply by using flags on the corresponding resources that I want to hide/show. Last but not least, I can also update some existing fields: for example here, I can make the “subtitle” field required (that way, it’ll be automatically shown on “create”), and add a custom validation for that field. To add validation, I simply specify a validation property with the value of my custom validator, which is defined in my clientlib. That’s basically how we do now validation in TouchUI.
  19. Andreea
  20. Andreea
  21. Andreea