SlideShare a Scribd company logo
1 of 32
“ Supersize Me !”   - How I grew from a mere Lotuscript developer to become an XPager Peter May Domino Notes Applications Manchester May 2011
Agenda ,[object Object]
How the pain was eased
A brief overview of the application (Demo)
How some key challenges were solved
Things to take away.
Background ,[object Object]
Second group in Oz with Comp. Sci. (Hons)
A choice between IBM & Rio Tinto
Became a consultant in 1998
Notes Developer since 4.0
Advanced certification in 5, 6, 7, & 8
The Project ,[object Object]
Travel Requests
Timesheet approval
Customer Invoicing
Oracle Financials
IT Factory databases
GMs use iPads
Extension Library Prototype
Help Grandpa Paul ! ,[object Object]
Copenhagen 2010
Paul & Russ for 3 days ,[object Object]
Cut your teeth on something small !!
Where to start
The best place to start - XPages.info
 
Project Databases Travel Request & Monthly Reports Open Log Archive Orders Invoices Customers Staff Projects Timesheets XPages
Scope Variables  (beforePageLoad event) synchronized(applicationScope){ if (!applicationScope.containsKey("staffDbName")) { var pDoc:NotesDocument = database.getProfileDocument ("profile_AppConfig",""); if (pDoc) { applicationScope.staffDbName  = pDoc.getItemValueString ("cfg_StaffDbName");   applicationScope.ordersDbName  = pDoc.getItemValueString ("cfg_OrdersDbName"); }}} sessionScope.isAdmin  = context.getUser().getRoles(). contains('[TravelManager]');
Demo
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Key Challenges ,[object Object]

More Related Content

Similar to Supersize me

Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Roel Hartman
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileChris Toohey
 
Itemscript, a specification for RESTful JSON integration
Itemscript, a specification for RESTful JSON integrationItemscript, a specification for RESTful JSON integration
Itemscript, a specification for RESTful JSON integration{item:foo}
 
Building Robust Applications with Dynamic Visualforce
Building Robust Applications with Dynamic Visualforce Building Robust Applications with Dynamic Visualforce
Building Robust Applications with Dynamic Visualforce vraopolisetti
 
Website Integration with QuickBase - Joshua McGinnis
Website Integration with QuickBase - Joshua McGinnisWebsite Integration with QuickBase - Joshua McGinnis
Website Integration with QuickBase - Joshua McGinnisQuickBase, Inc.
 
Evolutionary db development
Evolutionary db development Evolutionary db development
Evolutionary db development Open Party
 
Advisor Jumpstart: JavaScript
Advisor Jumpstart: JavaScriptAdvisor Jumpstart: JavaScript
Advisor Jumpstart: JavaScriptdominion
 
C:\fakepath\sps ppt portfolio lalitha1
C:\fakepath\sps ppt portfolio lalitha1C:\fakepath\sps ppt portfolio lalitha1
C:\fakepath\sps ppt portfolio lalitha1LalithaMeka
 
Aug Xml Net Forum Dynamics Integration
Aug Xml Net Forum Dynamics IntegrationAug Xml Net Forum Dynamics Integration
Aug Xml Net Forum Dynamics IntegrationMariAnne Woehrle
 
Web Security Mistakes: Trusting The Client
Web Security Mistakes: Trusting The ClientWeb Security Mistakes: Trusting The Client
Web Security Mistakes: Trusting The Clientgrutz
 
Component and Event-Driven Architectures in PHP
Component and Event-Driven Architectures in PHPComponent and Event-Driven Architectures in PHP
Component and Event-Driven Architectures in PHPStephan Schmidt
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]Chris Toohey
 
Migration testing framework
Migration testing frameworkMigration testing framework
Migration testing frameworkIndicThreads
 
Introduction To Lamp
Introduction To LampIntroduction To Lamp
Introduction To LampAmzad Hossain
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSCarol McDonald
 
Lerman Vvs14 Ef Tips And Tricks
Lerman Vvs14  Ef Tips And TricksLerman Vvs14  Ef Tips And Tricks
Lerman Vvs14 Ef Tips And TricksJulie Lerman
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummiesdreamforce2006
 

Similar to Supersize me (20)

Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for Mobile
 
Itemscript, a specification for RESTful JSON integration
Itemscript, a specification for RESTful JSON integrationItemscript, a specification for RESTful JSON integration
Itemscript, a specification for RESTful JSON integration
 
