XPages Tips & Tricks, #dd13

1,454 views

Published on

Novità R9 Social Edition lato developer ed alcune tips sullo sviluppo XPages

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,454
On SlideShare
0
From Embeds
0
Number of Embeds
364
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

XPages Tips & Tricks, #dd13

  1. 1. News R9 develop e XPages Tips Daniele Grillo GRYDAN SAS
  2. 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. 3. NOVITA’ R9 DEVELOP Slide tratte da: http://bit.ly/1aY4dJp
  4. 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
  5. 5. Novità R9 - DDE
  6. 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. 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. 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
  9. 9. SSJS Debug
  10. 10. Client JS/Dojo Debug Option  Codice JS non compresso per un miglior Debug (Dojo è deployed con OSGi)
  11. 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. 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. 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. 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. 15. Xpages Social Integration –Send Mail Drag & Drop per invio mail Embedded Exprience: richiesto JSON
  16. 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. 17. XPiNC in Remote Execution Mode
  18. 18. TIPS & TRICKS XPAGES
  19. 19. Tips & Tricks – Demo APP Demo onlineusername: demo pwd: dominopoint
  20. 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. 21. executeOnServer code & Demo Demo online
  22. 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. 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. 24. CKEditor – custom inside Control Demo online
  25. 25. CKEditor -XSnippets  OpenNTF.org http://bit.ly/17WzcV5  Focus:  Get Object CSJS  Add content SSJS  Add content JS
  26. 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. 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. 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. 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. 30. AutoSave- timer var interval2 = setInterval(AutoSave, 10000); clearInterval(interval2); Dominopoint Demo
  31. 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. 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. 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. 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. 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
  36. 36. ?EditDocument Write/Update (ExecuteOnServer) si ogni 3 secondi Aggiorna il DB Semaforo con la nuova Ora di Editing
  37. 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. 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. 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. 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. 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. 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. 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. 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. 45. Da OneUI a bootstrap
  46. 46. Da OneUI a bootstrap Demo online
  47. 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. 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
  49. 49. Domande?
  50. 50. Grazie agli sponsor per aver reso possibile i Dominopoint Days 2013! Main Sponsor Vad sponsor Platinum sponsor Gold sponsor

×