introduction dojo toolkit & ibm lotus domino
DESCRIPTION
This presentation shows an introduction to the usage of the dojo toolkit in an IBM Lotus Domino application. The presentation based on a three hour workshop in which the sample application 'Phone Directory' was developed.TRANSCRIPT
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Introductiondojo Toolkit &
IBM Lotus Domino
February 2008
Dr. Rolf Kremer (PAVONE AG)
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Agenda
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
What is the Dojo Toolkit?
Open Source JavaScript Toolkit
Developed by the Dojo Foundation (Member: IBM, Sun, AOL, BEA, and more)
Available: http://dojotoolkit.org/
First release in November 2007
Should be integrated in IBM Lotus Domino (planned)
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Dojo History
2004: Dojo 0.0: How do I create something like GMail?
2005: 0.1, 0.2: More features
2006: 0.3, 0.4: Features, doc writer
2007-06: 0.9: Redesign
2007-11: 1.0: First release
165.000+ downloads since Dojo 1.0
Source: http://www.dojotoolkit.org/files/ddd4day1summary.pdf
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Dojo Roadmap
2008-02: 1.1 RC (Beta: 19.02)
2008-03: 1.1 (Firefox 3 Dijit support)
2008-04: 1.1.1
2008-05: 1.2 (Grid + Charting Improvements)
2008-06: 1.2.1
2008-07: 1.2.2
2008-08: 1.3
2008-11: 1.4
Source: http://www.dojotoolkit.org/files/ddd4day1summary.pdf
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Dojo Modules
CoreContains basic librariesAjax, evens, packaging, CSS-based querying, animations, JSON, language utilities Size: 23 k
DijitSkinnable, template-driven widgetsAccessibility and localization
DojoXInventive & innovative code and widgetsVisualize of data with grids and chartsPre-beta or beta widgets
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
JavaScript Frameworks
Prototype
Dojo ToolkitScript.aculo.us
Mootools
jQuery
Open Rico
TIBCO General Interface
qooxdoo
Macao
Yahoo! User Interface Library
Zimbra AjaxTK
Ext
BACKBASE
crossvision
… and more…
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Dojo Samples
Dojo Webseite
Dojo Feature Explorer
Sample by Rocky Oliver (IBM Lotus Domino)
PAVONE Solution Center
PAVONE Process Control Suite (JEE)
Demo ‚Phone Directory‘ (IBM Lotus Domino)(This demo will be developed in this workshop.)
Widgets (GCC project)
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Dojo & Domino
Domino form fields that can be Dojo enabled:
Source: Lotusphere 2008 – Presentation: AD303.pdf
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Domino Extensions (1)
View:
Source: Lotusphere 2008 – Presentation: AD303.pdf
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Domino Extensions (2)
Source: Lotusphere 2008 – Presentation: AD303.pdf
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Domino Extensions (2)
Source: Lotusphere 2008 – Presentation: AD303.pdf
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Installation Options
AOL CDN (Content Distribution Network)+ Easy installation+ Easy update- Requried Internet access - AOL can log the access
Server installation+ Required only Intranet access+ Only one installation- Manual installation- Increased update effort- Need server administration access
Application installation+ Required only Intranet access+ Required no server administration access- Manual installation- Increased update efforto Application-specific
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Installation Steps (1)
AOL CDNAdd following line to your head section:
Example:
<script type="text/javascript" src="http://o.aolcdn.com/dojo/1.0.2/dojo/dojo.xd.js" djConfig="parseOnLoad: true"></script>
Server installationInstall dojo files on IBM Lotus Domino server Example: /data/domino/htm/dojo-release-1.0.2Add following line to your head section:Example:
<script type="text/javascript„
src="/dojo-release-1.0.2/dojo/dojo.js"
djConfig="parseOnLoad: true"></script>
Or another path
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Installation Steps (2)
Application installationInsert dojo files into the database
Add following line to the head section:Example:
"<script type=\"text/javascript\„
src=\"/" + @WebDbName + "/dojo/dojo.js\" djConfig=\"parseOnLoad: true\"></script>"
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step-by-Step (Developing a simple Phone Directory)
Step 1: Add dialog to add people to directory
Step 2: Open Person form in dialog
Step 3: Add Tab container
Step 4: Create new widget ‚AddressReferrer‘
Step 5: Install widget
Step 6: Add widget to form
(These steps are based on a pre-configured Phone Directory application.)
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 0: Install Firebug (or another JavaScript debugger)
Firebug: Tool for debugging JavaScript in Firefox browers
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 1: ‚Add Person‘ dialog (1)
Dojo Book: http://dojotoolkit.org/book/dojo-book-0-9/part-2-dijit/layout/dialog
Example:
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
1. Create subform „sa_DialogPerson“
<div dojoType="dijit.Dialog" id="dialogPerson" title="<Computed Value>" href="<Computed Value>" execute=„dijit.byId('fa_DialogPerson').hide();">
</div>
2. Insert subform in existing form „fa_View“
Remarks: - We create a subform since the dialog (code) can be used in other design elements, too.
- The field ‚tmpBaseUrl‘ contains the host name and database
path.
Step 1: ‚Add Person‘ dialog (2)
tmpBaseUrl + "/fa_DialogPerson?OpenForm"
„Person“
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 1: ‚Add Person‘ dialog (3)
3. Create form „fa_DialogPerson“
Add WebQuerySave-Code:@Command([ToolsRunMacro]; "(WEBQuerySavePerson)")
Remark: The agent re-opens the page.
„Save“
„Close“
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 1: ‚Add Person‘ dialog (4)
4. Create button to open dialog in form „fa_View“
<button dojoType="dijit.form.Button" onclick="showDialog('dialogPerson','fa_DialogPerson')"><Computed Value></button>
5. Add dojo.require statements („sa_DojoHeader“)
dojo.require("dijit.Dialog");dojo.require("dijit.form.Button");
6. Create agent „WebQuerySavePerson“
Sub InitializeDim ns As NotesSessionDim strTmpUrl As String
'// re-open viewSet ns = New NotesSessionstrTmpURL = "/" + ReplaceSubstring ( ns.CurrentDatabase.FilePath, "\", "/" ) + "/" + "Default" + "?OpenView"Print |<SCRIPT LANGUAGE="JavaScript"> location.replace( "| + strTmpURL + |" )</SCRIPT>|
End Sub
„Add Person“
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 1: Test it
Result:
If the user clicks on the button ‚Add Person‘ the dojo dialog with the form ‚fa_DialogPerson‘ will be opened.
If the user clicks on the ‚Close‘ button, the dojo dialogwill be closed.
If the user clicks on the ‚Save‘ button, the dojo dialogwill be closed, a new Person document will be createdand the view will be refreshed.
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 2: ‚Open Person‘ dialog (1)
Open dialog from view:
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Change view column code to:
_tmpNumber := @Text ( @DocNumber );_tmpName := LastName + ", " + FirstName;_tmpPathEdit := "/0/" + @Text( @DocumentUniqueID ) + "?EditDocument";
_tmpOnClick := "onclick=\"showDocument('dialogPerson','" + _tmpPathEdit + "')\"";
_tmpValue := _tmpNumber + " " + "<a href=\"#\" " + _tmpOnClick + ">" + _tmpName + "</a>";
"<div class=\"pdViewColumn\">" + _tmpValue + "</div>"
Remarks:- The style sheet class ‚pdViewColumn‘ is defined in
‚PhoneDirectory.css‘.- The Javascript function „showDocument“ calls the dojo dialog
(Code see next page)
Step 2: ‚Open Person‘ dialog (2)
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 2: ‚Open Person‘ dialog (3)
Javascript function:
function showDocument ( strPage, strPath ) {
// open page
dijit.byId( strPage ).setHref( G_BASEURL + strPath );
dijit.byId( strPage ).show();
setFocusToField( strPage ,'Firstname');
return;
}
Contains the host name and database path.
Function sets the focus to the field ‚Firstname‘.
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 2: ‚Open Person‘ dialog (4)
Javascript function:
function setFocusToField ( strDialog, strFieldName ) {
// wait 500 ms to open the form, then set the focus to the first field
setTimeout(dojo.hitch( strDialog, function(){
document.getElementsByName( strFieldName )[0].focus();
}), 500);
}
If the loading process required more than 500 ms an error occured.
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 2: Test it
Result:
If the user clicks on an entry in the view the dojo dialog with the form ‚fa_DialogPerson‘ will be opened.
The fields are filled from the selected document.
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 3: Add Tab container
1. Add following code to „fa_View“
2. Add „dojo.require“ to subform „sa_DojoHeader“
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.layout.ContentPane");
The view „Default“ should be placed here.
Subform „sa_List“
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 3: Test it
Result:
The view will be display in the first tab.
If the user switch to the second tab, the static subformcontent will be showed.
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 4: Widget ‚AddressReferrer‘ (1)
Example „AddressReferrer“
Code to add widget on page: <input dojoType="pavone.widget.AddressRef" value="111" type="skype" id="phoneNumber" label="skype.gif" title="Call
person"/>
Link: http://homepages.uni-paderborn.de/okoehler/pav53/AddressRef.html
Call number with Skype
Create e-mail
Open http page
Text field + icon + link
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 5: Install ‚AddressReferrer‘
Add to Phone Directory application:
1. Add js file to ‚Shared Resources\Files‘
2. Add css file to ‚Shared Resources\Style Sheets‘
3. Add skype.gif image to ‚Shared Resources\Images‘
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 6: Add widget ‚AddressReferrer‘ (1)
1. Create field „SkypeNumber“ to form „fa_DialogPerson“
2. Add html tags (field section ‚Others‘)
dojoType="pavone.widget.AddressRef" type="skype" id="phoneNumber" label="skype.gif" title=„Call person"
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Step 6: Test it
Remark:
If the user clicks on the Skype icon behind the input field the Skype client will be opened and the number in thefield will be called.
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Resources
The Book of Dojo: http://dojotoolkit.org/book/dojo-book-1-0
Demos: http://dojotoolkit.org/key-links
Dojomino Blog: http://dojomino.com
LCTY 2008 presentation (german) by Martin Henning
Introduction
Samples
Installation
Step-by-Step
Resources
Discussion
Diskussion