SlideShare a Scribd company logo
1 of 21
Building
iPhone Web Apps
      using
"classic" Domino
     Rob Bontekoe
AppliGate's Working Area
● Since 1994 Domino courses
● Since 2009 XPages courses
and since 2011...
● GAE Restful web apps
● GAE Servlet + JSP
  ○ Mobile Web 2.0 Apps
     ■ HTML5 + JavaScript +
        jQuery + jqTouch
    ■   Also possible with "classic" Domino
Agenda iPhone Web Apps
● Demo application
● Required knowledge
  ○ Structure of a mobile web app
  ○ Initializing the app
  ○ Registering event handlers
  ○ Communication with servers using AJAX
● Using "classic" Domino
  ○ Design
  ○ <head> tag
  ○ <body> tag
● Summary and references
Demo
A smartphone web app to register school kids
for a course after school time:
● Overview courses
● Registration form
● Photo album with Picasa links
● Video album with YouTube links
● About
Structure of a Web App
                                                          <!-- e.g. jQTouch css classes -->
<html>                                                    <ul class="rounded">
<head><!-- .js and .css files --></head>                  <li class="arrow">
<body>                                                    <a class="flip" href="#infoCursussen">
                                           Page Header
                                                          <img src="pens.png" />
<div id="home" class="current">                           Welke cursus?
<div class="toolbar"><h1>Kinderopvang</h1></div>          </a>
<!-- Page Body e.g. navigation links -->                  </li>
</div>                                                    </ul>

<div id="infoCursussen">
<div class="toolbar">
<h1>Info cursussen</h1><a class="back" href="#">Back</a></div>
<!-- Content and/or Links -->
</div>

</body>                                     JavaScript frameworks, here jQTouch,
</html>                                     takes care of displaying one <div>-section
                                            (= page) at a time
JavaScript Frameworks
● XPages app with Mobile controls
● jQTouch
jQuery plugin
● Etc.
Initializing App
// In sb.js, application specific JavaScript library
var jQT = $.jQTouch( {
      icon: "icon.png", // 32 x 32 px
      startupScreen: "startup.jpg", // 320 x 460 px
      statusBar : "black",
      fixedViewPort : true
});

// check kind of browser
var userAgent = navigator.userAgent.toLowerCase();
var isiPhone = (userAgent.indexOf('iphone') != -1
|| userAgent.indexOf('ipod') != -1 || userAgent.indexOf('ipad') != -1) ? true :
false;
var clickEvent = isiPhone ? 'tap' : 'click';
Register an Event Handler
       the function will be invoked when the document has been
       loaded and the DOM is ready to be manipulated.

$( function() {     id used in button on HTML page
      $("#aanmeldButton").bind(clickEvent, function(e) {
          // get selected course                html tag reference
          var selectedCourse = $("input:radio[name=course]:checked").val();
          // set hidden field #course on #aanmelden form
          $("#course").val(selectedCourse);
          // add HTML to paragraph #myText on #aanmelden form
          $("#myText").html("<i>Aanmelding voor:</i><br />" + selectedCourse);
          // goto #aanmelden form
          jQT.goTo($("#aanmelden"));
      });
});
// $("#element_id") similair to getElementById("element_id")
Communication with Server
function saveData() {
    // serialize form data
    var dataRegistrationForm = $("#aanmelden").serialize();
    // AJAX get call
    $.get("(thankyou)?openagent",
         dataRegistrationForm,
                                                   Callback function.
         function(data) {                          Domino agent
                                                   returns a string.
             $("#message").prepend(data);          Variable "data"
             jQT.goTo("#confirm");                 refers to this
         },                                        (HTML) string.

         "html"
    );
}
Multiple Elements with Same ID
<a id="showImage" href="#" path="" link="1.jpg,2.jpg "
pictureTitle="Striptekenschool" caption="Gerben,Rob">
<img src="cover.jpg" height="200" class="pic"></img>
</a>

