SlideShare a Scribd company logo
1 of 21
Download to read offline
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Building Creative Product Extensions with Experience Manager
Justin Edelson | AEM Evangelist | @justinedelson
#Connect2015
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Agenda
• Common Extensibility Platform
• Getting Started
• Anatomy of a CEP Extension
• Connecting CEP Extensions to AEM
2
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Extending Desktop Apps
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
• Sandbox – a crashing extension will not affect the native application
• Much faster to develop and run
• Well known, widely supported, industry standard
• Easy to integrate web services
• Rapidly build user interfaces
• Wealth of existing frameworks and tools to support development
Benefits of HTML5
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Adobe apps supporting HTML5
extensions
Compatible Products
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Getting Started
• Enable PlayerDebugMode
• OSX: ~/Library/Preferences/com.adobe.CSXS.<version>.plist
• Windows: HKEY_CURRENT_USER/Software/Adobe/CSXS.<version>
• (OS X) kill cfprefsd (or just Restart)
6
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Anatomy of a CEP
Extension
7
Regular CSS
Regular
JavaScript
Regular HTML
Special Sauce
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Manifest
• Provides Extension ID & Name
• Declares Compatible Applications & Versions
• Points to Starting HTML
• Defines UI
8
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
The .debug File
 Allows you to remote debug your extension via a Browser
<?xml version="1.0" encoding="UTF-8"?>
<ExtensionList>
<Extension Id="com.example.helloworld.extension">
<HostList>
<Host Name="PHXS" Port="9090"/>
</HostList>
</Extension>
</ExtensionList>
9
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Using Node Modules in
CEP• The Easy Way:
• $ cd MY_EXTENSION_DIR
• $ npm install MODULE_NAME
• The Cleaner Way
• Create a package.json file
• Run npm install
10
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Using Node Modules in
CEP• Then…
• Use require() in your JavaScript
var opener = require('opener');
• Or in Angular:
app.factory('opener', function() {
return require('opener');
});
11
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Sidebar – AEM Assets
Companion• Introduced with AEM 6.1
• WebDAV Helper Application
• Registers special URL Handler
• aem-asset:/geometrixx/banners/airport.jpg
• Reveal (Open Containing Folder)
• aem-asset:/geometrixx/banners/airport.jpg?action=open
• Opens File in Default Editor
$ open aem-asset:/geometrixx/banners/airport.jpg?action=open
12
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Logging into AEM from
CEP Option 1:
 Host the entire UI in AEM
 Pros: Supports any authentication scheme used by AEM.
 Cons: Not the best development experience
 Option 2:
 Use XHR from CEP Extension
 Pros: Simple.
 Cons: Requires allowing blank referrers. Only supports username/password.
 Option 3:
 Use node http client
 Pros: Simple
 Cons: Only supports username/password. Requests don’t appear in Debugger.
13
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Logging into AEM from
CEPlogin: function(username, password, url, success, error) {
$localStorage.baseUrl = url;
request.post({
url : url + "/j_security_check",
form: {
j_username : username,
j_password : password,
j_validate : true
}
}, function(err, response, body) {
if (response.statusCode === 200) {
$localStorage.tokenCookie = response.headers['set-cookie'][0].split(' ')[0];
success();
} else {
error();
}
});
}
14
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Querying AEM from CEP
search: function(term, callback) {
request.post({
url : $localStorage.baseUrl + "/bin/querybuilder.json",
form : _.extend({
'fulltext' : term
}, searchDefaults),
headers : {
'Cookie' : $localStorage.tokenCookie
}
}, function(err, response, body) {
var results = JSON.parse(response.body);
callback(results.hits);
})
}
15
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Referencing Resources
getTokenizedUrl : function(path) {
return $localStorage.baseUrl + path + "?j_login_token=" +
$localStorage.tokenCookie.split('=')[1].slice(0, -1);
}
16
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo #1
17
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Interacting with the Host
 CSInterface.js
 Information about the host application & environment
 Event Handling
 CEPEngine_extensions.js
 Extension Control Functions
 File handling
 Vulcan.js
 Launch CC Applications
 All available from https://github.com/Adobe-CEP
