dominoGuru.com

Latest Updates

Products & Applications

Showtime
My Blackberry Enterprise Server Push Utility for the Lotus Notes Client, allows you to create Jobs for individual Channel, Message, and Browser Content Pushes, as well as allows you to delete Pushed Channel Icons from defined recipient devices.

Time Tracker
The idea is simple. At the start of your day - upon completion of your first task - create an entry highlighting what you did and whether you feel it was an efficient or inefficient use of your time. Based on several requests, you can also select the priority, apply categories, or even align your time against a project.

For Lotus Notes Client v8.0 and above, you can use the Time Tracker Widget to make this process even easier!

Zephyr
My Configuration-based Rich Text Mail Merge and Emailing Utility, Zephyr allows you to create rich, data-driven emails to support automated workflow - all via Microsoft Word Mail Merge-like architecture. Dear <firstname> allows you to personalize each email message not only to the individual recipient, but also to the individual application workflow event!

xCopy
xCopy is a simple configurable xCopy client for the Lotus Notes client. By creating and defining xCopy Profiles, you can batch process your file backup or remote upload jobs. With the addition of the xCopy sidebar widget, you can easily kick-off these jobs, and modify both the xCopy Profiles and xCopy itself.

Community & Resources

Lotus Technical Information & Education Community

The Lotus Technical Information & Education community is comprised of IBM, business partner, and customer subject matter experts who use product wikis, published articles, white papers, community blogs and the latest in social media to build and share high quality technical content.

OpenNTF.org - Open Source Community for Lotus Notes Domino

OpenNTF is devoted to enabling groups of individuals all over the world to collaborate on IBM Lotus Notes/Domino applications and release them as open source.

developerWorks Lotus : Wikis

Share your deployment experiences and best practices in our wikis and help IBM to create scenarios for successful deployments. Contribute to the community by collaborating on shared content and leverage the shared knowledge from that community.

Cleaner URLs via IBM Lotus Domino URL Substitution Rules and BASE HREF

08/11/2010 08:35:00 AM by Chris Toohey

This site - dominoGuru.com - runs on IBM Lotus Notes Domino... but you wouldn't know that from the URL. This quick tip highlights the technique of using Domino URL Substitution Rules for domain-specific Internet Site Documents to create cleaner URLs while still maintaining Domino NotesData Domino URL Command functionality.

Let's say your NotesDatabase is located on your Domino server in two subdirectories off of the root/Data directory:

/<dir1>/<dir2>/index.nsf

Our first step is to create an Internet Site Document for the incoming domain. Simple create a new Internet Site Document (after first making sure that your Domino server is setup to use Internet Site Documents...) with the following information:

Host names or addresses mapped to this site: Home URL:
dominoguru.com
www.dominoguru.com
/<dir1>/<dir2>/index.nsf/index.html

If you do nothing more than this, hitting dominoguru.com (or www.dominoguru.com) will work. It will consume the HTTP Request, and launch the NotesDatabase with the following URL address:

http://dominoguru.com/<dir1>/<dir2>/index.nsf/index.html

Now, if you're using the standard Domino URL formatting, you can get away with making every URL-based link relative to the Domino-generated base URL. The problem with this technique however is that when moving between the Form/View/Page and the NotesDocument levels in the URL the Domino-generated base URL changes.

When you're on a Form/View/Page, the base URL is the NotesDatabase which means a call to image.gif actually points to:

http://server/<dir1>/<dir2>/index.nsf/image.gif

This breaks when you load a NotesDocument via URL, as the base URL shifts from the NotesDatabase to the View:

http://server/<dir1>/<dir2>/index.nsf/viewUNID/image.gif

Of course, you could create a relative URL to the given resource -- instead of image.gif use /image.gif -- but this actually makes the base URL the Domino Server... which is by design, as you could easily use the HTML subdirectory to store your common images, JavaScript frameworks, etc. and simply refer to them via /html/image.gif.

But to use a native resource to the NotesDatabase, you have to use some developer-Fu and add a Computed Text instance in front of the URL linked resource:

<img src="<Computed Text>image.gif" />