Building Robust Applications with Dynamic Visualforce
Building Robust Applications with Dynamic Visualforce Building Robust Applications with Dynamic Visualforce
Building Robust Applications with Dynamic Visualforce
 
Website Integration with QuickBase - Joshua McGinnis
Website Integration with QuickBase - Joshua McGinnisWebsite Integration with QuickBase - Joshua McGinnis
Website Integration with QuickBase - Joshua McGinnis
 
Evolutionary db development
Evolutionary db development Evolutionary db development
Evolutionary db development
 
Advisor Jumpstart: JavaScript
Advisor Jumpstart: JavaScriptAdvisor Jumpstart: JavaScript
Advisor Jumpstart: JavaScript
 
C:\fakepath\sps ppt portfolio lalitha1
C:\fakepath\sps ppt portfolio lalitha1C:\fakepath\sps ppt portfolio lalitha1
C:\fakepath\sps ppt portfolio lalitha1
 
Hacking with YUI
Hacking with YUIHacking with YUI
Hacking with YUI
 
Aug Xml Net Forum Dynamics Integration
Aug Xml Net Forum Dynamics IntegrationAug Xml Net Forum Dynamics Integration
Aug Xml Net Forum Dynamics Integration
 
Web Security Mistakes: Trusting The Client
Web Security Mistakes: Trusting The ClientWeb Security Mistakes: Trusting The Client
Web Security Mistakes: Trusting The Client
 
Component and Event-Driven Architectures in PHP
Component and Event-Driven Architectures in PHPComponent and Event-Driven Architectures in PHP
Component and Event-Driven Architectures in PHP
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
 
Migration testing framework
Migration testing frameworkMigration testing framework
Migration testing framework
 
RCML-DSL
RCML-DSLRCML-DSL
RCML-DSL
 
Introduction To Lamp
Introduction To LampIntroduction To Lamp
Introduction To Lamp
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WS
 
Lerman Vvs14 Ef Tips And Tricks
Lerman Vvs14  Ef Tips And TricksLerman Vvs14  Ef Tips And Tricks
Lerman Vvs14 Ef Tips And Tricks
 
Drools BeJUG 2010
Drools BeJUG 2010Drools BeJUG 2010
Drools BeJUG 2010
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummies
 

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 uklugdominion
 
iOS enterprise
iOS enterpriseiOS enterprise
iOS enterprisedominion
 
cloud session uklug
cloud session uklugcloud session uklug
cloud session uklugdominion
 
Uklug 2011 administrator development synergy
Uklug 2011 administrator development synergyUklug 2011 administrator development synergy
Uklug 2011 administrator development synergydominion
 
Uklug 2011 client management
Uklug 2011 client managementUklug 2011 client management
Uklug 2011 client managementdominion
 
JavaScript blast
JavaScript blastJavaScript blast
JavaScript blastdominion
 
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 Notesdominion
 
Taking themes to the next level
Taking themes to the next levelTaking themes to the next level
Taking themes to the next leveldominion
 
Aussie outback
Aussie outbackAussie outback
Aussie outbackdominion
 
Learning to run
Learning to runLearning to run
Learning to rundominion
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension librarydominion
 
Abb presentation uklug
Abb presentation uklugAbb presentation uklug
Abb presentation uklugdominion
 
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.0dominion
 
Domino testing presentation
Domino testing presentationDomino testing presentation
Domino testing presentationdominion
 
Composite applications tutorial
Composite applications tutorialComposite applications tutorial
Composite applications tutorialdominion
 
Maximizing application performance
Maximizing application performanceMaximizing application performance
Maximizing application performancedominion
 
wcm domino
wcm dominowcm domino
wcm dominodominion
 
leverage dxl
leverage dxlleverage dxl
leverage dxldominion
 

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
 
JavaScript blast
JavaScript blastJavaScript blast
JavaScript blast
 
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
 
Aussie outback
Aussie outbackAussie outback
Aussie outback
 
Learning to run
Learning to runLearning to run
Learning to run
 
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
 
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
 
Domino testing presentation
Domino testing presentationDomino testing presentation
Domino testing presentation
 
Composite applications tutorial
Composite applications tutorialComposite applications tutorial
Composite applications tutorial
 
Maximizing application performance
Maximizing application performanceMaximizing application performance
Maximizing application performance
 
wcm domino
wcm dominowcm domino
wcm domino
 