18
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo #2
19
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo Code Link
https://github.com/justinedelson/cep-aem-search-extension
20
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.

More Related Content

What's hot

The Power of a Video Library - WordCamp Raleigh
The  Power of a Video Library - WordCamp RaleighThe  Power of a Video Library - WordCamp Raleigh
The Power of a Video Library - WordCamp RaleighLauren Jeffcoat
 
Adobe Summit 2016 Bombardier’s AEM Implementation for Multi-sites Management
Adobe Summit 2016 Bombardier’s AEM Implementation for Multi-sites ManagementAdobe Summit 2016 Bombardier’s AEM Implementation for Multi-sites Management
Adobe Summit 2016 Bombardier’s AEM Implementation for Multi-sites ManagementKen Knitter
 
Website Performance
Website PerformanceWebsite Performance
Website PerformanceHugo Fonseca
 
Big datatraining.in devops-part2 (1)
Big datatraining.in devops-part2 (1)Big datatraining.in devops-part2 (1)
Big datatraining.in devops-part2 (1)MvkZ
 
Best practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on CloudBest practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on CloudOleg Posyniak
 
Using WordPress as a Headless CMS
Using WordPress as a Headless CMSUsing WordPress as a Headless CMS
Using WordPress as a Headless CMSAdam Rasheed
 
Magento Cloud Docker - Universal configuration with Oleh Posyniak
Magento Cloud Docker - Universal configuration with Oleh PosyniakMagento Cloud Docker - Universal configuration with Oleh Posyniak
Magento Cloud Docker - Universal configuration with Oleh PosyniakOleg Posyniak
 
Introducing Backblaze B2, the lowest cost cloud storage on the planet.
Introducing Backblaze B2, the lowest cost cloud storage on the planet.Introducing Backblaze B2, the lowest cost cloud storage on the planet.
Introducing Backblaze B2, the lowest cost cloud storage on the planet.Backblaze
 
Teaching Cloud to the Programmers of Tomorrow
Teaching Cloud to the Programmers of TomorrowTeaching Cloud to the Programmers of Tomorrow
Teaching Cloud to the Programmers of TomorrowMike Crabb
 
Azure functions
Azure functionsAzure functions
Azure functionsvivek p s
 
Magento Cloud - Introduction
Magento Cloud - IntroductionMagento Cloud - Introduction
Magento Cloud - IntroductionOleg Posyniak
 
Ohio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCPOhio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCPWesley Workman
 
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...Serdal Kepil
 
Host, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server AppsHost, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server AppsJose Javier Columbie
 
HTML5 - Let’s make the WEB more powerful
HTML5 - Let’s make the WEB more powerfulHTML5 - Let’s make the WEB more powerful
HTML5 - Let’s make the WEB more powerfulNaga Harish M
 

What's hot (17)

The Power of a Video Library - WordCamp Raleigh
The  Power of a Video Library - WordCamp RaleighThe  Power of a Video Library - WordCamp Raleigh
The Power of a Video Library - WordCamp Raleigh
 
Adobe Summit 2016 Bombardier’s AEM Implementation for Multi-sites Management
Adobe Summit 2016 Bombardier’s AEM Implementation for Multi-sites ManagementAdobe Summit 2016 Bombardier’s AEM Implementation for Multi-sites Management
Adobe Summit 2016 Bombardier’s AEM Implementation for Multi-sites Management
 
Website Performance
Website PerformanceWebsite Performance
Website Performance
 
Big datatraining.in devops-part2 (1)
Big datatraining.in devops-part2 (1)Big datatraining.in devops-part2 (1)
Big datatraining.in devops-part2 (1)
 
Best practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on CloudBest practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on Cloud
 
Using WordPress as a Headless CMS
Using WordPress as a Headless CMSUsing WordPress as a Headless CMS
Using WordPress as a Headless CMS
 
Magento Cloud Docker - Universal configuration with Oleh Posyniak
Magento Cloud Docker - Universal configuration with Oleh PosyniakMagento Cloud Docker - Universal configuration with Oleh Posyniak
Magento Cloud Docker - Universal configuration with Oleh Posyniak
 
