SlideShare uma empresa Scribd logo
1 de 50
News R9 develop e XPages Tips
Daniele Grillo
GRYDAN SAS
Chi sono
Creatore Dominopoint.it
Grydan SAS
13 anni su Notes/Domino (dalla R 4.6)
Sviluppatore, Amministratore, Docente
Email d.grillo@grydan.it
Mobile +39 392.2945549
NOVITA’ R9 DEVELOP
Slide tratte da:
http://bit.ly/1aY4dJp
Novità R9 Social
 Extensions Library UP1 integrate
 SSJS Debug
 Xpages developer productivity
 New JAR Design
 XSP Proprierties Editor
 Bug fix «hight traffic» area
 Dojo 1.8
 CKEditor 3.6.3
 Redirection Control
 Xpages Social Integration Point
 XPiNC
Novità R9 - DDE
Upgrade Pack 1 nei controlli
 Su OpenNTF.org il codice ExtLib evolve più velocemente ma
nella R9 è nativo UP1 con 100+ controlli
 XSP proprierties editor nella GUI del designer
Extensions Library
 Scaricale da qui http://extlib.openntf.org/
 Deploy su Domino seguendo con UpdateSite http://ibm.co/1drFGNS
 Deploy su Domino Designer
ricordati di attivare
File  PreferencesDomino Designer
Enalbe Eclipse
N.B. nella R9 e nella UP1/UP2 8.5.3 ci sono le extlib supportate
da IBM –I rilasci più recenti sono su OpenNTF.org
SSJS Debug
 Basato su Eclipse «Remote Java Connection» protocol ed utilizzo JPDA/JDI
 Breakpoint nel code SSJS
 Il server deve avere nel NOTES.INI
– JavaEnableDebug=1
– JavascriptEnableDebug=1
– JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000
SSJS Debug
Client JS/Dojo Debug Option
 Codice JS non compresso per un miglior Debug
(Dojo è deployed con OSGi)
XPages Productivity
 Content assist
XSP Source code
 Hyperlink navigation nel source code (CTRL+click sulle risorse per aprirle
direttamente)
 Help sul mouse over nel Source code
 Palette State Saving
 Jar Design Element
 Working set migliorato (si vedono tutti)
Bug Fix e criticità risolte
Errore 500 usando Java Design Element
Problemi nel Source Control quando importi
databases con molti scipt
Fixata un problema di tool riportato nella UP1
Migliorate le Performance/memoria
nell’Xpages Editor
Fixato il builder e LS Editor (La problem View
riporta il numero corretto di linea andato in
errore per i LS)
Dojo 1.8 – CKEditor 3.6.3
 Dojo 1.8
– Dojo è attualmente alla 1.9 (poca distanza)
– Migliorato il supporto Mobile e diverse bug-fix
 CKEditor 3.6.3
– CKEditor più istanze per Xpages
– Inline Images
– Gestione Allegati
– Resize Image
– Spell Checker
– Migliore iOS gestione
Controllo Redirect
Imposta il «Form Display» ad una XPages che
contiene il redirect control
Ad esempio riscrive un URL per un rendering
Mobile
Xpages Social Integration –Send Mail
Drag & Drop per invio mail
Embedded Exprience: richiesto JSON
XPiNC – XSP.executeCommand()
 XSP.executeCommand(commandId, commandParams)
– commandId identifies the requested function
– commandParams is an object containing arbitary arg values
 Provides secure access to:
– Notes front-end functionality via NotesUIWorkspace classes
– Eclipse framework
– Custom Java code
XPiNC in Remote Execution Mode
TIPS & TRICKS XPAGES
Tips & Tricks – Demo APP
Demo onlineusername: demo
pwd: dominopoint
Metodo ExecuteOnServer
I dettagli a questo URL http://bit.ly/15kPwM7
Invoca un evento SSJS da client JS
executeOnServer(idHandler,refreshID,options)
idHandler = nome dell’event Handler
refreshId = id client da refreshare dopo l’esecuizione dell’handler
Options = parametri opzionali dell’event handler
executeOnServer code & Demo
Demo online
Dojo Toaster
Widget Dojo: dojox.widget.Toaster
Notifiche web 2.0 (duration, messaggio,
posizione)
In ascolto su un determinato canale
Scrittura messaggio con
dojo.publish("canale", ["messaggio"])
Demo online
CKEditor 3.6.3
 Free, attualmente release 4.2.1
 Cross Browsder
 API pubbliche http://bit.ly/19wzmAk
 Editor RichText
 Diverse plugin
 Personalizzabile
 Esiste da 10 anni
 Usato dai più grandi vendor: http://ckeditor.com/about/who-
