SlideShare a Scribd company logo
1 of 39
Download to read offline
Client-Side Integration with
Visualforce Pages
Interacting with Visualforce via JavaScript
Nathan Lipke, salesforce.com, Lead Member of Technical Staff, @EvilN8
Mike Tetlow, Bracket Labs, Lead Developer, @Mikename
Safe Harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties
materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results
expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be
deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other
financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any
statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new
functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our
operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any
litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our
relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our
service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to
larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is
included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent
fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor
Information section of our Web site.
Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently
available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions
based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these
forward-looking statements.
Nathan Lipke
Lead Member of Technical Staff
@EvilN8
Mike Tetlow
Lead Developer
@Mikename
Your Intranet/Portal
Most companies have corporate
portals.
▪ Often not integrated with Salesforce
Unintegrated Pages Cause Pain
▪ Copy and pasting
▪ Refreshing
▪ We expect interactive web pages
• Multiple tabs/windows do not interact with one
another.
Integration Is Traditionally Server-side
Currently integration with Salesforce is server-side:
▪ Java, .NET, Ruby, …
▪ Connect via Salesforce APIs
Client-Side Integration
▪ HTML5/JavaScript is the Web Standard programming language
▪ More interactive/responsive
▪ JavaScript & Apex integrate
Bracket Labs & TaskRay Project Management
Use-Cases
▪ Real-time dashboard
• Task/Project status

▪ Create/Update Objects
• Create a new task

▪ Drilldown
• Click on graph highlights tasks

▪ Custom
• Create a new task that’s already been started
Steps
1. Open a new window in JavaScript
2. Login
3. Communicate
4. Call Controller
Open A New Window
In your parent window call JavaScript to open VF Page.
▪ open() Must be in an onclick handler to avoid popup-blockers.
▪ Save the returned window for sending message
childWin = window.open(
‘https://c.na15.visual.force.com/apex/trprojectboard’,
‘childWin’, ‘status=0,toolbar=0,menubar=0,resizable=0,
scrollbars=0,top=400,left=0,height=300,width=1280’)
Login
▪ Standard login
▪ SSO (SAML)
▪ OAuth
Security: Salesforce
▪ Standard Salesforce security works:
• Users cannot do anything they can’t normally do
– Profiles, Perm Sets, Sharing, Ownership, …

• Use with sharing in your Apex classes

▪ SAML
• Is the same user logged into your intranet site

▪ Oauth
• Limit Scope
• Use with remote action calls and REST calls
• Revocable
Communicating: Web Messaging
▪ Use-Cases:
• Create/Update Objects
• Drill-down
• Dashboards

▪ Allows JavaScript messaging between windows
▪ Works regardless of domains
▪ Need a handle to the window
• External page: return from window.open()
• Visualforce: Use window.opener

▪ Can be called with or without user interaction
Code: Sending a message (External Page)
function createTask(name) {
childWin.postMessage( { //message
name : ‘createTask’,
payload : {
Name : ‘New Task’,
TASKRAY__project__c : ‘a02G0000006WoYw’
}
},
‘https://c.na15.visual.force.com’ //target origin
);
}
Code: Receiving messages (Visualforce)
//Start listening
window.addEventListener("message", receiveMessage, false);

