SlideShare ist ein Scribd-Unternehmen logo
1 von 20
How to Tango with Salesforce &
jQueryMobile for HTML5 Goodness
By Joshua Hoskins | @jhoskins
Moscone Center West, DevZone Unconference C
All about Me

               Joshua Hoskins
               Technical Cloud Consultant at

                   Customer since 2006                 Twitter: @jhoskins
                   User Group Leader since 2009        Email: jhoskins@CRMified.com
                   Currently in Singapore
                                                        LinkedIn:
                   Process Engineering                  http://www.linkedin.com/in/jhoskins
                   Implementation/Solution Delivery    Blog: CRMified.com
                   Data & Integrations Architect
Agenda

 • Anatomy of a Visualforce Page
 • Exchanging Data with SFDC
 • Dynamically updating page content
 • Debug Javascript Errors
 • Gracefully Handle Apex Exceptions
Components

 • Static Resources
 • Visualforce
 • Apex
 • Javascript
 • CSS (LESS is more!)
Resources

 • jQuery Mobile - http://jquerymobile.com/
 • jQuery - http://jquery.com/
Page Anatomy

 • Add 'head', references to jQuery, jQuery Mobile and the
   mobile theme CSS are all required.
 • jQuery Mobile 1.1.1 and 1.7.1 versions of jQuery core.
 • Keep the jQuery libraries as static resources.
 • A Single Visualforce page will contain multiple mobile pages.
Page Anatomy
 <apex:page showHeader="false" docType="html-5.0" standardStylesheets="false" cache="true" controller="ISG_MainApp_Ctrl" >
 <html>
 <head>
           <title>Page Title</title>
           <link rel="stylesheet" href="{!URLFOR($Resource.IBC_jQueryMobile_min_1_2_0, 'jquery.mobile-1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.css')}" />
           <link href="http://fonts.googleapis.com/css?family=Cantarell&subset=latin" rel="stylesheet" type="text/css" />
           <apex:includeScript value="{!$Resource.IBC_jQuery_min_1_7_2}"/>
           <apex:includeScript value="{!URLFOR($Resource.IBC_jQueryMobile_min_1_2_0, 'jquery.mobile-1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.js')}"/>
           <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
           <meta http-equiv="expires" content="0"/>
           <meta name="viewport" content="width=device-width, initial-scale=1" />
           <meta name="apple-mobile-web-app-capable" content="yes" />
           <meta name="apple-mobile-web-app-status-bar-style" content="default" />
           <link rel="apple-touch-icon" sizes="72x72" href="{!URLFOR($Resource.IBC_Resources, 'ibc/img/Quadmark-logo-home.png')}" />
 </head>
 <body>
 ...page content goes here...
 </body>
 </html>
 </apex:page>
jQuery Mobile & Force.com

 • Initialize jQuery Mobile on the page
 • What is noConflict() on jQuery?

         <script>
               var $j = jQuery.noConflict();
               $j(document).ready(init);
               function init() {
                     // Initialization code goes here
               }
         </script>
Page Content and Transitions

 • DIV Containers are Mobile Pages
 • Page Transitions switch DIV show to user
 • Requests are done by Ajax by default
    • Form Submissions & Data Requests
    • Set tag rel="external" on the form tag for standard HTML submit
      action
 • For best user experience include all Mobile Pages in One
   Visualforce Page
Page Content and Transitions
 <div id="splash-page" data-role="page" data-theme="a" data-position="fixed">
   <div data-role="header" data-position="fixed">
               <h1>Initiating Business Conversations</h1>
   </div>
   <!-- /header -->
   <div data-role="content" align="center”>
      ..... page content, input components etc. goes here
  </div>


 Example:
 <a href="#close-conversation-page" data-role="button" data-icon="check" data-transition="slideup">Close</a>
@RemoteAction with
Apex
Javascript in Visualforce
Javascript Objects
Handling Apex
Exceptions
Updating Page Content
Dynamically
Debugging
Lessons Learned

 • Coding can be Tedious
 • Apex vs. Javascript 50/50
 • Create Branches for Dev & QA
 • 1 Controller, 1 VF Page
 • Less Custom CSS