is-using-ckeditor
 Iphone ha un buon supporto, e stanno lavorando su Android
CKEditor – custom inside Control
Demo online
CKEditor -XSnippets
 OpenNTF.org http://bit.ly/17WzcV5
 Focus:
 Get Object CSJS
 Add content SSJS
 Add content JS
AutoSave Custom Control
 Apro una XPages che effettua il binding ad un
NotesDocument
 Ogni X secondi al variare del contenuto di un campo
scatena Saving JS Client sfruttando ExecuteOnServer
 Come Gmail quando crei un nuovo messaggio e lo
salva automaticamente in Bozza
 Bottone per attivare e disattivare e notifiche Toaster
Demo online
AutoSave –eventHandler
Articolo su DP http://bit.ly/18OFlWi
Presente un EventHandler che effettua il
saving del documento ad esempio:
<xp:eventHandler event="autoSaveEvent" id="autoSaveDoc" submit="false">
<xp:this.action>
<xp:saveDocument />
</xp:this.action>
</xp:eventHandler>
AutoSave – CKEditor è cambiato?
function CKEDITOResubmit(idCKEDITOR){
var rte=dijit.byId(idCKEDITOR);
var txta=XSP.getElementById(idCKEDITOR+'_h');
if(!rte || !txta) return;
txta.value = rte.getValue();
var mod=XSP.getElementById(idCKEDITOR+'_mod');
mod.value=rte.isModified(txta.value);
return true;
}
AutoSave JS
function AutoSave(){
executeOnServer('autoSaveDoc',null,
{'valmode': 1,
onStart:function() {
for(var instanceName in CKEDITOR.instances) {
CKEDITOResubmit(instanceName)
}
console.log("autosave start");
},
onComplete:function() {
console.log("autosave complete")
},
onError: function() {
console.log("autosave error") }
})
}
AutoSave- timer
var interval2 = setInterval(AutoSave, 10000);
clearInterval(interval2);
Dominopoint Demo
JSON - RPC
Un controllo presente nelle ExtLib
Molto potente per invocare codice SSJS da
client JS
Esempio:
var deferred = userinfo.getUserName()
deferred.addCallback(function(result) {
alert(result)
});
DocLock nativo
Proprietà concurrencyMode=Fail
Vedere la WIKI IBM http://ibm.co/15lqe0n
Solo quando due utenti concorrenziali sono in
editing e salvano appare…non prima
DocLock CC
Controlla che non ci sia un altro utente in
editing sul documento in fase di apertura
Disabilita il bottone di Modifica nel caso sia
aperto da un altro utente
Appare un messaggio Toaster quando l’utente
blocca/sblocca il documento
Funziona in cluster mode
Demo online
DocLock CC - elementi
 DB SEMAFORO: contiene le UNID lockate, autore e
ultimo aggiornamento di lock
 JSON RPC – infoLock (UNID) boolean: controlla se il
documento UNID è aperto in editing da un altro
utente, se sono passati X secondi dall’ultimo lock..
 Function UpdateLock l’utente in editing ogni 3
secondi invoca un update del documento nel DB
semaforo utililizzando executeOnServer
 CC Toaster per le notifiche di lock/unlock
