Post on 23-Feb-2016
description
Notes til XPageHvordan en standard Notes database kan forvandles til en XPage på 60 minutter …
Jakob Majkilde
Indledning
• Standard Notes database• Få forms• Felter: Names, Dates, RichText etc. samt validering• Mange views• Lotus Script• Full text søgning
Beslutninger
• 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)
Kom godt i gang
• 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
Layout
• 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.
Navigering
• 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
Dynamic View
• É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
Cool Customizer Bean Sample:
http://frostilli
c.us/f.nsf/posts/2
74
Dynamic Form
• 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’
Søgning
• 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.getUrlParameter("query")}]]></xp:this.search>
Lotus Script
• 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 Agenter
• Kald en Lotus Script agent fra QuerySaveDocument eller PostOpenDocument event
• Fra Lotus Script agenten:• Set doc = session.DocumentContext
var agentName:String = ”My Agent Name";var agent:NotesAgent = database.getAgent(agentName);if (agent != null) { agent.runWithDocumentContext(currentDocument.getDocument(true));}
Lotus Script via AJAX
• Ajax kald med Dojo, f.eks. fra en knap
• http://dojotoolkit.org/reference-guide/1.6/dojo/xhrGet.html
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); }
});
• 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.
Spørgsmål?
• 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.