SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
Learning To Run -
XPages for Lotus Notes Client Developers
An IdoSphere webinar

Presented by: Kathy Brown
Who am I...


 Kathy Brown
    Lotus Notes Developer, primarily for the Notes client, until recently
    Author for The View
    Co-author of the Lotus User Group’s Notes Developer Tips Newsletter
    Speaker at Lotusphere, The View’s Developer conference and several LUGs
    Twitter addict
    Runner
What this session is...


 Tips and transitions for Notes client developers
What this session is not...


 A step-by-step how to
 Best practices
 Advanced topics
What We’ll Cover


 Building Blocks
 Languages
 More
Building Blocks


 Forms
 Views
 Subforms
 Framesets
 Outlines
 Pages
Building Blocks


 Xpages
 Core controls
 Container controls
 Custom controls
Separation of Data and UI


 Traditional Notes Dev
    Forms combined data and UI




 Xpages
    Separate data from UI
        Create forms just as data holders,
        no need to prettify
        Create views for lookups, no need
        to prettify (no need for dual
        sorting!)
Customer Name
Customer ID
Customer Address
Customer Purchases


                 Customer Name
                 Customer Address
                 Widget ID
                 Widget Name
                 Widget Description


                                      Widget ID
                                      Widget Name
                                      Widget Description
                                      Widget Image
Data binding


 Because the data and the UI are separate, we have to
 “bind” data to our elements
 Xpage
    Can define a domino document or view as a data source
 Custom Controls and Container Controls like Panel
    Can define a domino document or view as a data source
 Repeat Controls and certain Core Controls
    Use data binding
Data binding


 Simple data binding
    Select a source from a list, or add another
    Select an item to bind to
    Example: select a document from the source and a field from that document to
    bind to
 Javascript
    Utilize the JavaScript editor to write server side javascript
    Example: database.getView("movies by genre").getAllDocumentsByKey(genre);
 Advanced
    Use expression language, scoped variable, component parameter or custom
    code for data binding
DDE
Quick Tip


 Window --> Reset Perspective is your friend
The Outline


 Easily locate items on the Xpage
 Drag & Drop items to new locations
Source


 Easily change values or properties
 See the Matrix
Design pane




              NOT DONE
Properties
Core Controls
What’s with the “group”
controls?
Something familiar*
*Sort of


  Edit Box
  Rich Text
  Multiline Edit Box
  List Box
  Combo Box
Quick Tip


 When adding @formula values for a combo box (or list
 box) the default condition is “Compute on Page Load”
 Remember to change that to “Compute Dynamically” in
 the script editor

                         OR go to the source and change
                         the “$” to “#”
More Core Controls
Core Controls - Label


 Why Use a Label?

 More control
 More programmability
Core Controls - Errors


 Use to ... display errors


 Don’t forget to remove!
Panel Control


 Sort of, kind of, like a layer...
 on steroids.
 Or like an embedded view...
 on steroids.
 Or like if a layer and an embedded view had a baby.
Repeat Controls


 No Traditional Notes Client equivalent
 And that’s a good thing

 A repeat control allows you to put controls inside (like
 Edit boxes or computed values, but also more repeat
 controls!) that repeat on the page
Container Controls


 Include Page - allows you to include an Xpage inside
 another Xpage

 Table - We know all about this one!

 View - kind of like an embedded view, but better

 Tabbed Panel - multiple panels with...tabs!

 Section - We’ve seen this before, too
Custom Controls


 Closest traditional equivalent are subforms
 Create custom controls to hold other controls stored
 together
 Can be a “create once, use multiple times” control for
 footers or headers, for example
Quick Tip


 CTRL+SHIFT+F in the source
@Formula in XPages


 @Formula is available for use in Server Side JavaScript
 (SSJS)
 Not all @Formula are supported in XPages
@Functions Not Supported in
XPages
 @AbstractSimple     @CheckAlarms          @DeleteField         @DoWhile

 @Accessed           @CheckFormulaSyntax   @DialogBox           @EditECL

 @ACos               @Command              @DocChildren         @EditUserECL

 @AddToFolder        @Compare              @DocDescendants      @EnableAlarms

 @AdminECLIsLocked   @ConfigFile            @DocFields           @Environment

 @All                @Cos                  @DocLength           @Eval

 @AllChildren        @DB2Schema            @DocLevel            @Exp

 @AllDescendants     @DbCommand            @DocLock             @FileDir

 @Ascii              @DbExists             @DocMark             @FloatEq

 @ASin               @DbManager            @DocNumber           @FontList

 @ATan               @DDEExecute           @DocOmmittedLength   @For

 @ATan2              @DDEInitiate          @DocParentNumber     @FormLanguage

 @BrowserInfo        @DDEPoke              @DocSiblings         @GetAddressBooks

 @BusinessDays       @DDETerminate         @DocumentUniqueID    @GetCurrentTimeZone

 @Certificate         @DeleteDocument       @Domain              @GetDocField