DocLock CC
?OpenDocument
Islock?
(JSON-RPC)
è presnete nel DB
Semaforo o sono
passati 15 sec
dall’ultimo
Update?
(SSJS Routine)
si
Controlla ogni 3
secondi
Messaggio di lock solo la prima volta
o al cambio stato (lock, unlock)
Modifica disabilitato
no
Modifica
abilitato
?EditDocument
Write/Update
(ExecuteOnServer)
si
ogni 3 secondi
Aggiorna il DB
Semaforo con la nuova
Ora di Editing
XPages Debug ToolBar
• Toolbar di Debug quasi come FireBug solo che SSJS
• Custom Control FREE da OpenNTF.org
• Utile per lo sviluppo e Debug variabili e messaggio di errore
• Inspector
• Output di qualunque oggetto dBar.dump( anyObject );
dBar.info( "my message");
dBar.debug( "a debug message");
dBar.info( message:String, context:String);
dBar.warn( message:String, context:String);
dBar.debug( message:String, context:String);
dBar.error(message:String, context:String);
Demo online
Ajax FileUpload
Di controllo nativo Ajax non c’è nulla, è
necessario Full Refresh della XPages
OpenNTF.org Async Multi File Upload
http://bit.ly/1eBJsHq
Demo online
Ajax FileUpload – come funziona?
Usa il controllo Flash www.uploadify.com
Usa JQuery
POST dei file nella xspupload temp folder
Anonymous con accesso Depositor e
WritePulic Document
Intercetta con XAgent http://bit.ly/18RmiEE la
POST del file e lo embedda al RichText
Ajax Processing FileUpload
var con = facesContext.getExternalContext();
var request:com.sun.faces.context.MyHttpServletRequestWrapper =
con.getRequest();
var map:java.util.Map = request.getParameterMap();
var fileDataName = "file"; //il nome della POST
var fileData:com.ibm.xsp.http.UploadedFile = map.get( fileDataName );
print ("processing upload: " + fileData.getClientFileName() );
var tempFile:java.io.File = fileData.getServerFile();
// la variabile tempFile contiene il PATH del file uploadato e può essere
embeddato al RichText…il nome temporaneo generato deve essere
rinominato prima del’embedded
Ajax Processing FileUpload
var correctedFile = new java.io.File(
tempFile.getParentFile().getAbsolutePath() + java.io.File.separator +
fileData.getClientFileName() );
var success = tempFile.renameTo(correctedFile);
rtFiles.embedObject(lotus.domino.local.EmbeddedObject.EMBED_ATTACH
MENT, "", correctedFile.getAbsolutePath(), null);
correctedFile.renameTo(tempFile);
Ajax File Upload - altri
• http://hasselba.ch/blog/?p=1286 (HTML5)
• http://bit.ly/15lHzvm (Wiki Julian Buss)
• http://bit.ly/15OUN2f (OpenNTF.org – multiple file
Upload)
OneUI
 Ultima versione oneui è la 3.0.3 (nella R9 c’è la 3.0.2)
 http://infolib.lotus.com/resources/oneui/3.0/docPu
blic/index.htm
 Per usare oneui 3.0.2 nella R9 basta inserire
«oneuiv3.0.2» in Application Theme
Da OneUI a bootstrap
 http://bootstrap4xpages.com/
 Uscito qualche giorno fa su OpenNTF.org
 Se avete usato il control Application Layout delle extension library la
conversione è automatica
 Usate UpdateSite ed importate l’XML
 Aggiornare il Designer con il nuovo componente
 «bootstraov2.3.1» o «boostrapv2.3.1r» nell’application theme
Da OneUI a bootstrap
Da OneUI a bootstrap
Demo online
Cambio del tema live
http://openntf.org/XSnippets.nsf/snippet.xsp?id=one
ui-on-the-fly-theme-changer
var f = "/"+@RightBack(context.getUrl().getAddress(),"/");
context.setSessionProperty('xsp.theme', ‘oneuiv.3.0.2’);
context.redirectToPage(f)
Risorse utili
 www.openNTF.org
 http://stackoverflow.com/questions/tagged/xpages
 http://planetlotus.org/
 http://hasselba.ch/blog/
 http://xpageswiki.com/
 http://xpages.info/XPagesHome.nsf/Resources.xsp
Domande?
Grazie agli sponsor per aver reso possibile i
Dominopoint Days 2013!
Main Sponsor
Vad sponsor
Platinum sponsor
Gold sponsor

Mais conteúdo relacionado

Destaque

Boletinxuventude 18 11_13-1
Boletinxuventude 18 11_13-1Boletinxuventude 18 11_13-1
Boletinxuventude 18 11_13-1Charo García
 
PresentacióN Corporativa Iberia Diciembre 2011
PresentacióN Corporativa Iberia Diciembre 2011PresentacióN Corporativa Iberia Diciembre 2011
PresentacióN Corporativa Iberia Diciembre 2011EvaUlibarri
 
Manual corporativo DOMECO por Marta Dorado
Manual corporativo DOMECO por Marta DoradoManual corporativo DOMECO por Marta Dorado
Manual corporativo DOMECO por Marta DoradoMarta Dorado
 
