SlideShare a Scribd company logo
1




       Learning To Run
XPages for Lotus Notes Client Developers




                           Presenter: Kathy Brown
Who am I
• Kathy Brown
  • Lotus Notes Developer, primarily for the Notes client, until recently
  • Co-author of the Lotus User Group Notes Developer Tips Newsletter
  • Speaker at Lotusphere and various 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
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 combine 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 data and UI are separate, we need 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 source
   • 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 (SSJS)
     • Example:
     database.getView(“movies”).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
Properties
Core Controls
What’s with those “group” controls?
Something familiar*
 •   Edit Box
 •   Rich Text
 •   Multiline Edit Box
 •   List Box
 •   Combo Box




 * Sort of
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 tab 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
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 place controls inside it (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 on another Xpage
 •   Table - we all know about this one!
 •   View - kind of like an embedded view, but better
 •   Tabbed Panel - multiple panels with...wait for it...tabs!
 •   Section - we know about these, 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 for footers and 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
 @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
  @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!
• @UserName() - needs those parentheses!
@Name in Help
Server Side Javascript (SSJS)
 • Server side Javascript is not LotusScript
 • BUT it is close enough to fool you
      var someValue = entry.getColumnValues()[3]
 • Get a map
      http://bit.ly/XpagesMap
 • Go green!
      http://bit.ly/Recycle1
      http://bit.ly/Recycle2
Xpages Domino Object Map
Close...
But Not Quite
Scoped Variables
 •   applicationScope
 •   sessionScope
 •   viewScope
 •   requestScope
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




  ✴Start with a framework
Firebug
 • Use it
Where To Get Help
 • http://www-10.lotus.com/ldd/ddwiki.nsf
 • http://www-10.lotus.com/ldd/ddwiki.nsf/dx/
   NotesDocumentCollection_sample_JavaScript_code_for_XPages
 • Help files not so helpful
Quick Tip
 • Create different search scopes for the not-so-helpful help file
Learn Javascript and Java
 • Javascript
   • http://www.w3schools.com/js/default.asp
   • http://bit.ly/JavaScriptDefinitive
 • Java
   • http://bit.ly/HeadFirstJava
   • http://www.javavideotutes.com/
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
 • Turn off Build Automatically
Quick Tip
Quick Tips
 • Upgrade whenever possible
 • Learn Eclipse
Resources
•   http://xpages101.net
•   http://notesin9.com
•   http://xpag.es/?cheatsheet
•   http://planetlotus.org
•   http://openntf.org
•   http://tlcc.com
•   http://ntf.gbs.com/nathan/escape.nsf/d6plinks/NTFN-8GP6RP
THANK YOU
• kathy@runningnotes.net
• @RunningKathy or @NotesDevTips
• http://runningnotes.net

More Related Content

What's hot

Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An Introduction
Thorsten Kamann
 
Documenting from the Trenches
Documenting from the TrenchesDocumenting from the Trenches
Documenting from the Trenches
Xavier Noria
 
HTML 5 Step By Step - Ebook
HTML 5 Step By Step - EbookHTML 5 Step By Step - Ebook
HTML 5 Step By Step - Ebook
Scottperrone
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom Tags
IMC Institute
 
Html 5 in a big nutshell
Html 5 in a big nutshellHtml 5 in a big nutshell
Html 5 in a big nutshell
Lennart Schoors
 
ePUB 3 and Publishing e-books
ePUB 3 and Publishing e-booksePUB 3 and Publishing e-books
ePUB 3 and Publishing e-books
Kerem Karatal
 
Wt unit 6 ppts web services
Wt unit 6 ppts web servicesWt unit 6 ppts web services
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
PUNE VIDYARTHI GRIHA'S COLLEGE OF ENGINEERING, NASHIK
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresher
Ivano Malavolta
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
Thorsten Kamann
 
Introduction to Html5
Introduction to Html5Introduction to Html5
Introduction to Html5
www.netgains.org
 
Expression Language in JSP
Expression Language in JSPExpression Language in JSP
Expression Language in JSP
corneliuskoo
 
[DSBW Spring 2009] Unit 06: Conallen's Web Application Extension for UML (WAE2)
[DSBW Spring 2009] Unit 06: Conallen's Web Application Extension for UML (WAE2)[DSBW Spring 2009] Unit 06: Conallen's Web Application Extension for UML (WAE2)
[DSBW Spring 2009] Unit 06: Conallen's Web Application Extension for UML (WAE2)
Carles Farré
 
Abstracting functionality with centralised content
Abstracting functionality with centralised contentAbstracting functionality with centralised content
Abstracting functionality with centralised content
Michael Peacock
 
Frontend for developers
Frontend for developersFrontend for developers
Frontend for developers
Hernan Mammana
 
JSP Standart Tag Lİbrary - JSTL
JSP Standart Tag Lİbrary - JSTLJSP Standart Tag Lİbrary - JSTL
JSP Standart Tag Lİbrary - JSTL
seleciii44
 
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component DevelopmentEVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
Evolve The Adobe Digital Marketing Community
 
Config management
Config managementConfig management
Config management
Alexei Goja
 
Intoduction to php web services and json
Intoduction to php  web services and jsonIntoduction to php  web services and json
Intoduction to php web services and json
baabtra.com - No. 1 supplier of quality freshers
 
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
Pierre Sudron
 

What's hot (20)

Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An Introduction
 
Documenting from the Trenches
Documenting from the TrenchesDocumenting from the Trenches
Documenting from the Trenches
 
HTML 5 Step By Step - Ebook
HTML 5 Step By Step - EbookHTML 5 Step By Step - Ebook
HTML 5 Step By Step - Ebook
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom Tags
 
Html 5 in a big nutshell
Html 5 in a big nutshellHtml 5 in a big nutshell
Html 5 in a big nutshell
 
ePUB 3 and Publishing e-books
ePUB 3 and Publishing e-booksePUB 3 and Publishing e-books
ePUB 3 and Publishing e-books
 
Wt unit 6 ppts web services
Wt unit 6 ppts web servicesWt unit 6 ppts web services
Wt unit 6 ppts web services
 
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresher
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
 
Introduction to Html5
Introduction to Html5Introduction to Html5
Introduction to Html5
 
Expression Language in JSP
Expression Language in JSPExpression Language in JSP
Expression Language in JSP
 
[DSBW Spring 2009] Unit 06: Conallen's Web Application Extension for UML (WAE2)
[DSBW Spring 2009] Unit 06: Conallen's Web Application Extension for UML (WAE2)[DSBW Spring 2009] Unit 06: Conallen's Web Application Extension for UML (WAE2)
[DSBW Spring 2009] Unit 06: Conallen's Web Application Extension for UML (WAE2)
 
Abstracting functionality with centralised content
Abstracting functionality with centralised contentAbstracting functionality with centralised content
Abstracting functionality with centralised content
 
Frontend for developers
Frontend for developersFrontend for developers
Frontend for developers
 
JSP Standart Tag Lİbrary - JSTL
JSP Standart Tag Lİbrary - JSTLJSP Standart Tag Lİbrary - JSTL
JSP Standart Tag Lİbrary - JSTL
 
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component DevelopmentEVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
 
Config management
Config managementConfig management
Config management
 
Intoduction to php web services and json
Intoduction to php  web services and jsonIntoduction to php  web services and json
Intoduction to php web services and json
 
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
 

Viewers also liked

Lotusphere 2007AD302 WHAT’S NEW IN THE IBM LOTUS DOMINO WEB SERVER
Lotusphere 2007AD302 WHAT’S NEW IN THE IBM LOTUS DOMINO WEB SERVERLotusphere 2007AD302 WHAT’S NEW IN THE IBM LOTUS DOMINO WEB SERVER
Lotusphere 2007AD302 WHAT’S NEW IN THE IBM LOTUS DOMINO WEB SERVER
dominion
 
Maximizing application performance
Maximizing application performanceMaximizing application performance
Maximizing application performance
dominion
 
The Top 30 LotusScript Development Tips
The Top 30 LotusScript Development TipsThe Top 30 LotusScript Development Tips
The Top 30 LotusScript Development Tips
dominion
 
Uklug2011.lotus.on.linux.report.technical.edition.v1.0
Uklug2011.lotus.on.linux.report.technical.edition.v1.0Uklug2011.lotus.on.linux.report.technical.edition.v1.0
Uklug2011.lotus.on.linux.report.technical.edition.v1.0
dominion
 
real world web services
real world web servicesreal world web services
real world web services
dominion
 
leverage dxl
leverage dxlleverage dxl
leverage dxl
dominion
 
Lotusphere 2007 BP312: Trap and Manage Your Errors Easily, Efficiently and Re...
Lotusphere 2007 BP312: Trap and Manage Your Errors Easily, Efficiently and Re...Lotusphere 2007 BP312: Trap and Manage Your Errors Easily, Efficiently and Re...
Lotusphere 2007 BP312: Trap and Manage Your Errors Easily, Efficiently and Re...
dominion
 
Domino Vs Exchange App Dev
Domino Vs Exchange App DevDomino Vs Exchange App Dev
Domino Vs Exchange App Dev
dominion
 
JavaScript blast
JavaScript blastJavaScript blast
JavaScript blast
dominion
 

Viewers also liked (9)

Lotusphere 2007AD302 WHAT’S NEW IN THE IBM LOTUS DOMINO WEB SERVER
Lotusphere 2007AD302 WHAT’S NEW IN THE IBM LOTUS DOMINO WEB SERVERLotusphere 2007AD302 WHAT’S NEW IN THE IBM LOTUS DOMINO WEB SERVER
Lotusphere 2007AD302 WHAT’S NEW IN THE IBM LOTUS DOMINO WEB SERVER
 
Maximizing application performance
Maximizing application performanceMaximizing application performance
Maximizing application performance
 
The Top 30 LotusScript Development Tips
The Top 30 LotusScript Development TipsThe Top 30 LotusScript Development Tips
The Top 30 LotusScript Development Tips
 
Uklug2011.lotus.on.linux.report.technical.edition.v1.0
Uklug2011.lotus.on.linux.report.technical.edition.v1.0Uklug2011.lotus.on.linux.report.technical.edition.v1.0
Uklug2011.lotus.on.linux.report.technical.edition.v1.0
 
real world web services
real world web servicesreal world web services
real world web services
 
leverage dxl
leverage dxlleverage dxl
leverage dxl
 
Lotusphere 2007 BP312: Trap and Manage Your Errors Easily, Efficiently and Re...
Lotusphere 2007 BP312: Trap and Manage Your Errors Easily, Efficiently and Re...Lotusphere 2007 BP312: Trap and Manage Your Errors Easily, Efficiently and Re...
Lotusphere 2007 BP312: Trap and Manage Your Errors Easily, Efficiently and Re...
 
Domino Vs Exchange App Dev
Domino Vs Exchange App DevDomino Vs Exchange App Dev
Domino Vs Exchange App Dev
 
JavaScript blast
JavaScript blastJavaScript blast
JavaScript blast
 

Similar to Learning to run

Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHP
Oscar Merida
 
Refactoring
RefactoringRefactoring
Refactoring
Artem Tabalin
 
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
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentation
Oleksii Usyk
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
Leslie Doherty
 
presentation
presentationpresentation
presentation
tutorialsruby
 
Java development with the dynamo framework
Java development with the dynamo frameworkJava development with the dynamo framework
Java development with the dynamo framework
Patrick Deenen
 
Rename with Confidence – Building Dynamic FileMaker Systems
Rename with Confidence – Building Dynamic FileMaker SystemsRename with Confidence – Building Dynamic FileMaker Systems
Rename with Confidence – Building Dynamic FileMaker Systems
DB Services
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
reedmaniac
 
presentation
presentationpresentation
presentation
tutorialsruby
 
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSONAn introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
Syed Moosa Kaleem
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
Mark Rackley
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS Backend
Laurent Cerveau
 
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineGDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App Engine
Yared Ayalew
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
Michael Pirnat
 
Awesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescriptAwesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescript
Amir Barylko
 
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EEJavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
Rodrigo Cândido da Silva
 
Lessons from the Trenches - Building Enterprise Applications with RavenDB
Lessons from the Trenches - Building Enterprise Applications with RavenDBLessons from the Trenches - Building Enterprise Applications with RavenDB
Lessons from the Trenches - Building Enterprise Applications with RavenDB
Oren Eini
 
Customizing ERModernLook Applications
Customizing ERModernLook ApplicationsCustomizing ERModernLook Applications
Customizing ERModernLook Applications
WO Community
 
Intro to .NET for Government Developers
Intro to .NET for Government DevelopersIntro to .NET for Government Developers
Intro to .NET for Government Developers
Frank La Vigne
 

Similar to Learning to run (20)

Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHP
 
Refactoring
RefactoringRefactoring
Refactoring
 
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 ...
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentation
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
presentation
presentationpresentation
presentation
 
Java development with the dynamo framework
Java development with the dynamo frameworkJava development with the dynamo framework
Java development with the dynamo framework
 
Rename with Confidence – Building Dynamic FileMaker Systems
Rename with Confidence – Building Dynamic FileMaker SystemsRename with Confidence – Building Dynamic FileMaker Systems
Rename with Confidence – Building Dynamic FileMaker Systems
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
presentation
presentationpresentation
presentation
 
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSONAn introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS Backend
 
GDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App EngineGDG Addis - An Introduction to Django and App Engine
GDG Addis - An Introduction to Django and App Engine
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
 
Awesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescriptAwesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescript
 
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EEJavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
JavaOne 2014 - Supporting Multi-tenancy Applications with Java EE
 
Lessons from the Trenches - Building Enterprise Applications with RavenDB
Lessons from the Trenches - Building Enterprise Applications with RavenDBLessons from the Trenches - Building Enterprise Applications with RavenDB
Lessons from the Trenches - Building Enterprise Applications with RavenDB
 
Customizing ERModernLook Applications
Customizing ERModernLook ApplicationsCustomizing ERModernLook Applications
Customizing ERModernLook Applications
 
Intro to .NET for Government Developers
Intro to .NET for Government DevelopersIntro to .NET for Government Developers
Intro to .NET for Government Developers
 

More from dominion

What is a itil and how does it relate to your collaborative environment uklug
What is a itil and how does it relate to your collaborative environment   uklugWhat is a itil and how does it relate to your collaborative environment   uklug
What is a itil and how does it relate to your collaborative environment uklug
dominion
 
iOS enterprise
iOS enterpriseiOS enterprise
iOS enterprise
dominion
 
cloud session uklug
cloud session uklugcloud session uklug
cloud session uklug
dominion
 
Uklug 2011 administrator development synergy
Uklug 2011 administrator development synergyUklug 2011 administrator development synergy
Uklug 2011 administrator development synergy
dominion
 
Uklug 2011 client management
Uklug 2011 client managementUklug 2011 client management
Uklug 2011 client management
dominion
 
Populating your domino directory or any domino database with tivoli directory...
Populating your domino directory or any domino database with tivoli directory...Populating your domino directory or any domino database with tivoli directory...
Populating your domino directory or any domino database with tivoli directory...
dominion
 
Uklug2011 Know your Notes
Uklug2011 Know your NotesUklug2011 Know your Notes
Uklug2011 Know your Notes
dominion
 
Quickr
QuickrQuickr
Quickr
dominion
 
Taking themes to the next level
Taking themes to the next levelTaking themes to the next level
Taking themes to the next level
dominion
 
Supersize me
Supersize meSupersize me
Supersize me
dominion
 
Aussie outback
Aussie outbackAussie outback
Aussie outback
dominion
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension library
dominion
 
Abb presentation uklug
Abb presentation uklugAbb presentation uklug
Abb presentation uklug
dominion
 
Domino testing presentation
Domino testing presentationDomino testing presentation
Domino testing presentation
dominion
 
Composite applications tutorial
Composite applications tutorialComposite applications tutorial
Composite applications tutorial
dominion
 
Error handling in XPages
Error handling in XPagesError handling in XPages
Error handling in XPages
dominion
 
wcm domino
wcm dominowcm domino
wcm domino
dominion
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
lotus notes r851 -training
lotus notes r851 -traininglotus notes r851 -training
lotus notes r851 -training
dominion
 
Inside notes
Inside notesInside notes
Inside notes
dominion
 

More from dominion (20)

What is a itil and how does it relate to your collaborative environment uklug
What is a itil and how does it relate to your collaborative environment   uklugWhat is a itil and how does it relate to your collaborative environment   uklug
What is a itil and how does it relate to your collaborative environment uklug
 
iOS enterprise
iOS enterpriseiOS enterprise
iOS enterprise
 
cloud session uklug
cloud session uklugcloud session uklug
cloud session uklug
 
Uklug 2011 administrator development synergy
Uklug 2011 administrator development synergyUklug 2011 administrator development synergy
Uklug 2011 administrator development synergy
 
Uklug 2011 client management
Uklug 2011 client managementUklug 2011 client management
Uklug 2011 client management
 
Populating your domino directory or any domino database with tivoli directory...
Populating your domino directory or any domino database with tivoli directory...Populating your domino directory or any domino database with tivoli directory...
Populating your domino directory or any domino database with tivoli directory...
 
Uklug2011 Know your Notes
Uklug2011 Know your NotesUklug2011 Know your Notes
Uklug2011 Know your Notes
 
Quickr
QuickrQuickr
Quickr
 
Taking themes to the next level
Taking themes to the next levelTaking themes to the next level
Taking themes to the next level
 
Supersize me
Supersize meSupersize me
Supersize me
 
Aussie outback
Aussie outbackAussie outback
Aussie outback
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension library
 
Abb presentation uklug
Abb presentation uklugAbb presentation uklug
Abb presentation uklug
 
Domino testing presentation
Domino testing presentationDomino testing presentation
Domino testing presentation
 
Composite applications tutorial
Composite applications tutorialComposite applications tutorial
Composite applications tutorial
 
Error handling in XPages
Error handling in XPagesError handling in XPages
Error handling in XPages
 
wcm domino
wcm dominowcm domino
wcm domino
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
lotus notes r851 -training
lotus notes r851 -traininglotus notes r851 -training
lotus notes r851 -training
 
Inside notes
Inside notesInside notes
Inside notes
 

Recently uploaded

Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 

Recently uploaded (20)

Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 

Learning to run

  • 1. 1 Learning To Run XPages for Lotus Notes Client Developers Presenter: Kathy Brown
  • 2. Who am I • Kathy Brown • Lotus Notes Developer, primarily for the Notes client, until recently • Co-author of the Lotus User Group Notes Developer Tips Newsletter • Speaker at Lotusphere and various 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. Building Blocks • Forms • Views • Subforms • Framesets • Outlines • Pages
  • 6. Building Blocks • XPages • Core Controls • Container Controls • Custom Controls
  • 7. Separation of Data and UI • Traditional Notes Dev • Forms combine 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!)
  • 8. 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
  • 9. Data Binding • Because data and UI are separate, we need 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
  • 10. Data Binding • Simple data binding • Select a source from a list, or add another source • 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 (SSJS) • Example: database.getView(“movies”).getAllDocumentsByKey(genre); • Advanced • Use expression language, scoped variable, component parameter or custom code for data binding
  • 11. DDE
  • 12. Quick Tip • Window --> Reset Perspective is your friend
  • 13. The Outline • Easily locate items on the Xpage • Drag & drop items to new locations
  • 14. Source • Easily change values or properties • See the Matrix
  • 18. What’s with those “group” controls?
  • 19. Something familiar* • Edit Box • Rich Text • Multiline Edit Box • List Box • Combo Box * Sort of
  • 20. 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 tab and change the “$” to “#”
  • 22. Core Controls - Label • Why use a label? • More control • More programmability
  • 23. Core Controls - Errors • Use to display ... errors
  • 24. 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
  • 25. Repeat Controls • No traditional Notes Client equivalent and that’s a good thing • A repeat control allows you place controls inside it (like Edit boxes or computed values, but also more repeat controls!) that repeat on the page
  • 26. Container Controls • Include Page - allows you to include an Xpage on another Xpage • Table - we all know about this one! • View - kind of like an embedded view, but better • Tabbed Panel - multiple panels with...wait for it...tabs! • Section - we know about these, too
  • 27. Custom Controls • Closest traditional equivalent are subforms • Create custom controls to hold other controls stored together • Can be a “create once, use multiple times for footers and headers, for example
  • 28. Quick Tip • CTRL+SHIFT+F in the source
  • 29. @Formula in Xpages • @Formula is available for use in Server Side JavaScript (SSJS) • Not all @Formula are supported in Xpages
  • 30. @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
  • 31. @Functions Not Supported in Xpages @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
  • 32. @Functions Not Supported in Xpages @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
  • 33. @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)
  • 35. @Formula Help • Help file is not very helpful! • @Name(“[CN]”, name) - needs those quotes! • @UserName() - needs those parentheses!
  • 37. Server Side Javascript (SSJS) • Server side Javascript is not LotusScript • BUT it is close enough to fool you var someValue = entry.getColumnValues()[3] • Get a map http://bit.ly/XpagesMap • Go green! http://bit.ly/Recycle1 http://bit.ly/Recycle2
  • 41. Scoped Variables • applicationScope • sessionScope • viewScope • requestScope
  • 42. Quick Tip • Turn off “Synchronize Navigator with Editor Tab”
  • 43. CSS and Themes • Roll your own or • Start with a framework* • http://bit.ly/XpageFramework • http://blueprintcss.org ✴Start with a framework
  • 45. Where To Get Help • http://www-10.lotus.com/ldd/ddwiki.nsf • http://www-10.lotus.com/ldd/ddwiki.nsf/dx/ NotesDocumentCollection_sample_JavaScript_code_for_XPages • Help files not so helpful
  • 46. Quick Tip • Create different search scopes for the not-so-helpful help file
  • 47. Learn Javascript and Java • Javascript • http://www.w3schools.com/js/default.asp • http://bit.ly/JavaScriptDefinitive • Java • http://bit.ly/HeadFirstJava • http://www.javavideotutes.com/
  • 48. Test Server - Get One • Typical Lotus Client development can get away with “testing” on a production server • Doing that with Xpages...
  • 49. 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
  • 50. Quick Tip • Turn on “Select controls dialog box”
  • 51. Quick Tip • Visible versus Hide When
  • 52. Quick Tip • Turn off Build Automatically
  • 54. Quick Tips • Upgrade whenever possible • Learn Eclipse
  • 55. Resources • http://xpages101.net • http://notesin9.com • http://xpag.es/?cheatsheet • http://planetlotus.org • http://openntf.org • http://tlcc.com • http://ntf.gbs.com/nathan/escape.nsf/d6plinks/NTFN-8GP6RP
  • 56. THANK YOU • kathy@runningnotes.net • @RunningKathy or @NotesDevTips • http://runningnotes.net