// Attach handler to one/more events for all elements that match #showImage
var gallery, captions;
$(document).delegate(
      "#showImage",
      clickEvent,
      function() {           // remove old gallery
                             // build photo array
           // code           // build captions array
      }                      // create dynamically <div> section for gallery
                             // show <div> section
);
Call Back Function
function() {
    if (gallery != null) {gallery.remove()}
    var photoArray = $(this).attr("link").split(",");
    var photoObjectArray = new Array();
    var captionArray = $(this).attr("caption").split(",");
          for (i = 0; i < photoArray.length; i++) {
                photoObjectArray[i] = {src : "" + $(this).attr("path") + photoArray[i],
                     caption : "<font style='background-color:#999;width: 80%;'>"
                                             + captionArray[i] + "</font>"};
    }
    gallery = jQT.generateGallery("photo", photoObjectArray, { //code next page
    });
    jQT.goTo($("#photo"));
}
Generate Gallery
gallery = jQT.generateGallery("photo", photoObjectArray, {
     backLink : '<a class="back" href="#">Back</a>',
     galleryName : '<font style="font-size: 75%">' + $(this)
                                       .attr("pictureTitle") + ' ({0} of {1})</font>',
     galleryTemplate : '<div class="jqt-photo">'
          + '<div class="toolbar toolbar-top"></div>'
          + '<table class="jqt-photo-table">'
          + '<tr class="jqt-photo-slide-list"></tr>' + '</table>'
          + '<div class="toolbar toolbar-bottom">'
          + '<div class="jqt-photo-prev"></div>'
          + '<div class="jqt-photo-pause"></div>'
          + '<div class="jqt-photo-play"></div>'
          + '<div class="jqt-photo-next"></div>' + '</div>' + '</div>'
});
HTML5 <input> Tag Attributes
<input type="text" placeholder="Vul naam deelnemer in" name="student1" id="
student1" autocapitalize="on" autocorrect="off" autocomplete="off" />



placeholder
● instructions in field itself
New type values:
● tel
● email
● url
● number
Using "classic" Domino
● Design
● HTML header
● Body
Domino NSF Folder Structure
Design
One HTML page
● Domino Page - index.html
● Properties info tab: Content type: HTML
● <head>
  ○ References to JS Libraries and .css files
● <body>
   ○ Embedded View
<head>
1 <head>
2 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
3 <meta name="viewport" content="user-scalable=no, width=device-width" />
4 <script type="text/javascript" src="http://www.google.com/jsapi"></script>
5 <script type="text/javascript">google.load("jquery", "1.4.2"); </script>
6 <script type="text/javascript" src="jqtouch.js" charset="utf-8"></script>
7 <script type="text/javascript" src="jqt.photo.js" charset="utf-8"></script>
8 <script type="text/javascript" src="sb.js"></script>
9 <link rel="stylesheet" type="text/css" href="jqtouch.css" />
10 <link rel="stylesheet" type="text/css" href="theme.css" />
11 <link rel="stylesheet" type="text/css" href="jqt.photo.css" />
12 <title>Striptekenen</title>
13 </head>
Body
Embedded View
● Easiest way to manage mobile web app pages
● View properties advanced tab: Treat content as HTML
● View contains documents
   ○ each document has a field that contains a <div>
     section
   ○ if necessary an
     agent for creating
     nested navigations
     links from other
     Domino views
Summary
● Build easy and quick very nice looking
  mobile web apps
  ○ HTML5 browser needed
  ○ iPhone, iPod, iPad
    ■ Activate jQTouch: icon and splash image
● Domino as a platform
   ○   Lot of HTML and JavaScript
   ○   Some knowledge of jQuery is required
   ○   Use Views to keep structure under control
   ○   Name conventions
   ○   jqTouch makes it all work
References
● Web sites
  ○ jQTouch: http://www.jqtouch.com/
  ○ jQuery: http://jquery.com/
  ○ AppliGate: http://www.appligate.nl
● Download
  ○ https://docs.google.com/open?id=0B6vS2p8k5hZMT2JiQVNIbjZhNTA
  ○ Images are copyrighted
● Books
  ○ Building iPhone Apps with HTML, CSS, and
     JavaScript, Jonathan Stark, O'Reilly
  ○ jQuery Pocket Reference, David Flanagan, O'Reilly
Building iPhone Web Apps using "classic" Domino

More Related Content

What's hot

Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web ComponentsFelix Arntz
 
