1. Notes til XPage
Hvordan en standard Notes database kan
forvandles til en XPage på 60 minutter …
Jakob Majkilde
2. • Standard Notes database
• Få forms
• Felter: Names, Dates, RichText etc. samt validering
• Mange views
• Lotus Script
• Full text søgning
Indledning
3. • OneUI
• Giver hurtigt et pænt layout
• Mulighed for genbrug af OpenNTF komponenter
• Extension Library
• Fordi det er nemmere end at gøre det selv
• Upgrade pack 1
• Supporteret af IBM
• Nemmere at installere (end OpenNTF versionen)
Beslutninger
4. • Køb bogen: XPages Extension Library: A Step-by-Step
Guide to the Next Generation of XPages Components
• Xpage Debug Toolbar fra OpenNTF installeres
• Flyt til bunden med css: div.debugToolbar {position:relative
!important;}
• Fra OpenNTF versionen af Extensions Library hentes
demo basen: XPagesExt.nsf
• Chrome eller Firebug er et must
• OpenNTF XSnippets
Kom godt i gang
5. • Lav et theme og aktivér på Application Properties
• <theme extends="oneuiv2.1_blue”
• Lav en ‘Layout’ Custom Control og indsæt en
‘Application Layout’
• Enable Drop Target på Middle Column Content Area
• Text på Title Bar beregnes: @DbTitle()
• Brug CSS – lad være med at ‘hardcode’ logo m.v.
Layout
6. • Indsæt en Navigator
• Alle links åbner samme XPage
• queryString parameter angiver hvilket view der skal vises
• Selection er ‘navnet’ på menu punktet – hvis dette matcher
Navigation Path, så bliver menupunktet vist som ‘selected’
• På Application Layout
• Navigation Path = content.getUrlParameter( ”view” )
Navigering
8. • Ét Dynamic View kan vise alle views i basen,
• CustomizerBean retter ‘fejl’ i dynamic view control:
• Åben docs i read mode i stedet for edit mode
• View name beregnes dynamisk
• Collapse all: expandLevel=1
• Pager
Dynamic View
9. • Dynamic View: Open document using XPage associated
with documents forms
• Der skal laves én XPage per form
• Launch properties på eksisterende forms skal ændres
• Alternativ: Open document using ‘form.xsp’
• På ‘form.xsp’ indsættes en ‘Computet Subform’
Dynamic Form
10. • Basen skal være Full Text Indexeret
• Aktiver ‘Search’ på Application Layout
• Page name: siden med vores Dynamic View
• Query parameter name for url:
• view=viewname&query (viewname kan være et ‘all documents
view’ eller evt. beregnes til current view)
• På Dynamic View Data sættes et search filter
• <xp:this.search><![CDATA[#{javascript:context.getUrlPara
meter("query")}]]></xp:this.search>
Søgning
11. • Lotus Script kan fint genbruges i en Xpage
• Script kode lægges i agenter
• Kaldes ved Open/Save
• Eller via Ajax kald
• Kun backend Lotus Script. UI funktioner skal kodes om i
Java Script (Dojo), f.eks. prompt eller dialogbokse
• Bedre performance fås dog med Server Side JavaScript
eller Managed Beans (Java)
• http://xpages.dk/?p=231
Lotus Script
12. • Kald en Lotus Script agent fra QuerySaveDocument eller
PostOpenDocument event
var agentName:String = ”My Agent Name";
var agent:NotesAgent = database.getAgent(agentName);
if (agent != null) {
agent.runWithDocumentContext(currentDocument.getDocument(true));
}
• Fra Lotus Script agenten:
• Set doc = session.DocumentContext
Lotus Script Agenter
13. • Ajax kald med Dojo, f.eks. fra en knap
dojo.xhrGet({
url: ”My Agent Name?openagent",
preventCache: true,
handleAs: "text",
load: function(data) {
var targetNode = dojo.byId("#{id:My Return Id}");
targetNode.value = data;
},
error: function(data) {
alert("There has been an error: " + data);
}
});
• http://dojotoolkit.org/reference-guide/1.6/dojo/xhrGet.html
Lotus Script via AJAX
14. • Default opsætning giver Full Admin Access til
alle Notes developers via SS JavaScript:
sessionAsSignerWithFullAccess.getDatabase
• Derfor bør XPage access begrænses via Server
Dokumentet – og alt kode signes inden
produktion.
15. • Du får altid svar på Notesnet.dk
• Præsentation, links, download af sample applikation på
XPages.dk
• Du er altid velkommen til at kontakte mig – se hvordan
på Majkilde.dk, hvor du også finder Lotus Script tips.
Spørgsmål?