@Functions Not Supported in
XPages (cont.)
@GetFocusTable               @IsDocBeingRecalculated @Locale                        @OrgDir

@GetHTTPHeader               @IsDocTruncated           @Log                         @Password

@GetIMContactListGroupNames @IsEmbeddedInsideWCT       @MailDbName                  @PasswordQuality

@GetPortsList                @IsExpandable             @MailEncryptSavedPreference @Pi

@GetProfileField              @IsInCompositeApp         @MailEncryptSentPreference   @PickList

@GetViewInfo                 @IsModalHelp              @MailSavePreference          @Platform

@HardDeleteDocument          @IsUsingJavaElement       @MailSend                    @PolicyIsFieldLocked

@HashPassword                @IsValid                  @MailSignPreference          @PostedCommand

@InheritedDocumentUniqueID   @IsVirtualizedDirectory   @Matches                     @Power

@IsAgentEnabled              @Keywords                 @NameLookup                  @Prompt

@IsAppInstalled              @LanguagePreference       @Narrow                      @RefreshECL

@IsCategory                  @LaunchApp                @NoteID                      @RegQueryValue

@IsDB2                       @LDAPServer               @Nothing                     @Responses

@IsDocBeingEdited            @Like                     @OpenInNewWindow             @ServerAccess

@IsDocBeingMailed            @Ln                       @OptimizeMailAddress         @ServerName
@Functions Not Supported in
XPages (cont.)
 @Set                 @TemplateVersion        @URLHistory                @ViewTitle

 @SetDocField         @ThisName               @URLOpen                   @WebDbName

 @SetEnvironment      @ThisValue              @UrlQueryString            @WhichFolders

 @SetHTTPHeader       @TimeMerge              @UserAccess                @While

 @SetProfileField      @TimeToTextInZone       @UserNameLanguage          @Wide

 @SetTargetFrame      @TimeZoneToText         @UserNamesList             @Zone

 @SetViewInfo         @ToNumber               @UserPrivileges            DEFAULT

 @ShowParentPreview   @ToTime                 @UserRoles                 ENVIRONMENT

 @Sign                @Transform              @V2If                      FIELD

 @Sin                 @Unavailable            @V3UserName                REM

 @Sort                @UndeleteDocument       @V4UserAccess              SELECT

 @Soundex             @UpdateFormulaContext   @ValidateInternetAddress

 @Sqrt                @URLDecode              @VerifyPassword

 @StatusBar           @URLEncode              @Version

 @Tan                 @URLGetHeader           @ViewShowThisUnread
@Formula Syntax


 Three syntactic changes to use @Formula in XPages:
   Use commas rather than semicolons
   Use exact case
       Example:
            var uname = @Name(“[CN]”, @UserName())
   “null” should be used in place of 0 for formulas such as @Adjust
       Example:
            var adate = @Adjust (@Created(), null, null, 5, null, null, null)
@Formula Help
@Formula Help


 Help file is not very helpful!
 @Name(“[CN]”, name) – needs those quotes! But there
 is no example in the help file to demonstrate that!
 @UserName() – needs those parentheses! Again, no
 example in the help file to show that!
@Name in Help
Server Side Javascript
(SSJS)

 Server Side JavaScript is not LotusScript
 Close enough to fool you
 Get this - http://bit.ly/XpagesMap
 Learn about recycling
    http://bit.ly/Recycle1
    http://bit.ly/Recycle2
Close...
But not quite
Scoped Variables


 applicationScope
 sessionScope
 viewScope
 requestScope
Xpages Domino Object Map
Quick Tip


 Turn off “Synchronize Navigator with Editor Tab”
CSS and Themes


 Roll your own or
 Start with a framework*
     http://bit.ly/XpageFramework
     http://blueprintcss.org/
         David Leedy may cover this in his session




 *Start with a framework