Introducing Backblaze B2, the lowest cost cloud storage on the planet.
Introducing Backblaze B2, the lowest cost cloud storage on the planet.Introducing Backblaze B2, the lowest cost cloud storage on the planet.
Introducing Backblaze B2, the lowest cost cloud storage on the planet.
 
Teaching Cloud to the Programmers of Tomorrow
Teaching Cloud to the Programmers of TomorrowTeaching Cloud to the Programmers of Tomorrow
Teaching Cloud to the Programmers of Tomorrow
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Magento Cloud - Introduction
Magento Cloud - IntroductionMagento Cloud - Introduction
Magento Cloud - Introduction
 
Ohio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCPOhio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCP
 
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
 
I Can Haz Services ??
I Can Haz Services ??I Can Haz Services ??
I Can Haz Services ??
 
Azure Serverless Conf
Azure Serverless ConfAzure Serverless Conf
Azure Serverless Conf
 
Host, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server AppsHost, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server Apps
 
HTML5 - Let’s make the WEB more powerful
HTML5 - Let’s make the WEB more powerfulHTML5 - Let’s make the WEB more powerful
HTML5 - Let’s make the WEB more powerful
 

Viewers also liked

Yellow Slice Design Profile - 2016
Yellow Slice Design Profile - 2016Yellow Slice Design Profile - 2016
Yellow Slice Design Profile - 2016Yellow Slice
 
02 july-2014 to-08-july-2014-hindu_sabhavarta_year38_issue14
02 july-2014 to-08-july-2014-hindu_sabhavarta_year38_issue1402 july-2014 to-08-july-2014-hindu_sabhavarta_year38_issue14
02 july-2014 to-08-july-2014-hindu_sabhavarta_year38_issue14Akhil Bharat Mahasabha
 
The Invention of Capitalism - Michael Perelman
The Invention of Capitalism - Michael PerelmanThe Invention of Capitalism - Michael Perelman
The Invention of Capitalism - Michael Perelmanberat celik
 
Communication in business life
Communication in business lifeCommunication in business life
Communication in business lifeFilip Buček
 
Sales presentation market explore-english
Sales presentation   market explore-englishSales presentation   market explore-english
Sales presentation market explore-englishRachid QCHIQACH
 
E sky2u.com marketing plan v3.0
E sky2u.com marketing plan v3.0E sky2u.com marketing plan v3.0
E sky2u.com marketing plan v3.0e-sky, Inc
 
How to create the life you want
How to create the life you wantHow to create the life you want
How to create the life you wantSelf-employed
 
Early College Academy Greeley Colorado
Early College Academy Greeley ColoradoEarly College Academy Greeley Colorado
Early College Academy Greeley ColoradoPaul Francisco
 
Spine X Live2D 百萬智多星製作經驗談
Spine X Live2D 百萬智多星製作經驗談Spine X Live2D 百萬智多星製作經驗談
Spine X Live2D 百萬智多星製作經驗談Scissor Lee
 
Aula 1 a obra de kant como síntese do nascente pensamento burguês
Aula 1   a obra de kant como síntese do nascente pensamento burguêsAula 1   a obra de kant como síntese do nascente pensamento burguês
Aula 1 a obra de kant como síntese do nascente pensamento burguêsLeandro Alano
 
Yo mama jokes? | Yahoo Answers
Yo mama jokes? | Yahoo AnswersYo mama jokes? | Yahoo Answers
Yo mama jokes? | Yahoo Answerseconomicmystery85
 
5 kinesis lightning
5 kinesis lightning5 kinesis lightning
5 kinesis lightningBigDataCamp
 
Skills And Competence A Lifespan Perspective Public
Skills And Competence A Lifespan Perspective PublicSkills And Competence A Lifespan Perspective Public
Skills And Competence A Lifespan Perspective PublicLeo Casey
 

Viewers also liked (19)

Yellow Slice Design Profile - 2016
Yellow Slice Design Profile - 2016Yellow Slice Design Profile - 2016
Yellow Slice Design Profile - 2016
 