Joshua Hoskins
    Speaker
Appirio Helps Enterprises Power Their Business with
                    Public Cloud Solutions

                                   Helping Enterprises Become:

                             Efficient            Effective            Agile
                                         Social               Mobile




                     Technology-enabled professional services, supported by
                   500 cloud experts and a 50,000+ cloud developer community
                      5 years, 300 enterprises, 1.5M users moved to the cloud




19
How to Tango with Salesforce & jQueryMobile for HTML5 Goodness

Weitere ähnliche Inhalte

Was ist angesagt?

Taking Advantage of the SharePoint 2013 REST API
Taking Advantage of the SharePoint 2013 REST APITaking Advantage of the SharePoint 2013 REST API
Taking Advantage of the SharePoint 2013 REST API
Eric Shupps
 

Was ist angesagt? (20)

Build Secure Cloud-Hosted Apps for SharePoint 2013
Build Secure Cloud-Hosted Apps for SharePoint 2013Build Secure Cloud-Hosted Apps for SharePoint 2013
Build Secure Cloud-Hosted Apps for SharePoint 2013
 
Workshop supermodel munich
Workshop supermodel munichWorkshop supermodel munich
Workshop supermodel munich
 
SharePoint REST vs CSOM
SharePoint REST vs CSOMSharePoint REST vs CSOM
SharePoint REST vs CSOM
 
Designing for SharePoint Provider Hosted Apps
Designing for SharePoint Provider Hosted AppsDesigning for SharePoint Provider Hosted Apps
Designing for SharePoint Provider Hosted Apps
 
jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5
 
Build and Deploy Provider-hosted SharePoint Add-ins
Build and Deploy Provider-hosted SharePoint Add-insBuild and Deploy Provider-hosted SharePoint Add-ins
Build and Deploy Provider-hosted SharePoint Add-ins
 
The SharePoint & jQuery Guide - Updated 1/14/14
The SharePoint & jQuery Guide - Updated 1/14/14The SharePoint & jQuery Guide - Updated 1/14/14
The SharePoint & jQuery Guide - Updated 1/14/14
 
Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap Advanced JQuery Mobile tutorial with Phonegap
Advanced JQuery Mobile tutorial with Phonegap
 
jQuery Mobile with HTML5
jQuery Mobile with HTML5jQuery Mobile with HTML5
jQuery Mobile with HTML5
 
Building i pad apps in pure java with vaadin
Building i pad apps in pure java with vaadinBuilding i pad apps in pure java with vaadin
Building i pad apps in pure java with vaadin
 
Get started with building native mobile apps interacting with SharePoint
Get started with building native mobile apps interacting with SharePointGet started with building native mobile apps interacting with SharePoint
Get started with building native mobile apps interacting with SharePoint
 
Taking Advantage of the SharePoint 2013 REST API
Taking Advantage of the SharePoint 2013 REST APITaking Advantage of the SharePoint 2013 REST API
Taking Advantage of the SharePoint 2013 REST API
 
Sq li
Sq liSq li
Sq li
 
Office 365 APIs for your Applications
Office 365 APIs for your ApplicationsOffice 365 APIs for your Applications
Office 365 APIs for your Applications
 
Course CodeSchool - Shaping up with Angular.js
Course CodeSchool - Shaping up with Angular.jsCourse CodeSchool - Shaping up with Angular.js
Course CodeSchool - Shaping up with Angular.js
 
SPTechCon Boston 2015 - Overcoming SharePoint Limitations
SPTechCon Boston 2015 - Overcoming SharePoint LimitationsSPTechCon Boston 2015 - Overcoming SharePoint Limitations
SPTechCon Boston 2015 - Overcoming SharePoint Limitations
 
SPSNH 2014 - The SharePoint & jQueryGuide
SPSNH 2014 - The SharePoint & jQueryGuideSPSNH 2014 - The SharePoint & jQueryGuide
SPSNH 2014 - The SharePoint & jQueryGuide
 
SPTechCon 2014 How to develop and debug client side code in SharePoint
SPTechCon 2014 How to develop and debug client side code in SharePointSPTechCon 2014 How to develop and debug client side code in SharePoint
SPTechCon 2014 How to develop and debug client side code in SharePoint
 