Firebug
Where to get help...
or not

 Help files not so helpful

 http://www-10.lotus.com/ldd/ddwiki.nsf

 http://www-10.lotus.com/ldd/ddwiki.nsf/dx/
 NotesDocumentCollection_sample_JavaScript_code_for
 _XPages
Quick Tip


 Create different search scopes for the Help file
Learn Javascript and
Java

 Javascript
 http://www.w3schools.com/js/default.asp
 http://bit.ly/JavaScriptDefinitive



 Java
 http://bit.ly/HeadFirstJava
Test Server - Get one


 Typical Lotus Client development can get away with
 “testing” on a production server

 Doing that with Xpages...
Sample applications - get some


 Download applications and dig through them to see how
 they were created
    Frameworks on OpenNTF
    Matt White and Tim Clark’s Show and Tell sample app
Quick Tip


 Turn on “Select controls dialog box”
Quick Tip


 Visible versus Hide When
Quick Tip


 Upgrade whenever possible
Quick Tip


 Learn Eclipse
Resources


 http://xpages101.net/
 http://notesin9.com/
 Wikis - see earlier slide
 http://xpag.es/?cheatsheet
 PlanetLotus.org
 OpenNTF.org
 TLCC.com
 http://bit.ly/fIlpHn - all the bit.ly links bundled
THANK YOU!

Any Questions?

                 Your Logo
Kathy Brown
How to contact me:
  •E-mail: kathy@runningnotes.net
  •Twitter: kjbrown13 or NotesDevTips

  •My Website: http://runningnotes.net




       The Consultant in your Pocket webcast series: find us at http://consultantinyourpocket.com

Contenu connexe

Tendances

Abstracting functionality with centralised content
Abstracting functionality with centralised contentAbstracting functionality with centralised content
Abstracting functionality with centralised contentMichael Peacock
 
Learning How to Shape and Configure an OData Service for High Performing Web ...
Learning How to Shape and Configure an OData Service for High Performing Web ...Learning How to Shape and Configure an OData Service for High Performing Web ...
Learning How to Shape and Configure an OData Service for High Performing Web ...Woodruff Solutions LLC
 
Parsing strange v3
Parsing strange v3Parsing strange v3
Parsing strange v3Hal Stern
 
Django workshop : let's make a blog
Django workshop : let's make a blogDjango workshop : let's make a blog
Django workshop : let's make a blogPierre Sudron
 
HTML 5 Step By Step - Ebook
HTML 5 Step By Step - EbookHTML 5 Step By Step - Ebook
HTML 5 Step By Step - EbookScottperrone
 
Gaining the Knowledge of the Open Data Protocol (OData)
Gaining the Knowledge of the Open Data Protocol (OData)Gaining the Knowledge of the Open Data Protocol (OData)
Gaining the Knowledge of the Open Data Protocol (OData)Woodruff Solutions LLC
 
Building a Backend with Flask
Building a Backend with FlaskBuilding a Backend with Flask
Building a Backend with FlaskMake School
 
Java web programming
Java web programmingJava web programming
Java web programmingChing Yi Chan
 
OData Introduction and Impact on API Design (Webcast)
OData Introduction and Impact on API Design (Webcast)OData Introduction and Impact on API Design (Webcast)
OData Introduction and Impact on API Design (Webcast)Apigee | Google Cloud
 
Apache Olingo - ApacheCon Denver 2014
Apache Olingo - ApacheCon Denver 2014Apache Olingo - ApacheCon Denver 2014
Apache Olingo - ApacheCon Denver 2014Stephan Klevenz
 
Documenting from the Trenches
Documenting from the TrenchesDocumenting from the Trenches
Documenting from the TrenchesXavier Noria
 
REST and AJAX Reconciled
REST and AJAX ReconciledREST and AJAX Reconciled
REST and AJAX ReconciledLars Trieloff
 
Html5, a gentle introduction
Html5, a gentle introduction Html5, a gentle introduction
Html5, a gentle introduction Diego Scataglini
 
JavaScript and jQuery Fundamentals
JavaScript and jQuery FundamentalsJavaScript and jQuery Fundamentals
JavaScript and jQuery FundamentalsBG Java EE Course
 

Tendances (20)

Abstracting functionality with centralised content
Abstracting functionality with centralised contentAbstracting functionality with centralised content
Abstracting functionality with centralised content
 