Where your Computed Text is the following:

"http://" + @GetHTTPHeader("HOST") + "/" + @WebDBName + "/"

Some Domino Developers have recommended adding a Base HREF tag in the HTML Header with the following formula:

<base href="<Computed Text>" />

... where the <Computed Text> Formula is the same Formula as the Computed Text example above.

Using this technique, you can simply refer to image.gif, or screen.css or FormName or ViewName or even ViewName/NotesDocument via URL, and the browser client will use the NotesDatabase as the root location.

... but this still gives you Domino-generated URLs.

And that's where the Internet Site Document Substitution Rules save the day!

IBM Lotus Notes Domino Internet Site Documents and Substitution Rules for dominoGuru.com

You simply create Substitution Rules for your Internet Site Document, making any inbound URL /* point to /<dir1>/<dir2>/index.nsf/*.

You then simplify your Base HREF:

"http://" + @GetHTTPHeader("HOST") + "/"

And now <img src="image.gif" /> from http://dominoguru.com actually points to http://dominoguru.com/<dir1>/<dir2>/index.nsf/image.gif... but the URL address is simply http://dominoguru.com/image.gif!

This technique can be used when Domino is run in a ASP model (multiple customers/domains on a single Domino Server) or for those developers that don't have HTML directory access at the OS level, but need to add JavaScript and CSS Frameworks to your Domino apps while maintaining the framework directory structure.

This technique also allows you to move your NotesDatabase to another server or change the directory structure without breaking all of your search engine indexed and external hand-written URLs... aiding your Domino environment administration as well as your ability to maintain content availability.

 
Carl TylerName:Carl TylerWebsite:http://www.epilio.comComment

This is great, and I do something very similar with my sites.  One thing you should point out however, is that with your /* substitution rule you are limiting dominoguru.com and www.dominoguru.com to a single nsf for everything.

Chris TooheyName:Chris TooheyWebsite:http://www.dominoguru.com/Comment

@Carl:

Absolutely correct Carl, this does point you to a single database solution... but the technique can be modified to account for additional NotesDatabases simply by modifying the substitution and Base HREF logic.

David BarryName:David BarryWebsite:https://www.bleedyellow.com/blogs/asktheclient/Comment

One tip I use is the Domino can reference a document in a sorted view by any unique identifier.

If you create a view named P with the first column being a unique identifier and sorted you can call it with just view name and the identifier.

index.nsf/<viewname>/(document identifier)

Example:
procwiki.nsf/d/4242

A nice short url with no UNID's

viewUNID

DominicName:DominicComment

Hi Chris

Thanks, this is particularly useful when optimising sites for google etc.

Do you have any thoughts as to dynamic URLs, which is another problem area for search engines?  If a site has many product pages, each URL will be the same with qualifying arguments: product?open&name= good-product-nameproduct?open&category=good-category-name&name= good-product-name

Search engines prefer static pages:

product/good-product-name.html

product/good-category-name/good-product-name.html

Your tip is good and when there are not too many products, creating substitution rules for each is plausible.  Is there a better way, can one rule handle multiple substitutions?

Best regards

Dominic

SamirName:SamirComment Hi Chris,

Thanks for this great article. 

Just wondering if you have seen this problem before:

I use /product/product-cat and replace it with a domino url, as well as /product/product-cat/productname and replace that with domino a url as well.

So far example:
1) /trousers/jeans - goes to a generic page with lots of jeans (/site.nsf/frmProduct!readform&type=jeans)
2) /trousers/jeans/a1 - goes to that specific product (/site.nsf/frmProductDetails!readform&type=jeans&prod=a1)

I have used the following substitution rules:
1) /trousers/* substituted with /site.nsf/frmProduct!readform&type=*
2) /trousers/*/* substituted with /site.nsf/frmProductDetails!readform&type=*&prod=*

The first rule works fine, but the second rule combines both the type and productname for prod param?

I will do further tests, but is there something obvious here that I am missing!!

Thanks for your help.

Best Regards,

Samir

(not published)




Evaluate this Formula: @LowerCase(@Text("FOO"))