leverage dxl
leverage dxlleverage dxl
leverage dxl
 

Recently uploaded

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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Supersize me

  • 1. “ Supersize Me !” - How I grew from a mere Lotuscript developer to become an XPager Peter May Domino Notes Applications Manchester May 2011
  • 2.
  • 3. How the pain was eased
  • 4. A brief overview of the application (Demo)
  • 5. How some key challenges were solved
  • 7.
  • 8. Second group in Oz with Comp. Sci. (Hons)
  • 9. A choice between IBM & Rio Tinto
  • 13.
  • 21.
  • 23.
  • 24. Cut your teeth on something small !!
  • 26. The best place to start - XPages.info
  • 27.  
  • 28. Project Databases Travel Request & Monthly Reports Open Log Archive Orders Invoices Customers Staff Projects Timesheets XPages
  • 29. Scope Variables (beforePageLoad event) synchronized(applicationScope){ if (!applicationScope.containsKey("staffDbName")) { var pDoc:NotesDocument = database.getProfileDocument ("profile_AppConfig",""); if (pDoc) { applicationScope.staffDbName = pDoc.getItemValueString ("cfg_StaffDbName"); applicationScope.ordersDbName = pDoc.getItemValueString ("cfg_OrdersDbName"); }}} sessionScope.isAdmin = context.getUser().getRoles(). contains('[TravelManager]');
  • 30. Demo
  • 31.
  • 32.
  • 33. Dynamic Column Totals in Views & Repeat Controls
  • 36. SSJS creation of PDF with iText
  • 37. Download control from a different database
  • 40. Email a doclink SSJS var body = memo.createMIMEEntity(); var stream = session.createStream(); stream.writeText(info); body.setContentFromText(stream, &quot;text/html; charset=iso-8859-1&quot;, 0); var info = msg + &quot;<br /><br /> <a href=' &quot; +applicationScope.surl + &quot;/apps/travelrequests.nsf/ xProposal.xsp?databaseName= &quot;+applicationScope.linkServer+&quot;!!&quot;+ applicationScope.proposalsDbName+&quot; &documentId= &quot;+ doc.getUniversalID()+&quot; &action=openDocument &content= docs_form '> Open Link </a> &quot;;
  • 41. Firebug to view the Source
  • 42. var fcast = 0; var i = 0; var ids = &quot;#{id:comboBox1}&quot;.split(&quot;comboBox1&quot;)[0]; while (dojo.byId(ids+&quot;repeat1:&quot;+i+&quot;:inputText3&quot;)) { var it3= dojo.byId(ids+&quot;repeat1:&quot;+i+&quot;:inputText3&quot;).innerHTML; it3 = it3.replace(&quot;$&quot;,&quot;&quot;).replace(/,/gi,&quot;&quot;); fcast = fcast + parseFloat(it3); i++; } var tot1 = Math.round(fcast*Math.pow(10,2))/Math.pow(10,2); tot = formatCurrency(tot1); dojo.byId(ids+&quot;computedField1&quot;).innerHTML=&quot;$&quot;+tot; Dynamic column totals CSJS
  • 43. Adding Totals to View Columns <xp:viewPanel rows=&quot;100&quot; id=&quot;viewPanel1&quot; var=&quot;rowData&quot;> <xp:this.facets> <xp:panel xp:key=&quot;footer&quot; id=&quot;totals1&quot;> <xp:tr> <xp:td colspan=&quot;7&quot;></xp:td> <xp:td> <xp:text escape=&quot;true&quot; id=&quot;computedField1&quot;> </xp:td> </xp:tr> </xp:panel> </xp:this.facets>
  • 44. Memory Management in XPages var dc:NotesDocumentCollection = doc.getResponses(); var rdoc:NotesDocument = dc.getFirstDocument(); while (rdoc) { //do something with rdoc var nextdoc:NotesDocument = dc.getNextDocument (rdoc); rdoc.recycle(); var rdoc = nextdoc; } dc.recycle(); rdoc = dc.getNextDocument(rdoc); }
  • 45.
  • 46. Export to Excel - SSJS var exCon = facesContext.getExternalContext(); var writer = facesContext.getResponseWriter(); var response = exCon.getResponse(); response.setContentType(&quot;application/csv-tab-delimited-table;charset=utf-8&quot;); response.setHeader(&quot;Cache-Control&quot;, &quot;no-cache&quot;); response.setHeader(&quot;Content-Disposition&quot;, &quot;attachment; filename=amp;quot;export.xlsamp;quot;&quot;); continued . . .
  • 47. Excel Export (SSJS cont.) s = &quot;<html><head><meta http-equiv=amp;quot;Content-Typeamp;quot; content=amp;quot;text/html;charset=utf-8amp;quot;/></head> <body><table><tr>&quot;; writer.write(s+&quot;&quot;); [put your html here] s = &quot;</tr></table></body></html>&quot;; writer.write(s); writer.endDocument();
  • 48.
  • 49. Write a SSJS function to create the PDF using this template. Window Show Eclipse Views Other Package Explorer
  • 50. SSJS function for PDF generation //1. Load the java packages importPackage(com.itextpdf); importPackage(com.itextpdf.text); importPackage(com.itextpdf.text.pdf); importPackage(com.itextpdf.text.pdf.fonts); importPackage(java.io);
  • 51. 2. Initialise & get the template var theDirectory= session.getEnvironmentString(&quot;Directory&quot;,true); var reader = new com.itextpdf.text.pdf.PdfReader (theDirectory + &quot;/TaxInvoice.pdf&quot;); var fileOut = new java.io.FileOutputStream(filename); var stamper = new com.itextpdf.text.pdf.PdfStamper(reader, fileOut); var canvas = stamper.getOverContent(1);
  • 52. 3. Embed your fonts var arial = new BaseFont.createFont(&quot;c:/windows/fonts/arial.ttf&quot;, BaseFont.WINANSI, BaseFont.EMBEDDED); var arialbd = new BaseFont.createFont(&quot;c:/windows/fonts/arialbd.ttf&quot;, BaseFont.WINANSI, BaseFont.EMBEDDED); var NORMAL = new Font(arial,10); var BOLD = new Font(arialbd,10); var BOLD11 = new Font(arialbd,11); var BOLD12 = new Font(arialbd,12);
  • 53. 4. Create and place your data var client = new Phrase(doc.getItemValueString(&quot;Client&quot;),NORMAL); ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, client, 65, 670, 0); var lcost = new Phrase(@Text(resp.getItemValueDouble(&quot;Cost&quot;),&quot;C,&quot;), BOLD11); ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, lcost, 563, 533 - (i*44), 0);
  • 54. 5.Close and attach stamper.close(); fileOut.close(); //attach the pdf var rtitem:NotesRichTextItem= doc.createRichTextItem(&quot;Invoice&quot;); rtitem.embedObject(NotesEmbeddedObject.EMBED_ATTACHMENT, &quot;&quot;, filename, null);
  • 55. Download Control fix var serv = session.getHttpURL().split(&quot;?&quot;)[0]; if (!@IsNewDoc()) {return serv + &quot;/&quot; + sessionScope.invoiceDbName+ &quot;/0/&quot; + document1.getDocument().getUniversalID() + &quot;$FILE/&quot;+ rowData.getName(); } else {return &quot;#&quot;;} if (@ClientType()==&quot;Notes&quot;) return &quot;/.ibmmodres/&quot; + &quot;domino/OpenAttachment/&quot;+ database.getServer() + &quot;!!&quot;+sessionScope.invoiceDbName + &quot;/&quot;+document1.getDocument().getUniversalID() + &quot;/attachment/&quot;+rowData.getName();
  • 56. Meta tags for iPhone/iPad <meta name=&quot;viewport&quot; content=&quot;width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;&quot; /> <meta name=&quot;apple-mobile-web-app-capable&quot; content=&quot;yes&quot; /> Mark Hughes: www-10.lotus.com/ldd/ddwiki.nsf/dx/X-Pages_iPhone_ Application_Tutorial
  • 57. Use of OpenLog for Error Handling import OpenLogXPages; function createAuditRecord() { try { //<some code to run> } catch(e) { requestScope.errMessage = &quot;Error: &quot; + e.toString(); msg = &quot;createAuditRecord Error: &quot; + e.toString(); log.logError(msg, SEVERITY_HIGH, e.toString(), null, &quot;serverSide&quot;, &quot;createAuditRecord&quot;, null, doc); } } Julian Robichaux & Rob McDonagh
  • 58.
  • 59. Javascript is case-Sensitive
  • 60. Brackets are required ()
  • 61. You're not on your own
  • 63. Have confidence in yourself