Learning How to Shape and Configure an OData Service for High Performing Web ...
Learning How to Shape and Configure an OData Service for High Performing Web ...Learning How to Shape and Configure an OData Service for High Performing Web ...
Learning How to Shape and Configure an OData Service for High Performing Web ...
 
Parsing strange v3
Parsing strange v3Parsing strange v3
Parsing strange v3
 
Django workshop : let's make a blog
Django workshop : let's make a blogDjango workshop : let's make a blog
Django workshop : let's make a blog
 
Xml
XmlXml
Xml
 
HTML 5 Step By Step - Ebook
HTML 5 Step By Step - EbookHTML 5 Step By Step - Ebook
HTML 5 Step By Step - Ebook
 
Gaining the Knowledge of the Open Data Protocol (OData)
Gaining the Knowledge of the Open Data Protocol (OData)Gaining the Knowledge of the Open Data Protocol (OData)
Gaining the Knowledge of the Open Data Protocol (OData)
 
Html 5 tags
Html  5 tagsHtml  5 tags
Html 5 tags
 
Html tag list
Html tag listHtml tag list
Html tag list
 
Building a Backend with Flask
Building a Backend with FlaskBuilding a Backend with Flask
Building a Backend with Flask
 
Java web programming
Java web programmingJava web programming
Java web programming
 
OData Introduction and Impact on API Design (Webcast)
OData Introduction and Impact on API Design (Webcast)OData Introduction and Impact on API Design (Webcast)
OData Introduction and Impact on API Design (Webcast)
 
Apache Olingo - ApacheCon Denver 2014
Apache Olingo - ApacheCon Denver 2014Apache Olingo - ApacheCon Denver 2014
Apache Olingo - ApacheCon Denver 2014
 
Documenting from the Trenches
Documenting from the TrenchesDocumenting from the Trenches
Documenting from the Trenches
 
REST and AJAX Reconciled
REST and AJAX ReconciledREST and AJAX Reconciled
REST and AJAX Reconciled
 
Views
ViewsViews
Views
 
Html5, a gentle introduction
Html5, a gentle introduction Html5, a gentle introduction
Html5, a gentle introduction
 
Introduction to Html5
Introduction to Html5Introduction to Html5
Introduction to Html5
 
Xhtml 2010
Xhtml 2010Xhtml 2010
Xhtml 2010
 
JavaScript and jQuery Fundamentals
JavaScript and jQuery FundamentalsJavaScript and jQuery Fundamentals
JavaScript and jQuery Fundamentals
 

Similaire à Learning To Run - XPages for Lotus Notes Client Developers

Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An IntroductionThorsten Kamann
 
Compass Framework
Compass FrameworkCompass Framework
Compass FrameworkLukas Vlcek
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep DiveGabriel Walt
 
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...Miguel Gallardo
 
Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's CodeWildan Maulana
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingThorsten Kamann
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...SPTechCon
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPOscar Merida
 
New Features of JSR 317 (JPA 2.0)
New Features of JSR 317 (JPA 2.0)New Features of JSR 317 (JPA 2.0)
New Features of JSR 317 (JPA 2.0)Markus Eisele
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLsintelliyole
 
Java Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreJava Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreIMC Institute
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsMark Rackley
 
What is struts_en
What is struts_enWhat is struts_en
What is struts_entechbed
 
Silverlight 5 whats new overview
Silverlight 5 whats new overviewSilverlight 5 whats new overview
Silverlight 5 whats new overviewmdc11
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)James Titcumb
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaAgile Testing Alliance
 

Similaire à Learning To Run - XPages for Lotus Notes Client Developers (20)

Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An Introduction
 
Compass Framework
Compass FrameworkCompass Framework
Compass Framework
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
 
Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's Code
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
 
.Net template solution architecture
.Net template solution architecture.Net template solution architecture
.Net template solution architecture
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
 
CDI @javaonehyderabad
CDI @javaonehyderabadCDI @javaonehyderabad
CDI @javaonehyderabad
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHP
 
New Features of JSR 317 (JPA 2.0)
New Features of JSR 317 (JPA 2.0)New Features of JSR 317 (JPA 2.0)
New Features of JSR 317 (JPA 2.0)
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLs
 
Java Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreJava Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : Datastore
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
 
What is struts_en
What is struts_enWhat is struts_en
What is struts_en
 
Silverlight 5 whats new overview
Silverlight 5 whats new overviewSilverlight 5 whats new overview
Silverlight 5 whats new overview
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh Gundecha
 
