notes til xpage på 1 time

15
Notes til XPage Hvordan en standard Notes database kan forvandles til en XPage på 60 minutter … Jakob Majkilde

Upload: jakob-majkilde

Post on 28-Nov-2014

1.672 views

Category:

Technology


2 download

DESCRIPTION

Præsentation givet på Dannotes.dk seminar den 5. maj 2012

TRANSCRIPT

Page 1: Notes til XPage på 1 time

Notes til XPageHvordan en standard Notes database kan forvandles til en XPage på 60 minutter …

Jakob Majkilde

Page 2: Notes til XPage på 1 time

Indledning

• Standard Notes database• Få forms• Felter: Names, Dates, RichText etc. samt validering• Mange views• Lotus Script• Full text søgning

Page 3: Notes til XPage på 1 time

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)

Page 4: Notes til XPage på 1 time

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

Page 5: Notes til XPage på 1 time

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.

Page 6: Notes til XPage på 1 time

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” )

Page 7: Notes til XPage på 1 time

Navigering

Page 8: Notes til XPage på 1 time

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://frostill

ic.us/f.nsf/posts/2

74

Page 9: Notes til XPage på 1 time

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’

Page 10: Notes til XPage på 1 time

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>

Page 11: Notes til XPage på 1 time

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

Page 12: Notes til XPage på 1 time

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));}

Page 13: Notes til XPage på 1 time

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); }

});

Page 14: Notes til XPage på 1 time

• 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.

Page 15: Notes til XPage på 1 time

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.