function receiveMessage(event) {
if (event.origin !== ‘https://nlipke-test1.herokuapp.com’)
return; //ignore it
if (event.data.name === ‘newTask’)
newTask(event.data.payload.name, event.data.payload.project);
}
Security: Messaging
▪ Know who is messaging you and who you’re messaging
• Use My Domain
• Check event.origin in handlers
• Don’t use ‘*’ for the origin in postMessage()

▪ Validate messages
• Validate all fields
• Signed Messages

▪ Warning: Messages can be sent from Developer Tools!
▪ Use server-side integration as needed
Communicating: Drag and drop
▪ Use-Case:
• Specialized Actions
– Create
– Update
– Drilldown

▪ Comes from an user gesture
▪ dragstart event: sets the data
• Data must be text (can be JSON)

▪ drop event: get the data
Code: Drag and Drop (External Page)
el.setAttribute('draggable', 'true');
el.addEventListener('dragstart', function (e) {
e.dataTransfer.effectAllowed = ’all';
e.dataTransfer.setData('Task', JSON.stringify(getTask()));
});
Code: Drag and Drop (Visualforce)
el.addEventListener('drop', function(e) {
if (e.stopPropagation) e.stopPropagation();
createTask(JSON.parse(e.dataTransfer.getData('Task')));
el.style.background="gray";
});
el.addEventListener('dragover', function(e) {
if (e.preventDefault) e.preventDefault(); // allows us to drop
el.style.background="red";
});
Code: Drag and Drop (Visualfoce cont.)
el.addEventListener('dragenter', function(e) {
el.style.background="red";
});
el.addEventListener('dragleave', function(e) {
el.style.background="gray";
});
Security: Drag and Drop
▪ Drag and drop does not provide an origin
• Can be from any browser window
– Even a different browser (e.g. Firefox->Chrome)

• Can be from a non-browser application
– File system
– Other apps

▪ Verify drop data via messaging
• Proves the origin
Calling your Apex Controller
There a two ways to call Apex from JavaScript
▪ <apex:actionFunction> tag
• No parameters in Apex function
– Members field or setter may be bound to JavaScript arguments

• Allows rerender targets
• Can call non-static controller methods

▪ Remote Actions
• Parameters
• Only static controller methods
• Has asynchronous JavaScript callback (may call ActionFunction to rerender)
Code: Action Function (Visualforce)
Apex:
public PageReference draw() {
recalculateData();
return null;
}

Visualforce:
<apex:actionFunction name=”draw" action="{!draw}" rerender=“node”/>

JavaScript:
draw();
Code: Remote Action Apex (Visualforce)
Apex:
public class MyController with sharing {
@RemoteAction
public static String newTask(TASKRAY__Project_Task__c task) {
insert task;
return task.id;
}
}
Code: Remote Action JavaScript (Visualforce)
JavaScript:
MyController.createTask(
{Name : name, TASKRAY__Project__c : projectId},
function (result, event) {
if (event.status) {
taskId = result;
draw(); //Call the Action Function
}
});
Demo
Requirements
▪ Perms
• Must be able to author Visualforce and Apex (Author Apex perm)

▪ Browsers:

• Something written this decade
– IE 8+
Summary
▪ Client-Side integration with Visualforce is a powerful tool
• Provides a rich user experience

▪ HTML5 makes it possible
• Web Messaging is your general purpose communication tool
• Drag and drop for special use-cases

▪ Steps
1.

Open

2.

Login

3.

Communicate

4.

Call Controller
Other Sessions:
▪ Partner User Groups: Practical Tips and Tricks for Bootstrapping Your
Business
• Blakely Graham & Eric Wu: Monday 3:00-3:30

▪ Compelling User Interfaces with Visualforce and Bootstrap
• Mike: Tuesday 1:00-1:30

▪ Real-Time Data Feeds Using the Streaming API
• Mike: Wednesday 9:00-9:45
Q&A: Why The Awesome Mustache
▪ 1/1/1 Model
• 1% of shares
• 1% of employee time
• 1% of product
• All companies welcome to join 1/1/1
– Customers
– Partners: Bracket Labs

▪ Movember Party
• Wednesday 2:00-4:00: The Plaza
Nathan Lipke
Lead Member of Technical Staff,
@EvilN8

Mike Tetlow
Lead Developer,
@Mikename
All About Bracket Labs
Award-winning AppExchange ISV Partner selling
productivity apps. 100% native architecture, focus on
usability and simplicity. Founded 2010, Boulder CO
▪ Campaign Calendar – Top 10 app in Marketing category
▪ TaskRay – Top app in Project Management and Collaboration
categories
▪ MyDay – Launched Dreamforce 2013
▪ Notable customers include GE, NBCUniversal, Kelly Services, Tata
Communications, Forbes, Houghton Mifflin
Links
▪ Window.open: https://developer.mozilla.org/enUS/docs/Web/API/window.open
▪ Web Messaging: https://developer.mozilla.org/enUS/docs/Web/API/window.postMessage
▪ Drag and Drop: https://developer.mozilla.org/enUS/docs/DragDrop/Drag_and_Drop
Links
▪ SSO (SAML): http://help.salesforce.
com/help/pdfs/en/salesforce_single_sign_on.pdf
▪ Oauth: https://help.salesforce.com/apex/HTViewHelpDoc?
id=remoteaccess_authenticate.htm&language=en
Links
▪ Remote Actions: http://www.salesforce.
com/us/developer/docs/pages/Content/pages_js_remoting.htm
▪ ActionFunction: http://www.salesforce.
com/us/developer/docs/pages/Content/pages_compref_actionFunction.
htm
We want to hear
from YOU!
Please take a moment to complete our
session survey
Surveys can be found in the “My Agenda”
portion of the Dreamforce app
Making External Web Pages Interact With Visualforce

More Related Content

What's hot

Salesforce Communities
Salesforce CommunitiesSalesforce Communities
Salesforce CommunitiesSunil kumar
 
Salesforce Community Cloud
Salesforce Community CloudSalesforce Community Cloud
Salesforce Community CloudJayant Jindal
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforceMark Adcock
 
Introduction to lightning components
Introduction to lightning componentsIntroduction to lightning components
Introduction to lightning componentsMohith Shrivastava
 
Introducing the Salesforce platform
Introducing the Salesforce platformIntroducing the Salesforce platform
Introducing the Salesforce platformJohn Stevenson
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce dataSalesforce Developers
 
Using Personas for Salesforce Accessibility and Security
Using Personas for Salesforce Accessibility and SecurityUsing Personas for Salesforce Accessibility and Security
Using Personas for Salesforce Accessibility and SecuritySalesforce Admins
 
Seamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSeamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSalesforce Developers
 
Salesforce for Nonprofits: An Introduction to Salesforce.org. NPSP, and Aptaria
Salesforce for Nonprofits: An Introduction to Salesforce.org. NPSP, and AptariaSalesforce for Nonprofits: An Introduction to Salesforce.org. NPSP, and Aptaria
Salesforce for Nonprofits: An Introduction to Salesforce.org. NPSP, and AptariaAptaria
 
Introduction to Salesforce | Salesforce Tutorial for Beginners | Salesforce T...
Introduction to Salesforce | Salesforce Tutorial for Beginners | Salesforce T...Introduction to Salesforce | Salesforce Tutorial for Beginners | Salesforce T...
Introduction to Salesforce | Salesforce Tutorial for Beginners | Salesforce T...Edureka!
 
Champion Productivity with Service Cloud
Champion Productivity with Service CloudChampion Productivity with Service Cloud
Champion Productivity with Service CloudSalesforce Admins
 
Introduction to Salesforce.com
Introduction to Salesforce.comIntroduction to Salesforce.com
Introduction to Salesforce.comEdureka!
 
Salesforce integration best practices columbus meetup
Salesforce integration best practices   columbus meetupSalesforce integration best practices   columbus meetup
Salesforce integration best practices columbus meetupMuleSoft Meetup
 
Automate All The Things with Flow
Automate All The Things with FlowAutomate All The Things with Flow
Automate All The Things with FlowSalesforce Admins
 
Salesforce Marketing cloud
Salesforce Marketing cloudSalesforce Marketing cloud
Salesforce Marketing cloudCloud Analogy
 
Salesforce Field Service Lightning
Salesforce Field Service LightningSalesforce Field Service Lightning
Salesforce Field Service LightningJayant Jindal
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilitySalesforce Developers
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionSalesforce Developers
 
Planning Your Migration to the Lightning Experience
Planning Your Migration to the Lightning ExperiencePlanning Your Migration to the Lightning Experience
Planning Your Migration to the Lightning ExperienceShell Black
 

What's hot (20)

Salesforce Communities
Salesforce CommunitiesSalesforce Communities
Salesforce Communities
 
Salesforce Community Cloud
Salesforce Community CloudSalesforce Community Cloud
Salesforce Community Cloud
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforce
 
Introduction to lightning components
Introduction to lightning componentsIntroduction to lightning components
Introduction to lightning components
 
Introducing the Salesforce platform
Introducing the Salesforce platformIntroducing the Salesforce platform
Introducing the Salesforce platform
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce data
 
Using Personas for Salesforce Accessibility and Security
Using Personas for Salesforce Accessibility and SecurityUsing Personas for Salesforce Accessibility and Security
Using Personas for Salesforce Accessibility and Security
 
Seamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSeamless Authentication with Force.com Canvas
Seamless Authentication with Force.com Canvas
 
Introduction to Visualforce
Introduction to VisualforceIntroduction to Visualforce
Introduction to Visualforce
 
Salesforce for Nonprofits: An Introduction to Salesforce.org. NPSP, and Aptaria
Salesforce for Nonprofits: An Introduction to Salesforce.org. NPSP, and AptariaSalesforce for Nonprofits: An Introduction to Salesforce.org. NPSP, and Aptaria
Salesforce for Nonprofits: An Introduction to Salesforce.org. NPSP, and Aptaria
 
Introduction to Salesforce | Salesforce Tutorial for Beginners | Salesforce T...
Introduction to Salesforce | Salesforce Tutorial for Beginners | Salesforce T...Introduction to Salesforce | Salesforce Tutorial for Beginners | Salesforce T...
Introduction to Salesforce | Salesforce Tutorial for Beginners | Salesforce T...
 
Champion Productivity with Service Cloud
Champion Productivity with Service CloudChampion Productivity with Service Cloud
Champion Productivity with Service Cloud
 
Introduction to Salesforce.com
Introduction to Salesforce.comIntroduction to Salesforce.com
Introduction to Salesforce.com
 
Salesforce integration best practices columbus meetup
Salesforce integration best practices   columbus meetupSalesforce integration best practices   columbus meetup
Salesforce integration best practices columbus meetup
 
Automate All The Things with Flow
Automate All The Things with FlowAutomate All The Things with Flow
Automate All The Things with Flow
 
Salesforce Marketing cloud
Salesforce Marketing cloudSalesforce Marketing cloud
Salesforce Marketing cloud
 
Salesforce Field Service Lightning
Salesforce Field Service LightningSalesforce Field Service Lightning
Salesforce Field Service Lightning
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura Interoperability
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Planning Your Migration to the Lightning Experience
Planning Your Migration to the Lightning ExperiencePlanning Your Migration to the Lightning Experience
Planning Your Migration to the Lightning Experience
 

Viewers also liked

Force.com Canvas - a Quick Introduction
Force.com Canvas - a Quick IntroductionForce.com Canvas - a Quick Introduction
Force.com Canvas - a Quick IntroductionSteven Herod
 
Authentication with OAuth and Connected Apps
Authentication with OAuth and Connected AppsAuthentication with OAuth and Connected Apps
Authentication with OAuth and Connected AppsSalesforce Developers
 
Force.com Canvas: Salesforce1, SAML, & Apex...Oh My!
Force.com Canvas: Salesforce1, SAML, & Apex...Oh My!Force.com Canvas: Salesforce1, SAML, & Apex...Oh My!
Force.com Canvas: Salesforce1, SAML, & Apex...Oh My!Salesforce Developers
 
Secure Connectivity to your Salesforce Applications
Secure Connectivity to your Salesforce ApplicationsSecure Connectivity to your Salesforce Applications
Secure Connectivity to your Salesforce ApplicationsSalesforce Developers
 
Salesforce Developer Garage Seattle: Force.com Canvas
Salesforce Developer Garage Seattle: Force.com CanvasSalesforce Developer Garage Seattle: Force.com Canvas
Salesforce Developer Garage Seattle: Force.com CanvasSalesforce Developers
 
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas sparkSalesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas sparkAldo Fernandez
 
force.com Canvas Overview: Leveraging Legacy Applications to Become a Custome...
force.com Canvas Overview: Leveraging Legacy Applications to Become a Custome...force.com Canvas Overview: Leveraging Legacy Applications to Become a Custome...
force.com Canvas Overview: Leveraging Legacy Applications to Become a Custome...Salesforce.org
 
Dive Deep into Apex: Advanced Apex!
Dive Deep into Apex: Advanced Apex! Dive Deep into Apex: Advanced Apex!
Dive Deep into Apex: Advanced Apex! Salesforce Developers
 
O auth, sso, saml, canvas app zhugin(final)
O auth, sso, saml, canvas app   zhugin(final)O auth, sso, saml, canvas app   zhugin(final)
O auth, sso, saml, canvas app zhugin(final)Dmitry Zhugin
 
Trust Me, I'm An Architect
Trust Me, I'm An ArchitectTrust Me, I'm An Architect
Trust Me, I'm An ArchitectKeir Bowden
 
CIS14: OAuth and OpenID Connect in Action
CIS14: OAuth and OpenID Connect in ActionCIS14: OAuth and OpenID Connect in Action
CIS14: OAuth and OpenID Connect in ActionCloudIDSummit
 
Integrating Active Directory With Salesforce Using Identity Connect
Integrating Active Directory With Salesforce Using Identity ConnectIntegrating Active Directory With Salesforce Using Identity Connect
Integrating Active Directory With Salesforce Using Identity ConnectSalesforce Developers
 
Designing custom REST and SOAP interfaces on Force.com
Designing custom REST and SOAP interfaces on Force.comDesigning custom REST and SOAP interfaces on Force.com
Designing custom REST and SOAP interfaces on Force.comSteven Herod
 
Becoming a Salesforce.com Technical Architect
Becoming a Salesforce.com Technical ArchitectBecoming a Salesforce.com Technical Architect
Becoming a Salesforce.com Technical ArchitectSteven Herod
 
Secure Development on the Salesforce Platform - Part I
Secure Development on the Salesforce Platform - Part ISecure Development on the Salesforce Platform - Part I
Secure Development on the Salesforce Platform - Part ISalesforce Developers
 
Advanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social AuthenticationAdvanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social AuthenticationSalesforce Developers
 
"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad..."How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...Steven Herod
 
Secure Development on the Salesforce Platform - Part 2
Secure Development on the Salesforce Platform - Part 2Secure Development on the Salesforce Platform - Part 2
Secure Development on the Salesforce Platform - Part 2Salesforce Developers
 

Viewers also liked (19)

Force.com Canvas - a Quick Introduction
Force.com Canvas - a Quick IntroductionForce.com Canvas - a Quick Introduction
Force.com Canvas - a Quick Introduction
 
Authentication with OAuth and Connected Apps
Authentication with OAuth and Connected AppsAuthentication with OAuth and Connected Apps
Authentication with OAuth and Connected Apps
 
Force.com Canvas: Salesforce1, SAML, & Apex...Oh My!
Force.com Canvas: Salesforce1, SAML, & Apex...Oh My!Force.com Canvas: Salesforce1, SAML, & Apex...Oh My!
Force.com Canvas: Salesforce1, SAML, & Apex...Oh My!
 
Secure Connectivity to your Salesforce Applications
Secure Connectivity to your Salesforce ApplicationsSecure Connectivity to your Salesforce Applications
Secure Connectivity to your Salesforce Applications
 
Salesforce Developer Garage Seattle: Force.com Canvas
Salesforce Developer Garage Seattle: Force.com CanvasSalesforce Developer Garage Seattle: Force.com Canvas
Salesforce Developer Garage Seattle: Force.com Canvas
 
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas sparkSalesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
 
force.com Canvas Overview: Leveraging Legacy Applications to Become a Custome...
force.com Canvas Overview: Leveraging Legacy Applications to Become a Custome...force.com Canvas Overview: Leveraging Legacy Applications to Become a Custome...
force.com Canvas Overview: Leveraging Legacy Applications to Become a Custome...
 
Dive Deep into Apex: Advanced Apex!
Dive Deep into Apex: Advanced Apex! Dive Deep into Apex: Advanced Apex!
Dive Deep into Apex: Advanced Apex!
 
O auth, sso, saml, canvas app zhugin(final)
O auth, sso, saml, canvas app   zhugin(final)O auth, sso, saml, canvas app   zhugin(final)
O auth, sso, saml, canvas app zhugin(final)
 
Trust Me, I'm An Architect
Trust Me, I'm An ArchitectTrust Me, I'm An Architect
Trust Me, I'm An Architect
 
CIS14: OAuth and OpenID Connect in Action
CIS14: OAuth and OpenID Connect in ActionCIS14: OAuth and OpenID Connect in Action
CIS14: OAuth and OpenID Connect in Action
 
Integrating Active Directory With Salesforce Using Identity Connect
Integrating Active Directory With Salesforce Using Identity ConnectIntegrating Active Directory With Salesforce Using Identity Connect
Integrating Active Directory With Salesforce Using Identity Connect
 
Designing custom REST and SOAP interfaces on Force.com
Designing custom REST and SOAP interfaces on Force.comDesigning custom REST and SOAP interfaces on Force.com
Designing custom REST and SOAP interfaces on Force.com
 
Becoming a Salesforce.com Technical Architect
Becoming a Salesforce.com Technical ArchitectBecoming a Salesforce.com Technical Architect
Becoming a Salesforce.com Technical Architect
 
Secure Development on the Salesforce Platform - Part I
Secure Development on the Salesforce Platform - Part ISecure Development on the Salesforce Platform - Part I
Secure Development on the Salesforce Platform - Part I
 
Advanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social AuthenticationAdvanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social Authentication
 
"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad..."How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...
 
Secure Development on the Salesforce Platform - Part 2
Secure Development on the Salesforce Platform - Part 2Secure Development on the Salesforce Platform - Part 2
Secure Development on the Salesforce Platform - Part 2
 
AWSome Day Intro
AWSome Day IntroAWSome Day Intro
AWSome Day Intro
 

Similar to Making External Web Pages Interact With Visualforce

Spring '14 Release Developer Preview Webinar
Spring '14 Release Developer Preview WebinarSpring '14 Release Developer Preview Webinar
Spring '14 Release Developer Preview WebinarSalesforce Developers
 
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
 
Visualforce Hack for Junction Objects
Visualforce Hack for Junction ObjectsVisualforce Hack for Junction Objects
Visualforce Hack for Junction ObjectsRitesh Aswaney
 
Look Ma, No Apex: Mobile Apps with RemoteObject and Mobile SDK
Look Ma, No Apex: Mobile Apps with RemoteObject and Mobile SDKLook Ma, No Apex: Mobile Apps with RemoteObject and Mobile SDK
Look Ma, No Apex: Mobile Apps with RemoteObject and Mobile SDKSalesforce Developers
 
Salesforce.com API Series: Service Cloud Console Deep Dive
Salesforce.com API Series: Service Cloud Console Deep DiveSalesforce.com API Series: Service Cloud Console Deep Dive
Salesforce.com API Series: Service Cloud Console Deep DiveSalesforce Developers
 
Visualforce: Using ActionFunction vs. RemoteAction
Visualforce: Using ActionFunction vs. RemoteActionVisualforce: Using ActionFunction vs. RemoteAction
Visualforce: Using ActionFunction vs. RemoteActionSalesforce Developers
 
Get ready for your platform developer i certification webinar
Get ready for your platform developer i certification   webinarGet ready for your platform developer i certification   webinar
Get ready for your platform developer i certification webinarJackGuo20
 
Lightning Web Components - A new era, René Winkelmeyer
Lightning Web Components - A new era, René WinkelmeyerLightning Web Components - A new era, René Winkelmeyer
Lightning Web Components - A new era, René WinkelmeyerCzechDreamin
 
Building Visualforce Custom Events Handlers
Building Visualforce Custom Events HandlersBuilding Visualforce Custom Events Handlers
Building Visualforce Custom Events HandlersSalesforce Developers
 
Salesforce API: Salesforce Console Deep Dive
Salesforce API: Salesforce Console Deep DiveSalesforce API: Salesforce Console Deep Dive
Salesforce API: Salesforce Console Deep DiveSalesforce Developers
 
JavaScript Integration with Visualforce
JavaScript Integration with VisualforceJavaScript Integration with Visualforce
JavaScript Integration with VisualforceSalesforce Developers
 
Asynchronous Apex Salesforce World Tour Paris 2015
Asynchronous Apex Salesforce World Tour Paris 2015Asynchronous Apex Salesforce World Tour Paris 2015
Asynchronous Apex Salesforce World Tour Paris 2015Samuel De Rycke
 
Staying Ahead of the Curve with Lightning - Snowforce16 Keynote
Staying Ahead of the Curve with Lightning - Snowforce16 KeynoteStaying Ahead of the Curve with Lightning - Snowforce16 Keynote
Staying Ahead of the Curve with Lightning - Snowforce16 KeynoteSalesforce Admins
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummiesdreamforce2006
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummiesdreamforce2006
 
All Aboard the Lightning Components Action Service
All Aboard the Lightning Components Action ServiceAll Aboard the Lightning Components Action Service
All Aboard the Lightning Components Action ServicePeter Chittum
 

Similar to Making External Web Pages Interact With Visualforce (20)

Spring '14 Release Developer Preview Webinar
Spring '14 Release Developer Preview WebinarSpring '14 Release Developer Preview Webinar
Spring '14 Release Developer Preview Webinar
 
Force.com Friday : Intro to Apex
Force.com Friday : Intro to Apex Force.com Friday : Intro to Apex
Force.com Friday : Intro to Apex
 
Introduction to Apex for Developers
Introduction to Apex for DevelopersIntroduction to Apex for Developers
Introduction to Apex for Developers
 
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
 
Visualforce Hack for Junction Objects
Visualforce Hack for Junction ObjectsVisualforce Hack for Junction Objects
Visualforce Hack for Junction Objects
 
Look Ma, No Apex: Mobile Apps with RemoteObject and Mobile SDK
Look Ma, No Apex: Mobile Apps with RemoteObject and Mobile SDKLook Ma, No Apex: Mobile Apps with RemoteObject and Mobile SDK
Look Ma, No Apex: Mobile Apps with RemoteObject and Mobile SDK
 
Salesforce.com API Series: Service Cloud Console Deep Dive
Salesforce.com API Series: Service Cloud Console Deep DiveSalesforce.com API Series: Service Cloud Console Deep Dive
Salesforce.com API Series: Service Cloud Console Deep Dive
 
Visualforce: Using ActionFunction vs. RemoteAction
Visualforce: Using ActionFunction vs. RemoteActionVisualforce: Using ActionFunction vs. RemoteAction
Visualforce: Using ActionFunction vs. RemoteAction
 
Get ready for your platform developer i certification webinar
Get ready for your platform developer i certification   webinarGet ready for your platform developer i certification   webinar
Get ready for your platform developer i certification webinar
 
Lightning Web Components - A new era, René Winkelmeyer
Lightning Web Components - A new era, René WinkelmeyerLightning Web Components - A new era, René Winkelmeyer
Lightning Web Components - A new era, René Winkelmeyer
 
Intro to Apex Programmers
Intro to Apex ProgrammersIntro to Apex Programmers
Intro to Apex Programmers
 
Salesforce Lightning workshop
Salesforce Lightning workshopSalesforce Lightning workshop
Salesforce Lightning workshop
 
Building Visualforce Custom Events Handlers
Building Visualforce Custom Events HandlersBuilding Visualforce Custom Events Handlers
Building Visualforce Custom Events Handlers
 
Salesforce API: Salesforce Console Deep Dive
Salesforce API: Salesforce Console Deep DiveSalesforce API: Salesforce Console Deep Dive
Salesforce API: Salesforce Console Deep Dive
 
JavaScript Integration with Visualforce
JavaScript Integration with VisualforceJavaScript Integration with Visualforce
JavaScript Integration with Visualforce
 
Asynchronous Apex Salesforce World Tour Paris 2015
Asynchronous Apex Salesforce World Tour Paris 2015Asynchronous Apex Salesforce World Tour Paris 2015
Asynchronous Apex Salesforce World Tour Paris 2015
 
Staying Ahead of the Curve with Lightning - Snowforce16 Keynote
Staying Ahead of the Curve with Lightning - Snowforce16 KeynoteStaying Ahead of the Curve with Lightning - Snowforce16 Keynote
Staying Ahead of the Curve with Lightning - Snowforce16 Keynote
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummies
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummies
 
All Aboard the Lightning Components Action Service
All Aboard the Lightning Components Action ServiceAll Aboard the Lightning Components Action Service
All Aboard the Lightning Components Action Service
 

More from Salesforce Developers

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSalesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceSalesforce Developers
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base ComponentsSalesforce Developers
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsSalesforce Developers
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaSalesforce Developers
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentSalesforce Developers
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsSalesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsSalesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsSalesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and TestingSalesforce Developers
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPSalesforce Developers
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceSalesforce Developers
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureSalesforce Developers
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DXSalesforce Developers
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectSalesforce Developers
 
Modern App Dev: Modular Development Strategies
Modern App Dev: Modular Development StrategiesModern App Dev: Modular Development Strategies
Modern App Dev: Modular Development StrategiesSalesforce Developers
 

More from Salesforce Developers (20)

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component Performance
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base Components
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX India
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local Development
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web Components
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCP
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in Salesforce
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data Capture
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
 
Introduction to MuleSoft
Introduction to MuleSoftIntroduction to MuleSoft
Introduction to MuleSoft
 
Modern App Dev: Modular Development Strategies
Modern App Dev: Modular Development StrategiesModern App Dev: Modular Development Strategies
Modern App Dev: Modular Development Strategies
 
Dreamforce Developer Recap
Dreamforce Developer RecapDreamforce Developer Recap
Dreamforce Developer Recap
 

Recently uploaded

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 

Recently uploaded (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 

Making External Web Pages Interact With Visualforce

  • 1. Client-Side Integration with Visualforce Pages Interacting with Visualforce via JavaScript Nathan Lipke, salesforce.com, Lead Member of Technical Staff, @EvilN8 Mike Tetlow, Bracket Labs, Lead Developer, @Mikename
  • 2. Safe Harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  • 3. Nathan Lipke Lead Member of Technical Staff @EvilN8
  • 5. Your Intranet/Portal Most companies have corporate portals. ▪ Often not integrated with Salesforce
  • 6. Unintegrated Pages Cause Pain ▪ Copy and pasting ▪ Refreshing ▪ We expect interactive web pages • Multiple tabs/windows do not interact with one another.
  • 7. Integration Is Traditionally Server-side Currently integration with Salesforce is server-side: ▪ Java, .NET, Ruby, … ▪ Connect via Salesforce APIs
  • 8. Client-Side Integration ▪ HTML5/JavaScript is the Web Standard programming language ▪ More interactive/responsive ▪ JavaScript & Apex integrate
  • 9. Bracket Labs & TaskRay Project Management
  • 10. Use-Cases ▪ Real-time dashboard • Task/Project status ▪ Create/Update Objects • Create a new task ▪ Drilldown • Click on graph highlights tasks ▪ Custom • Create a new task that’s already been started
  • 11. Steps 1. Open a new window in JavaScript 2. Login 3. Communicate 4. Call Controller
  • 12. Open A New Window In your parent window call JavaScript to open VF Page. ▪ open() Must be in an onclick handler to avoid popup-blockers. ▪ Save the returned window for sending message childWin = window.open( ‘https://c.na15.visual.force.com/apex/trprojectboard’, ‘childWin’, ‘status=0,toolbar=0,menubar=0,resizable=0, scrollbars=0,top=400,left=0,height=300,width=1280’)
  • 13. Login ▪ Standard login ▪ SSO (SAML) ▪ OAuth
  • 14. Security: Salesforce ▪ Standard Salesforce security works: • Users cannot do anything they can’t normally do – Profiles, Perm Sets, Sharing, Ownership, … • Use with sharing in your Apex classes ▪ SAML • Is the same user logged into your intranet site ▪ Oauth • Limit Scope • Use with remote action calls and REST calls • Revocable
  • 15. Communicating: Web Messaging ▪ Use-Cases: • Create/Update Objects • Drill-down • Dashboards ▪ Allows JavaScript messaging between windows ▪ Works regardless of domains ▪ Need a handle to the window • External page: return from window.open() • Visualforce: Use window.opener ▪ Can be called with or without user interaction
  • 16. Code: Sending a message (External Page) function createTask(name) { childWin.postMessage( { //message name : ‘createTask’, payload : { Name : ‘New Task’, TASKRAY__project__c : ‘a02G0000006WoYw’ } }, ‘https://c.na15.visual.force.com’ //target origin ); }
  • 17. Code: Receiving messages (Visualforce) //Start listening window.addEventListener("message", receiveMessage, false); function receiveMessage(event) { if (event.origin !== ‘https://nlipke-test1.herokuapp.com’) return; //ignore it if (event.data.name === ‘newTask’) newTask(event.data.payload.name, event.data.payload.project); }
  • 18. Security: Messaging ▪ Know who is messaging you and who you’re messaging • Use My Domain • Check event.origin in handlers • Don’t use ‘*’ for the origin in postMessage() ▪ Validate messages • Validate all fields • Signed Messages ▪ Warning: Messages can be sent from Developer Tools! ▪ Use server-side integration as needed
  • 19. Communicating: Drag and drop ▪ Use-Case: • Specialized Actions – Create – Update – Drilldown ▪ Comes from an user gesture ▪ dragstart event: sets the data • Data must be text (can be JSON) ▪ drop event: get the data
  • 20. Code: Drag and Drop (External Page) el.setAttribute('draggable', 'true'); el.addEventListener('dragstart', function (e) { e.dataTransfer.effectAllowed = ’all'; e.dataTransfer.setData('Task', JSON.stringify(getTask())); });
  • 21. Code: Drag and Drop (Visualforce) el.addEventListener('drop', function(e) { if (e.stopPropagation) e.stopPropagation(); createTask(JSON.parse(e.dataTransfer.getData('Task'))); el.style.background="gray"; }); el.addEventListener('dragover', function(e) { if (e.preventDefault) e.preventDefault(); // allows us to drop el.style.background="red"; });
  • 22. Code: Drag and Drop (Visualfoce cont.) el.addEventListener('dragenter', function(e) { el.style.background="red"; }); el.addEventListener('dragleave', function(e) { el.style.background="gray"; });
  • 23. Security: Drag and Drop ▪ Drag and drop does not provide an origin • Can be from any browser window – Even a different browser (e.g. Firefox->Chrome) • Can be from a non-browser application – File system – Other apps ▪ Verify drop data via messaging • Proves the origin
  • 24. Calling your Apex Controller There a two ways to call Apex from JavaScript ▪ <apex:actionFunction> tag • No parameters in Apex function – Members field or setter may be bound to JavaScript arguments • Allows rerender targets • Can call non-static controller methods ▪ Remote Actions • Parameters • Only static controller methods • Has asynchronous JavaScript callback (may call ActionFunction to rerender)
  • 25. Code: Action Function (Visualforce) Apex: public PageReference draw() { recalculateData(); return null; } Visualforce: <apex:actionFunction name=”draw" action="{!draw}" rerender=“node”/> JavaScript: draw();
  • 26. Code: Remote Action Apex (Visualforce) Apex: public class MyController with sharing { @RemoteAction public static String newTask(TASKRAY__Project_Task__c task) { insert task; return task.id; } }
  • 27. Code: Remote Action JavaScript (Visualforce) JavaScript: MyController.createTask( {Name : name, TASKRAY__Project__c : projectId}, function (result, event) { if (event.status) { taskId = result; draw(); //Call the Action Function } });
  • 28. Demo
  • 29. Requirements ▪ Perms • Must be able to author Visualforce and Apex (Author Apex perm) ▪ Browsers: • Something written this decade – IE 8+
  • 30. Summary ▪ Client-Side integration with Visualforce is a powerful tool • Provides a rich user experience ▪ HTML5 makes it possible • Web Messaging is your general purpose communication tool • Drag and drop for special use-cases ▪ Steps 1. Open 2. Login 3. Communicate 4. Call Controller
  • 31. Other Sessions: ▪ Partner User Groups: Practical Tips and Tricks for Bootstrapping Your Business • Blakely Graham & Eric Wu: Monday 3:00-3:30 ▪ Compelling User Interfaces with Visualforce and Bootstrap • Mike: Tuesday 1:00-1:30 ▪ Real-Time Data Feeds Using the Streaming API • Mike: Wednesday 9:00-9:45
  • 32. Q&A: Why The Awesome Mustache ▪ 1/1/1 Model • 1% of shares • 1% of employee time • 1% of product • All companies welcome to join 1/1/1 – Customers – Partners: Bracket Labs ▪ Movember Party • Wednesday 2:00-4:00: The Plaza
  • 33. Nathan Lipke Lead Member of Technical Staff, @EvilN8 Mike Tetlow Lead Developer, @Mikename
  • 34. All About Bracket Labs Award-winning AppExchange ISV Partner selling productivity apps. 100% native architecture, focus on usability and simplicity. Founded 2010, Boulder CO ▪ Campaign Calendar – Top 10 app in Marketing category ▪ TaskRay – Top app in Project Management and Collaboration categories ▪ MyDay – Launched Dreamforce 2013 ▪ Notable customers include GE, NBCUniversal, Kelly Services, Tata Communications, Forbes, Houghton Mifflin
  • 35. Links ▪ Window.open: https://developer.mozilla.org/enUS/docs/Web/API/window.open ▪ Web Messaging: https://developer.mozilla.org/enUS/docs/Web/API/window.postMessage ▪ Drag and Drop: https://developer.mozilla.org/enUS/docs/DragDrop/Drag_and_Drop
  • 36. Links ▪ SSO (SAML): http://help.salesforce. com/help/pdfs/en/salesforce_single_sign_on.pdf ▪ Oauth: https://help.salesforce.com/apex/HTViewHelpDoc? id=remoteaccess_authenticate.htm&language=en
  • 37. Links ▪ Remote Actions: http://www.salesforce. com/us/developer/docs/pages/Content/pages_js_remoting.htm ▪ ActionFunction: http://www.salesforce. com/us/developer/docs/pages/Content/pages_compref_actionFunction. htm
  • 38. We want to hear from YOU! Please take a moment to complete our session survey Surveys can be found in the “My Agenda” portion of the Dreamforce app