customer called today with a rich text issue. The issue was not with CoexEdit, which works just the way they want, but rather with a database which they only use through the web. Using our integration database and some tips I had given them before, they had gotten the database working on the web, and were using a WebQuerySave agent to set the HTML to be passthrough HTML, thus allowing it to display properly from read mode. This was just using the regular Notes Rich Text classes, which are actually good for something after all.
But in classic fashion, creating a rich text field and then appending some html with a style set had created two Body items. That would not normally be a problem, because when you edit in the Notes client, it puts the items together for you, but since this database was never edited through the Notes client, that never happened. It just so happened, the customer had a process that would take the HTML from the body field and print it from the web, but it kept on getting the empty Body field. The customer could have written a more robust handler that would take the HTML from each item, but for internal reasons didn't have that option. (See post
for details) So they asked me for help.
Now, what did I do? Did I whip the answer off the top of my head? Did I search my compendium of rich text tricks to find an answer? Well, no, I didn't. This falls into the vast area of "rich text stuff I don't know so well", so I wrote to Jake Howlett (whose codestore.net
is an invaluable resource), because I vaguely remembered his having some such issue and resolving it when integrating TinyMCE, and since I stole his code to set passthrough HTML to send to this customer in the first place...
Jake wrote back. He did not remember ever writing about this, but he did have a suggestion. Why not use the NotesRichTextItem.Compact
method at the end of the WebQuerySave agent? I suggested this solution to the customer, and it appears to have worked. But Jake's comment at the end of his note said:
That seems too easy a solution to a problem asked by "Mr Rich Text"
Ouch! But Jake is right in a sense. I know a heck of a lot about rich text, but I don't always recognize the additions of recent versions. I added an implicit compact to my rich text processing engine in Notes R3, then moved that to the Midas Rich Text LSX when I created it for Notes R4.1, and I never noticed when IBM added the Compact method in Notes 6. This exposes one of the major shortcomings of my knowledge about rich text - it was learned so long ago, some of it just isn't true anymore. It also shows that while IBM may be a little late to the game sometimes (c'mon, I was sorting rich text fields in formula language in R3.3 and in LotusScript in R4.1, and they still don't have that in ND7), I should not assume that they are making no progress at all.
In any event, thanks, Jake!
Copyright © 2005 Genii Software Ltd.