Top Banner
Workshop xPages Thomas Adrian www.notessidan.se
23

Xpages för utvecklare

Dec 05, 2014

Download

Technology

Thomas Adrian

en presentation av xPages för utvecklare
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Xpages för utvecklare

Workshop xPages

Thomas Adrianwww.notessidan.se

Page 2: Xpages för utvecklare

Agenda

– Kunskapströskeln– Fördelar– Nackdelar– En snabb demo av notessidan.se– Demo av olika funktioner– Fika– Workshop Projektrum

● Formulär + validering och actions● Vyer

Page 3: Xpages för utvecklare

Hur jag lärt mig xPages● Läst bloggar,

planetlotus.org

● Läst dokumentationenhttp://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp

● Läst och deltagit på notes.net forum

● Chat forum #dojo

● Xpages Wiki: http://www.youatnotes.de/web/youatnotes/wiki-xpages.nsf/home.xsp

● Domino Designer Wiki: http://www-10.lotus.com/ldd/ddwiki.nsf

● http://www.jmackey.net/

● Byggt själv

Page 4: Xpages för utvecklare

Kunskapströskeln● Eclipse (Outline, Navigator, Problem, Properties, Events, controls)

● HTML

● Stylesheet / Themes

● Ajax, partial refresh

● Lotusscript/@formulas/Javascript (ev. java)

● Dojo och Dijit

● Controls (32) och Custom Controls

● Client side js (csjs)

● Server side js (ssjs)

● Globala object och Scoped variables

● JSF + navigator

Page 5: Xpages för utvecklare

Fördelar● Man behöver inte förändra befintliga applikationerna.

● Man kan bygga väldigt komplicerade applikationer utan att skriva en rad kod, man får mycket gratis. t.ex. validering och type-ahead

● Flera datakällor på samma xPage, tex. Join i en vy

● Varje kontroll är bunden till en data källa

● Lätt att göra flerspråkiga websidor

● Lätt att bygga ett ramverk med ”editable area”

● Inbyggt stöd för dojo och oneui

● En xpage behöver inte ligga i databasen där datat ligger

● Kan köras i notesklienten 8.5.1 (med klientens ECL)

Page 6: Xpages för utvecklare

Nackdelar● Många klick

● Svårt att kombinera ”egen kod” med xPage funktionalitet. tex. Egna <script></script>

● ID hanteringen är omständig<div id="view:_id1:_id13:repeat1:0:divSubject">

● En xPage kan bara generera HTML, (inte xml, json, sql etc)

● Bristfällig dokumentation

● Säkerhetsmodellen, agenter?

● All UI kod i lotusscript måste skrivas om (men det är inte på grund av xpages)

● Buggig

Page 7: Xpages för utvecklare

Verktyg för Webutveckling

● Utveckla för Firefox, testa i IE● Firefox eller Chrome● Firebug (FF tillägg)● JSView (FF tillägg)● Firebug lite (IE)● Live HTTP headers (FF tillägg)

Page 8: Xpages för utvecklare

En Xpage● Är i webläsaren kompilerad java kod som körs som en servlet

● Är bara en ”dum” html sida innan du binder kontroller och datakällor till den

● Liknar ett formulär.

● En container för att lagra controller

● Kan bindas till flera datakällor

● Kan innehålla Custom Controls

● Är JSF

● Har events för load ( typ WQO)

Page 9: Xpages för utvecklare

Custom Controls

● Liknar subformulär● Kan innehålla andra custom controls● Kan inte användas utan en xpage● Kan ta parametrar (bra om man t.ex. Vill

skapa custom controls som kan användas var som heltst, tex. Tooltip, eller Dialoger)

● Har events för load ( typ WQO)

Page 10: Xpages för utvecklare

Controlsrepeat, panels , edit box etc..

● några har event, andra inte● några kan nestlas i varandra, andra inte● Alla har sina egna egenskaper och API● Några kan man koppla till data källor, andra

inte● Man kan göra egna

Page 11: Xpages för utvecklare

Repeat Control

● Antagligen den coolaste funktionen i hela xPages , (en del tycker Editable Areas)

● Data behöver inte se ut som en tabell● I stort sett vad som helst kan repeteras● Repeat kan nestlas● Inte bara för dokument