02 july-2014 to-08-july-2014-hindu_sabhavarta_year38_issue14
02 july-2014 to-08-july-2014-hindu_sabhavarta_year38_issue1402 july-2014 to-08-july-2014-hindu_sabhavarta_year38_issue14
02 july-2014 to-08-july-2014-hindu_sabhavarta_year38_issue14
 
The Invention of Capitalism - Michael Perelman
The Invention of Capitalism - Michael PerelmanThe Invention of Capitalism - Michael Perelman
The Invention of Capitalism - Michael Perelman
 
Communication in business life
Communication in business lifeCommunication in business life
Communication in business life
 
V kap. 9 distribusjon
V kap. 9 distribusjonV kap. 9 distribusjon
V kap. 9 distribusjon
 
Sales presentation market explore-english
Sales presentation   market explore-englishSales presentation   market explore-english
Sales presentation market explore-english
 
zest_issue_2_Travel
zest_issue_2_Travelzest_issue_2_Travel
zest_issue_2_Travel
 
E sky2u.com marketing plan v3.0
E sky2u.com marketing plan v3.0E sky2u.com marketing plan v3.0
E sky2u.com marketing plan v3.0
 
Tema 08
Tema 08Tema 08
Tema 08
 
How to create the life you want
How to create the life you wantHow to create the life you want
How to create the life you want
 
Early College Academy Greeley Colorado
Early College Academy Greeley ColoradoEarly College Academy Greeley Colorado
Early College Academy Greeley Colorado
 
Spine X Live2D 百萬智多星製作經驗談
Spine X Live2D 百萬智多星製作經驗談Spine X Live2D 百萬智多星製作經驗談
Spine X Live2D 百萬智多星製作經驗談
 
Aula 1 a obra de kant como síntese do nascente pensamento burguês
Aula 1   a obra de kant como síntese do nascente pensamento burguêsAula 1   a obra de kant como síntese do nascente pensamento burguês
Aula 1 a obra de kant como síntese do nascente pensamento burguês
 
Img056
Img056Img056
Img056
 
Opjo
OpjoOpjo
Opjo
 
Yo mama jokes? | Yahoo Answers
Yo mama jokes? | Yahoo AnswersYo mama jokes? | Yahoo Answers
Yo mama jokes? | Yahoo Answers
 
5 kinesis lightning
5 kinesis lightning5 kinesis lightning
5 kinesis lightning
 
Skills And Competence A Lifespan Perspective Public
Skills And Competence A Lifespan Perspective PublicSkills And Competence A Lifespan Perspective Public
Skills And Competence A Lifespan Perspective Public
 
Sun & VMware Desktop Training
Sun & VMware Desktop TrainingSun & VMware Desktop Training
Sun & VMware Desktop Training
 

Similar to Building Creative Product Extensions with Experience Manager

Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...Coveros, Inc.
 
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...Sauce Labs
 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013Rupesh Kumar
 
HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 BeMyApp
 
Hands-on Workshop: Intermediate Development with Heroku and Force.com
Hands-on Workshop: Intermediate Development with Heroku and Force.comHands-on Workshop: Intermediate Development with Heroku and Force.com
Hands-on Workshop: Intermediate Development with Heroku and Force.comSalesforce Developers
 
New in the Visual Studio 2012 IDE
New in the Visual Studio 2012 IDENew in the Visual Studio 2012 IDE
New in the Visual Studio 2012 IDELearnNowOnline
 
Summit 2015: Mobile App Dev and Content Management with Adobe Experience Manager
Summit 2015: Mobile App Dev and Content Management with Adobe Experience ManagerSummit 2015: Mobile App Dev and Content Management with Adobe Experience Manager
Summit 2015: Mobile App Dev and Content Management with Adobe Experience Managerbrucelefebvre
 
Introduction to Eclipse Che / EclipseCon 2014
Introduction to Eclipse Che / EclipseCon 2014Introduction to Eclipse Che / EclipseCon 2014
Introduction to Eclipse Che / EclipseCon 2014Florent BENOIT
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...IT Event
 
