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.
Contact Information
Blogger, podcaster, writer, and geek Chris Toohey covers topics from application development to the latest must-have-gadgets.
Latest Updates

More on Mailer...
More on Junction Lite...
More on Remote Console...

More on Controller API Utility...
Products & Applications
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.
XPages: Default Tab Selection via QueryString Parameters
07/11/2011 09:17:00 AM by Chris Toohey
While working on the Web Browser Client version of Remote Console HD last night, I ran into a rather simple situation where with a little more attention being applied to an often overlooked area of any application, I think I will be able to deliver some real-world gains in the user experience.
Simply put, I took less than 1 minute to write a simple SSJS-based URL QueryString Parameter check, and in doing so can now support defining the default launch tab for a tabbedPanel Control:
<xp:tabbedPanel id="main">
<xp:this.selectedTab><![CDATA[#{javascript:context.getUrlParameter("tab")}]]></xp:this.selectedTab>
<xp:tabPanel id="home">
<xp:this.label><![CDATA[#{javascript:preferences[preferences['language'] + '_label_home']}]]></xp:this.label>
</xp:tabPanel>
<xp:tabPanel id="servers">
<xp:this.label><![CDATA[#{javascript:preferences[preferences['language'] + '_label_servers']}]]></xp:this.label>
</xp:tabPanel>
<xp:tabPanel id="databases">
<xp:this.label><![CDATA[#{javascript:preferences[preferences['language'] + '_label_databases']}]]></xp:this.label>
</xp:tabPanel>
<xp:tabPanel id="groups">
<xp:this.label><![CDATA[#{javascript:preferences[preferences['language'] + '_label_groups']}]]></xp:this.label>
</xp:tabPanel>
</xp:tabbedPanel>
Since it's so simple you might have missed it, here's the SSJS in question:
<xp:this.selectedTab>
<![CDATA[#{javascript:context.getUrlParameter("tab")}]]>
</xp:this.selectedTab>
Thus, I can now use the following syntax to launch a specific tab on my XPage:
http://server/rchd.nsf/index.xsp?tab=servers
This, of course, launches the Servers tab.
And even more brilliantly, if you supply a mismatch (ie., ?tab=foo) or there is no tab parameter in the URL QueryString, the tabbedPanel Control's selectedTab Parameter fails back to the default tab.
... which made me wonder, I can't be the only one to think that this is useful. I mean, imagine having to send someone to a specific subsection within an application. The tab QueryString Parameter can act just like a hash anchor (#), but instead of jumping to a specific section within the form, simply surface that section (that panel, in this case) first.
Beyond sending someone to ?tab=groups to have them update an Group within the Domino Directory, think about the use of this practice in workflow applications.
Let's say your company CFO calls you asking how they approve a new request in this database you wrote for him. The conversation could be:
Email contains the following URL:
http://domino/db.nsf/request.xsp?action=editDocument&documentId=E678534123058D03852577F2007ED8B6
"Oh, you need to sign off on this section of content by clicking that 'Approve' button. Well click on that URL I just sent you. OK, now click on the second tab labelled 'Finance'. Now, click on the tab labelled 'Total Cost Summary'. No, it's one of the tabs on the 'Finance' part of the form. Yeah, scroll down. ... why don't I just come up to your office."
- vs. -
Email contains the following URL:
http://domino/db.nsf/request.xsp?action=editDocument&documentId=
E678534123058D03852577F2007ED8B6&tab_main=finance&tab_sub=tcs
"Oh, you need to sign off on this section of content by clicking that 'Approve' button. Well click on that URL I just sent you. Yep, that's it! OK, let me know if you need anything else!
Me, I might just be lazy... but I'd prefer to have the latter conversation and not come across as if I'm trying to make the CFO jump through the form only to end up awkwardly standing in their office watching them just-as-awkwardly click on the wrong damned sections of the form despite you telling them "No, lower and to the left... like an inch. No, that was the back button. OK, let's start over again. Go back into your email...".
But enough of my real-world experiences, and back to the topic of this article.
The cool thing about this technique is that it's so simple. I dunno, it's just something that I can see becoming a no-brainer in UI/UX design. It's certainly something that'll make it's way into my applications.
What're you thoughts? Think this could be useful to the application audience, or will it be a feature that's never used. It is something that everyone is already doing and I'm just slow on the uptake, or is this an overlooked gem?
Let me know in the comments on the post!



If you prefer, there's an even simpler syntax:
Because "param" is an intrinsic variable, and because it's a Map, the EL expression above is equivalent, at runtime, to the following SSJS expression:
Using basic EL syntax also has incremental performance benefits, as compared to SSJS, but the primary advantage is that it just keeps your XML source cleaner... less CDATA. ;)
paramvariable, but you're absolutely right. If there's a more terse way of getting the job done, then it should be used.I have used scoped variables to control tabs quite a bit, too. Understanding the whole tab visibility/selected thing can be really powerful. Great post.