Eurofinsa Entrevista a Hendrik Meima. El economista Suplemento Catar
Eurofinsa Entrevista a Hendrik Meima. El economista Suplemento CatarEurofinsa Entrevista a Hendrik Meima. El economista Suplemento Catar
Eurofinsa Entrevista a Hendrik Meima. El economista Suplemento CatarEurofinsa
 
Presentación Asivega - Marketing Inmobiliario Online
Presentación Asivega - Marketing Inmobiliario OnlinePresentación Asivega - Marketing Inmobiliario Online
Presentación Asivega - Marketing Inmobiliario Onlinecesar villasante
 
Ecosistemas digitales - cómo son y cómo los trabajamos
Ecosistemas digitales - cómo son y cómo los trabajamosEcosistemas digitales - cómo son y cómo los trabajamos
Ecosistemas digitales - cómo son y cómo los trabajamoscarlavalenciac
 
Metricsftw 1-120319102146-phpapp02
Metricsftw 1-120319102146-phpapp02Metricsftw 1-120319102146-phpapp02
Metricsftw 1-120319102146-phpapp02Refugio Reg
 
INFOVA Presentación
INFOVA PresentaciónINFOVA Presentación
INFOVA Presentaciónfelipeynzenga
 
Las ventajas del telefono infuse 4 g
Las ventajas del telefono infuse 4 gLas ventajas del telefono infuse 4 g
Las ventajas del telefono infuse 4 gamneris1990
 
ERFA 2015: Présentation de Martial Bujard, Directeur, Agence Swissolar romand...
ERFA 2015: Présentation de Martial Bujard, Directeur, Agence Swissolar romand...ERFA 2015: Présentation de Martial Bujard, Directeur, Agence Swissolar romand...
ERFA 2015: Présentation de Martial Bujard, Directeur, Agence Swissolar romand...swissolar-romande
 

Destaque (20)

Boletinxuventude 18 11_13-1
Boletinxuventude 18 11_13-1Boletinxuventude 18 11_13-1
Boletinxuventude 18 11_13-1
 
PresentacióN Corporativa Iberia Diciembre 2011
PresentacióN Corporativa Iberia Diciembre 2011PresentacióN Corporativa Iberia Diciembre 2011
PresentacióN Corporativa Iberia Diciembre 2011
 
Lisez moi
 Lisez moi Lisez moi
Lisez moi
 
A eso
 A eso A eso
A eso
 
Manual corporativo DOMECO por Marta Dorado
Manual corporativo DOMECO por Marta DoradoManual corporativo DOMECO por Marta Dorado
Manual corporativo DOMECO por Marta Dorado
 
Eurofinsa Entrevista a Hendrik Meima. El economista Suplemento Catar
Eurofinsa Entrevista a Hendrik Meima. El economista Suplemento CatarEurofinsa Entrevista a Hendrik Meima. El economista Suplemento Catar
Eurofinsa Entrevista a Hendrik Meima. El economista Suplemento Catar
 
Presentación Asivega - Marketing Inmobiliario Online
Presentación Asivega - Marketing Inmobiliario OnlinePresentación Asivega - Marketing Inmobiliario Online
Presentación Asivega - Marketing Inmobiliario Online
 
Ecosistemas digitales - cómo son y cómo los trabajamos
Ecosistemas digitales - cómo son y cómo los trabajamosEcosistemas digitales - cómo son y cómo los trabajamos
Ecosistemas digitales - cómo son y cómo los trabajamos
 
Uni6inin
Uni6ininUni6inin
Uni6inin
 
Metricsftw 1-120319102146-phpapp02
Metricsftw 1-120319102146-phpapp02Metricsftw 1-120319102146-phpapp02
Metricsftw 1-120319102146-phpapp02
 
INFOVA Presentación
INFOVA PresentaciónINFOVA Presentación
INFOVA Presentación
 
Máster en dirección y gestión de empresas turísticas
Máster en dirección y gestión de empresas turísticasMáster en dirección y gestión de empresas turísticas
Máster en dirección y gestión de empresas turísticas
 
Las ventajas del telefono infuse 4 g
Las ventajas del telefono infuse 4 gLas ventajas del telefono infuse 4 g
Las ventajas del telefono infuse 4 g
 
Torreon juny 2013
Torreon juny 2013Torreon juny 2013
Torreon juny 2013
 
ERFA 2015: Présentation de Martial Bujard, Directeur, Agence Swissolar romand...
ERFA 2015: Présentation de Martial Bujard, Directeur, Agence Swissolar romand...ERFA 2015: Présentation de Martial Bujard, Directeur, Agence Swissolar romand...
ERFA 2015: Présentation de Martial Bujard, Directeur, Agence Swissolar romand...
 
