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

Website Performance
Website PerformanceWebsite Performance
Website Performance
Hugo 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
 

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

Communication in business life
Communication in business lifeCommunication in business life
Communication in business life
Filip Buček
 
Sales presentation market explore-english
Sales presentation   market explore-englishSales presentation   market explore-english
Sales presentation market explore-english
Rachid 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.0
e-sky, Inc
 
5 kinesis lightning
5 kinesis lightning5 kinesis lightning
5 kinesis lightning
BigDataCamp
 

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

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

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
connectwebex
 
Presentation daniel takai
Presentation daniel takaiPresentation daniel takai
Presentation daniel takai
connectwebex
 
Presentation thomas simlinger
Presentation thomas simlingerPresentation thomas simlinger
Presentation thomas simlinger
connectwebex
 

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

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
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
Victor Rentea
 

Recently uploaded (20)

TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
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...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
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
 
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
 
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
 
"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 ...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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...
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

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.