jQuery UI Widgets, Drag and Drop, Drupal 7 Javascript
jQuery UI Widgets, Drag and Drop, Drupal 7 JavascriptjQuery UI Widgets, Drag and Drop, Drupal 7 Javascript
jQuery UI Widgets, Drag and Drop, Drupal 7 JavascriptDarren Mothersele
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ EtsyNishan Subedi
 
J query b_dotnet_ug_meet_12_may_2012
J query b_dotnet_ug_meet_12_may_2012J query b_dotnet_ug_meet_12_may_2012
J query b_dotnet_ug_meet_12_may_2012ghnash
 
DOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryDOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryRemy Sharp
 
Intoduction on Playframework
Intoduction on PlayframeworkIntoduction on Playframework
Intoduction on PlayframeworkKnoldus Inc.
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!Roberto Messora
 
Jquery In Rails
Jquery In RailsJquery In Rails
Jquery In Railsshen liu
 
WebApps e Frameworks Javascript
WebApps e Frameworks JavascriptWebApps e Frameworks Javascript
WebApps e Frameworks Javascriptmeet2Brains
 
Clickable DIVs and other icebergs
Clickable DIVs and other icebergsClickable DIVs and other icebergs
Clickable DIVs and other icebergsBen Buchanan
 
Drupal Development (Part 2)
Drupal Development (Part 2)Drupal Development (Part 2)
Drupal Development (Part 2)Jeff Eaton
 
Improving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community ProjectImproving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community ProjectBartek Igielski
 
jQuery('#knowledge').appendTo('#you');
jQuery('#knowledge').appendTo('#you');jQuery('#knowledge').appendTo('#you');
jQuery('#knowledge').appendTo('#you');mikehostetler
 
Dig Deeper into WordPress - WD Meetup Cairo
Dig Deeper into WordPress - WD Meetup CairoDig Deeper into WordPress - WD Meetup Cairo
Dig Deeper into WordPress - WD Meetup CairoMohamed Mosaad
 

What's hot (19)

Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
 
jQuery UI Widgets, Drag and Drop, Drupal 7 Javascript
jQuery UI Widgets, Drag and Drop, Drupal 7 JavascriptjQuery UI Widgets, Drag and Drop, Drupal 7 Javascript
jQuery UI Widgets, Drag and Drop, Drupal 7 Javascript
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
 
J query b_dotnet_ug_meet_12_may_2012
J query b_dotnet_ug_meet_12_may_2012J query b_dotnet_ug_meet_12_may_2012
J query b_dotnet_ug_meet_12_may_2012
 
DOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryDOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQuery
 
Intoduction on Playframework
Intoduction on PlayframeworkIntoduction on Playframework
Intoduction on Playframework
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 
Jquery In Rails
Jquery In RailsJquery In Rails
Jquery In Rails
 
WebApps e Frameworks Javascript
WebApps e Frameworks JavascriptWebApps e Frameworks Javascript
WebApps e Frameworks Javascript
 
jQuery secrets
jQuery secretsjQuery secrets
jQuery secrets
 
Clickable DIVs and other icebergs
Clickable DIVs and other icebergsClickable DIVs and other icebergs
Clickable DIVs and other icebergs
 
Drupal Development (Part 2)
Drupal Development (Part 2)Drupal Development (Part 2)
Drupal Development (Part 2)
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 
Symfony2. Form and Validation
Symfony2. Form and ValidationSymfony2. Form and Validation
Symfony2. Form and Validation
 
Improving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community ProjectImproving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community Project
 
jQuery('#knowledge').appendTo('#you');
jQuery('#knowledge').appendTo('#you');jQuery('#knowledge').appendTo('#you');
jQuery('#knowledge').appendTo('#you');
 
Dig Deeper into WordPress - WD Meetup Cairo
Dig Deeper into WordPress - WD Meetup CairoDig Deeper into WordPress - WD Meetup Cairo
Dig Deeper into WordPress - WD Meetup Cairo
 
Polymer
PolymerPolymer
Polymer
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 

Viewers also liked

Fantastic Massage In Salt Lake City
Fantastic Massage In Salt Lake CityFantastic Massage In Salt Lake City
Fantastic Massage In Salt Lake Citymercedesutahfan39
 