Medicina tropicaaaaal
Medicina tropicaaaaalMedicina tropicaaaaal
Medicina tropicaaaaal
 
Capitulo 2 excel
Capitulo 2 excelCapitulo 2 excel
Capitulo 2 excel
 
Triptico o la desolacion de rafael 2012, dossier de la obra de teatro.
Triptico o la desolacion de rafael 2012, dossier de la obra de teatro.Triptico o la desolacion de rafael 2012, dossier de la obra de teatro.
Triptico o la desolacion de rafael 2012, dossier de la obra de teatro.
 
Flicker y blog
Flicker y blogFlicker y blog
Flicker y blog
 
Aladdin cargo - Steven Alejandro Suárez Castro
Aladdin cargo - Steven Alejandro Suárez CastroAladdin cargo - Steven Alejandro Suárez Castro
Aladdin cargo - Steven Alejandro Suárez Castro
 

Semelhante a XPages Tips & Tricks, #dd13

Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPGiorgio Cefaro
 
Sviluppo e deployment cross-platform: Dal mobile alla Tv
Sviluppo e deployment cross-platform: Dal mobile alla Tv Sviluppo e deployment cross-platform: Dal mobile alla Tv
Sviluppo e deployment cross-platform: Dal mobile alla Tv Codemotion
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacyTommaso Torti
 
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.jsMichele Capra
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloudGabriele Baldoni
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
 
Adobe TechConnection: Flex Best Practices
Adobe TechConnection: Flex Best PracticesAdobe TechConnection: Flex Best Practices
Adobe TechConnection: Flex Best Practicesmarcocasario
 

Semelhante a XPages Tips & Tricks, #dd13 (20)

Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 
Sviluppo e deployment cross-platform: Dal mobile alla Tv
Sviluppo e deployment cross-platform: Dal mobile alla Tv Sviluppo e deployment cross-platform: Dal mobile alla Tv
Sviluppo e deployment cross-platform: Dal mobile alla Tv
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacy
 
#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)
 
TYPO3 7.0 - Le novità
TYPO3 7.0 - Le novitàTYPO3 7.0 - Le novità
TYPO3 7.0 - Le novità
 
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
TYPO3 CMS 8.1 - Le novità
TYPO3 CMS 8.1 - Le novitàTYPO3 CMS 8.1 - Le novità
TYPO3 CMS 8.1 - Le novità
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Novita TYPO3 CMS 7.2
Novita TYPO3 CMS 7.2Novita TYPO3 CMS 7.2
Novita TYPO3 CMS 7.2
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
 
Build Automation Tips
Build Automation TipsBuild Automation Tips
Build Automation Tips
 
TYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novitaTYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novita
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 
Html5 e PHP
Html5 e PHPHtml5 e PHP
Html5 e PHP
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 
Adobe TechConnection: Flex Best Practices
Adobe TechConnection: Flex Best PracticesAdobe TechConnection: Flex Best Practices
Adobe TechConnection: Flex Best Practices
 

Mais de Dominopoint - Italian Lotus User Group

IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...Dominopoint - Italian Lotus User Group
 

Mais de Dominopoint - Italian Lotus User Group (20)

TOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in DominoTOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in Domino
 
Domino Backup V12 - Un nuovo Task
Domino Backup V12 - Un nuovo TaskDomino Backup V12 - Un nuovo Task
Domino Backup V12 - Un nuovo Task
 
Mail Client from Traveler to Verse On-Premises
Mail Client from Traveler to Verse On-PremisesMail Client from Traveler to Verse On-Premises
Mail Client from Traveler to Verse On-Premises
 
IBM Worspace: Towards a culture of conversations
IBM Worspace: Towards a culture of conversationsIBM Worspace: Towards a culture of conversations
IBM Worspace: Towards a culture of conversations
 
Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)
 
Riding the Enterprise Integration train
Riding the Enterprise Integration trainRiding the Enterprise Integration train
Riding the Enterprise Integration train
 
Ortocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su BluemixOrtocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su Bluemix
 
Meetit16 KeyNote di Apertura
Meetit16 KeyNote di AperturaMeetit16 KeyNote di Apertura
Meetit16 KeyNote di Apertura
 