– Arrays– Json– Multivalue fields

Page 12: Xpages för utvecklare

Exempel på egna controls

● Tooltips● Dialoger● Create PDF● Movie/Flash● Actionbar● Drop down Menu● Document history● Cloud

● Tree ● Workflow● Picture gallery● Rating● Charting● Login/Logot● Multi file upload● ....

Page 13: Xpages för utvecklare

Scoped Variablescookies på servern

● ApplicationScopeTillgänglig för alla användareTas bort efter en viss tid

● SessionScopeTillgänglig för aktuell användare

● ViewScopeTillgänglig för aktuell websida

● RequestScopeTillgänglig för aktuell request

Page 14: Xpages för utvecklare

Programmering● SSJS kräver alltid en request till servern● CSJS utförs alltid på klienten, (id konverteras av servern)● Javascript på servern SSJS

– @formulas– Dominoklasser– XSP

● Javascript på klienten CSJS- Dojo

● Java på servern med CSJS● Lotusscript/Java på servern via agenter

Page 15: Xpages för utvecklare

Notesformulär

● Traditionella Notesformulär används av xpages men bara för att definiera fält

● Xpages kräver att alla fält finns på formulären

● Ett formulär som ska accesssas av en xpage kan inte innehålla subforms

● Mitt tips är att göra ett nytt formulär som innehåller bara dom fält jag behöver i min xpage

● Använd formuläret för att dokumentera

Page 16: Xpages för utvecklare

Notesvyer

● Används för Lookups och Sortering

Page 17: Xpages för utvecklare

ID och Class● ID och Class är det man i vanliga fall använder när man

utvecklar webapplikationer● I xPages sköter Domino ID hanteringen eftersom data på en

xPage kan repeteras● Utvecklare av xpages får nöja dig med ”Class”:er

Page 18: Xpages för utvecklare

Åtkomst till ID i CSJSFör att hitta denna div

<div id="view:_id1:_id12:repeat1:0:divBody" class="docBody"></div>

använd följande som hittar alla id som slutar på divBody

dojo.query("[id$='divBody']")[0];

var div = dojo.query("[id$='divBody']")[0];dojo.toggleClass(div,"bodyhide");

Om man behöver hitta ett id på en control använd syntaxen "#{id:mittid}"

Exempel: dojo.byId("#{id:searchData}")

Resulterar i följande efter Domino konverterat id't

dojo.byId("view:_id1:searchData")

Page 19: Xpages för utvecklare

SSJS● getClientId(”button1”)

● getComponent(”repeat1”).

● getComponent(”repeat1”).getRowCount()

● getComponent(”...”).onclick=”alert('test');”

● facesContext.getExternalContext().getRequest().getRemoteAddr()

● sessionScope.put(”param”,”value”);

● sessionScope.get(”param”);

● context.redirectToPage(&quot;xstart.xsp&quot;);

● context.getLocale();

● context.getUrlParameter(&quot;post&quot;);

● var pager:com.ibm.xsp.component.xp.XspPager= getComponent(””);pager...

● GetComponent finns inte i CSJS

Page 20: Xpages för utvecklare

Xpage på olika språk

● Skapa propertyfiler för olika språk med några klick från databasen

● Exportera propertyfilerna● Skicka propertyfilerna till översättning● Importera propertyfilerna till databasen

● Obs: kräver att man har använt controller

Page 21: Xpages för utvecklare

DDE och programmeringstips● CTRL-M (öppna vy i fulläge)

● Outline ( organisera controls)

● CTRL-L x 2

● F3 (på en control markerar ”parent control”)

● All Properties på en control (visar alla egenskaper)

● print(”test”) i ssjs skriver till server console

● Aktivera debug i application properties

● Hjälpen som ett eget fönster

● Använd Alltid try/catch i SSJS

● @formulas returnerar String(ett värde) eller Array(flera värden)

● Firebug , console.log(...)

Page 22: Xpages för utvecklare

Demo

● Theme OneUI● ID hanteringen

● Panels● Repeat Control● Custom Controls● Editable Area● View Control/Pager● Partial Refresh

Page 23: Xpages för utvecklare

Demo

xpages.notessidan.se