Please go to my new place since 2008 - Wohill
August 10, 2012
September 04, 2008
Still here...
It has been rather quiet here for a while now. I haven't put this blog to sleep for ever but I let it rest for a while. All my attention has been going to the new project Wohill other sub projects
Posted by
Niklas Waller
at
2:28 PM
4
comments
April 03, 2008
MessageBox and InputBox easily in a Notes Java agent
When you start to code Java as a notes developer you will very quickly start missing the msgbox and dialog boxes for simple interaction with the users. I did and started to develop my own MessageBox class which certainly could be better. Well, if you go through the Java API and look at the swing classes there are message boxes ready to use - Just what I was looking for.
Use this row to display information to the user:JOptionPane.showMessageDialog(null, "Test");
Use this row to get information from the user:String s = JOptionPane.showInputDialog("Get me some input dude!");Example:
Add this code into a new Notes Java agent and run it from the Notes client:
import lotus.domino.*;
import javax.swing.JOptionPane;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
/* Display message to user - like Notes MsgBox or MessageBox */
JOptionPane.showMessageDialog(null, "Test");
/* Display message to user and get user input - like Notes InputBox */
String s = JOptionPane.showInputDialog("Get me some input dude!");
/* Display the input */
JOptionPane.showMessageDialog(null, s);
} catch(Exception e) {
e.printStackTrace();
}
}
}
Technorati tags:
Lotus Notes, Domino, Java, MessageBox, msgbox, InputBox
Posted by
Niklas Waller
at
10:48 AM
6
comments
March 15, 2008
PHP's next major release
I have been working some with PHP but mostly as a script language for building blogs, admin interfaces or standard websites with lookups to mysql db's and similar, not too advanced that is. But the reason I keep doing it is that it has so much capability and there is so much information and examples all over the Internet.
PHP has come a long way and already is an object-oriented language. With the new upcoming release (5.3) more interesting things will come (originally intended for release 6) that makes it more competitive and assuring that it will continue being one of the best. Some of the new things you can expect are native MySQL support, variable static calls (like in Java), enhanced error reporting and namespaces (really cool). Read this article for all this information.
An if you want to get started your self, use the following two sites which is close to anything you need, except Google of course ;-)
- W3Schools tutorial
- php.net
Technorati tags:
PHP, MySQL, OO, Web, development
Posted by
Niklas Waller
at
8:31 AM
3
comments
March 14, 2008
JavaScript references
In my series of reference pages (see blog's sidebar) there is clearly one about JavaScript and its surroundings missing. So here it goes. As the others it will be constantly updated and will be here for my own use and hopefully helpful to others as well. Feel free to post a comment for any suggestions to changes or additions on the following bullet lists.
Tutorials/explanation:
- Wikipedia information
- JavaScript tutorial from W3Schools
- JavaScript and AJAX tutorials
- JavaScript tutorial from Webucator
- AJAX tutorial from Webucator
- Dojo quick start guide
- JavaScript reference from W3Schools
- The JavaScript Source
- Core JavaScript Reference
- DevGuru JavaScript Index
- JavaScript Kit
- JavaScript - Mozilla Developer Center
- Microsoft JScript Reference
- Prototype
- Dojo
- Ext JS
- Ext.nd - Ext for Notes and Domino
- Script.aculo.us
- Rico
- MooTools
- jQuery
- YUI
- DOMAssistant
- MochiKit
- DED|Chain
- ARCHETYPE
- qooxdoo
- Rialto
- json.org
- JSON on Wikipedia
- AJAX tutorial from W3Schools
- The AJAX framework
- Ajaxian
- Viktor Krantz on Dojo and JSON
- The Book of Dojo
Technorati tags:
JavaScript, AJAX, JSON, framework, toolkit, references, resources
Posted by
Niklas Waller
at
7:34 AM
4
comments
January 30, 2008
Get your own animated favicon
A favicon for your site makes a better overall impression. My blog's favicon is the icon with the white B on an orange background in the address bar, which stands for Blogger (the platform).
It's actually possible to use animated favicons as well.
Either you can make the icon roll from up to down or you can have a marquee horizontel scroll text. It took some time before it started work in IE though and I have had some troubles with version 6 as well, but it should work for version 7 anyway and of course for mozilla.
Great feature!
This site will show you how to do it and provide you with animated icons as well. www.wohill.com is an example site that uses an animated favicon. Reload the page if you don't see it first, it runs again on each refresh.
I will be on vacation for the next three weeks by the way, so no more posts til then. See you soon!
Technorati tags:
Favicon, Animated favicon, HTML
Posted by
Niklas Waller
at
2:22 PM
5
comments
January 22, 2008
The Notes.ini ego parameter
Add this line to your private notes.ini file:Window_Title=Lotus Notes 7.0.2 mastered by Niklas Waller
and restart Lotus Notes. And don't remember to change the text, even if its ok for me to use it ;-)
Each new window in Notes will have the following title
Technorati tags:
Lotus Notes, Domino, Notes.ini, Window title
Posted by
Niklas Waller
at
9:11 AM
7
comments
January 18, 2008
Folder and embedded view problems
Notes is not being nice to me right now!
The last couple of days I have been struggling with notes problems that are really frustrating and to me seems like they are limitations hard to get around. If it's possible to get around them it's a lot of work and causes something else in the requirement specification to fail. I have another problem not described below which makes this feeling worse. I might post about that later on.
I posted on developerworks the other day about one of the problems and got a response which were good suggestions but not solutions I'm afraid.
Here is the issue with more information on other approaches:
We have a situation where there are currently 13 databases, one for a specific project and all inheriting from the same template. The prediction is that a new database (with the same template) will have to be created every week for some time. This is not a suitable solution and instead we want one database where all projects can fit in.
The people working with a specific database still need to feel that they are working the same way seing only the documents for a particular project. The database has a frameset with an outline displaying 23 views which are opened in the right frame.
Approach #1:
For each existing and each new project (former db), create 23 new outline entries and 23 new views. Since we don't know how many projects the new db will contain this is not a good solution looking at performace and usability.
Approach #2:
Use an environment variable to set which project a specific person is working on. Depending on the choice, a fixed amount of outline entries would display computed content in a fixed amount of views or folders, based on the environment variable.
Using approach #2 and views:
It is possible to (in queryopen of a view), when clicking an outline entry for the view, perform an FTSearch (for example FIELD field_name = field_value) to find and display the documents for a specific project. However the resultset is not categorized and it has to be, so this is not an option.
Using approach #2 and folders:
In queryopen of a folder, delete any existing content in the folder using "RemoveAllFromFolder" (from previous runs), perform a lookup to a view (getDocumentsByKey on the environment variable value) and put the result (notesdocumentcollection) into the folder.
This last solution works great BUT only when there are no response documents and also only if you are the only one working with the folders since they are shared. When clicking on a folder that has response documents, a message box displays saying:
"Notes error: All related response documents are being removed from this folder along with their parents. (FolderName)".
Also when refreshing the folder afterwards, all documents disappears. This error is due to the "RemoveAllFromFolder".
I can't seem to catch the error either (I think it is 4005) and do a Resume Next or similar because it is not treated as an error. A messagebox appears and the folder is not rendered as it should.
If I uncheck the folderoption "Show response documents in a hierarchy" the problem is gone. However this is not an option either.
So even if I got rid if this problem I would still be stuck with the shared folder problem. I don't won't to create private folders because then I would be stuck with perfomance issues anyway if there are many users.
I guess I could create a new folder each time an outline entry is clicked for a user, populate it and then remove it when the user leaves. But that really seems complicated as well as time-consuming for the user. It can not take longer time than it already does to open a folder as it is now.
Approch #3:
Each outline entry refers to a form which has the original view embedded. Now this is simple and works great BUT now I can't search in the embedded view AND the embedded view can not be auto-collapsed which makes it harder to read.
I tried to fix the search issue by adding a text input field above the embedded view and do an FTSearch but FTSearch is not available for NotesUIViews.
Then I saw a post on developerWorks with a link to an article by Mr André Guirard from the View which has a solution where the search button is an action in the embedded view's action bar. When clicking on it a dialog box opens a new form which creates a query and performs a search.
This does not work for me however as I want it to. Not in the following example database and not when I try it myself. I'm sure I'm doing something wrong, I am running out of patience though...
I am stuck and either they will have to live with multiple databases as it was before or they will have to use this last example without the search capability (I have added a section in the outline where all views are categorized on the projects so the functionality is still there).
Now I wonder:
#1 Does anyone know a solution or workaround to this folder approach or any of the other approaches?
#2 Does anyone have a suggestion to another solution?
#3 Does anyone have a shoulder to cry on? ;-)
Below is the QueryOpen sub of one of the folders for approach #2:
Sub Queryopen(Source As Notesuiview, Continue As Variant)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim folder As NotesView
Dim view As NotesView
Dim folderName As String
Dim viewName As String
Dim coll As NotesDocumentCollection
Dim vec As NotesViewEntryCollection
folderName = "ReqByReqIdFolder"
viewName = "ReqByID2FolderLookup"
Set db = s.CurrentDatabase
' * Get environment variable
value$ = s.GetEnvironmentString("currentProject")
Set folder = db.GetView(folderName)
Set vec = folder.AllEntries
Call folder.Refresh
folder.AutoUpdate = False
' * Remove all documents from folder from last session
Call vec.RemoveAllFromFolder(folderName)
Set view = db.GetView(viewName)
' * No environment variable has been set
' * Add all documents in view to folder
If (value$ = "") Then
Set vec = view.AllEntries
Call vec.PutAllInFolder(folderName, False)
Exit Sub
End If
' * Get all documents from view which are categorized by the value 'value$'
' * Put them in folder
Set coll = view.GetAllDocumentsByKey(value$, True)
Call coll.PutAllInFolder(folderName, False)
Call folder.Refresh
folder.AutoUpdate = True
Call folder.Refresh
End Sub
/ Take care!
Technorati tags:
Lotus Notes, Domino, Folder, Search, Embedded view
Posted by
Niklas Waller
at
10:00 AM
16
comments
January 01, 2008
Conditional statements in html code
HAPPY NEW YEAR!
2008 is here and I am confident it will be a very good year. My first post this year is no breaking news. Still good to know.
When creating web sites it always comes up browser specific issues where Internet explorer and Firefox don't render the code equally. So annoying... However using css and/or conditional statements in the html code it is possible to launch different html blocks depending on if the browser is Internet explorer or not.
The HTML will run if the browser is Internet explorer:<!--[If IE]>
HTML
<![endif]-->
The HTML will run if the browser is NOT Internet explorer:<!--[if !IE]>-->
HTML
<!--<![endif]-->
W3schools has an excellent css reference and this blog post explains and shows examples on conditional statements.
Technorati tags:
css, html, browser, Conditional statement
Posted by
Niklas Waller
at
3:20 PM
23
comments
December 17, 2007
Second Life References
Soon, Ekakan will make it public on our new virtual land and office in Second Life. We will be there in person as a company with some cool features and functions as well. Stay tuned!
This blog post will function as a references page for Second Life which, like the other reference pages for Lotus Notes/Domino and Java, is constantly updated.
General:
Articles:
- A virtual office: IBM Lotus Sametime chatting and Second Life
- Scripting Second Life with Rational Application Developer
- LSL-script for a Second Life football
Other:
Technorati tags:
Second Life, lsl, references, resources
Posted by
Niklas Waller
at
3:30 PM
1 comments
December 12, 2007
When "Recompile All LotusScript" returns an error
Recompiling all lotussript for a database returned an error today:
"<form name>: LotusScript Error - Syntax Error"
Good thing it did, but it would have been helpful knowing what was wrong. I got no hint at all other than the form name. So I looked at the modification date and by who a change was last made and tried to find the most probable change request. Still its not easy if the form is big with a lot of scripts tied to it.
I opened query save, removed a bunch of code and tried to save and there it was. The other day I had copied over a small table with some fields from another form and forgot about two buttons which were making calls to functions in a script library. This script library was not declared in Options with Use "scriptlib", but no error was raised when saving until now that is. I decided to copy the functions into another script library that was used in this form, modified them slightly and everything worked and went back to normal.
While searching for this on developerWorks I found another probable cause which might be good to know about. When defining a public class in Lotusscript named 'Picture' it can be saved without errors, but when running "Recompile All Lotusscript" the same error occurs.
Technorati tags:
Recompile All LotusScript, Domino, Lotus Notes
Posted by
Niklas Waller
at
2:01 PM
2
comments
December 06, 2007
Book recommendation for SCJP 5.0
It's time for a new book recommendation from me. In May earlier this year I recommended the book "Head First JAVA". I finished the book two months ago or so. The book stayed being excellent through the end and it's time for the next step in my mission to be a Java God ;-)
To really understand and remember everything I have combined my theoretical knowledge with practical work in the Domino environment as well as outside in Eclipse since experience is invaluable in the learning cycle. Of course I have oceans of information and experience to learn and teach but we all have to start somewhere.
So this mission must include a certification and therefore the natural choice for me had to be a preparation book for the certification test. I want to be a certified programmer for Java 5 so what would be better than reading a book named "Sun Certified Programmer for Java 5" with the same authors (Kathy Sierra and Bert Bates) as the previously recommended book? The book is really thick and is good exercize for my muscles carrying it around to and from work. Oh, and it is good reading as well. I have completed a chapter now and I am impressed as before. It has excellent coverage of all parts for the certification exam with tips and tricks, exercises and so on in a very structured way. It not only learns what to study but also how.
So go ahead and get this one if you want what I want. Read more on Google book search.
An interesting topic post from 2004 - Does Java certification matter?
Technorati tags:
Java, Sun Certified Programmer for Java 5, SCJP, Learn Java, Book recommendation
Posted by
Niklas Waller
at
2:12 PM
1 comments
December 01, 2007
Slow database performance
A database with slow performance can be caused by a lot of reasons. My last two cases were probably due to readers fields and deletion stubs.
If you have a slow view with a lot of documents in it, check if the documents have readers fields, it's a common cause and there are several suggested actions to take. If the user accessing the view only has access to a small part of all the documents it will render very slowly. A page (memory unit) will be read into memory consisting of approximately 300 documents. When scrolling down the view it will be recalculated. If you have access to all documents it will render pretty much as usual.
The other day I was troubleshooting a database which was slow to open with slow views. It had a view that it took about 2 minutes to open. The database had 50.000 documents and 129 views and this and several other views used readers fields so I figured that would be the problem.
I copied the database with all documents and accessed it with the same user and they behaved very differently. The same view that took about 2 minutes to open in the original database was opened in about 5 seconds in the copy. The only difference was the size of the database. The original was about 990MB and the copy started at 108MB.
So I figured that would be due to view indexes. An it probabaly were to some point but together with the view index it turned out that deletion stubs were part of it.
Five days a week, on each day, approximately 40.000 documents was deleted an new ones were created from an excel file (this was an old solution to update them). The purge interval was set to 120 days. So this means that there were about 40.000 * 88 (only weekdays) = 3.520.000 deletion stubs in the database. Since a deletion stub is about 100 bytes (at least it was in version 6) it means that the they used approximately 352MB of the space and the database consisted of a minimum of 352MB of deletion stubs although the count is more impressive.
The number of deletion stubs probably together with a corrupt view index caused the database to perform very slow. Fixup and Updall took a very long time as well and had to be aborted.
A copy of the database solved the problem but a long-term solution is of course to recode the agent to update the documents instead of replacing them and to make the purge interval more frequent.
Technorati tags:
Readers fields,Deletion stubs,Slow database performance, Domino, Lotus Notes
Posted by
Niklas Waller
at
1:42 PM
2
comments
October 31, 2007
Problem printing rich text fields
If you have a rich text field that contains a fair amount of information it will print nicely, but when it exceeds a certain amount of information each text paragraph will be printed on a separate page which causes a printout that normally would be of two pages to turn up on 40-50 pages. Really annoying and a waste of trees!
The solution to this problem is to enclose the rich text field in a table which compresses the content in the rich text field and prints nicely.
While testing, look at the print preview which shows the same result as the actual printing.
Technorati tags:
Lotus Notes, Domino, Rich text, Richtext, Print
Posted by
Niklas Waller
at
8:10 AM
2
comments
October 23, 2007
Prevent pasting documents into a view
Short tip today!
If you want to prevent documents from being pasted into a view, click on section 'Querypaste' for the view and type Continue=False in the sub routine.
Technorati tags:
Lotus Notes, Domino, View, Paste documents
Posted by
Niklas Waller
at
3:41 PM
4
comments
October 18, 2007
Print selected documents and attachments from a view
I have been trying to figure out how to print a document and its attachments when marking it in a view. A colleague had an agent which did the works as long as the attachments only are word documents. But if you don't know if it is a word, pdf, rtf, jpg or any other attachment the code gets long, uggly and still you proabably haven't covered all possible cases. I have however found a solution thanx to Charles Robinson who shows how to shell a windows application to open the attachments.
I have used my existing code with this one and the result is an agent that can run on selected documents in a view, print the documents and each document's attachments. It is run through a view action.
The code is not ultimate at all and there are still some minor problems left like when no application gets associated with the attached file nothing is printed out and that acrobat reader doesn't close when done. Probably fixable, but I am satisfied for now.
As you can see below I have used a sleep command. This might have to be adjusted depending on many different things, but it is needed or else the documents and attachments competes who gets to the printer first and everything is unsorted.
Here's the code. Hope someone can enjoy it!
In Options add Uselsx "*lsxlc"
In Declarations add Charles Robinsons code:
Const SEE_MASK_NOCLOSEPROCESS = &H40
Const SEE_MASK_FLAG_NO_UI = &H400
Private Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Declare Function ShellExecuteEx Lib "shell32.dll"_
Alias "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long
Declare Function TerminateProcess Lib "kernel32"_
Alias "TerminateProcess" (Byval hProcess As Long, Byval uExitCode As Long) As Long
In Initialize add the following code:
On Error Goto ErrorHandler
Dim SEI As SHELLEXECUTEINFO
SEI.cbSize = Len(SEI)
SEI.fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_FLAG_NO_UI
SEI.lpVerb = "print"
SEI.nShow = 1
SEI.hInstApp = 0
SEI.lpIDList = 0
Dim s As New NotesSession
Dim session As New LCSession
Dim db As NotesDatabase
Dim object As NotesEmbeddedObject
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim downloadfolder As String
Dim extrachar As String
Dim filecounter As Integer
Dim filecount As Integer
Dim filen As Variant
Dim antalfiler As Variant
Dim i As Integer, x As Integer, y As Integer
Dim sFile As String
Dim uidoc As NotesUIDocument
Dim ws As New NotesUIWorkspace
Dim success As Variant
' Create a folder for temporary storage of files
downloadfolder = Environ("tmp")
Set db = s.CurrentDatabase
Set dc = db.UnprocessedDocuments
For i = 1 To dc.Count
Set doc = dc.GetNthDocument( i )
' Print document
Set uidoc = ws.EditDocument( False , doc , True , )
Call uidoc.Print(1)
' Get all attachments and print them
filen=Evaluate("@AttachmentNames",doc)
antalfiler=Evaluate("@Attachments", doc)
Call uidoc.Close
Delete uidoc
If antalfiler(0)>0 Then
For filecounter=0 To antalfiler(0)-1
x=x+1
Set Object = doc.GetAttachment( filen(filecounter) )
If ( object.Type = EMBED_ATTACHMENT ) Then
fileCount = fileCount + 1
If Dir(downloadfolder+"\"+ filen(filecounter))="" Then
extrachar=""
Else
' Extra character in case there are attachments with the same name
extrachar=Left(doc.universalid,4)+"___"
End If
Call object.ExtractFile (downloadfolder+"\"+extrachar+ filen(filecounter) )
End If
Next filecounter
End If
For y = 0 To filecounter-1
sFile = downloadfolder+"\"+extrachar+ filen(y)
SEI.lpFile = sFile
Call ShellExecuteEx(SEI)
Call session.Sleep(2000)
Next
' Delete all files
Call session.Sleep(5000)
For y = 0 To filecounter-1
sFile = downloadfolder+"\"+extrachar+ filen(y)
Kill sFile
Next
'Call TerminateProcess(SEI.hProcess, 0)
Next
Exit Sub
ErrorHandler:
msgbox Error$ & " on line " & Cstr(Erl) & " in " & Lsi_info(12)
Exit Sub
Technorati tags:
Lotus Notes, Domino, Shell, Print attachments
Posted by
Niklas Waller
at
6:11 PM
1 comments
October 13, 2007
Java references
I decided to create a Java references page as well (see Lotus N/D references for Lotus Notes/Domino and Sametime references) for my own use and possibly for someone else as well. Feel free to leave comments if you have suggestions to other reference pages and I will update this page.
Below is some of what I have come across so far.
Tutorials/References/APIs/Examples:
- Reference documentation
- Java2 Platform Standard Edition 5.0 API Specification
- The Java Tutorials
- The Java Developers Almanac 1.4
Tools/plug-ins for Java conventions:
- Checkstyle
- Checkstyle plug-in for eclipse
- Mobilefish Checkstyle configuration file
- Jalopy - Source code formatter
- SCJP FAQ
- SCJP Tiger Study Guide
- JavaBlackBelt - Java Certification Community
- JavaBeat - SCJP Mock exams
- eXamulator
- SCJP 5.0 preparation article
- nsf tools - Java Tips
- Using Lotus Notes with Eclipse to manage and run your Java programs
- Lotus Notes and Java
- Domino Javadoc Generator
Eclipse:
- Eclipse
- Eclipse Plugin Central
- Plugin: LotusScript Editor for Eclipse
- 10 Eclipse Navigation Shortcuts Every Java Programmer Should Know
Other:
Technorati tags:
Java, References, Code convention, Development, Certification, Notes and Java
Posted by
Niklas Waller
at
7:48 AM
0
comments
October 12, 2007
Conventions for Java code
I like the structure with Java. Although you can create structure with any language it somehow feels as it comes with Java, so it feels easier to accomplish and is kind of satisfying (in a really geeky way). So included in my personal project to be a kick-ass java developer (;-) I am also aiming towards writing nice, readable code that is based on predefined code conventions and guidelines both for the programming part but also for commenting.
You might have heard that really good written code doesn't need commenting. Maybe that's a bit exaggerated but in some sense true. If all variables, methods, classes and so on are named after specific conventions they will be more readable to you and other programmers that might inherit your code some day.
Take a look at the conventions for coding and commenting here:
- Code conventions for the Java Programming Language
- Java Programming Style Guidelines (another format of the above)
- How to write doc comments for the JavaDoc Tool
Technorati tags:
Java, Code convention, JavaDoc, naming, Programming Style Guidelines
Posted by
Niklas Waller
at
8:50 AM
4
comments
October 11, 2007
XHTML Character Entity Reference
For all of the web developers out there. Here's an Ajax-based structured reference tool for XHTML Character entities. It lists the allowed entities in HTML 4 and XHTML 1.0 as outlined by W3C.
Seems like it could be of good use at occasions!
Technorati tags:
Reference, Character entity, XHTML
Posted by
Niklas Waller
at
7:20 AM
0
comments
October 03, 2007
Get started with Dojo
Did you know that you could do this on any web page and fairly quickly? All you need to do is to access some javascript source files and add your own pictures. I might add the fisheye example to this blog later when I have more time.
With Dojo someone else has done the work for you to use for free and it works in any browser (or at least the most common ones).
I am currently looking into dojo and playing with it and I really like the way it's heading. An API (0.4.2) already exists much like Java's although they can't really be compared since the documentation certainly could be better with examples and references and it takes quite a lot of time to understand what to do with the objects if you're new to the toolkit. A really good thing is that you, as in Java, can choose what to include in your webpage. That is you don't have to import the entire library but only for example the widget functionality (dojo.widget.*).
Follow the link to dojo below to get started with several good tutorials and examples. But just to mention it, all you need to do is to download a zip-file and extract it to your file system. Then create a html-file, include dojo javascript source files and you're up and running.
Further on, and this is really interesting, there is a rumour that says that Dojo will be installed by default on the next version of Domino. Now if that's going to happen or not, I don't know, but it certainly gives me another reason to start looking at this.
If anyone knows any other good references or examples that you recommend please leave a comment.
- Dojo
- The Dojo Project's JotSpot wiki
- Alpha API (for Dojo 0.9)
- Dojomino: Info and tutorials for using Dojo with Domino
- The Dojo book, 0.9
- The Lotus Quickr templates contains a lot of dojo code I've been told.
Technorati tags:
dojo, JavaScript, Toolkit, Lotus Quickr
Posted by
Niklas Waller
at
11:50 AM
2
comments


