Domino Development
PermaLink User-customizable view columns don't work with shared columns?01/20/2010 12:06 PM
Domino Development

Blogger of the year Chris Tooey wrote an excellent article on how to set row colors using profile document.  Unfortunately, I discovered today that it does not work with shared columns.  I created a non-shared view column and it works just fine.  Time to call Lotus Support and complain!



(0)

PermaLink Domino apps on the iPhone04/08/2009 05:49 PM
Domino Development
I had a good day helping a client iPhone-enable the custom Domino login form, as well as their Home page.

Interestingly enough, displaying a frameset in the iPhone overrides whatever you do in terms of controlling the display width of an initial form or page. Fortunately, I remembered the old trick of using $$NavigatorTemplate to display an initial form in a Domino application without using a frameset.

One thing I tried to do is find a good emulator for the iPhone. Apple offers an iPhone SDK, a 1.5 gig beast of a download, but its only for Mac OS. (It's a .SMI file). Anyone out there know of a good iPhone emulator?

(5)

PermaLink Why am I so impressed with Domino Web Services?12/28/2007
Domino Development
For starters, I can create a Domino web service using Lotusscript. And since I haven't done much Java coding lately, I appreciate not having to remember all of the Java particulars in order to create a web service.

From what I can tell so far, a Lotusscript-based web service can accomplish everything that a Java web service can. No "gotta use Java for this because Lotusscript can't handle it" predicament here!

Domino Web services are based on custom Lotusscript classes. I've been creating custom Lotusscript classes for about four years now, so creating one that serves as the basis for a web service is a snap. Sure, I'd like to be able to see my class properties and methods in the Objects tab, but none of us have had that capability since Lotusscript was introduced in 1997. Maybe, someday...

A Domino web service can handle simple input like a text string or a complex object represented in XML. This probably puts a Domino web service on par with a WebSphere web service, a Microsoft .NET and most other web service platforms. While this isn't an earth-shattering revelation, its nice to be able to say this about Domino when I can!

When a client calls a Domino web service, Domino automatically populates the parameters of your web service function with data received. If your web service receives an XML document, Domino will automatically "transform" the data in that XML document into custom Lotusscript classes that you reference in your function declaration. (And by "transform", I'm not referring to XSLT or XSL-FO.) For an excellent description how this works, I highly recommend reading Julian Robichaux's article titled "Practical Web services in IBM Lotus Domino 7: Writing and testing simple Web services".

You can run web services on your Domino server without having to perform any additional configuration. That's worth repeating: You can run web services on your Domino server without having to perform any additional configuration.

You can test web services locally, provided you start your local web retriever task by previewing something in your browser.

If you know how to create and debug a Domino agent, you can create and debug a Domino web service. While there are differences between the two, there are enough similarities so that an experienced Domino developer can start writing Domino web services quickly.

Taking all of the above into consideration, I'm amazed at how simple it is to develop web services in Domino. Domino developers are able to leverage their existing skills, and can develop solutions without a Domino server. Amazing. If only IBM/Lotus had spent its time adding more capabilities like this to Domino, instead of chasing its collective tail and ultimately fumbling the whole Lotus Workplace thing...but I'll save that rant for a future blog.

(1)

PermaLink Inherit from the design template question01/03/2007 12:08 PM
Domino Development
I've created a template called Shared Code (sharedcode.ntf) that contains some script libraries, views and forms that I typically include in other templates. When I paste design elements from sharedcode.ntf into another template (sample.ntf), I chose to have the pasted design elements inherit from sharedcode.ntf. These pasted design elements have Shared Code specified as the design template name, and also have a special icon to the left of their design name in Domino Designer.

All of the above is working as I expected. However, when I refresh the design of a Sample database (sample.nsf) with a template that includes design elements that inherit from sharedcode.ntf, the design elements from sharedcode.ntf in sample.nsf do not have Shared Code specified as the design template name and the special icon no longer appears.

The problem I have with this behavior is that when I need to roll out a change to a design element in sharedcode.ntf, I need to put all of my application templates (sample.ntf, etc.) on my production servers, instead of just sharedcode.ntf.  Let me explain this a bit more...

I know that by refreshing sample.ntf, sample.ntf will receive the design changes from sharedcode.ntf.  (Although not quite the same as for other development environments, this can be referred a build.)  However, if I have 100 templates (NTFs) that inherit design elements from sharedcode.ntf, and I change one of these design elements in sharedcode.ntf, I need to build all 100 templates (NTFs) again in order to deploy the change across all 100 databases. Either that, or I need to keep sharedcode.ntf and all 100 templates on my production server, and have the Designer task propogate the changes to all templates and databases.

I had thought that design elements in a database (NSF) always showed the design enheritence for individual elements, not just templates (NTFs).  In fact, I remember that this was how things worked in R5.  Was this behavior intentionally changed between R5 and ND6? Or, is this behavior a result of a bug in the ND6 codestream that has been fixed in later codestreams?


(3)

PermaLink Processing multiple documents from a Domino view04/17/2006
Domino Development
One facet of Domino development I researched for the Adding Agents to Domino Applications presentation I gave last week at the Advisor Summit was how to process multiple documents from a Domino view. In the Notes client, this is relatively simple, as you can use NotesDatabase.UnprocessedDocuments, NotesUIView.Documents or even NotesUIDatabase.Documents to get a collection of all of the documents that are currently selected in a Notes view. However, for the web, this is not so simple, as there is no NotesUIView or NotesUIDatabase object to access. Also, all agents run via the web must have their Runtime Target set to None, effectively disabling the UnprocessedDocuments property. I'd read several articles on how to give an agent a collection of documents to process, notably Jake's article from back in January '03. However, Jake's method seemed like a lot of work to get a simple view up and running that allowed selection of documents. I managed to stumble upon a tip on the TLCC website that worked under the assumption that you were essentially working with the Notes view as rendered by Domino, not treating the view as HTML and adding your own HTML tags to the view column formulas.

That TLCC tip worked great, and I included it in my presentation. However, for a project I'm currently working on, I need to follow a standard look and feel for all web-enabled Notes applications. This means that I have to treat the view as HTML so I can add all sorts of HTML tags and CSS attributes to the view column headers and column formulas, which then allow me to format the content using the agreed-upon look & feel standards. However, if you enable the Treat view contents as HTML advanced view property, you no longer can select the Allow selection of documents. Sheesh! So, Jake's article proved to be very handy for my situation.

(3)

PermaLink Reference multiple classes in CSS04/17/2006
Domino Development
One nice aspect of treating Domino application like traditional web development is that it forces you to learn all sorts of advanced JavaScript and CSS tricks. In particular, you can code an HTML tag to reference two CSS style classes. Why would you do this? Well, I had an editable field that was being displayed as a field label. So, the field had to use both the label class style properties, as well as additional style properties that just that field. The label class dictated that field labels must be displayed in bold. The field itself needed to display without the default INPUT field border. Without duplicating the label class attributes, I wanted the field to be displayed using all of the properties defined in both style classes. For a nice example of how to reference two classes in an HTML tag, check out this tip.

(4)

PermaLink I hate embedded outlines!01/31/2006
Domino Development
Now, don't get me wrong. I do like using embedded outlines with the Notes client. However, they way they render in a web browser is simply mind-boggling.

Part of my complaint is that due to corporate standards, I can't display the outline as a Java applet. So, I have to use the HTML rendering. Unfortunately, the way Domino displays the outline as HTML leaves much to be desired.

My primary example is how Domino always adds a table cell to the left of the outline text for an image, even if you've configured the outline entry not to display an image. Here's Domino's rendering of the first entry in my outline:

<table width="192" border="0" cellspacing="0"> <tr><td width="100%" align="left" valign="top" bgcolor="#FFFFFF"><img border="0" height="16" width="16" src="/icons/ecblank.gif" alt=""><img border="0" src="/icons/ecblank.gif" height="1" width="20" alt=""><font size="2" color="#000000"><a href="" onclick="return _doClick('852570F20072CB9A.$Outline/9e3377442b6c3e73852570d8006bcc0b/30', this, null)">Home</a></font></td></tr>

As you can see, Domino added a blank table cell for where an image could be displayed. However, this outline entry not defined as displaying any image:



And in the embedded outline properties, I've also specified that top-level entries have no offset:



Ugh. And to think that this behavior has been going on since outlines were introduced with R5. But I guess this is nothing in comparison to how Domino has been rendering views by default since R4.5...

(1)

PermaLink Broken as designed - local preview of a view yields "No documents found"01/05/2006 08:34 AM
Domino Development
Last night, I was working on a Domino application. When I previewed my changes locally, my views always displayed "No documents found". I could preview individual documents, so I figured the problem wasn't due to ACL settings. It turns out that this problem is due to a regression bug introduced with V6.0. See SPR# DBRO65HJJ9 for more info. Thanks to Steve Leland for clarifying this in the LDD Notes/Domino 6 and 7 Forum

(0)

PermaLink Creating a "Starts with..." box for web users01/03/2006
Domino Development
In the Notes client, when you start typing in any view, a "Starts with..." box automatically appears:

Notes Starts with box

This functionality is very handy, especially when you want to "jump to" a particular category in a view:

Categorized view in Notes

Remember back in V3 how you didn't get this box at all? You just started typing as fast as you could, to make sure Notes got the entire string you were looking for? But I digress.

So, how would you implement this for web users? Click the Read More link below to learn how...


(0)

PermaLink Using CSS to over ride a Rich Text Field font12/22/2005 09:13 PM
Domino Development
When a Notes document is opened or read in a web browser, Domino automatically translates all font names, colors, sizes, etc. used in a Rich Text Field. So, if a Rich Text Field contains text that uses Arial font, Domino serves the following to the user's browser:

<font face="Arial">On February 5, 2006 Detroit will host Super Bowl XL. A number of events are planned leading up to the game starting the week of January 30 that will bring visitors from around Michigan and from out of state to Southeastern Michigan. Branches are asked to carefully consider appropriate cash levels to accommodate increased demand on branch serviced ATMs or bankcard cash advances. If your branch is in the downtown Detroit area or near local hotels or transportation centers, please take this demand into consideration when placing cash orders during the weeks of January 23 & 30.</font>

I tried adding the typical stylesheets to over ride the font tag served by Domino, like applying a font-family to the </body>, <p> and <td> tags. Didn't work. I even looked through the series of articles Scott Good wrote for the Lotus Advisor a while back. Nothing in there, either.

Then it hit me: I just need to override the <font> tag. No problem.

(2)

PermaLink A thought on web-enabling Notes databases11/05/2004
Domino Development
One of the biggest challenges I face as a senior consultant is maintaining existing Notes applications. Notes applications that have been web-enabled are particularly challenging. Why? Part of this is due to the process of web-enabling a Notes application. Are there separate design elements for the Notes client and the browser client? If so, then you end up with twice the amount of code to support. If a single design element, say a form, is used for both clients, then you have to pick through the various events to locate the code specific for that client. For example, with Notes 6.x, you can put code for both Notes client and web clients in a single button. On the surface, the design of the form is much cleaner. However, there is no easy way to find out if a button, action or whatever has Notes client code in it, web client code in it, or both. I had to update the Javascript code in a form action button recently, and was very confused as to why my code changes weren't working. Then it dawned on me: I had changed the code in the Client event, and not the Web event. The solution was to change the type of code being run to Common Javascript, but that didn't change the fact that there was no really good way to see that there was two code streams present in the action.

This situation made me reflect on what IBM Lotus is proposing with the Lotus Domino Toolkit for WebSphere Studio. What they are proposing is that instead of maintaining the web version of your Notes application within the Notes application itself, you create and maintain the web UI of the Notes application within JSPs within WebSphere Studio. This, of course, is much simpler than it sounds. You first have to have a WebSphere Application Server (WAS) up and running, and then configure SSO between it and your Domino servers. You also have to have DIIOP running on all Domino servers, and properly configure the Run unrestricted methods and operations setting in the server documents. There is the small matter of being able to write JSPs and being able to use tag libraries, the Domino JSP Custom Tags in particular. Finally, you will need to work within the limitations of the Toolkit. For example, you can only leverage forms, views and agents in JSPs. So you won't be able to use an outline or a page you've already created for the Notes client.

But if you do have a WAS up and running and SSO is configured between it and your Domino servers, writing JSPs and using taglibs is a (relatively) small mountain to climb. What are your thoughts?

(0)

PermaLink codestore.net comes through again09/23/2004
Domino Development
I implemented a custom event monitor for one of my customers. This monitor sends myself and the organization's Notes administrator an e-mail whenever an event with the following text occurs on the Domino server:

HTTP Web Server: Lotus Notes Exception

I implemented this monitor because of a Lotus Notes Exception that was occurring when users were entering text into a numeric field that wasn't required. Whenever a user did this, the following would appear in the Notes Log:

HTTP Web Server: Lotus Notes Exception - Cannot convert text to a number [/apps/somedb.nsf/5fb803444610eed885255fa30050e8e8?OpenForm&Seq=3]

I mentioned this to my customer, who said that the field didn't need to be numeric. So, I changed it to text and this error went away. However, my custom event monitor began notifying me about another problem with the Domino application:

HTTP Web Server: Lotus Notes Exception - Special database object cannot be located [/apps/somedb.nsf/]

I wasn't sure what this exception meant, so I looked up in Jake Howlett's DominoErrors database. Sure enough, Jake's synopsis for why this error occurs was right on the money. My Domino database was set up to open the About document on first use, but didn't have an About document defined. This was easily remedied, and the error has not occurred again since. Thanks, Jake!

(0)

Credits
NuTechs Powered by Domino
Search
Calendar
September 2010
Su
Mo
Tu
We
Th
Fr
Sa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Monthly Archive
Get Real, Detroit!
Real Detroit Weekly
SWARM
Service
With
A
Rapid
Motion


-- old Rally's Hamburgers credo
Lotus Domino ND6 RSS News Feed RSS Comments Feed Podcast Feed Geo URL netcraft RSS Validator Lotus Geek Chris. A. Brandlehner Open Notes Picture Database OpenNTF CoComment Integrated BlogSphere
By Category
The BlogRoll
About
Contact Me
Contact me, Michael Sobczak, using this e-mail address:

my first initial my last name at Yahoo dot com
Recent Entries
No Recent Blogs
Powered by
Blogsphere