IBM Domino Modernizing apps with Angularjs
IBM Domino Modernizing apps with AngularjsIBM Domino Modernizing apps with Angularjs
IBM Domino Modernizing apps with Angularjs
 
IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...
 
Cloudant e XPages
Cloudant e XPagesCloudant e XPages
Cloudant e XPages
 
IBM Bluemix
IBM BluemixIBM Bluemix
IBM Bluemix
 
IBM Connections 10 things every user should know
IBM Connections 10 things every user should knowIBM Connections 10 things every user should know
IBM Connections 10 things every user should know
 
IBM Verse New Way To Work
IBM Verse New Way To WorkIBM Verse New Way To Work
IBM Verse New Way To Work
 
Crossware MailSignature
Crossware MailSignatureCrossware MailSignature
Crossware MailSignature
 
Cooperteam soluzioni
Cooperteam soluzioniCooperteam soluzioni
Cooperteam soluzioni
 
Notes and Domino Roadmap
Notes and Domino RoadmapNotes and Domino Roadmap
Notes and Domino Roadmap
 
La Collaborazione Europea
La Collaborazione EuropeaLa Collaborazione Europea
La Collaborazione Europea
 
the future of work
the future of workthe future of work
the future of work
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 

XPages Tips & Tricks, #dd13

  • 1. News R9 develop e XPages Tips Daniele Grillo GRYDAN SAS
  • 2. Chi sono Creatore Dominopoint.it Grydan SAS 13 anni su Notes/Domino (dalla R 4.6) Sviluppatore, Amministratore, Docente Email d.grillo@grydan.it Mobile +39 392.2945549
  • 3. NOVITA’ R9 DEVELOP Slide tratte da: http://bit.ly/1aY4dJp
  • 4. Novità R9 Social  Extensions Library UP1 integrate  SSJS Debug  Xpages developer productivity  New JAR Design  XSP Proprierties Editor  Bug fix «hight traffic» area  Dojo 1.8  CKEditor 3.6.3  Redirection Control  Xpages Social Integration Point  XPiNC
  • 6. Upgrade Pack 1 nei controlli  Su OpenNTF.org il codice ExtLib evolve più velocemente ma nella R9 è nativo UP1 con 100+ controlli  XSP proprierties editor nella GUI del designer
  • 7. Extensions Library  Scaricale da qui http://extlib.openntf.org/  Deploy su Domino seguendo con UpdateSite http://ibm.co/1drFGNS  Deploy su Domino Designer ricordati di attivare File  PreferencesDomino Designer Enalbe Eclipse N.B. nella R9 e nella UP1/UP2 8.5.3 ci sono le extlib supportate da IBM –I rilasci più recenti sono su OpenNTF.org
  • 8. SSJS Debug  Basato su Eclipse «Remote Java Connection» protocol ed utilizzo JPDA/JDI  Breakpoint nel code SSJS  Il server deve avere nel NOTES.INI – JavaEnableDebug=1 – JavascriptEnableDebug=1 – JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000
  • 10. Client JS/Dojo Debug Option  Codice JS non compresso per un miglior Debug (Dojo è deployed con OSGi)
  • 11. XPages Productivity  Content assist XSP Source code  Hyperlink navigation nel source code (CTRL+click sulle risorse per aprirle direttamente)  Help sul mouse over nel Source code  Palette State Saving  Jar Design Element  Working set migliorato (si vedono tutti)
  • 12. Bug Fix e criticità risolte Errore 500 usando Java Design Element Problemi nel Source Control quando importi databases con molti scipt Fixata un problema di tool riportato nella UP1 Migliorate le Performance/memoria nell’Xpages Editor Fixato il builder e LS Editor (La problem View riporta il numero corretto di linea andato in errore per i LS)
  • 13. Dojo 1.8 – CKEditor 3.6.3  Dojo 1.8 – Dojo è attualmente alla 1.9 (poca distanza) – Migliorato il supporto Mobile e diverse bug-fix  CKEditor 3.6.3 – CKEditor più istanze per Xpages – Inline Images – Gestione Allegati – Resize Image – Spell Checker – Migliore iOS gestione
  • 14. Controllo Redirect Imposta il «Form Display» ad una XPages che contiene il redirect control Ad esempio riscrive un URL per un rendering Mobile
  • 15. Xpages Social Integration –Send Mail Drag & Drop per invio mail Embedded Exprience: richiesto JSON
  • 16. XPiNC – XSP.executeCommand()  XSP.executeCommand(commandId, commandParams) – commandId identifies the requested function – commandParams is an object containing arbitary arg values  Provides secure access to: – Notes front-end functionality via NotesUIWorkspace classes – Eclipse framework – Custom Java code
  • 17. XPiNC in Remote Execution Mode
  • 18. TIPS & TRICKS XPAGES
  • 19. Tips & Tricks – Demo APP Demo onlineusername: demo pwd: dominopoint
  • 20. Metodo ExecuteOnServer I dettagli a questo URL http://bit.ly/15kPwM7 Invoca un evento SSJS da client JS executeOnServer(idHandler,refreshID,options) idHandler = nome dell’event Handler refreshId = id client da refreshare dopo l’esecuizione dell’handler Options = parametri opzionali dell’event handler
  • 21. executeOnServer code & Demo Demo online
  • 22. Dojo Toaster Widget Dojo: dojox.widget.Toaster Notifiche web 2.0 (duration, messaggio, posizione) In ascolto su un determinato canale Scrittura messaggio con dojo.publish("canale", ["messaggio"]) Demo online
  • 23. CKEditor 3.6.3  Free, attualmente release 4.2.1  Cross Browsder  API pubbliche http://bit.ly/19wzmAk  Editor RichText  Diverse plugin  Personalizzabile  Esiste da 10 anni  Usato dai più grandi vendor: http://ckeditor.com/about/who- is-using-ckeditor  Iphone ha un buon supporto, e stanno lavorando su Android
  • 24. CKEditor – custom inside Control Demo online
  • 25. CKEditor -XSnippets  OpenNTF.org http://bit.ly/17WzcV5  Focus:  Get Object CSJS  Add content SSJS  Add content JS
  • 26. AutoSave Custom Control  Apro una XPages che effettua il binding ad un NotesDocument  Ogni X secondi al variare del contenuto di un campo scatena Saving JS Client sfruttando ExecuteOnServer  Come Gmail quando crei un nuovo messaggio e lo salva automaticamente in Bozza  Bottone per attivare e disattivare e notifiche Toaster Demo online
  • 27. AutoSave –eventHandler Articolo su DP http://bit.ly/18OFlWi Presente un EventHandler che effettua il saving del documento ad esempio: <xp:eventHandler event="autoSaveEvent" id="autoSaveDoc" submit="false"> <xp:this.action> <xp:saveDocument /> </xp:this.action> </xp:eventHandler>
  • 28. AutoSave – CKEditor è cambiato? function CKEDITOResubmit(idCKEDITOR){ var rte=dijit.byId(idCKEDITOR); var txta=XSP.getElementById(idCKEDITOR+'_h'); if(!rte || !txta) return; txta.value = rte.getValue(); var mod=XSP.getElementById(idCKEDITOR+'_mod'); mod.value=rte.isModified(txta.value); return true; }
  • 29. AutoSave JS function AutoSave(){ executeOnServer('autoSaveDoc',null, {'valmode': 1, onStart:function() { for(var instanceName in CKEDITOR.instances) { CKEDITOResubmit(instanceName) } console.log("autosave start"); }, onComplete:function() { console.log("autosave complete") }, onError: function() { console.log("autosave error") } }) }
  • 30. AutoSave- timer var interval2 = setInterval(AutoSave, 10000); clearInterval(interval2); Dominopoint Demo
  • 31. JSON - RPC Un controllo presente nelle ExtLib Molto potente per invocare codice SSJS da client JS Esempio: var deferred = userinfo.getUserName() deferred.addCallback(function(result) { alert(result) });
  • 32. DocLock nativo Proprietà concurrencyMode=Fail Vedere la WIKI IBM http://ibm.co/15lqe0n Solo quando due utenti concorrenziali sono in editing e salvano appare…non prima
  • 33. DocLock CC Controlla che non ci sia un altro utente in editing sul documento in fase di apertura Disabilita il bottone di Modifica nel caso sia aperto da un altro utente Appare un messaggio Toaster quando l’utente blocca/sblocca il documento Funziona in cluster mode Demo online
  • 34. DocLock CC - elementi  DB SEMAFORO: contiene le UNID lockate, autore e ultimo aggiornamento di lock  JSON RPC – infoLock (UNID) boolean: controlla se il documento UNID è aperto in editing da un altro utente, se sono passati X secondi dall’ultimo lock..  Function UpdateLock l’utente in editing ogni 3 secondi invoca un update del documento nel DB semaforo utililizzando executeOnServer  CC Toaster per le notifiche di lock/unlock
  • 35. DocLock CC ?OpenDocument Islock? (JSON-RPC) è presnete nel DB Semaforo o sono passati 15 sec dall’ultimo Update? (SSJS Routine) si Controlla ogni 3 secondi Messaggio di lock solo la prima volta o al cambio stato (lock, unlock) Modifica disabilitato no Modifica abilitato
  • 37. XPages Debug ToolBar • Toolbar di Debug quasi come FireBug solo che SSJS • Custom Control FREE da OpenNTF.org • Utile per lo sviluppo e Debug variabili e messaggio di errore • Inspector • Output di qualunque oggetto dBar.dump( anyObject ); dBar.info( "my message"); dBar.debug( "a debug message"); dBar.info( message:String, context:String); dBar.warn( message:String, context:String); dBar.debug( message:String, context:String); dBar.error(message:String, context:String); Demo online
  • 38. Ajax FileUpload Di controllo nativo Ajax non c’è nulla, è necessario Full Refresh della XPages OpenNTF.org Async Multi File Upload http://bit.ly/1eBJsHq Demo online
  • 39. Ajax FileUpload – come funziona? Usa il controllo Flash www.uploadify.com Usa JQuery POST dei file nella xspupload temp folder Anonymous con accesso Depositor e WritePulic Document Intercetta con XAgent http://bit.ly/18RmiEE la POST del file e lo embedda al RichText
  • 40. Ajax Processing FileUpload var con = facesContext.getExternalContext(); var request:com.sun.faces.context.MyHttpServletRequestWrapper = con.getRequest(); var map:java.util.Map = request.getParameterMap(); var fileDataName = "file"; //il nome della POST var fileData:com.ibm.xsp.http.UploadedFile = map.get( fileDataName ); print ("processing upload: " + fileData.getClientFileName() ); var tempFile:java.io.File = fileData.getServerFile(); // la variabile tempFile contiene il PATH del file uploadato e può essere embeddato al RichText…il nome temporaneo generato deve essere rinominato prima del’embedded
  • 41. Ajax Processing FileUpload var correctedFile = new java.io.File( tempFile.getParentFile().getAbsolutePath() + java.io.File.separator + fileData.getClientFileName() ); var success = tempFile.renameTo(correctedFile); rtFiles.embedObject(lotus.domino.local.EmbeddedObject.EMBED_ATTACH MENT, "", correctedFile.getAbsolutePath(), null); correctedFile.renameTo(tempFile);
  • 42. Ajax File Upload - altri • http://hasselba.ch/blog/?p=1286 (HTML5) • http://bit.ly/15lHzvm (Wiki Julian Buss) • http://bit.ly/15OUN2f (OpenNTF.org – multiple file Upload)
  • 43. OneUI  Ultima versione oneui è la 3.0.3 (nella R9 c’è la 3.0.2)  http://infolib.lotus.com/resources/oneui/3.0/docPu blic/index.htm  Per usare oneui 3.0.2 nella R9 basta inserire «oneuiv3.0.2» in Application Theme
  • 44. Da OneUI a bootstrap  http://bootstrap4xpages.com/  Uscito qualche giorno fa su OpenNTF.org  Se avete usato il control Application Layout delle extension library la conversione è automatica  Usate UpdateSite ed importate l’XML  Aggiornare il Designer con il nuovo componente  «bootstraov2.3.1» o «boostrapv2.3.1r» nell’application theme
  • 45. Da OneUI a bootstrap
  • 46. Da OneUI a bootstrap Demo online
  • 47. Cambio del tema live http://openntf.org/XSnippets.nsf/snippet.xsp?id=one ui-on-the-fly-theme-changer var f = "/"+@RightBack(context.getUrl().getAddress(),"/"); context.setSessionProperty('xsp.theme', ‘oneuiv.3.0.2’); context.redirectToPage(f)
  • 48. Risorse utili  www.openNTF.org  http://stackoverflow.com/questions/tagged/xpages  http://planetlotus.org/  http://hasselba.ch/blog/  http://xpageswiki.com/  http://xpages.info/XPagesHome.nsf/Resources.xsp
  • 50. Grazie agli sponsor per aver reso possibile i Dominopoint Days 2013! Main Sponsor Vad sponsor Platinum sponsor Gold sponsor