Э.Хийморь Д.Солонго Б.Алтангэрэл А.Ахмарал - Байгууллагын мэдээллийн аюулгүй ...
Э.Хийморь Д.Солонго Б.Алтангэрэл А.Ахмарал - Байгууллагын мэдээллийн аюулгүй ...Э.Хийморь Д.Солонго Б.Алтангэрэл А.Ахмарал - Байгууллагын мэдээллийн аюулгүй ...
Э.Хийморь Д.Солонго Б.Алтангэрэл А.Ахмарал - Байгууллагын мэдээллийн аюулгүй ...batnasanb
 
Financial instruments futurum - apakah ipo dapat dianggap dana murah (bagi...
Financial instruments   futurum -  apakah ipo dapat dianggap dana murah (bagi...Financial instruments   futurum -  apakah ipo dapat dianggap dana murah (bagi...
Financial instruments futurum - apakah ipo dapat dianggap dana murah (bagi...Futurum2
 
EY Simon Sinek press release Final
EY Simon Sinek press release FinalEY Simon Sinek press release Final
EY Simon Sinek press release FinalJeffrey Stier
 
VALERIA VALESKA NOVENO B #22 Y LAYJANY # 26
VALERIA VALESKA NOVENO B #22 Y LAYJANY # 26VALERIA VALESKA NOVENO B #22 Y LAYJANY # 26
VALERIA VALESKA NOVENO B #22 Y LAYJANY # 26Valeska Ramirez
 
Uchitelskaya prezentatsia nas_obedenyaet_geografia
Uchitelskaya prezentatsia nas_obedenyaet_geografiaUchitelskaya prezentatsia nas_obedenyaet_geografia
Uchitelskaya prezentatsia nas_obedenyaet_geografiageogworld
 
천안오피.역삼오피≒다솜넷≒부천오피걸.선릉역오피방
천안오피.역삼오피≒다솜넷≒부천오피걸.선릉역오피방천안오피.역삼오피≒다솜넷≒부천오피걸.선릉역오피방
천안오피.역삼오피≒다솜넷≒부천오피걸.선릉역오피방dasom0040
 
Questionnaire analysis
Questionnaire analysisQuestionnaire analysis
Questionnaire analysisSinead Grace
 
Art Tracks: A technical deep dive.
Art Tracks:  A technical deep dive.Art Tracks:  A technical deep dive.
Art Tracks: A technical deep dive.David Newbury
 
Art Tracks: From Provenance to Structured Data
Art Tracks: From Provenance to Structured DataArt Tracks: From Provenance to Structured Data
Art Tracks: From Provenance to Structured DataDavid Newbury
 

Viewers also liked (18)

Fantastic Massage In Salt Lake City
Fantastic Massage In Salt Lake CityFantastic Massage In Salt Lake City
Fantastic Massage In Salt Lake City
 
Э.Хийморь Д.Солонго Б.Алтангэрэл А.Ахмарал - Байгууллагын мэдээллийн аюулгүй ...
Э.Хийморь Д.Солонго Б.Алтангэрэл А.Ахмарал - Байгууллагын мэдээллийн аюулгүй ...Э.Хийморь Д.Солонго Б.Алтангэрэл А.Ахмарал - Байгууллагын мэдээллийн аюулгүй ...
Э.Хийморь Д.Солонго Б.Алтангэрэл А.Ахмарал - Байгууллагын мэдээллийн аюулгүй ...
 
Financial instruments futurum - apakah ipo dapat dianggap dana murah (bagi...
Financial instruments   futurum -  apakah ipo dapat dianggap dana murah (bagi...Financial instruments   futurum -  apakah ipo dapat dianggap dana murah (bagi...
Financial instruments futurum - apakah ipo dapat dianggap dana murah (bagi...
 
EY Simon Sinek press release Final
EY Simon Sinek press release FinalEY Simon Sinek press release Final
EY Simon Sinek press release Final
 
2
22
2
 
VALERIA VALESKA NOVENO B #22 Y LAYJANY # 26
VALERIA VALESKA NOVENO B #22 Y LAYJANY # 26VALERIA VALESKA NOVENO B #22 Y LAYJANY # 26
VALERIA VALESKA NOVENO B #22 Y LAYJANY # 26
 
Layer 3 scaling
Layer 3 scalingLayer 3 scaling
Layer 3 scaling
 
Uchitelskaya prezentatsia nas_obedenyaet_geografia
Uchitelskaya prezentatsia nas_obedenyaet_geografiaUchitelskaya prezentatsia nas_obedenyaet_geografia
Uchitelskaya prezentatsia nas_obedenyaet_geografia
 
천안오피.역삼오피≒다솜넷≒부천오피걸.선릉역오피방
천안오피.역삼오피≒다솜넷≒부천오피걸.선릉역오피방천안오피.역삼오피≒다솜넷≒부천오피걸.선릉역오피방
천안오피.역삼오피≒다솜넷≒부천오피걸.선릉역오피방
 
Questionnaire analysis
Questionnaire analysisQuestionnaire analysis
Questionnaire analysis
 
Zen of Consulting
Zen of ConsultingZen of Consulting
Zen of Consulting
 
JavaWorld - SCJP - Capitulo 5
JavaWorld - SCJP - Capitulo 5JavaWorld - SCJP - Capitulo 5
JavaWorld - SCJP - Capitulo 5
 
Art Tracks: A technical deep dive.
Art Tracks:  A technical deep dive.Art Tracks:  A technical deep dive.
Art Tracks: A technical deep dive.
 
Understanding D3
Understanding D3Understanding D3
Understanding D3
 
Art Tracks: From Provenance to Structured Data
Art Tracks: From Provenance to Structured DataArt Tracks: From Provenance to Structured Data
Art Tracks: From Provenance to Structured Data
 
EC 438: Juegos Parapanamericanos
EC 438: Juegos ParapanamericanosEC 438: Juegos Parapanamericanos
EC 438: Juegos Parapanamericanos
 
EC 438: Infocentros
EC 438: InfocentrosEC 438: Infocentros
EC 438: Infocentros
 
EC 438: Final encebollado
EC 438: Final encebolladoEC 438: Final encebollado
EC 438: Final encebollado
 

Similar to Building iPhone Web Apps using "classic" Domino

HTML5 and Mobile
HTML5 and MobileHTML5 and Mobile
HTML5 and Mobiledoodoofish
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012crokitta
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of usOSCON Byrum
 
Private slideshow
Private slideshowPrivate slideshow
Private slideshowsblackman
 
HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2James Pearce
 
Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4DEVCON
 
Short intro to JQuery and Modernizr
Short intro to JQuery and ModernizrShort intro to JQuery and Modernizr
Short intro to JQuery and ModernizrJussi Pohjolainen
 
Jquery presentation
Jquery presentationJquery presentation
Jquery presentationMevin Mohan
 
Jqeury ajax plugins
Jqeury ajax pluginsJqeury ajax plugins
Jqeury ajax pluginsInbal Geffen
 
Jqeury ajax plugins
Jqeury ajax pluginsJqeury ajax plugins
Jqeury ajax pluginsInbal Geffen
 
Netvibes UWA workshop at ParisWeb 2007
Netvibes UWA workshop at ParisWeb 2007Netvibes UWA workshop at ParisWeb 2007
Netvibes UWA workshop at ParisWeb 2007Netvibes
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCpootsbook
 

Similar to Building iPhone Web Apps using "classic" Domino (20)

HTML5 and Mobile
HTML5 and MobileHTML5 and Mobile
HTML5 and Mobile
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
 
Client Web
Client WebClient Web
Client Web
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 
Private slideshow
Private slideshowPrivate slideshow
Private slideshow
 
Xxx
XxxXxx
Xxx
 
jQuery
jQueryjQuery
jQuery
 
JQuery
JQueryJQuery
JQuery
 
HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2
 
Introducing jQuery
Introducing jQueryIntroducing jQuery
Introducing jQuery
 
Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4
 
Short intro to JQuery and Modernizr
Short intro to JQuery and ModernizrShort intro to JQuery and Modernizr
Short intro to JQuery and Modernizr
 
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fallHtml5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
 
Jquery presentation
Jquery presentationJquery presentation
Jquery presentation
 
Jqeury ajax plugins
Jqeury ajax pluginsJqeury ajax plugins
Jqeury ajax plugins
 
Jqeury ajax plugins
Jqeury ajax pluginsJqeury ajax plugins
Jqeury ajax plugins
 
Netvibes UWA workshop at ParisWeb 2007
Netvibes UWA workshop at ParisWeb 2007Netvibes UWA workshop at ParisWeb 2007
Netvibes UWA workshop at ParisWeb 2007
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
 
jQuery
jQueryjQuery
jQuery
 
J query training
J query trainingJ query training
J query training
 

Recently uploaded

Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxPooja Bhuva
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...Nguyen Thanh Tu Collection
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxEsquimalt MFRC
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jisc
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Jisc
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17Celine George
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...Nguyen Thanh Tu Collection
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the ClassroomPooky Knightsmith
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Pooja Bhuva
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxDr. Sarita Anand
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxheathfieldcps1
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17Celine George
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxPooja Bhuva
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentationcamerronhm
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxCeline George
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...ZurliaSoop
 

Recently uploaded (20)

Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 

Building iPhone Web Apps using "classic" Domino

  • 1. Building iPhone Web Apps using "classic" Domino Rob Bontekoe
  • 2. AppliGate's Working Area ● Since 1994 Domino courses ● Since 2009 XPages courses and since 2011... ● GAE Restful web apps ● GAE Servlet + JSP ○ Mobile Web 2.0 Apps ■ HTML5 + JavaScript + jQuery + jqTouch ■ Also possible with "classic" Domino
  • 3. Agenda iPhone Web Apps ● Demo application ● Required knowledge ○ Structure of a mobile web app ○ Initializing the app ○ Registering event handlers ○ Communication with servers using AJAX ● Using "classic" Domino ○ Design ○ <head> tag ○ <body> tag ● Summary and references
  • 4. Demo A smartphone web app to register school kids for a course after school time: ● Overview courses ● Registration form ● Photo album with Picasa links ● Video album with YouTube links ● About
  • 5. Structure of a Web App <!-- e.g. jQTouch css classes --> <html> <ul class="rounded"> <head><!-- .js and .css files --></head> <li class="arrow"> <body> <a class="flip" href="#infoCursussen"> Page Header <img src="pens.png" /> <div id="home" class="current"> Welke cursus? <div class="toolbar"><h1>Kinderopvang</h1></div> </a> <!-- Page Body e.g. navigation links --> </li> </div> </ul> <div id="infoCursussen"> <div class="toolbar"> <h1>Info cursussen</h1><a class="back" href="#">Back</a></div> <!-- Content and/or Links --> </div> </body> JavaScript frameworks, here jQTouch, </html> takes care of displaying one <div>-section (= page) at a time
  • 6. JavaScript Frameworks ● XPages app with Mobile controls ● jQTouch jQuery plugin ● Etc.
  • 7. Initializing App // In sb.js, application specific JavaScript library var jQT = $.jQTouch( { icon: "icon.png", // 32 x 32 px startupScreen: "startup.jpg", // 320 x 460 px statusBar : "black", fixedViewPort : true }); // check kind of browser var userAgent = navigator.userAgent.toLowerCase(); var isiPhone = (userAgent.indexOf('iphone') != -1 || userAgent.indexOf('ipod') != -1 || userAgent.indexOf('ipad') != -1) ? true : false; var clickEvent = isiPhone ? 'tap' : 'click';
  • 8. Register an Event Handler the function will be invoked when the document has been loaded and the DOM is ready to be manipulated. $( function() { id used in button on HTML page $("#aanmeldButton").bind(clickEvent, function(e) { // get selected course html tag reference var selectedCourse = $("input:radio[name=course]:checked").val(); // set hidden field #course on #aanmelden form $("#course").val(selectedCourse); // add HTML to paragraph #myText on #aanmelden form $("#myText").html("<i>Aanmelding voor:</i><br />" + selectedCourse); // goto #aanmelden form jQT.goTo($("#aanmelden")); }); }); // $("#element_id") similair to getElementById("element_id")
  • 9. Communication with Server function saveData() { // serialize form data var dataRegistrationForm = $("#aanmelden").serialize(); // AJAX get call $.get("(thankyou)?openagent", dataRegistrationForm, Callback function. function(data) { Domino agent returns a string. $("#message").prepend(data); Variable "data" jQT.goTo("#confirm"); refers to this }, (HTML) string. "html" ); }
  • 10. Multiple Elements with Same ID <a id="showImage" href="#" path="" link="1.jpg,2.jpg " pictureTitle="Striptekenschool" caption="Gerben,Rob"> <img src="cover.jpg" height="200" class="pic"></img> </a> // Attach handler to one/more events for all elements that match #showImage var gallery, captions; $(document).delegate( "#showImage", clickEvent, function() { // remove old gallery // build photo array // code // build captions array } // create dynamically <div> section for gallery // show <div> section );
  • 11. Call Back Function function() { if (gallery != null) {gallery.remove()} var photoArray = $(this).attr("link").split(","); var photoObjectArray = new Array(); var captionArray = $(this).attr("caption").split(","); for (i = 0; i < photoArray.length; i++) { photoObjectArray[i] = {src : "" + $(this).attr("path") + photoArray[i], caption : "<font style='background-color:#999;width: 80%;'>" + captionArray[i] + "</font>"}; } gallery = jQT.generateGallery("photo", photoObjectArray, { //code next page }); jQT.goTo($("#photo")); }
  • 12. Generate Gallery gallery = jQT.generateGallery("photo", photoObjectArray, { backLink : '<a class="back" href="#">Back</a>', galleryName : '<font style="font-size: 75%">' + $(this) .attr("pictureTitle") + ' ({0} of {1})</font>', galleryTemplate : '<div class="jqt-photo">' + '<div class="toolbar toolbar-top"></div>' + '<table class="jqt-photo-table">' + '<tr class="jqt-photo-slide-list"></tr>' + '</table>' + '<div class="toolbar toolbar-bottom">' + '<div class="jqt-photo-prev"></div>' + '<div class="jqt-photo-pause"></div>' + '<div class="jqt-photo-play"></div>' + '<div class="jqt-photo-next"></div>' + '</div>' + '</div>' });
  • 13. HTML5 <input> Tag Attributes <input type="text" placeholder="Vul naam deelnemer in" name="student1" id=" student1" autocapitalize="on" autocorrect="off" autocomplete="off" /> placeholder ● instructions in field itself New type values: ● tel ● email ● url ● number
  • 14. Using "classic" Domino ● Design ● HTML header ● Body
  • 15. Domino NSF Folder Structure
  • 16. Design One HTML page ● Domino Page - index.html ● Properties info tab: Content type: HTML ● <head> ○ References to JS Libraries and .css files ● <body> ○ Embedded View
  • 17. <head> 1 <head> 2 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 3 <meta name="viewport" content="user-scalable=no, width=device-width" /> 4 <script type="text/javascript" src="http://www.google.com/jsapi"></script> 5 <script type="text/javascript">google.load("jquery", "1.4.2"); </script> 6 <script type="text/javascript" src="jqtouch.js" charset="utf-8"></script> 7 <script type="text/javascript" src="jqt.photo.js" charset="utf-8"></script> 8 <script type="text/javascript" src="sb.js"></script> 9 <link rel="stylesheet" type="text/css" href="jqtouch.css" /> 10 <link rel="stylesheet" type="text/css" href="theme.css" /> 11 <link rel="stylesheet" type="text/css" href="jqt.photo.css" /> 12 <title>Striptekenen</title> 13 </head>
  • 18. Body Embedded View ● Easiest way to manage mobile web app pages ● View properties advanced tab: Treat content as HTML ● View contains documents ○ each document has a field that contains a <div> section ○ if necessary an agent for creating nested navigations links from other Domino views
  • 19. Summary ● Build easy and quick very nice looking mobile web apps ○ HTML5 browser needed ○ iPhone, iPod, iPad ■ Activate jQTouch: icon and splash image ● Domino as a platform ○ Lot of HTML and JavaScript ○ Some knowledge of jQuery is required ○ Use Views to keep structure under control ○ Name conventions ○ jqTouch makes it all work
  • 20. References ● Web sites ○ jQTouch: http://www.jqtouch.com/ ○ jQuery: http://jquery.com/ ○ AppliGate: http://www.appligate.nl ● Download ○ https://docs.google.com/open?id=0B6vS2p8k5hZMT2JiQVNIbjZhNTA ○ Images are copyrighted ● Books ○ Building iPhone Apps with HTML, CSS, and JavaScript, Jonathan Stark, O'Reilly ○ jQuery Pocket Reference, David Flanagan, O'Reilly