Deep dive into SharePoint 2013 hosted apps - Chris OBrien
Deep dive into SharePoint 2013 hosted apps - Chris OBrienDeep dive into SharePoint 2013 hosted apps - Chris OBrien
Deep dive into SharePoint 2013 hosted apps - Chris OBrien
 
Introduction to the SharePoint Client Object Model and REST API
Introduction to the SharePoint Client Object Model and REST APIIntroduction to the SharePoint Client Object Model and REST API
Introduction to the SharePoint Client Object Model and REST API
 

Ähnlich wie How to Tango with Salesforce & jQueryMobile for HTML5 Goodness

Resume latest Update
Resume latest UpdateResume latest Update
Resume latest Update
Vaibhav soni
 
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Gustaf Nilsson Kotte
 

Ähnlich wie How to Tango with Salesforce & jQueryMobile for HTML5 Goodness (20)

Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5
 
02 Building cross-platform mobile applications with jQuery Mobile / Desarroll...
02 Building cross-platform mobile applications with jQuery Mobile / Desarroll...02 Building cross-platform mobile applications with jQuery Mobile / Desarroll...
02 Building cross-platform mobile applications with jQuery Mobile / Desarroll...
 
Curtin University Frontend Web Development
Curtin University Frontend Web DevelopmentCurtin University Frontend Web Development
Curtin University Frontend Web Development
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
 
Challenges going mobile
Challenges going mobileChallenges going mobile
Challenges going mobile
 
Mobile ASP.Net Web Forms - Making the impossible possible | FalafelCON 2014
Mobile ASP.Net Web Forms - Making the impossible possible | FalafelCON 2014Mobile ASP.Net Web Forms - Making the impossible possible | FalafelCON 2014
Mobile ASP.Net Web Forms - Making the impossible possible | FalafelCON 2014
 
Resume latest Update
Resume latest UpdateResume latest Update
Resume latest Update
 
Bhavesh_Shukla_Resume
Bhavesh_Shukla_ResumeBhavesh_Shukla_Resume
Bhavesh_Shukla_Resume
 
Apex & jQuery Mobile
Apex & jQuery MobileApex & jQuery Mobile
Apex & jQuery Mobile
 
Mobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileMobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery Mobile
 
Cracking the Code of Managing The Chaos Of Everyday Project Management
Cracking the Code of Managing The Chaos Of Everyday Project ManagementCracking the Code of Managing The Chaos Of Everyday Project Management
Cracking the Code of Managing The Chaos Of Everyday Project Management
 
Web Development with HTML5, CSS3 & JavaScript
Web Development with HTML5, CSS3 & JavaScriptWeb Development with HTML5, CSS3 & JavaScript
Web Development with HTML5, CSS3 & JavaScript
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
 
Jquery mobile
Jquery mobileJquery mobile
Jquery mobile
 
Neha Bhandari CV
Neha Bhandari CVNeha Bhandari CV
Neha Bhandari CV
 
Mallesh Aruri
Mallesh AruriMallesh Aruri
Mallesh Aruri
 
Mobiloitte ! Enterprise Mobility Corporate Overview
Mobiloitte ! Enterprise Mobility Corporate OverviewMobiloitte ! Enterprise Mobility Corporate Overview
Mobiloitte ! Enterprise Mobility Corporate Overview
 
Introduction to using jQuery with SharePoint
Introduction to using jQuery with SharePointIntroduction to using jQuery with SharePoint
Introduction to using jQuery with SharePoint
 
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
 

Mehr von Joshua Hoskins

Innovation Made Easy #Salesforce1TourLOndon
Innovation Made Easy #Salesforce1TourLOndonInnovation Made Easy #Salesforce1TourLOndon
Innovation Made Easy #Salesforce1TourLOndon
Joshua Hoskins
 
London DUG 10/2013 - #CloudSpokes
London DUG 10/2013 - #CloudSpokesLondon DUG 10/2013 - #CloudSpokes
London DUG 10/2013 - #CloudSpokes
Joshua Hoskins
 