Php frameworks
Php frameworksPhp frameworks
Php frameworks
 

Plus de Kathy Brown

2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration
2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration
2 Minutes to Learn, A Lifetime to Master - Agile Scrum for CollaborationKathy Brown
 
Using Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data VisualizationUsing Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data VisualizationKathy Brown
 
10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code
10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code
10 Lines or Less; Interesting Things You Can Do In Java With Minimal CodeKathy Brown
 
Don't Roll Your Own, Integrate
Don't Roll Your Own, IntegrateDon't Roll Your Own, Integrate
Don't Roll Your Own, IntegrateKathy Brown
 
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014Kathy Brown
 
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3Kathy Brown
 
Improving Domino Designer
Improving Domino DesignerImproving Domino Designer
Improving Domino DesignerKathy Brown
 
Improving Domino Designer ICON UK
Improving Domino Designer ICON UKImproving Domino Designer ICON UK
Improving Domino Designer ICON UKKathy Brown
 
Twitter Bootstrap
Twitter BootstrapTwitter Bootstrap
Twitter BootstrapKathy Brown
 
Tools for the Domino Developer - BLUG presentation version
Tools for the Domino Developer - BLUG presentation versionTools for the Domino Developer - BLUG presentation version
Tools for the Domino Developer - BLUG presentation versionKathy Brown
 
Top Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowTop Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowKathy Brown
 
XPages: No Experience Needed
XPages: No Experience NeededXPages: No Experience Needed
XPages: No Experience NeededKathy Brown
 
Collaboration Party of One
Collaboration Party of OneCollaboration Party of One
Collaboration Party of OneKathy Brown
 
UKLUG - Open The Toolbox - Tools for the Domino Developer
UKLUG - Open The Toolbox - Tools for the Domino DeveloperUKLUG - Open The Toolbox - Tools for the Domino Developer
UKLUG - Open The Toolbox - Tools for the Domino DeveloperKathy Brown
 
BP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @FormulaBP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @FormulaKathy Brown
 

Plus de Kathy Brown (15)

2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration
2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration
2 Minutes to Learn, A Lifetime to Master - Agile Scrum for Collaboration
 
Using Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data VisualizationUsing Dashboards to Transform Application Data Visualization
Using Dashboards to Transform Application Data Visualization
 
10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code
10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code
10 Lines or Less; Interesting Things You Can Do In Java With Minimal Code
 
Don't Roll Your Own, Integrate
Don't Roll Your Own, IntegrateDon't Roll Your Own, Integrate
Don't Roll Your Own, Integrate
 
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
 
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
 
Improving Domino Designer
Improving Domino DesignerImproving Domino Designer
Improving Domino Designer
 
Improving Domino Designer ICON UK
Improving Domino Designer ICON UKImproving Domino Designer ICON UK
Improving Domino Designer ICON UK
 
Twitter Bootstrap
Twitter BootstrapTwitter Bootstrap
Twitter Bootstrap
 
Tools for the Domino Developer - BLUG presentation version
Tools for the Domino Developer - BLUG presentation versionTools for the Domino Developer - BLUG presentation version
Tools for the Domino Developer - BLUG presentation version
 
Top Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowTop Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To Know
 
XPages: No Experience Needed
XPages: No Experience NeededXPages: No Experience Needed
XPages: No Experience Needed
 
Collaboration Party of One
Collaboration Party of OneCollaboration Party of One
Collaboration Party of One
 
UKLUG - Open The Toolbox - Tools for the Domino Developer
UKLUG - Open The Toolbox - Tools for the Domino DeveloperUKLUG - Open The Toolbox - Tools for the Domino Developer
UKLUG - Open The Toolbox - Tools for the Domino Developer
 
BP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @FormulaBP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @Formula
 

