Friday, December 29, 2006

hide-when formula in Richtext fields

Richtext item inherits and keeps it's hide-when formula from the form's design when the document is saved for the first time. So if you set hide-when formula of the paragraph containing richtext field to "status=1" and create a new document, the richtext will also got "status=1" formula. When you later in the design of the form change the hide-when formula of the field's paragraph to "status=2", the richtext will still have the old "status=1" formula. To change the formula in the richtext field, you would need to open each document and manually change the formula to the new one.

You can prevent this problem from happening by putting the richtext field into a subform without any hide-when formula and then include the subform as a Computed Subform into the form. By changing Computed Subform's formula you can deside whether subform containing your richtext is shown or not. The formula for the computed subform will be: @If(status="1"; "MySubform";""). So instead of hiding the paragraph containing the richtext field, you simply do not show the subform containing the richtext field.

In case you already have many documents which must have their old hide-when formulas changed to a new formula and you do not want to do it manually:
a) You can use DXL LotusScript/Java classes to export documents to XML format, then locate and modify the hide-when formula and import the document back to the database. See below for a short example of export result.
b) You can also change hide-when using Midas Rich Text LSX tool (commercial). Check here: I haven't try the hide-when functionality of the tool yet, but other richtext functionality I earlier used was easy to call in LotusScript.

Here is an example of richtext export to DXL:

<item name='Body'><richtext>
<pardef id='2'><code event='hidewhen'><formula>status="1"</formula></code></pardef>
<par def='2'>text line 1</par>
<pardef id='3'><code event='hidewhen'><formula>status="2"</formula></code></pardef>
<par def='3'>text line 2</par>

If you have 3 lines of text in richtext field, and all 3 lines are hidden with same hide-when formula, and you then decide to set another hide formula on line 2, the second line of the text will get it's own hide-when tag in XMl as expected, but the third line of the text will not get it's own hide-when formula in DXL code, but will instead inherit the original hide-when formula by using same "pardef" id reference as the original text had:
<item name='Body'><richtext>
<pardef id='2'><code event='hidewhen'><formula>status="1"</formula></code></pardef>
<par def='2'>text line 1</par>
<pardef id='3'><code event='hidewhen'><formula>status="2"</formula></code></pardef>
<par def='3'>text line 2</par>
<par def='2'>text line 3</par>

I am currently creating a LotusScript library with various DXL features for working with inline images and attachments, and I am considering to include the functionality to remove all hide-when formulas from a richtext field. Should be rather easy to accomplish to locate the node containing the hide-when reference and then simply remove that node.

Monday, December 25, 2006

Sametime bot shows a random Bible quote

To celebrate Christmas holidays, I've re-enabled "biblerandom" command for Sametime bot. This command shows a random verse from the Bible (both Old and New Testaments).

The Notes database which bot uses for finding answers was created from a Microsoft Access database and contains all books from King James's version of the Bible. The search function is implemented using LotusScript agent triggered from the bot.

Click HERE to try the Sametime bot command. After you logged in to chat application using any name, type "biblerandom" or "bible" without quotes and click the "Say" button. You can send this command many times, each time you will get a new Bible verse.


Bible Bot


Funny video about history of Ctrl+Alt+Delete

An old video, but still funny:

Saturday, December 23, 2006

An interesting advice for LotusScript developers to avoid memory leaks

In the technote GetProfileDocument Method Appears to Leak Memory; Error "...LookupHandle: Handle Not Allocated", an interesting solution is given for avoiding memory leaks in certain LotusScript operations.

We all have at some time seen that some objects (usually documents in loops) are not properly removed by Notes after they have been processed and we had to call Delete method on the object to free the memory. Well, I think not many of us tried to free even Database object in each loop iteration. But according to the technote, assigning and deleting database object in each loop iteration can make a big difference. It would be interesting to test how this solution affects performance, as I suppose it would take time to reset database object 6000 times.

The memory usage can be reduced by deleting the object handle to the profile document, but if you delete the object handle to the NotesDatabase object, then the memory usage is greatly reduced.

For example, based on the agent example above, the code would be altered to the following:

Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim i As Integer
For i = 1 To 6000
Print Cstr(i)
Set db = new NotesDatabase("server", "database.nsf")
Set doc = db.GetProfileDocument("ProfileDoc", Cstr(i))
Delete doc
Delete db

Making Internet password changes work faster

IBM has recently published a technote on how to speed up Domino server recognition of a recently changed Internet password.
Technote: New Internet password is not immediately usable
Looks like solutions described in the technote should work with other similar caching problems. Hopefully it can help against problems with cached group members when users who were added to a group still can not access databases containing that group in the ACL.

Merry Christmas from Sametime Bot

Follow this link to see Christmas greeting from our Sametime bot Max:
And turn on sound on your computer :)

On the same page you can try out AJAX-based Sametime chat interface to bot.


Wednesday, December 06, 2006

Lotus Roadshow 2006 in Stockholm

On the November 30th there was a half-day seminar at IBM about the new release of Domino and features of Sametime 7.5.
A little strange that roadshow in Stockholm was whole 23 days after the seminar in Gothenburg. Stockholm was the last city out of 12.
All seats in the conferance room were taken by more than 200 visitors (customers and business partners).
IBM's presenters showed how the new Lotus Notes 8 client looks like and some of the new features not available in earlier versions.

A funny thing happened when the presenter would show the integration of Notes client with SAP. He asked if there were any people in the audience who used SAP at their company. Noone raised their hand.

Here are presentations from the Road show:
And here are presentations available for online reading, converted by Thomas Adrian to Flash format: