SlideShare a Scribd company logo
1 of 55
USER INTERFACE CUSTOMIZATION FOR AEM 6 
P R E S E N T E D B Y 
Damien Antipa 
Gilles Knobloch 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 1 
November 18th, 2014
Gilles Knobloch, Engineering Manager 
4 years of AEM experience 
Working on AEM/Granite/Coral 
Architect of the Launches & Sling Resource Merger 
@gilknob 
Damien Antipa, Senior UX Engineer 
Working on AEM/Granite/Coral and 
wherever Javascript is used 
@visiongeist 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 2
Introduction 
New user experience introduced in 5.6.0 
Challenges 
- Extensible technology for partners/customers 
- Guarantee upgradability 
Goal of the session 
Understand how to extend admin screens and page authoring 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 3
Extend 
Admin screens 
Create 
Admin screens 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 4 
Page 
Authoring
Fundamental Concepts 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 5 
- UI based on content nodes 
- Sling Resource Merger 
- Granite UI Include
How were you used to overlay? 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 
/libs 
/wcm 
/core 
/content 
/siteadmin 
ā€¦ 
6 
/new-feature 
/custom-feature 
- All properties duplicated 
- Blocking for upgrades 
/apps/wcm/core/content/siteadmin 
- Currently, need to copy 
the whole subtree
How does it work now? 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 
/libs 
/wcm 
/core 
/content 
/sites 
ā€¦ 
/apps/wcm/core/content/sites 
7 
/new-feature 
/custom-feature 
(/new-feature) 
- Extend within an 
almost empty sub-tree 
- Only needed 
nodes/properties need to 
be overlaid
Sling Resource Merger 
- Custom resource provider: /mnt/overlay 
- Overlays of resources using resource resolver search paths 
- Working as a diff 
- Custom Sling vocabulary 
Overall goal: override in /apps, never touch /libs 
- Guarantees upgradability 
- Easier debugging 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 8
Sling Resource Merger 
Add or override a property 
Create the corresponding node structure and property within /apps 
(the property will have priority based on Sling Resource Resolver configuration) 
Changing the type of the property is supported 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 9
Sling Resource Merger 
Hide one or more properties 
Create the corresponding node structure and property within /apps, 
Add sling:hideProperties property: list of properties to hide (String[]) 
* wildcard can be used to hide all properties 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 10
Sling Resource Merger 
Hide a resource (and its children) 
Create the corresponding node structure within /apps 
Set sling:hideResource to true (Boolean) 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 11
Sling Resource Merger 
Hide children of a resource (but keep the properties of the resource) 
Create the corresponding node structure within /apps, 
Add sling:hideChildren property: list of children to hide (String[]) 
* wildcard can be used to hide all children 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 12
Sling Resource Merger 
Reorder resources 
Create the corresponding node within /apps 
Set sling:orderBefore to the name of the sibling where 
that node should be reordered before (String) 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 13
Extend existing admin screen 
Check our examples! 
- Custom documentation links 
(sling:hideChildren, sling:orderBefore) 
- Additional toolbar action 
- Restrict Create Site to administrators 
(sling:hideProperties, custom rendering condition) 
- Default layout to list view, removed toggle to card view 
(sling:hideResource) 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Create a custom admin screen 
Launches Console 
- Custom console 
- Custom menu entry 
- Specific actions 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Create a custom admin screen 
Root space 
for Launches 
console 
Custom components (styles, scripts, JSPs) 
Page definition Granite UI page resource 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 16
Create a custom admin screen 
Add in 
navigation Give same ID as your console and point 
Extend navigation 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 17 
to it 
Specify location in the tree
Granite UI Includes 
granite/ui/components/foundation/include 
Avoid duplicating 
same subtrees of 
nodes 
Specify path to 
include 
/apps/one /apps/two 
/apps/commo 
n 
Can be used to extend component dialogs 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 18
Page Authoring in AEM 6.0 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 19
Customer Page = ContentFrame 
Editing Features = EditorFrame 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 20
: 
AssetGroups 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 
21 
Sidepanel
Components 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 22
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 23 
These are Editables
What is an Editable? 
- is an instance of a component on a page 
- the JCR node lives under the pageā€™s ā€œjcr:contentā€ 
- represented through a Javascript object 
- allows access to the pageā€™s HTML 
- is aware of its JCR path and edit configuration 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 24
An Editable in Javascript 
- It is a central object for manipulation and retrieval 
- Exposes the configuration of the component 
- Allows to add listeners (afterEdit, beforeDelete, beforeMove etc). 
- Constructor: Granite.author.Editable 
- All Editableā€™s of the current page are accessible 
through Granite.author.store 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 25
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 26 
These are Overlays
Toolbar 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 27
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 28
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 29
Inplace Editing 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 30
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 31 
Layer
What is a layer? 
- Defines a state of the Authoring User Interface 
- Bundles View/Rendering and Functionality 
- Only 1 Layer is active 
- Have to play nicely with each other 
- Full control about the whole experience 
- Build-in layers: Edit, Preview, Annotate, Developer, 
Target 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 32
Layer Switcher 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 33
Extending the Page Authoring 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 
- Toolbar action 
- Page action 
- Inplace Editor 
- Custom Layer 
- Assetfinder Group 
- Dialog Conversion
Before we startā€¦ 
- ClientLib category hook: cq.authoring.editor.hook 
- Javascript Namespace: Granite.author 
- Overlays are managed by Granite.author.overlayManager 
- Current pageā€™s Editables are in Granite.author.store 
- A lot of page data is in Granite.author.page 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 35
1 Custom toolbar action 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 36
Still working: Adding custom actions to components 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 
37 
1
1 Add Toolbar Button 
- Javascript implementation 
- component independent actions 
- toolbar entry definition 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 38
'CUSTOM': { 
icon: 'coral-Icon--gear', 
text: Granite.I18n.get('Custom'), 
handler: function (editable, param, target) { 
alert('my custom action'); 
// do not close toolbar 
return false; 
}, 
condition: function (editable) { 
// optional condition to show action 
return !!editable.config.orderable; 
}, 
render: function (dom) { 
// custom rendering 
return dom; 
} 
} 
1 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 39
1 EXAMPLE: Adding a screenshot functionality 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 40
Custom page action 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 
41 
2
2 
/apps/wcm/core/content/editor/jcr:content/content/items/conte 
nt/header/items/headerbar/items/myCustomButton 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 42
3 Inplace Editors 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 43
3 
cq:inplaceEditing/editorType = ā€œtitleā€ 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 44
var titleEditor = { 
setUp: function (editable) { 
}, 
tearDown = function (editable) { 
} 
}; 
Granite.author.editor.register(ā€˜title', titleEditor); 
3 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 45
3 Create a Hybrid Editor 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 46
var textImageEditorConfig = { 
editors: [ 
{ 
editorType: "text", 
imageClass: "coral-Icon coral-Icon--text" 
}, 
{ 
editorType: "image", 
imageClass: "coral-Icon coral-Icon--image" 
} 
] 
}; 
textImageEditor = 
new Granite.editor.HybridEditor(textImageEditorConfig); 
// register the editor to the editor registry 
Granite.author.editor.register('textimage', textImageEditor); 
3 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 47
Creating a layer 
- Inherit from Build-in layers like Edit 
- Important objects: layerManager, overlayManager, 
persistence 
- Change the view and actions 
4 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 48
var MsmLayer = function () { 
// Call super constructor 
this.constructor.prototype.constructor.call(this, 
"MSM", "coral-Icon--link"); 
}; 
MsmLayer.prototype = new Granite.author.Layer(); 
MsmLayer.prototype.setUp = function () { 
// allow user interaction with the iframe content (e.g., click on links) 
Granite.author.ContentFrame.showFullScreenMask(false); 
// Close the sidepanel 
Granite.author.SidePanel.close(); 
}; 
MsmLayer.prototype.tearDown = function () { 
// prevent user interaction with the iframe content (e.g., click on links) 
Granite.author.ContentFrame.showFullScreenMask(true); 
}; 
// register at the manager 
Granite.author.layerManager.registerLayer(new MsmLayer()); 
4 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 49
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 50
Assetfinder 
- Adding a new asset group 
- Handling the rendering 
Granite.author.ui.assetFinder 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 
51 
- Handling the Drag&Drop 
Granite.author.dropController 
- Handling the Persistence 
Granite.author.edit.actions or 
Granite.author.persistence 
5
Dialog Conversion 
- Console to convert Classic UI dialogs into Touch UI dialogs 
Helps to create the structure 
ExtJS code needs to be migrated separately 
- Plugin-based 
Content nodes patterns 
Implement OSGi service 
6 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 52
Extend 
Admin screens 
Create 
Admin screens 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 53 
Page 
Authoring 
Wrap-up
Resources 
- CRXDE Lite overlay extension tool on Package Share 
- Official documentation: http://adobe.ly/1meXUn7 
Customizing consoles and page authoring 
- Examples on Github: http://github.com/Adobe-Marketing-Cloud 
- CQGems recording: http://adobe.ly/1mwhsZZ 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 54
Questions & Comments? 
Please give us feedback: http://adobe.ly/1pCZJ4h 
Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 56

More Related Content

What's hot

AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentGabriel Walt
Ā 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template LanguageGabriel Walt
Ā 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
Ā 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsStefano Celentano
Ā 
AEM Evernote Sync
AEM Evernote SyncAEM Evernote Sync
AEM Evernote SyncKevin Nennig
Ā 
Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsGabriel Walt
Ā 
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQNetcetera
Ā 
Python Ireland Nov 2009 Talk - Appengine
Python Ireland Nov 2009 Talk - AppenginePython Ireland Nov 2009 Talk - Appengine
Python Ireland Nov 2009 Talk - AppenginePython Ireland
Ā 
SPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager SitesSPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager SitesGabriel Walt
Ā 
Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core componentsLokesh BS
Ā 
AEM and Sling
AEM and SlingAEM and Sling
AEM and SlingLo Ki
Ā 
Dynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMDynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMBojana Popovska
Ā 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep DiveGabriel Walt
Ā 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerJustin Edelson
Ā 
Umbraco Cape Town Meetup Presentation
Umbraco Cape Town Meetup PresentationUmbraco Cape Town Meetup Presentation
Umbraco Cape Town Meetup PresentationBluegrass Digital
Ā 
AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AdobeMarketingCloud
Ā 
Building assets on the fly with Node.js
Building assets on the fly with Node.jsBuilding assets on the fly with Node.js
Building assets on the fly with Node.jsAcquisio
Ā 
Three WEM Dev Tricks
Three WEM Dev TricksThree WEM Dev Tricks
Three WEM Dev TricksGabriel Walt
Ā 
Extra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonExtra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonAEM HUB
Ā 

What's hot (20)

AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component Development
Ā 
Sling Dynamic Include
Sling Dynamic IncludeSling Dynamic Include
Sling Dynamic Include
Ā 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template Language
Ā 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
Ā 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
Ā 
AEM Evernote Sync
AEM Evernote SyncAEM Evernote Sync
AEM Evernote Sync
Ā 
Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core Components
Ā 
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Ā 
Python Ireland Nov 2009 Talk - Appengine
Python Ireland Nov 2009 Talk - AppenginePython Ireland Nov 2009 Talk - Appengine
Python Ireland Nov 2009 Talk - Appengine
Ā 
SPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager SitesSPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager Sites
Ā 
Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core components
Ā 
AEM and Sling
AEM and SlingAEM and Sling
AEM and Sling
Ā 
Dynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMDynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEM
Ā 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
Ā 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Manager
Ā 
Umbraco Cape Town Meetup Presentation
Umbraco Cape Town Meetup PresentationUmbraco Cape Town Meetup Presentation
Umbraco Cape Town Meetup Presentation
Ā 
AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016
Ā 
Building assets on the fly with Node.js
Building assets on the fly with Node.jsBuilding assets on the fly with Node.js
Building assets on the fly with Node.js
Ā 
Three WEM Dev Tricks
Three WEM Dev TricksThree WEM Dev Tricks
Three WEM Dev Tricks
Ā 
Extra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonExtra aem development tools by Justin Edelson
Extra aem development tools by Justin Edelson
Ā 

Viewers also liked

Introduction to Marketing Cloud UI, Adobe Summit 2014
Introduction to Marketing Cloud UI, Adobe Summit 2014Introduction to Marketing Cloud UI, Adobe Summit 2014
Introduction to Marketing Cloud UI, Adobe Summit 2014Damien Antipa
Ā 
Content Modelling for Personalisation
Content Modelling for PersonalisationContent Modelling for Personalisation
Content Modelling for Personalisationcleveg
Ā 
CQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and DeploymentCQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and Deployment6D Global
Ā 
Hubot + Slack + AEM
Hubot + Slack + AEMHubot + Slack + AEM
Hubot + Slack + AEMMax Barrass
Ā 
Introdcution to Adobe CQ
Introdcution to Adobe CQIntrodcution to Adobe CQ
Introdcution to Adobe CQRest West
Ā 
Simplify and Accelerate App Development with Adobe AEM Mobile
Simplify and Accelerate App Development with Adobe AEM MobileSimplify and Accelerate App Development with Adobe AEM Mobile
Simplify and Accelerate App Development with Adobe AEM MobilePerficient, Inc.
Ā 
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingAdobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingCarsten Ziegeler
Ā 
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
Ā 

Viewers also liked (10)

Introduction to Marketing Cloud UI, Adobe Summit 2014
Introduction to Marketing Cloud UI, Adobe Summit 2014Introduction to Marketing Cloud UI, Adobe Summit 2014
Introduction to Marketing Cloud UI, Adobe Summit 2014
Ā 
Content Modelling for Personalisation
Content Modelling for PersonalisationContent Modelling for Personalisation
Content Modelling for Personalisation
Ā 
Introducing CQ 5.1
Introducing CQ 5.1Introducing CQ 5.1
Introducing CQ 5.1
Ā 
CQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and DeploymentCQ5 Development Setup, Maven Build and Deployment
CQ5 Development Setup, Maven Build and Deployment
Ā 
Hubot + Slack + AEM
Hubot + Slack + AEMHubot + Slack + AEM
Hubot + Slack + AEM
Ā 
Introdcution to Adobe CQ
Introdcution to Adobe CQIntrodcution to Adobe CQ
Introdcution to Adobe CQ
Ā 
Simplify and Accelerate App Development with Adobe AEM Mobile
Simplify and Accelerate App Development with Adobe AEM MobileSimplify and Accelerate App Development with Adobe AEM Mobile
Simplify and Accelerate App Development with Adobe AEM Mobile
Ā 
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingAdobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job Processing
Ā 
REST in AEM
REST in AEMREST in AEM
REST in AEM
Ā 
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...
Ā 

Similar to User interface customization for aem6 circuit

CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...
CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...
CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...CODE BLUE
Ā 
Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014Paolo Mottadelli
Ā 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013Rupesh Kumar
Ā 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt AEM HUB
Ā 
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based LayoutsCIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based LayoutsICF CIRCUIT
Ā 
AEM responsive
AEM responsiveAEM responsive
AEM responsiveDamien Antipa
Ā 
What's new in designer
What's new in designerWhat's new in designer
What's new in designerRaj J (Rajendran)
Ā 
Securing Containers - Sathyajit Bhat - Adobe
Securing Containers - Sathyajit Bhat - AdobeSecuring Containers - Sathyajit Bhat - Adobe
Securing Containers - Sathyajit Bhat - AdobeCodeOps Technologies LLP
Ā 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon expressAeshan Wijetunge
Ā 
AEM target Integration
AEM target IntegrationAEM target Integration
AEM target IntegrationKanika Gera
Ā 
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT Group
Ā 
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...Evolve The Adobe Digital Marketing Community
Ā 
Using Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetUsing Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetJoseph Labrecque
Ā 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegelermfrancis
Ā 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
Ā 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMconnectwebex
Ā 
Cloud Community Engineering - Holiday readiness
Cloud Community Engineering - Holiday readinessCloud Community Engineering - Holiday readiness
Cloud Community Engineering - Holiday readinessOleg Posyniak
Ā 

Similar to User interface customization for aem6 circuit (20)

CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...
CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...
CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...
Ā 
Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014
Ā 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013
Ā 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Ā 
S903 palla
S903 pallaS903 palla
S903 palla
Ā 
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based LayoutsCIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
Ā 
AEM responsive
AEM responsiveAEM responsive
AEM responsive
Ā 
What's new in designer
What's new in designerWhat's new in designer
What's new in designer
Ā 
Sightly_techInsight
Sightly_techInsightSightly_techInsight
Sightly_techInsight
Ā 
Securing Containers - Sathyajit Bhat - Adobe
Securing Containers - Sathyajit Bhat - AdobeSecuring Containers - Sathyajit Bhat - Adobe
Securing Containers - Sathyajit Bhat - Adobe
Ā 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
Ā 
AEM target Integration
AEM target IntegrationAEM target Integration
AEM target Integration
Ā 
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
Ā 
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Ā 
Using Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetUsing Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component Set
Ā 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
Ā 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
Ā 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
Ā 
Cloud Community Engineering - Holiday readiness
Cloud Community Engineering - Holiday readinessCloud Community Engineering - Holiday readiness
Cloud Community Engineering - Holiday readiness
Ā 
2014 cf summit_clustering
2014 cf summit_clustering2014 cf summit_clustering
2014 cf summit_clustering
Ā 

Recently uploaded

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
Ā 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Ā 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
Ā 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
Ā 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
Ā 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
Ā 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
Ā 
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | DelhiFULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhisoniya singh
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
Ā 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
Ā 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
Ā 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
Ā 

Recently uploaded (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Ā 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Ā 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Ā 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Ā 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Ā 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
Ā 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Ā 
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | DelhiFULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Ā 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Ā 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Ā 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Ā 

User interface customization for aem6 circuit

  • 1. USER INTERFACE CUSTOMIZATION FOR AEM 6 P R E S E N T E D B Y Damien Antipa Gilles Knobloch Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 1 November 18th, 2014
  • 2. Gilles Knobloch, Engineering Manager 4 years of AEM experience Working on AEM/Granite/Coral Architect of the Launches & Sling Resource Merger @gilknob Damien Antipa, Senior UX Engineer Working on AEM/Granite/Coral and wherever Javascript is used @visiongeist Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 2
  • 3. Introduction New user experience introduced in 5.6.0 Challenges - Extensible technology for partners/customers - Guarantee upgradability Goal of the session Understand how to extend admin screens and page authoring Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 3
  • 4. Extend Admin screens Create Admin screens Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 4 Page Authoring
  • 5. Fundamental Concepts Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 5 - UI based on content nodes - Sling Resource Merger - Granite UI Include
  • 6. How were you used to overlay? Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. /libs /wcm /core /content /siteadmin ā€¦ 6 /new-feature /custom-feature - All properties duplicated - Blocking for upgrades /apps/wcm/core/content/siteadmin - Currently, need to copy the whole subtree
  • 7. How does it work now? Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. /libs /wcm /core /content /sites ā€¦ /apps/wcm/core/content/sites 7 /new-feature /custom-feature (/new-feature) - Extend within an almost empty sub-tree - Only needed nodes/properties need to be overlaid
  • 8. Sling Resource Merger - Custom resource provider: /mnt/overlay - Overlays of resources using resource resolver search paths - Working as a diff - Custom Sling vocabulary Overall goal: override in /apps, never touch /libs - Guarantees upgradability - Easier debugging Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 8
  • 9. Sling Resource Merger Add or override a property Create the corresponding node structure and property within /apps (the property will have priority based on Sling Resource Resolver configuration) Changing the type of the property is supported Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 9
  • 10. Sling Resource Merger Hide one or more properties Create the corresponding node structure and property within /apps, Add sling:hideProperties property: list of properties to hide (String[]) * wildcard can be used to hide all properties Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 10
  • 11. Sling Resource Merger Hide a resource (and its children) Create the corresponding node structure within /apps Set sling:hideResource to true (Boolean) Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 11
  • 12. Sling Resource Merger Hide children of a resource (but keep the properties of the resource) Create the corresponding node structure within /apps, Add sling:hideChildren property: list of children to hide (String[]) * wildcard can be used to hide all children Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 12
  • 13. Sling Resource Merger Reorder resources Create the corresponding node within /apps Set sling:orderBefore to the name of the sibling where that node should be reordered before (String) Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 13
  • 14. Extend existing admin screen Check our examples! - Custom documentation links (sling:hideChildren, sling:orderBefore) - Additional toolbar action - Restrict Create Site to administrators (sling:hideProperties, custom rendering condition) - Default layout to list view, removed toggle to card view (sling:hideResource) Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
  • 15. Create a custom admin screen Launches Console - Custom console - Custom menu entry - Specific actions Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
  • 16. Create a custom admin screen Root space for Launches console Custom components (styles, scripts, JSPs) Page definition Granite UI page resource Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 16
  • 17. Create a custom admin screen Add in navigation Give same ID as your console and point Extend navigation Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 17 to it Specify location in the tree
  • 18. Granite UI Includes granite/ui/components/foundation/include Avoid duplicating same subtrees of nodes Specify path to include /apps/one /apps/two /apps/commo n Can be used to extend component dialogs Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 18
  • 19. Page Authoring in AEM 6.0 Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 19
  • 20. Customer Page = ContentFrame Editing Features = EditorFrame Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 20
  • 21. : AssetGroups Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 21 Sidepanel
  • 22. Components Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 22
  • 23. Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 23 These are Editables
  • 24. What is an Editable? - is an instance of a component on a page - the JCR node lives under the pageā€™s ā€œjcr:contentā€ - represented through a Javascript object - allows access to the pageā€™s HTML - is aware of its JCR path and edit configuration Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 24
  • 25. An Editable in Javascript - It is a central object for manipulation and retrieval - Exposes the configuration of the component - Allows to add listeners (afterEdit, beforeDelete, beforeMove etc). - Constructor: Granite.author.Editable - All Editableā€™s of the current page are accessible through Granite.author.store Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 25
  • 26. Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 26 These are Overlays
  • 27. Toolbar Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 27
  • 28. Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 28
  • 29. Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 29
  • 30. Inplace Editing Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 30
  • 31. Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 31 Layer
  • 32. What is a layer? - Defines a state of the Authoring User Interface - Bundles View/Rendering and Functionality - Only 1 Layer is active - Have to play nicely with each other - Full control about the whole experience - Build-in layers: Edit, Preview, Annotate, Developer, Target Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 32
  • 33. Layer Switcher Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 33
  • 34. Extending the Page Authoring Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. - Toolbar action - Page action - Inplace Editor - Custom Layer - Assetfinder Group - Dialog Conversion
  • 35. Before we startā€¦ - ClientLib category hook: cq.authoring.editor.hook - Javascript Namespace: Granite.author - Overlays are managed by Granite.author.overlayManager - Current pageā€™s Editables are in Granite.author.store - A lot of page data is in Granite.author.page Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 35
  • 36. 1 Custom toolbar action Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 36
  • 37. Still working: Adding custom actions to components Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 37 1
  • 38. 1 Add Toolbar Button - Javascript implementation - component independent actions - toolbar entry definition Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 38
  • 39. 'CUSTOM': { icon: 'coral-Icon--gear', text: Granite.I18n.get('Custom'), handler: function (editable, param, target) { alert('my custom action'); // do not close toolbar return false; }, condition: function (editable) { // optional condition to show action return !!editable.config.orderable; }, render: function (dom) { // custom rendering return dom; } } 1 Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 39
  • 40. 1 EXAMPLE: Adding a screenshot functionality Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 40
  • 41. Custom page action Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 41 2
  • 42. 2 /apps/wcm/core/content/editor/jcr:content/content/items/conte nt/header/items/headerbar/items/myCustomButton Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 42
  • 43. 3 Inplace Editors Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 43
  • 44. 3 cq:inplaceEditing/editorType = ā€œtitleā€ Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 44
  • 45. var titleEditor = { setUp: function (editable) { }, tearDown = function (editable) { } }; Granite.author.editor.register(ā€˜title', titleEditor); 3 Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 45
  • 46. 3 Create a Hybrid Editor Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 46
  • 47. var textImageEditorConfig = { editors: [ { editorType: "text", imageClass: "coral-Icon coral-Icon--text" }, { editorType: "image", imageClass: "coral-Icon coral-Icon--image" } ] }; textImageEditor = new Granite.editor.HybridEditor(textImageEditorConfig); // register the editor to the editor registry Granite.author.editor.register('textimage', textImageEditor); 3 Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 47
  • 48. Creating a layer - Inherit from Build-in layers like Edit - Important objects: layerManager, overlayManager, persistence - Change the view and actions 4 Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 48
  • 49. var MsmLayer = function () { // Call super constructor this.constructor.prototype.constructor.call(this, "MSM", "coral-Icon--link"); }; MsmLayer.prototype = new Granite.author.Layer(); MsmLayer.prototype.setUp = function () { // allow user interaction with the iframe content (e.g., click on links) Granite.author.ContentFrame.showFullScreenMask(false); // Close the sidepanel Granite.author.SidePanel.close(); }; MsmLayer.prototype.tearDown = function () { // prevent user interaction with the iframe content (e.g., click on links) Granite.author.ContentFrame.showFullScreenMask(true); }; // register at the manager Granite.author.layerManager.registerLayer(new MsmLayer()); 4 Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 49
  • 50. Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 50
  • 51. Assetfinder - Adding a new asset group - Handling the rendering Granite.author.ui.assetFinder Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 51 - Handling the Drag&Drop Granite.author.dropController - Handling the Persistence Granite.author.edit.actions or Granite.author.persistence 5
  • 52. Dialog Conversion - Console to convert Classic UI dialogs into Touch UI dialogs Helps to create the structure ExtJS code needs to be migrated separately - Plugin-based Content nodes patterns Implement OSGi service 6 Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 52
  • 53. Extend Admin screens Create Admin screens Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 53 Page Authoring Wrap-up
  • 54. Resources - CRXDE Lite overlay extension tool on Package Share - Official documentation: http://adobe.ly/1meXUn7 Customizing consoles and page authoring - Examples on Github: http://github.com/Adobe-Marketing-Cloud - CQGems recording: http://adobe.ly/1mwhsZZ Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 54
  • 55. Questions & Comments? Please give us feedback: http://adobe.ly/1pCZJ4h Ā© 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 56

Editor's Notes

  1. hi, welcome everyone. we are glad to have you here today and walk you through user interface customisation opportunities in Adobe Experience Manager 6.
  2. Before we start, let me quickly introduce ourselves. Damien isā€¦ working on our full UI technology stack and technical architect of the new page authoring For my part, Iā€™m leading a small team of developers with focus on the UI framework, WCM administration and page authoring.
  3. As you may know, we did quite a lot of UX changes in the last couple of months for several reasons, one of them being the support for mobile devices. Therefore, we built our new UI to be mobile first, but still keeping desktop in mind by leveraging responsiveness features. It is now spread across multiple UIs of the product, and based on a UI framework that provides the foundation components.
  4. We are going to show 3 major ways of extending the AEM 6.0 UI: Modifying an existing admin screen Creating your own one And finally see how the page authoring interface can be customized
  5. Youā€™re used to have your CQ pages composed of nodes and their appropriate rendering component. Admin UIs are now also built the same way, which easily allows integrating further features and customer extensions. So the structure is similar to what is stored under jcr:content nodes of your CQ pages. Sling resource merger and Includes are two features that help in customizing this node structure.
  6. You had to copy the whole subtree ā€”- CLICK All nodes and properties were duplicated, and you added your customisations there ā€”- CLICK If we did a major change, for instance a new feature ā€”- CLICK, your duplication wouldnā€™t contain that change. You might also miss some important bug fixes, which youā€™ll have to re-apply by yourself.
  7. Now the idea is to extend within the apps tree only whatā€™s required, in an almost empty subtree. ā€”- CLICK So when you add a customisation ā€”- CLICK ā€”- and Adobe finally upgrades the console ā€”- CLICK Any intermediate update will be got for free. ā€”- CLICK ā€” This is true for functional fixes, new features or even security fixes which might affect your system. In the end, your customisation is applied on top of the UI Adobe provides.
  8. What I just explained is now possible through a new feature that has been contributed to Sling, called Resource Merger, and is based on a custom resource provider, which is an OSGi service that reads a resource from the JCR repository, and returns it as an object. This object is built by iterating over the resource resolver search paths, and merging those resources together like a diff thanks to a custom Sling vocabulary but also respecting ACLs. Easier debugging for you, the developers.
  9. In order to add or overrideā€¦
  10. If you want to hide one or more propertiesā€¦
  11. You might also want to hide a whole subtree of resources. For this, you ā€¦
  12. Similar to hiding properties, you can also hide some children by usingā€¦
  13. And finally, you can also influence the order of the nodes by usingā€¦ NO DEMO
  14. I recommend you to check our examples to see how this is applied to the Sites administration. As you can see, we can add a custom toolbar action or restrict the behaviour of another one to some group membership, even change the default layout, and all of this by just providing the corresponding diff under /apps. For you, partners and customers, Sling resource merger will really become your friend.
  15. You might not only want to extend existing admin screens, but also create your own ones to display and edit any kind of custom resources you are storing in the repository. As an example, we might want to create a new console for managing our Launches in the new UI ā€” CLICK ā€”- with its specific actions ā€”- CLICK ā€”- And weā€™re also going to append this item in the navigation. ā€”- CLICK
  16. So for this, weā€™ll have a space in the repository for our new console ā€”- CLICK This will contain some specific components with styles, scripts, etc. ā€”- CLICK ā€”- as well as the page definition ā€”- CLICK By using granite UI foundation page like OOTB consoles ā€”- CLICK ā€”- you can build your custom screen using the same mechanisms and in the end getting the exact same user experience
  17. To add the item in the navigation, you extend the default navigation thanks to the Resource Merger ā€”- CLICK ā€”-map it to the right location and its corresponding id for the navigation ā€”- CLICK ā€” and eventually specify where in the navigation tree it should be displayed. NO DEMO
  18. The last item Iā€™d like to talk about is Granite UI include component. If different places of your UIs are requiring the exact same node substree, ā€”- CLICK ā€”- you can store this subtree in a common place to avoid duplication ā€”- CLICK ā€”- and reference it from the include component as shown here. ā€”- CLICK ā€”- It can for instance be used if you want to extend a component dialog. You can reuse parts of the existing dialog in your extension. TODO: create a custom component with overlaid dialog and add it to samples (no demo)
  19. I will now continue with the third part of our presentation- the page authoring. As may have noticed. the authoring has slightly changed its look and feel :) In 5.6.1 it was already preview technology. To give an understanding of what i m talking about let me walk you through the basics and clarify some expressions.
  20. When you go to the siteadmin and click edit on a page you will see this view. This view consists of 2 parts. we call them frames. - PAUSE AND CLICK - On the right side in red you see the customer page. The page which will be delivered to your visitors. We call this frame ContentFrame - PAUSE AND CLICK - On the left side in green you see the editing capabilities. This frame is called EditorFrame and will deliver the editing capabilities to the authors. PAUSE We call these to elements frames, because they run in a separated context. This means that their styles sheets and javascript is not influencing each other. This is very important for the further extension of the authoring because you donā€™t want to have editing styles leaking into the customer page. no interference
  21. Part of the EditorFrame is the Sidepanel. The Sidepanel provides multiple tabs on the very top. The first tab we see here is the assets tab. Assets can be added to the page through drag and drop - PAUSE AND CLICK - We can see images on the screen now but the side panel provides to show different groups of assets like videos and documents. The highlighted drop down will be important for one of our extension points.
  22. The second tab of the side panel shows all available components which can be added to the page.
  23. So back to the contentFrame. All the elements highlighted in red are called editables. It is important to understand whatā€™s an Editable.
  24. instance of a component on a page it is a JCR node on the client side there it access to html dom node this object
  25. From the perspective of a developerā€¦ - find the definition of the object in the JS namespace Graniteā€¦.
  26. A little bit more confusion. At the same visual position of the Editables there are also elements called OVERLAYS. While Editables build a connection to an HTML element inside of the ContentFrame, The overlays represent an HTML element in the editorframe. Overlays protect Editables from direct communication. They are invisible and react to user input. Any user interaction like click will happen on the Overlay instead.
  27. So what happens when we click on an Overlay. Usually we get a toolbar. The toolbar defines the action which can be done with the editable.
  28. In some cases if you double click you open an inplace editor. Like the image editor for example.
  29. The glue between all these elements and features are a concept called layer.
  30. New concept to make the page authoring more modular - State: Which gives you a way to change the way of rendering and functionality. For example you can control what happens when a user clicks on an overlay Or control how an overlay should be rendered Or show a custom sidepanel Layers are a new concept. independent bundle of functionality which can be activated in order to manipulate or interact with the page The glue. Each of them is loaded separately, completely control experience a lot of power, as long as u r responsible
  31. So lets finally dive into the actual extensibility opportunities. I must warn you, I will show QUITE SOME CODE on the next slides I will explain you 5 of the most important extension points
  32. - client library to add all JS for extension points. loaded in time. namespace contains all objects we are working with, DO NOT use for your stuff oM current loaded page editables page information like path, design, acl, components
  33. The first extension point we will have a look is the toolbar. So after clicking on an overlay we see a toolbar. And we want an additional action on this toolbar.
  34. As you used to do it you can still add your action to a component changing editConfig - this is working as before. ā€”- Demo 1: create the nodes in /libs/foundation/components/image/cq:editConfig cq:actions=EDITANNOTATECOPYMOVEDELETEINSERT
  35. We can now also add actions to the component with JS This allows us to add actions which are not bound to a specific component, they can be global or restricted to any other property
  36. What you see here is a definition of an action in a toolbar as a Javascript Object. Lets have a look from top to bottom. icon, css class for the button icon text handler: function to be executed when the button is clicked (optional) rendering condition, button not shown if it returns false (optional) render function, change button style, (e.g. red bg)
  37. I will do a DEMO. In this example I build a button which renders the editable into an image. Therefor I am using an open source project called html2canvas. Does not make too much sense, image to image
  38. Our next extension point will be about creating new page actions. In the screenshot you can see I added a new button on the very top of the page. So when the button is clicked I want to perform an action like starting a workflow.
  39. This can be achieved by leveraging the resource merger which was presented by Gilles beforehand. So when you look at this very long path on the button. If you add your button there, you will see it in the page authoring. I wonā€™t show a live demo here but of course we have a code example ready for you to look at.
  40. The next extension point is about the inplace editors. As you remember when you double clicked on certain components then you activate the inplace editor. On the left side we the image editor and on the right side the rich text editor.
  41. To be most flexible, existing inplace editors can be overridden or new ones can added. Therefor we use a submode of the editConfiguration of a component. We use a node called cq:inplaceEditing and place a property editorType with a unique editor name there.
  42. On javascript part we need to implement an interface to make our new editor work. This editor can then be registered as a new inplace editor.
  43. There is a special case for inplace editors when a component allows to use different editors for different parts. A good example is the Text & Image component. So when clicking (CLICK) on this component. We see a menu showing up which allows us to pick the right editor. We call this kind of editor an hybrid editor because it allows to merge multiple editors
  44. The hybrid editor can be reused to create your own custom editor combinations. Here is some example code I wonā€™t going to explain, just have a look if you want to try it out.
  45. So Authoring extension point number 4. The actual most powerful one. Creating your own layer gives you the power about the whole authoring and plays nicely with other layers. So other bundles of functionality. inherit or scratch
  46. Here is an example of a custom layer. particular view for MSM websites Let me try to walk you trough the code
  47. NO DEMO
  48. NO DEMO but we have a flickr example
  49. Limitation: ExtJS code cannot be converted
  50. so what you learned todayā€¦. Leverage the resource merger and includes to extend admin screens, how to create completely new admin screens and how to customise the page authoring
  51. official doc: http://docs.adobe.com/content/docs/en/aem/6-0/develop/extending.html github? link to sample packages qrcode
  52. Please give us feedback on this session. We will try to publish as many examples over the following months as possible. If you want to know more about a specific customisation or you are wondering how you can extend a certain area or feature of AEM, please drop us a message. We will do our best to integrate it into one of our public examples/speeches, blogs etc.