Me and My Career - About Me
Me and My Career - About MeMe and My Career - About Me
Me and My Career - About Me
Joshua Hoskins
 
#DF2UFL 2012 - Developer’s Den
#DF2UFL 2012 - Developer’s Den#DF2UFL 2012 - Developer’s Den
#DF2UFL 2012 - Developer’s Den
Joshua Hoskins
 
Orlando SFDC User Group 7/2011
Orlando SFDC User Group 7/2011Orlando SFDC User Group 7/2011
Orlando SFDC User Group 7/2011
Joshua Hoskins
 

Mehr von Joshua Hoskins (20)

The most important attributes of a World-class Remote Team
The most important attributes of a World-class Remote TeamThe most important attributes of a World-class Remote Team
The most important attributes of a World-class Remote Team
 
Original Blueprint & Recap for Community-led Salesforce Events
Original Blueprint & Recap for Community-led Salesforce EventsOriginal Blueprint & Recap for Community-led Salesforce Events
Original Blueprint & Recap for Community-led Salesforce Events
 
IdeaSpokes Community 2017 Recap
IdeaSpokes Community 2017 RecapIdeaSpokes Community 2017 Recap
IdeaSpokes Community 2017 Recap
 
Release Management: Managing Your Internal Releases
Release Management: Managing Your Internal ReleasesRelease Management: Managing Your Internal Releases
Release Management: Managing Your Internal Releases
 
Delivering Breakthrough Innovation via Appirio’s Crowdsourcing Platform
Delivering Breakthrough Innovation via Appirio’s Crowdsourcing PlatformDelivering Breakthrough Innovation via Appirio’s Crowdsourcing Platform
Delivering Breakthrough Innovation via Appirio’s Crowdsourcing Platform
 
Salary Negotiations, Knowing Your Worth and Not Settling for Less
Salary Negotiations, Knowing Your Worth and Not Settling for LessSalary Negotiations, Knowing Your Worth and Not Settling for Less
Salary Negotiations, Knowing Your Worth and Not Settling for Less
 
Innovation Made Easy #Salesforce1TourLOndon
Innovation Made Easy #Salesforce1TourLOndonInnovation Made Easy #Salesforce1TourLOndon
Innovation Made Easy #Salesforce1TourLOndon
 
Salesforce1 ELEVATE Workshop - Dublin
Salesforce1 ELEVATE Workshop - DublinSalesforce1 ELEVATE Workshop - Dublin
Salesforce1 ELEVATE Workshop - Dublin
 
[Topcoder] for Developers - Dublin Salesforce User Group
[Topcoder] for Developers - Dublin Salesforce User Group[Topcoder] for Developers - Dublin Salesforce User Group
[Topcoder] for Developers - Dublin Salesforce User Group
 
Deploying Web Chat & Voice Channels With Live Agent & CTI Integration
Deploying Web Chat & Voice Channels With Live Agent & CTI IntegrationDeploying Web Chat & Voice Channels With Live Agent & CTI Integration
Deploying Web Chat & Voice Channels With Live Agent & CTI Integration
 
Salesforce Integration
Salesforce IntegrationSalesforce Integration
Salesforce Integration
 
The Ideal Salesforce Development Lifecycle
The Ideal Salesforce Development LifecycleThe Ideal Salesforce Development Lifecycle
The Ideal Salesforce Development Lifecycle
 
London DUG 10/2013 - #CloudSpokes
London DUG 10/2013 - #CloudSpokesLondon DUG 10/2013 - #CloudSpokes
London DUG 10/2013 - #CloudSpokes
 
Salesforce Marketing 101 for Non-Profits
Salesforce Marketing 101 for Non-Profits Salesforce Marketing 101 for Non-Profits
Salesforce Marketing 101 for Non-Profits
 
Singapore User Group 10/2012
Singapore User Group 10/2012Singapore User Group 10/2012
Singapore User Group 10/2012
 
Tools of a Successful Force.com Developer
Tools of a Successful Force.com DeveloperTools of a Successful Force.com Developer
Tools of a Successful Force.com Developer
 
Me and My Career - About Me
Me and My Career - About MeMe and My Career - About Me
Me and My Career - About Me
 
