You’re an experienced Lotus Notes developer. You’ve been doing “classic” development for years. You know LotusScript better than your native language. You know @Formula like the back of your hand. But when it comes to Xpages and Javascript, you feel like you’re learning to walk all over again. This session will cover some tips and tricks to get you up and running in Xpages. Learn how to translate what you already know, into what you need to know for Xpages. Find out where to get the information to be just as skillful at Xpages as you are with Notes client development.
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
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
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
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
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
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
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