The Rich Standard: Getting Familiar with HTML5
The Rich Standard: Getting Familiar with HTML5The Rich Standard: Getting Familiar with HTML5
The Rich Standard: Getting Familiar with HTML5Todd Anglin
 
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegelermfrancis
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java3Pillar Global
 
Code Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application MigrationsCode Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application MigrationsDana Luther
 
Integration Testing in AEM
Integration Testing in AEMIntegration Testing in AEM
Integration Testing in AEMconnectwebex
 
STSADM Automating SharePoint Administration - Tech Ed South East Asia 2008 wi...
STSADM Automating SharePoint Administration - Tech Ed South East Asia 2008 wi...STSADM Automating SharePoint Administration - Tech Ed South East Asia 2008 wi...
STSADM Automating SharePoint Administration - Tech Ed South East Asia 2008 wi...Joel Oleson
 
AEM Tools - Eclipse & Brackets
AEM Tools - Eclipse & Brackets AEM Tools - Eclipse & Brackets
AEM Tools - Eclipse & Brackets Lokesh BS
 
Ask the AEM Community Expert Feb 2016 Session: AEM + Brackets
Ask the AEM Community Expert Feb 2016 Session: AEM + BracketsAsk the AEM Community Expert Feb 2016 Session: AEM + Brackets
Ask the AEM Community Expert Feb 2016 Session: AEM + BracketsAdobeMarketingCloud
 

Similar to Building Creative Product Extensions with Experience Manager (20)

Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
 
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013
 
HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
 
Hands-on Workshop: Intermediate Development with Heroku and Force.com
Hands-on Workshop: Intermediate Development with Heroku and Force.comHands-on Workshop: Intermediate Development with Heroku and Force.com
Hands-on Workshop: Intermediate Development with Heroku and Force.com
 
New in the Visual Studio 2012 IDE
New in the Visual Studio 2012 IDENew in the Visual Studio 2012 IDE
New in the Visual Studio 2012 IDE
 
Summit 2015: Mobile App Dev and Content Management with Adobe Experience Manager
Summit 2015: Mobile App Dev and Content Management with Adobe Experience ManagerSummit 2015: Mobile App Dev and Content Management with Adobe Experience Manager
Summit 2015: Mobile App Dev and Content Management with Adobe Experience Manager
 
Introduction to Eclipse Che / EclipseCon 2014
Introduction to Eclipse Che / EclipseCon 2014Introduction to Eclipse Che / EclipseCon 2014
Introduction to Eclipse Che / EclipseCon 2014
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
 
Sightly_techInsight
Sightly_techInsightSightly_techInsight
Sightly_techInsight
 
The unintended benefits of Chef
The unintended benefits of ChefThe unintended benefits of Chef
The unintended benefits of Chef
 
The Rich Standard: Getting Familiar with HTML5
The Rich Standard: Getting Familiar with HTML5The Rich Standard: Getting Familiar with HTML5
The Rich Standard: Getting Familiar with HTML5
 
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java
 
Code Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application MigrationsCode Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application Migrations
 
Integration Testing in AEM
Integration Testing in AEMIntegration Testing in AEM
Integration Testing in AEM
 
STSADM Automating SharePoint Administration - Tech Ed South East Asia 2008 wi...
STSADM Automating SharePoint Administration - Tech Ed South East Asia 2008 wi...STSADM Automating SharePoint Administration - Tech Ed South East Asia 2008 wi...
STSADM Automating SharePoint Administration - Tech Ed South East Asia 2008 wi...
 
AEM Tools - Eclipse & Brackets
AEM Tools - Eclipse & Brackets AEM Tools - Eclipse & Brackets
AEM Tools - Eclipse & Brackets
 
Ask the AEM Community Expert Feb 2016 Session: AEM + Brackets
Ask the AEM Community Expert Feb 2016 Session: AEM + BracketsAsk the AEM Community Expert Feb 2016 Session: AEM + Brackets
Ask the AEM Community Expert Feb 2016 Session: AEM + Brackets
 

More from connectwebex