#DF2UFL 2012 - Developer’s Den
#DF2UFL 2012 - Developer’s Den#DF2UFL 2012 - Developer’s Den
#DF2UFL 2012 - Developer’s Den
 
Singapore Non Profit SFDC User Group 8/2012
Singapore Non Profit SFDC User Group 8/2012Singapore Non Profit SFDC User Group 8/2012
Singapore Non Profit SFDC User Group 8/2012
 
Orlando SFDC User Group 7/2011
Orlando SFDC User Group 7/2011Orlando SFDC User Group 7/2011
Orlando SFDC User Group 7/2011
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

How to Tango with Salesforce & jQueryMobile for HTML5 Goodness

  • 1. How to Tango with Salesforce & jQueryMobile for HTML5 Goodness By Joshua Hoskins | @jhoskins Moscone Center West, DevZone Unconference C
  • 2. All about Me Joshua Hoskins Technical Cloud Consultant at  Customer since 2006  Twitter: @jhoskins  User Group Leader since 2009  Email: jhoskins@CRMified.com  Currently in Singapore  LinkedIn:  Process Engineering http://www.linkedin.com/in/jhoskins  Implementation/Solution Delivery  Blog: CRMified.com  Data & Integrations Architect
  • 3. Agenda • Anatomy of a Visualforce Page • Exchanging Data with SFDC • Dynamically updating page content • Debug Javascript Errors • Gracefully Handle Apex Exceptions
  • 4. Components • Static Resources • Visualforce • Apex • Javascript • CSS (LESS is more!)
  • 5. Resources • jQuery Mobile - http://jquerymobile.com/ • jQuery - http://jquery.com/
  • 6. Page Anatomy • Add 'head', references to jQuery, jQuery Mobile and the mobile theme CSS are all required. • jQuery Mobile 1.1.1 and 1.7.1 versions of jQuery core. • Keep the jQuery libraries as static resources. • A Single Visualforce page will contain multiple mobile pages.
  • 7. Page Anatomy <apex:page showHeader="false" docType="html-5.0" standardStylesheets="false" cache="true" controller="ISG_MainApp_Ctrl" > <html> <head> <title>Page Title</title> <link rel="stylesheet" href="{!URLFOR($Resource.IBC_jQueryMobile_min_1_2_0, 'jquery.mobile-1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.css')}" /> <link href="http://fonts.googleapis.com/css?family=Cantarell&subset=latin" rel="stylesheet" type="text/css" /> <apex:includeScript value="{!$Resource.IBC_jQuery_min_1_7_2}"/> <apex:includeScript value="{!URLFOR($Resource.IBC_jQueryMobile_min_1_2_0, 'jquery.mobile-1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.js')}"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="expires" content="0"/> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="default" /> <link rel="apple-touch-icon" sizes="72x72" href="{!URLFOR($Resource.IBC_Resources, 'ibc/img/Quadmark-logo-home.png')}" /> </head> <body> ...page content goes here... </body> </html> </apex:page>
  • 8. jQuery Mobile & Force.com • Initialize jQuery Mobile on the page • What is noConflict() on jQuery? <script> var $j = jQuery.noConflict(); $j(document).ready(init); function init() { // Initialization code goes here } </script>
  • 9. Page Content and Transitions • DIV Containers are Mobile Pages • Page Transitions switch DIV show to user • Requests are done by Ajax by default • Form Submissions & Data Requests • Set tag rel="external" on the form tag for standard HTML submit action • For best user experience include all Mobile Pages in One Visualforce Page
  • 10. Page Content and Transitions <div id="splash-page" data-role="page" data-theme="a" data-position="fixed"> <div data-role="header" data-position="fixed"> <h1>Initiating Business Conversations</h1> </div> <!-- /header --> <div data-role="content" align="center”> ..... page content, input components etc. goes here </div> Example: <a href="#close-conversation-page" data-role="button" data-icon="check" data-transition="slideup">Close</a>
  • 17. Lessons Learned • Coding can be Tedious • Apex vs. Javascript 50/50 • Create Branches for Dev & QA • 1 Controller, 1 VF Page • Less Custom CSS
  • 18. Joshua Hoskins Speaker
  • 19. Appirio Helps Enterprises Power Their Business with Public Cloud Solutions Helping Enterprises Become: Efficient Effective Agile Social Mobile Technology-enabled professional services, supported by 500 cloud experts and a 50,000+ cloud developer community 5 years, 300 enterprises, 1.5M users moved to the cloud 19

Hinweis der Redaktion

  1. Customer since 2006 User Group Leader since 2009 Currently in Singapore Companies I’ve worked for are listed.
  2. Many libraries including SF own make use of $ as function or variable name call noConflict method to prevent conflict with other libraries
  3. Single page serves as container for multiple mobile pages represented as div elements. Number of different page transitions are available typically jQuery simply switches div that is visible on mobile device to show a new page. Requests are done as ajax by default, things such as form submit for example The standard form submit or use of apex:form tag is possible only by turning OFF default ajax processing for the page segment (set tag rel=&quot;external&quot; on the form tag for standard HTML submit action) For best user experience and application performance it is best to have all pages in same HTML Open IDE
  4. Call remote Controller methods from jQuery, JavaScript Visual Force with Winter 12&apos; release introduced remote methods. Simple annotation @RemoteAction makes any controller method remote and can be called from page JavaScript can pass methods parameters as primitive types, sObjects and collections of primitives and sObjects Controller methods must be global static to be remote NOTE: Documentation states global or public but public methods do not work NOT visible some bug in APEX or VFP
  5. Call remote Controller methods from jQuery, JavaScript Visual Force with Winter 12&apos; release introduced remote methods. Simple annotation @RemoteAction makes any controller method remote and can be called from page JavaScript can pass methods parameters as primitive types, sObjects and collections of primitives and sObjects Controller methods must be global static to be remote NOTE: Documentation states global or public but public methods do not work NOT visible some bug in APEX or VFP
  6. Call remote Controller methods from jQuery, JavaScript Visual Force with Winter 12&apos; release introduced remote methods. Simple annotation @RemoteAction makes any controller method remote and can be called from page JavaScript can pass methods parameters as primitive types, sObjects and collections of primitives and sObjects Controller methods must be global static to be remote NOTE: Documentation states global or public but public methods do not work NOT visible some bug in APEX or VFP
  7. Call remote Controller methods from jQuery, JavaScript Visual Force with Winter 12&apos; release introduced remote methods. Simple annotation @RemoteAction makes any controller method remote and can be called from page JavaScript can pass methods parameters as primitive types, sObjects and collections of primitives and sObjects Controller methods must be global static to be remote NOTE: Documentation states global or public but public methods do not work NOT visible some bug in APEX or VFP
  8. Call remote Controller methods from jQuery, JavaScript Visual Force with Winter 12&apos; release introduced remote methods. Simple annotation @RemoteAction makes any controller method remote and can be called from page JavaScript can pass methods parameters as primitive types, sObjects and collections of primitives and sObjects Controller methods must be global static to be remote NOTE: Documentation states global or public but public methods do not work NOT visible some bug in APEX or VFP
  9. Call remote Controller methods from jQuery, JavaScript Visual Force with Winter 12&apos; release introduced remote methods. Simple annotation @RemoteAction makes any controller method remote and can be called from page JavaScript can pass methods parameters as primitive types, sObjects and collections of primitives and sObjects Controller methods must be global static to be remote NOTE: Documentation states global or public but public methods do not work NOT visible some bug in APEX or VFP
  10. Appirio helps enterprises power their business with cloud solutions like Salesforce, Google, Workday and Amazon By adopting, connecting and extending these and other cloud platforms, we can help customers to become more efficient, agile and effective than ever before We do this with professional services that are delivered by our 500+ cloud experts and supported by a 40,000 person developer community and unique technology built from over 1000 projects We ’ve been in business for 5 years, have worked with 300 enterprises and have moved more than 1.5M users to the public cloud We ’ve been privileged to work with many of the world’s largest and most forward thinking companies – Genentech, Dell, Home Depot, DeVry, PayPal, Facebook, Japan Post and many more