Dernier

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
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 2024Rafal Los
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
[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.pdfhans926745
 
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 RobisonAnna Loughnan Colquhoun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Dernier (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
[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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Learning To Run - XPages for Lotus Notes Client Developers

  • 1. Learning To Run - XPages for Lotus Notes Client Developers An IdoSphere webinar Presented by: Kathy Brown
  • 2. Who am I... Kathy Brown Lotus Notes Developer, primarily for the Notes client, until recently Author for The View Co-author of the Lotus User Group’s Notes Developer Tips Newsletter Speaker at Lotusphere, The View’s Developer conference and several LUGs Twitter addict Runner
  • 3. What this session is... Tips and transitions for Notes client developers
  • 4. What this session is not... A step-by-step how to Best practices Advanced topics
  • 5. What We’ll Cover Building Blocks Languages More
  • 6. Building Blocks Forms Views Subforms Framesets Outlines Pages
  • 7. Building Blocks Xpages Core controls Container controls Custom controls
  • 8. Separation of Data and UI Traditional Notes Dev Forms combined data and UI Xpages Separate data from UI Create forms just as data holders, no need to prettify Create views for lookups, no need to prettify (no need for dual sorting!)
  • 9. Customer Name Customer ID Customer Address Customer Purchases Customer Name Customer Address Widget ID Widget Name Widget Description Widget ID Widget Name Widget Description Widget Image
  • 10. Data binding Because the data and the UI are separate, we have to “bind” data to our elements Xpage Can define a domino document or view as a data source Custom Controls and Container Controls like Panel Can define a domino document or view as a data source Repeat Controls and certain Core Controls Use data binding
  • 11. Data binding Simple data binding Select a source from a list, or add another Select an item to bind to Example: select a document from the source and a field from that document to bind to Javascript Utilize the JavaScript editor to write server side javascript Example: database.getView("movies by genre").getAllDocumentsByKey(genre); Advanced Use expression language, scoped variable, component parameter or custom code for data binding
  • 12. DDE
  • 13. Quick Tip Window --> Reset Perspective is your friend
  • 14. The Outline Easily locate items on the Xpage Drag & Drop items to new locations
  • 15. Source Easily change values or properties See the Matrix
  • 16. Design pane NOT DONE
  • 19. What’s with the “group” controls?
  • 20. Something familiar* *Sort of Edit Box Rich Text Multiline Edit Box List Box Combo Box
  • 21. Quick Tip When adding @formula values for a combo box (or list box) the default condition is “Compute on Page Load” Remember to change that to “Compute Dynamically” in the script editor OR go to the source and change the “$” to “#”
  • 23. Core Controls - Label Why Use a Label? More control More programmability
  • 24. Core Controls - Errors Use to ... display errors Don’t forget to remove!
  • 25. Panel Control Sort of, kind of, like a layer... on steroids. Or like an embedded view... on steroids. Or like if a layer and an embedded view had a baby.
  • 26. Repeat Controls No Traditional Notes Client equivalent And that’s a good thing A repeat control allows you to put controls inside (like Edit boxes or computed values, but also more repeat controls!) that repeat on the page
  • 27. Container Controls Include Page - allows you to include an Xpage inside another Xpage Table - We know all about this one! View - kind of like an embedded view, but better Tabbed Panel - multiple panels with...tabs! Section - We’ve seen this before, too
  • 28. Custom Controls Closest traditional equivalent are subforms Create custom controls to hold other controls stored together Can be a “create once, use multiple times” control for footers or headers, for example
  • 29. Quick Tip CTRL+SHIFT+F in the source
  • 30. @Formula in XPages @Formula is available for use in Server Side JavaScript (SSJS) Not all @Formula are supported in XPages
  • 31. @Functions Not Supported in XPages @AbstractSimple @CheckAlarms @DeleteField @DoWhile @Accessed @CheckFormulaSyntax @DialogBox @EditECL @ACos @Command @DocChildren @EditUserECL @AddToFolder @Compare @DocDescendants @EnableAlarms @AdminECLIsLocked @ConfigFile @DocFields @Environment @All @Cos @DocLength @Eval @AllChildren @DB2Schema @DocLevel @Exp @AllDescendants @DbCommand @DocLock @FileDir @Ascii @DbExists @DocMark @FloatEq @ASin @DbManager @DocNumber @FontList @ATan @DDEExecute @DocOmmittedLength @For @ATan2 @DDEInitiate @DocParentNumber @FormLanguage @BrowserInfo @DDEPoke @DocSiblings @GetAddressBooks @BusinessDays @DDETerminate @DocumentUniqueID @GetCurrentTimeZone @Certificate @DeleteDocument @Domain @GetDocField
  • 32. @Functions Not Supported in XPages (cont.) @GetFocusTable @IsDocBeingRecalculated @Locale @OrgDir @GetHTTPHeader @IsDocTruncated @Log @Password @GetIMContactListGroupNames @IsEmbeddedInsideWCT @MailDbName @PasswordQuality @GetPortsList @IsExpandable @MailEncryptSavedPreference @Pi @GetProfileField @IsInCompositeApp @MailEncryptSentPreference @PickList @GetViewInfo @IsModalHelp @MailSavePreference @Platform @HardDeleteDocument @IsUsingJavaElement @MailSend @PolicyIsFieldLocked @HashPassword @IsValid @MailSignPreference @PostedCommand @InheritedDocumentUniqueID @IsVirtualizedDirectory @Matches @Power @IsAgentEnabled @Keywords @NameLookup @Prompt @IsAppInstalled @LanguagePreference @Narrow @RefreshECL @IsCategory @LaunchApp @NoteID @RegQueryValue @IsDB2 @LDAPServer @Nothing @Responses @IsDocBeingEdited @Like @OpenInNewWindow @ServerAccess @IsDocBeingMailed @Ln @OptimizeMailAddress @ServerName
  • 33. @Functions Not Supported in XPages (cont.) @Set @TemplateVersion @URLHistory @ViewTitle @SetDocField @ThisName @URLOpen @WebDbName @SetEnvironment @ThisValue @UrlQueryString @WhichFolders @SetHTTPHeader @TimeMerge @UserAccess @While @SetProfileField @TimeToTextInZone @UserNameLanguage @Wide @SetTargetFrame @TimeZoneToText @UserNamesList @Zone @SetViewInfo @ToNumber @UserPrivileges DEFAULT @ShowParentPreview @ToTime @UserRoles ENVIRONMENT @Sign @Transform @V2If FIELD @Sin @Unavailable @V3UserName REM @Sort @UndeleteDocument @V4UserAccess SELECT @Soundex @UpdateFormulaContext @ValidateInternetAddress @Sqrt @URLDecode @VerifyPassword @StatusBar @URLEncode @Version @Tan @URLGetHeader @ViewShowThisUnread
  • 34. @Formula Syntax Three syntactic changes to use @Formula in XPages: Use commas rather than semicolons Use exact case Example: var uname = @Name(“[CN]”, @UserName()) “null” should be used in place of 0 for formulas such as @Adjust Example: var adate = @Adjust (@Created(), null, null, 5, null, null, null)
  • 36. @Formula Help Help file is not very helpful! @Name(“[CN]”, name) – needs those quotes! But there is no example in the help file to demonstrate that! @UserName() – needs those parentheses! Again, no example in the help file to show that!
  • 38. Server Side Javascript (SSJS) Server Side JavaScript is not LotusScript Close enough to fool you Get this - http://bit.ly/XpagesMap Learn about recycling http://bit.ly/Recycle1 http://bit.ly/Recycle2
  • 41. Scoped Variables applicationScope sessionScope viewScope requestScope
  • 43. Quick Tip Turn off “Synchronize Navigator with Editor Tab”
  • 44. CSS and Themes Roll your own or Start with a framework* http://bit.ly/XpageFramework http://blueprintcss.org/ David Leedy may cover this in his session *Start with a framework
  • 46. Where to get help... or not Help files not so helpful http://www-10.lotus.com/ldd/ddwiki.nsf http://www-10.lotus.com/ldd/ddwiki.nsf/dx/ NotesDocumentCollection_sample_JavaScript_code_for _XPages
  • 47. Quick Tip Create different search scopes for the Help file
  • 48. Learn Javascript and Java Javascript http://www.w3schools.com/js/default.asp http://bit.ly/JavaScriptDefinitive Java http://bit.ly/HeadFirstJava
  • 49. Test Server - Get one Typical Lotus Client development can get away with “testing” on a production server Doing that with Xpages...
  • 50. Sample applications - get some Download applications and dig through them to see how they were created Frameworks on OpenNTF Matt White and Tim Clark’s Show and Tell sample app
  • 51. Quick Tip Turn on “Select controls dialog box”
  • 52. Quick Tip Visible versus Hide When
  • 53. Quick Tip Upgrade whenever possible
  • 54. Quick Tip Learn Eclipse
  • 55. Resources http://xpages101.net/ http://notesin9.com/ Wikis - see earlier slide http://xpag.es/?cheatsheet PlanetLotus.org OpenNTF.org TLCC.com http://bit.ly/fIlpHn - all the bit.ly links bundled
  • 57. Kathy Brown How to contact me: •E-mail: kathy@runningnotes.net •Twitter: kjbrown13 or NotesDevTips •My Website: http://runningnotes.net The Consultant in your Pocket webcast series: find us at http://consultantinyourpocket.com