Jackrabbit OCM in practice
Jackrabbit OCM in practiceJackrabbit OCM in practice
Jackrabbit OCM in practiceconnectwebex
 
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?connectwebex
 
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
 
Presentation daniel takai
Presentation daniel takaiPresentation daniel takai
Presentation daniel takaiconnectwebex
 
Presentation thomas simlinger
Presentation thomas simlingerPresentation thomas simlinger
Presentation thomas simlingerconnectwebex
 
five Sling features you should know
five Sling features you should knowfive Sling features you should know
five Sling features you should knowconnectwebex
 
Efficient content structures and queries in CRX/CQ
Efficient content structures and queries in CRX/CQEfficient content structures and queries in CRX/CQ
Efficient content structures and queries in CRX/CQconnectwebex
 
Web, Mobile, App and Back!
Web, Mobile, App and Back!Web, Mobile, App and Back!
Web, Mobile, App and Back!connectwebex
 
Tighten your Security and Privacy
Tighten your Security and PrivacyTighten your Security and Privacy
Tighten your Security and Privacyconnectwebex
 
THE BREAK-UP - A user interface love story
THE BREAK-UP - A user interface love storyTHE BREAK-UP - A user interface love story
THE BREAK-UP - A user interface love storyconnectwebex
 
Configuring CQ Security
Configuring CQ SecurityConfiguring CQ Security
Configuring CQ Securityconnectwebex
 
Sling Component Filters in CQ5
Sling Component Filters in CQ5 Sling Component Filters in CQ5
Sling Component Filters in CQ5 connectwebex
 
Integrating Backend Systems
Integrating Backend SystemsIntegrating Backend Systems
Integrating Backend Systemsconnectwebex
 
Auto-testing production CQ instances with Muppet
Auto-testing production CQ instances with MuppetAuto-testing production CQ instances with Muppet
Auto-testing production CQ instances with Muppetconnectwebex
 

More from connectwebex (17)

Jackrabbit OCM in practice
Jackrabbit OCM in practiceJackrabbit OCM in practice
Jackrabbit OCM in practice
 
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?
 
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
 
SonarQube for AEM
SonarQube for AEMSonarQube for AEM
SonarQube for AEM
 
Presentation daniel takai
Presentation daniel takaiPresentation daniel takai
Presentation daniel takai
 
Presentation thomas simlinger
Presentation thomas simlingerPresentation thomas simlinger
Presentation thomas simlinger
 
five Sling features you should know
five Sling features you should knowfive Sling features you should know
five Sling features you should know
 
Efficient content structures and queries in CRX/CQ
Efficient content structures and queries in CRX/CQEfficient content structures and queries in CRX/CQ
Efficient content structures and queries in CRX/CQ
 
Web, Mobile, App and Back!
Web, Mobile, App and Back!Web, Mobile, App and Back!
Web, Mobile, App and Back!
 
Tighten your Security and Privacy
Tighten your Security and PrivacyTighten your Security and Privacy
Tighten your Security and Privacy
 
THE BREAK-UP - A user interface love story
THE BREAK-UP - A user interface love storyTHE BREAK-UP - A user interface love story
THE BREAK-UP - A user interface love story
 
Configuring CQ Security
Configuring CQ SecurityConfiguring CQ Security
Configuring CQ Security
 
Sling Component Filters in CQ5
Sling Component Filters in CQ5 Sling Component Filters in CQ5
Sling Component Filters in CQ5
 
Integrating Backend Systems
Integrating Backend SystemsIntegrating Backend Systems
Integrating Backend Systems
 
Scaling CQ5
Scaling CQ5Scaling CQ5
Scaling CQ5
 
Auto-testing production CQ instances with Muppet
Auto-testing production CQ instances with MuppetAuto-testing production CQ instances with Muppet
Auto-testing production CQ instances with Muppet
 
CQ Maven Methods
CQ Maven MethodsCQ Maven Methods
CQ Maven Methods
 

Recently uploaded

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 

Recently uploaded (20)

Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Building Creative Product Extensions with Experience Manager

  • 1. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Building Creative Product Extensions with Experience Manager Justin Edelson | AEM Evangelist | @justinedelson #Connect2015
  • 2. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Agenda • Common Extensibility Platform • Getting Started • Anatomy of a CEP Extension • Connecting CEP Extensions to AEM 2
  • 3. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Extending Desktop Apps
  • 4. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. • Sandbox – a crashing extension will not affect the native application • Much faster to develop and run • Well known, widely supported, industry standard • Easy to integrate web services • Rapidly build user interfaces • Wealth of existing frameworks and tools to support development Benefits of HTML5
  • 5. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Adobe apps supporting HTML5 extensions Compatible Products
  • 6. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Getting Started • Enable PlayerDebugMode • OSX: ~/Library/Preferences/com.adobe.CSXS.<version>.plist • Windows: HKEY_CURRENT_USER/Software/Adobe/CSXS.<version> • (OS X) kill cfprefsd (or just Restart) 6
  • 7. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Anatomy of a CEP Extension 7 Regular CSS Regular JavaScript Regular HTML Special Sauce
  • 8. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Manifest • Provides Extension ID & Name • Declares Compatible Applications & Versions • Points to Starting HTML • Defines UI 8
  • 9. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. The .debug File  Allows you to remote debug your extension via a Browser <?xml version="1.0" encoding="UTF-8"?> <ExtensionList> <Extension Id="com.example.helloworld.extension"> <HostList> <Host Name="PHXS" Port="9090"/> </HostList> </Extension> </ExtensionList> 9
  • 10. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Using Node Modules in CEP• The Easy Way: • $ cd MY_EXTENSION_DIR • $ npm install MODULE_NAME • The Cleaner Way • Create a package.json file • Run npm install 10
  • 11. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Using Node Modules in CEP• Then… • Use require() in your JavaScript var opener = require('opener'); • Or in Angular: app.factory('opener', function() { return require('opener'); }); 11
  • 12. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Sidebar – AEM Assets Companion• Introduced with AEM 6.1 • WebDAV Helper Application • Registers special URL Handler • aem-asset:/geometrixx/banners/airport.jpg • Reveal (Open Containing Folder) • aem-asset:/geometrixx/banners/airport.jpg?action=open • Opens File in Default Editor $ open aem-asset:/geometrixx/banners/airport.jpg?action=open 12
  • 13. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Logging into AEM from CEP Option 1:  Host the entire UI in AEM  Pros: Supports any authentication scheme used by AEM.  Cons: Not the best development experience  Option 2:  Use XHR from CEP Extension  Pros: Simple.  Cons: Requires allowing blank referrers. Only supports username/password.  Option 3:  Use node http client  Pros: Simple  Cons: Only supports username/password. Requests don’t appear in Debugger. 13
  • 14. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Logging into AEM from CEPlogin: function(username, password, url, success, error) { $localStorage.baseUrl = url; request.post({ url : url + "/j_security_check", form: { j_username : username, j_password : password, j_validate : true } }, function(err, response, body) { if (response.statusCode === 200) { $localStorage.tokenCookie = response.headers['set-cookie'][0].split(' ')[0]; success(); } else { error(); } }); } 14
  • 15. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Querying AEM from CEP search: function(term, callback) { request.post({ url : $localStorage.baseUrl + "/bin/querybuilder.json", form : _.extend({ 'fulltext' : term }, searchDefaults), headers : { 'Cookie' : $localStorage.tokenCookie } }, function(err, response, body) { var results = JSON.parse(response.body); callback(results.hits); }) } 15
  • 16. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Referencing Resources getTokenizedUrl : function(path) { return $localStorage.baseUrl + path + "?j_login_token=" + $localStorage.tokenCookie.split('=')[1].slice(0, -1); } 16
  • 17. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Demo #1 17
  • 18. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Interacting with the Host  CSInterface.js  Information about the host application & environment  Event Handling  CEPEngine_extensions.js  Extension Control Functions  File handling  Vulcan.js  Launch CC Applications  All available from https://github.com/Adobe-CEP 18
  • 19. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Demo #2 19
  • 20. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Demo Code Link https://github.com/justinedelson/cep-aem-search-extension 20
  • 21. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.