<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEQCRnc9fip7ImA9WhRUFko.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509</id><updated>2012-01-27T14:52:47.966+01:00</updated><category term="Compendia AS" /><category term="bugfix" /><category term="cheat sheet" /><category term="XPages API Inspector" /><category term="sntt" /><category term="xsl" /><category term="dde" /><category term="pager" /><category term="XPiNC" /><category term="client" /><category term="debugging" /><category term="web" /><category term="favorite applications" /><category term="bugs" /><category term="avatar" /><category term="lotusphere" /><category term="lotusphere 2009" /><category term="benchmark" /><category term="regexp" /><category term="updates" /><category term="development tools" /><category term="show'n-tell-thursday" /><category term="random nonsense" /><category term="ssjs" /><category term="simpsons" /><category term="book recommendation" /><category term="dhtml" /><category term="64k" /><category term="announcement" /><category term="random tip" /><category term="accessibility" /><category term="limits" /><category term="fgoto" /><category term="gimp" /><category term="randomt tip" /><category term="Microsoft Web Browser" /><category term="formula" /><category term="domino designer" /><category term="design definition" /><category term="ls2j" /><category term="custom control" /><category term="transform" /><category term="limit" /><category term="rant" /><category term="NotesFX" /><category term="mootools" /><category term="server side event delegation" /><category term="xml" /><category term="office" /><category term="jsf" /><category term="JavaScript in Lotus Notes" /><category term="CSS" /><category term="java" /><category term="tool" /><category term="Domino 8.5" /><category term="FieldListener" /><category term="ckeditor" /><category term="script library" /><category term="themes" /><category term="ideas" /><category term="question" /><category term="preview" /><category term="code snippet" /><category term="outlook" /><category term="print" /><category term="dojo" /><category term="integration" /><category term="lotusscript" /><category term="software" /><category term="event handling" /><category term="domino" /><category term="Validation" /><category term="server side javascript" /><category term="Show-n-Tell Thursday" /><category term="mac" /><category term="proof-of-concept" /><category term="templating" /><category term="search" /><category term="microsoft" /><category term="statistics" /><category term="JavaScript" /><category term="ideajam" /><category term="request" /><category term="Lotus Notes" /><category term="$$ReturnGeneralError" /><category term="aptana" /><category term="json" /><category term="agent" /><category term="xpages" /><title>DontPanic - a blog about Lotus Notes / Domino</title><subtitle type="html">My useful and useless experiments with Lotus Notes / Domino</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://dontpanic82.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>318</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/dontpanic82" /><feedburner:info uri="dontpanic82" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEENSHwyfip7ImA9WhRUFkk.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-6168143863933266430</id><published>2012-01-26T09:55:00.005+01:00</published><updated>2012-01-27T07:44:59.296+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-27T07:44:59.296+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Runtime optimized JavaScript and CSS - workaround for multiple stylesheets</title><content type="html">&lt;strong&gt;Update:&lt;/strong&gt; This workaround is only needed if you use "folders" in the image resource name. &lt;br /&gt;E.g. &lt;em&gt;backgrounds\home.png&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;If you have multiple local stylesheets on a page, the CSS files are combined into a single file.&lt;br /&gt;&lt;br /&gt;This changes the url to the stylesheet (adds xsp/.ibmmodres/.css after the path to the db).&lt;br /&gt;&lt;br /&gt;If you have an image reference like &lt;strong&gt;url(image.png)&lt;/strong&gt;, the image can no longer be loaded, as the url is relative to the path of the stylesheet.&lt;br /&gt;&lt;br /&gt;To work around this issue, add ../../../ to the image reference.&lt;br /&gt;&lt;br /&gt;E.g.&lt;br /&gt;url(../../../image.png)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-6168143863933266430?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0AbpMH-CjfY:cLZxRJmu5T0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0AbpMH-CjfY:cLZxRJmu5T0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=0AbpMH-CjfY:cLZxRJmu5T0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0AbpMH-CjfY:cLZxRJmu5T0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0AbpMH-CjfY:cLZxRJmu5T0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=0AbpMH-CjfY:cLZxRJmu5T0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0AbpMH-CjfY:cLZxRJmu5T0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=0AbpMH-CjfY:cLZxRJmu5T0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/0AbpMH-CjfY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/6168143863933266430/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=6168143863933266430" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/6168143863933266430?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/6168143863933266430?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/0AbpMH-CjfY/runtime-optimized-javascript-and-css.html" title="Runtime optimized JavaScript and CSS - workaround for multiple stylesheets" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2012/01/runtime-optimized-javascript-and-css.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIGRnc4cCp7ImA9WhRWF0s.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-8220644148926927764</id><published>2012-01-05T12:50:00.004+01:00</published><updated>2012-01-05T12:55:27.938+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-05T12:55:27.938+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Useful tool when working with text files (CSV, source code, etc)</title><content type="html">&lt;a href="http://www.wingrep.com/"&gt;WinGrep&lt;/a&gt; is a tool that let's you search one/several folders for parts of strings. It supports searching in zip files, and lets you use Regular Expression (Perl syntax?) for searching strings.&lt;br /&gt;&lt;br /&gt;The result pane shows all the matching lines in the file(s) you are searching.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/-ujLT9RAa5Tg/TwWPalZ8NtI/AAAAAAAAAWM/1nKOwYK_mQw/s1600/mainwindow1%255B1%255D.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-8220644148926927764?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=jasrPGelpLQ:DSor1DyC5Ks:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=jasrPGelpLQ:DSor1DyC5Ks:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=jasrPGelpLQ:DSor1DyC5Ks:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=jasrPGelpLQ:DSor1DyC5Ks:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=jasrPGelpLQ:DSor1DyC5Ks:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=jasrPGelpLQ:DSor1DyC5Ks:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=jasrPGelpLQ:DSor1DyC5Ks:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=jasrPGelpLQ:DSor1DyC5Ks:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/jasrPGelpLQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/8220644148926927764/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=8220644148926927764" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/8220644148926927764?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/8220644148926927764?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/jasrPGelpLQ/useful-tool-when-working-with-text.html" title="Useful tool when working with text files (CSV, source code, etc)" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ujLT9RAa5Tg/TwWPalZ8NtI/AAAAAAAAAWM/1nKOwYK_mQw/s72-c/mainwindow1%255B1%255D.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2012/01/useful-tool-when-working-with-text.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUINR3k5fip7ImA9WhRWFUo.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-3633458797102585778</id><published>2012-01-02T12:43:00.004+01:00</published><updated>2012-01-03T07:53:16.726+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-03T07:53:16.726+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Thing to be aware of when using "Generate unique keys.." in view</title><content type="html">I had trouble with a couple of views today. The views had the option &lt;strong&gt;Generate unique keys in index&lt;/strong&gt; checked.&lt;br /&gt;&lt;br /&gt;When the views were replicated to other servers, they weren't built. When trying to open them I got the error message &lt;strong&gt;Entry not found in index&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/bfd760e001c4d13e85257291005c3786?OpenDocument"&gt;the solution&lt;/a&gt; on the Domino forums, add &lt;strong&gt;@IsUnavailable($Conflict)&lt;/strong&gt; to the view selection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-3633458797102585778?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NVk2U7Ua5rk:8KktfrIlaFI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NVk2U7Ua5rk:8KktfrIlaFI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=NVk2U7Ua5rk:8KktfrIlaFI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NVk2U7Ua5rk:8KktfrIlaFI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NVk2U7Ua5rk:8KktfrIlaFI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=NVk2U7Ua5rk:8KktfrIlaFI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NVk2U7Ua5rk:8KktfrIlaFI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=NVk2U7Ua5rk:8KktfrIlaFI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/NVk2U7Ua5rk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/3633458797102585778/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=3633458797102585778" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/3633458797102585778?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/3633458797102585778?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/NVk2U7Ua5rk/thing-to-be-aware-of-when-using.html" title="Thing to be aware of when using &quot;Generate unique keys..&quot; in view" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2012/01/thing-to-be-aware-of-when-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAGQXkzcCp7ImA9WhRQF0s.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-4786547813138295246</id><published>2011-12-13T09:16:00.005+01:00</published><updated>2011-12-13T09:25:20.788+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-13T09:25:20.788+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>ClassNotFoundException with the new Java design element</title><content type="html">Last week Vince Shuurman blogged about &lt;a href="http://blog.vinceschuurman.com/home/ndt4.nsf/BlogContent.xsp?openDocument&amp;pLink=201112071332"&gt;having to recompile when opening an XPage app in Domino Designer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I had the same issue. I was using some Java code in an XPage, and every time I opened the app in designer, I got ClassNotFoundException when opening the XPage. A build of the project fixed the issue.&lt;br /&gt;&lt;br /&gt;My java code was in the new Java design element (new in Domino 8.5.3), so I suspected that it might have something to do with this.&lt;br /&gt;&lt;br /&gt;I moved the code to a "custom" java source folder, and the error went away. Closing/opening the app in Designer did &lt;strong&gt;not&lt;/strong&gt; result in ClassNotFoundException.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-4786547813138295246?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=rWILahWoIVM:DjkuWXH0lyg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=rWILahWoIVM:DjkuWXH0lyg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=rWILahWoIVM:DjkuWXH0lyg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=rWILahWoIVM:DjkuWXH0lyg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=rWILahWoIVM:DjkuWXH0lyg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=rWILahWoIVM:DjkuWXH0lyg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=rWILahWoIVM:DjkuWXH0lyg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=rWILahWoIVM:DjkuWXH0lyg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/rWILahWoIVM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/4786547813138295246/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=4786547813138295246" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4786547813138295246?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4786547813138295246?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/rWILahWoIVM/classnotfoundexception-with-new-java.html" title="ClassNotFoundException with the new Java design element" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/12/classnotfoundexception-with-new-java.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ADRH88fSp7ImA9WhdaEUo.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-3024729061051015827</id><published>2011-10-21T07:44:00.003+01:00</published><updated>2011-10-21T07:49:35.175+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-21T07:49:35.175+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="domino designer" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Java Debugging in Designer without hacks</title><content type="html">I found this today: &lt;a href="http://www-10.lotus.com/ldd/dominowiki.nsf/dx/How_can_I_enable_Java_debugging_LN853"&gt;How can I enable Java debugging?&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Not sure if this is new in 8.5.3, but I never heard of it. It makes it a lot easier to debug than the using the &lt;a href="http://www.bobzblog.com/tuxedoguy.nsf/dx/the-2-headed-beast-debugging-domino-java-agents-with-eclipse"&gt;two headed beast&lt;/a&gt; method which seemed like too much trouble.&lt;br /&gt;&lt;br /&gt;The full instructions are in the Designer help. Search for &lt;strong&gt;java debugging&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-3024729061051015827?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=SHPBiKkoGiA:nz3doCTbEyg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=SHPBiKkoGiA:nz3doCTbEyg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=SHPBiKkoGiA:nz3doCTbEyg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=SHPBiKkoGiA:nz3doCTbEyg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=SHPBiKkoGiA:nz3doCTbEyg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=SHPBiKkoGiA:nz3doCTbEyg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=SHPBiKkoGiA:nz3doCTbEyg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=SHPBiKkoGiA:nz3doCTbEyg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/SHPBiKkoGiA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/3024729061051015827/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=3024729061051015827" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/3024729061051015827?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/3024729061051015827?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/SHPBiKkoGiA/java-debugging-in-designer-without.html" title="Java Debugging in Designer without hacks" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/10/java-debugging-in-designer-without.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8MQ3c9fip7ImA9WhdUEk0.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-8616731951480516157</id><published>2011-09-28T11:12:00.001+01:00</published><updated>2011-09-28T11:14:42.966+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-28T11:14:42.966+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Collecting data for HTTP hang or performance issues on a Lotus Domino server</title><content type="html">We're currently having problems with one of our old Domino servers. The HTTP task randomly hangs.&lt;br /&gt;&lt;br /&gt;In the process of looking for help to track down the reason, I found this document from IBM.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www-304.ibm.com/support/docview.wss?uid=swg27010969"&gt;Collecting data for HTTP hang or performance issues on a Lotus Domino server&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-8616731951480516157?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=qNxZHmqgW4Y:-j6eTpBos18:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=qNxZHmqgW4Y:-j6eTpBos18:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=qNxZHmqgW4Y:-j6eTpBos18:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=qNxZHmqgW4Y:-j6eTpBos18:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=qNxZHmqgW4Y:-j6eTpBos18:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=qNxZHmqgW4Y:-j6eTpBos18:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=qNxZHmqgW4Y:-j6eTpBos18:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=qNxZHmqgW4Y:-j6eTpBos18:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/qNxZHmqgW4Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/8616731951480516157/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=8616731951480516157" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/8616731951480516157?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/8616731951480516157?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/qNxZHmqgW4Y/collecting-data-for-http-hang-or.html" title="Collecting data for HTTP hang or performance issues on a Lotus Domino server" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/09/collecting-data-for-http-hang-or.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQFQXY8fip7ImA9WhdUEUk.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-2653614737336985137</id><published>2011-09-27T13:06:00.007+01:00</published><updated>2011-09-27T17:51:50.876+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-27T17:51:50.876+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="code snippet" /><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><title>Indicator for all partial refreshes</title><content type="html">Sometimes partial updates take a while. To make users aware of updates happening, I made a small JS object that automatically shows a &lt;a href="http://docs.dojocampus.org/dojox/widget/Standby"&gt;dojox.widget.Standby&lt;/a&gt; over the area being updated. Initially I thought that it would be &lt;strong&gt;too much&lt;/strong&gt;, showing the mask over every refreshed area. So far, I quite like the effect.&lt;br /&gt;&lt;br /&gt;The app isn't in production yet, so I don't know how users will react, but hopefully they will appreciate being made aware of that things are happening.&lt;br /&gt;&lt;br /&gt;To load the object, put this in a JavaScript library (client side)&lt;pre&gt;&lt;code&gt;dojo.addOnLoad(function(){ new StandbyWidget(); });&lt;/code&gt;&lt;/pre&gt;The default background color is bright yellow. To override, simply put a hex string in the "constructor" call.&lt;pre&gt;&lt;code&gt;dojo.addOnLoad(function(){ new StandbyWidget( '#555'); }); // Dark grey&lt;/code&gt;&lt;/pre&gt;To use the code snippet below, you also need the &lt;a href="http://dontpanic82.blogspot.com/2010/01/xpages-hijackingpublishing-partial.html"&gt;partial event hijacker&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;var StandbyWidget = function( backgroundColor ){&lt;br /&gt; dojo.require( 'dojox.widget.Standby' );&lt;br /&gt; this.widget = new dojox.widget.Standby();&lt;br /&gt; this.widget.attr( 'color', backgroundColor || '#ffe' );&lt;br /&gt; &lt;br /&gt; document.body.appendChild( this.widget.domNode );&lt;br /&gt; this.widget.startup();&lt;br /&gt; &lt;br /&gt; dojo.subscribe( 'partialrefresh-init', this, function( method, form, targetId ){&lt;br /&gt;  if( targetId &amp;&amp; targetId !== '@none' ){ this.show( targetId ); }&lt;br /&gt; });&lt;br /&gt; &lt;br /&gt; dojo.subscribe( 'partialrefresh-complete', this, function( method, form, targetId ){&lt;br /&gt;  if( targetId &amp;&amp; targetId !== '@none' ){ this.hide(); }&lt;br /&gt; });&lt;br /&gt; &lt;br /&gt; dojo.subscribe( 'partialrefresh-error', this, function( method, form, targetId ){&lt;br /&gt;  if( targetId &amp;&amp; targetId !== '@none' ){ this.hide(); }&lt;br /&gt; });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;StandbyWidget.prototype = {&lt;br /&gt; show: function( targetId ){&lt;br /&gt;  this.widget.attr( 'target', targetId );&lt;br /&gt;  this.widget.show();  &lt;br /&gt; },&lt;br /&gt; hide: function(){  &lt;br /&gt;  this.widget.hide();&lt;br /&gt; }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-2653614737336985137?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=90yEQ7jj5lg:-cMzCMQgBuI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=90yEQ7jj5lg:-cMzCMQgBuI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=90yEQ7jj5lg:-cMzCMQgBuI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=90yEQ7jj5lg:-cMzCMQgBuI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=90yEQ7jj5lg:-cMzCMQgBuI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=90yEQ7jj5lg:-cMzCMQgBuI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=90yEQ7jj5lg:-cMzCMQgBuI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=90yEQ7jj5lg:-cMzCMQgBuI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/90yEQ7jj5lg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/2653614737336985137/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=2653614737336985137" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/2653614737336985137?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/2653614737336985137?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/90yEQ7jj5lg/indicator-for-partial-refreshes.html" title="Indicator for all partial refreshes" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/09/indicator-for-partial-refreshes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMRHw8cCp7ImA9WhdUEEs.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-78392792509722585</id><published>2011-09-26T18:46:00.014+01:00</published><updated>2011-09-26T19:06:25.278+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-26T19:06:25.278+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><category scheme="http://www.blogger.com/atom/ns#" term="themes" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Using themeId for maintainability</title><content type="html">In an application I'm currently working on, there are several categorized views with number-/totals columns. As the number of views/columns increased, I looked for a way to make styling of the columns more maintainable.&lt;br /&gt;&lt;br /&gt;The solution I found was using themeId on the columns and calling a SSJS function in the theme, that generates the style classes.&lt;br /&gt;&lt;br /&gt;I chose &lt;strong&gt;numberColumn&lt;/strong&gt; as the name for the themeId.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;In theme&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;control&amp;gt;&lt;br /&gt; &amp;lt;name&amp;gt;numberColumn&amp;lt;/name&amp;gt;&lt;br /&gt; &amp;lt;property&amp;gt;&lt;br /&gt;  &amp;lt;name&amp;gt;styleClass&amp;lt;/name&amp;gt;&lt;br /&gt;  &amp;lt;value&amp;gt;#{javascript:return StyleHelper.getNumberColumnStyleClass( this );}&amp;lt;/value&amp;gt;&lt;br /&gt; &amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;/control&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;strong&gt;this&lt;/strong&gt; refers to the &lt;a href="http://public.dhe.ibm.com/software/dw/lotus/Domino-Designer/JavaDocs/XPagesExtAPI/8.5.2/index.html?com/ibm/xsp/component/xp/XspViewColumn.html"&gt;column object&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;SSJS code&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;var StyleHelper = {&lt;br /&gt; // Used to calculate styleClass for a number column&lt;br /&gt; getNumberColumnStyleClass: function( column ){&lt;br /&gt;  try {&lt;br /&gt;   var entry = column.getViewRowData();&lt;br /&gt;   var styleClass = 'numberCell';&lt;br /&gt;   if( entry.isCategory() ){ styleClass += ' categoryCell'; }&lt;br /&gt;   if( entry.isTotal() ){ styleClass += ' totalsCell'; }&lt;br /&gt;   return styleClass;&lt;br /&gt;  } catch( e ){ /* Exception handling */ }&lt;br /&gt; }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Regular column cells will get &lt;strong&gt;class="numberCell"&lt;/strong&gt;. &lt;br /&gt;Totals column cells will get &lt;strong&gt;class="numberCell totalsCell"&lt;/strong&gt;.&lt;br /&gt;Category column cells will get &lt;strong&gt;class="numberCell categoryCell"&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;All I have to do to add dynamic styling to future columns is to set themeId on the column to &lt;strong&gt;numberCell&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-78392792509722585?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0nQn_wVyNCs:0llUremEZFw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0nQn_wVyNCs:0llUremEZFw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=0nQn_wVyNCs:0llUremEZFw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0nQn_wVyNCs:0llUremEZFw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0nQn_wVyNCs:0llUremEZFw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=0nQn_wVyNCs:0llUremEZFw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=0nQn_wVyNCs:0llUremEZFw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=0nQn_wVyNCs:0llUremEZFw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/0nQn_wVyNCs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/78392792509722585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=78392792509722585" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/78392792509722585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/78392792509722585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/0nQn_wVyNCs/using-themeid-for-maintainability.html" title="Using themeId for maintainability" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/09/using-themeid-for-maintainability.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYDSHwyfCp7ImA9WhdXE0s.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-3447295137889744792</id><published>2011-08-26T11:55:00.007+01:00</published><updated>2011-08-26T13:36:19.294+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-26T13:36:19.294+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><category scheme="http://www.blogger.com/atom/ns#" term="custom control" /><title>XPages: Passing event handler code to custom control</title><content type="html">&lt;strong&gt;Update:&lt;/strong&gt; After a little test, it looks like the onchange event of the combo fires for every refresh. I'll move the code to beforeRenderResponse or something like that instead.
&lt;br /&gt;
&lt;br /&gt;&lt;del&gt;In an application I'm currently working on, I have a combobox that's used in several pages. The values the combobox contains persist over every page, but what happens when the user changes value varies from page to page.
&lt;br /&gt;
&lt;br /&gt;I saw that the combobox has several properties for events under all properties. I tried adding 
&lt;br /&gt;#{compositeData.onchange} to the onchange event, and it works. &lt;strong&gt;One caveat is that it seems to fire three times&lt;/strong&gt;, but I can live with that.
&lt;br /&gt;
&lt;br /&gt;To implement:
&lt;br /&gt;Add custom properties to the custom control for the events you want to have custom event handlers for. In the source code of the field, add attributes for the events you want code to run. E.g. onchange="#{compositeData.onchange}"
&lt;br /&gt;
&lt;br /&gt;In the XPage under custom properties for the custom control, write the SSJS you want to run for your events.
&lt;br /&gt;
&lt;br /&gt;That's about it.
&lt;br /&gt;
&lt;br /&gt;I have only tested this with ComboBoxes, but I'm not surprised if it works for most fields that have event properties.
&lt;br /&gt;
&lt;br /&gt;Tested on server running Domino 8.5.2 FP2&lt;/del&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-3447295137889744792?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=yDMQupfwE5g:bW1OSP0ab88:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=yDMQupfwE5g:bW1OSP0ab88:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=yDMQupfwE5g:bW1OSP0ab88:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=yDMQupfwE5g:bW1OSP0ab88:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=yDMQupfwE5g:bW1OSP0ab88:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=yDMQupfwE5g:bW1OSP0ab88:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=yDMQupfwE5g:bW1OSP0ab88:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=yDMQupfwE5g:bW1OSP0ab88:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/yDMQupfwE5g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/3447295137889744792/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=3447295137889744792" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/3447295137889744792?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/3447295137889744792?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/yDMQupfwE5g/xpages-passing-event-handler-code-to.html" title="XPages: Passing event handler code to custom control" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/08/xpages-passing-event-handler-code-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IARXk9cSp7ImA9WhdSE08.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-6375267980755401139</id><published>2011-07-22T08:57:00.001+01:00</published><updated>2011-07-22T08:59:04.769+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-22T08:59:04.769+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><title>Update on the "enhanced" validation messages</title><content type="html">I added functionality to select/focus a dijit tab if the field is inside a dijit.layout.TabContainer. I also added a highlight effect when a field is focused.&lt;br /&gt;&lt;br /&gt;Source code for the custom control can be found &lt;a href="http://dontpanic82.blogspot.com/2011/07/custom-control-for-enhanced-validation.html"&gt;in the original post&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-6375267980755401139?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=OFQTMj9Oc8o:xqH1_CR6qrw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=OFQTMj9Oc8o:xqH1_CR6qrw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=OFQTMj9Oc8o:xqH1_CR6qrw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=OFQTMj9Oc8o:xqH1_CR6qrw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=OFQTMj9Oc8o:xqH1_CR6qrw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=OFQTMj9Oc8o:xqH1_CR6qrw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=OFQTMj9Oc8o:xqH1_CR6qrw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=OFQTMj9Oc8o:xqH1_CR6qrw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/OFQTMj9Oc8o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/6375267980755401139/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=6375267980755401139" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/6375267980755401139?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/6375267980755401139?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/OFQTMj9Oc8o/update-on-enhanced-validation-messages.html" title="Update on the &quot;enhanced&quot; validation messages" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/07/update-on-enhanced-validation-messages.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MDRX89fCp7ImA9WhRSEE0.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-7339001578647295786</id><published>2011-07-19T19:52:00.012+01:00</published><updated>2011-11-11T09:51:14.164+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-11T09:51:14.164+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="code snippet" /><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><title>Custom Control for "enhanced" validation messages</title><content type="html">&lt;strong&gt;Update 22.07.2011:&lt;/strong&gt; I added functionality to select/focus a dijit tab if the field is inside a dijit.layout.TabContainer. I also added a highlight effect when a field is focused.&lt;br /&gt;&lt;br /&gt;Disclaimer: This custom control is not entirely my idea. I've been thinking about doing something like this for a while. After I tried to help with &lt;a href="http://www-10.lotus.com/ldd/xpagesforum.nsf/topicThread.xsp?documentId=AA0CD768D0FE2FE4852578CC0057B8AE&amp;action=openDocument"&gt;this question by Steve Pridemore&lt;/a&gt; in the XPages Development Forum, I found the solution.&lt;br /&gt;&lt;br /&gt;The code below can be used as a custom control that is a little bit more advanced (probably has its flaws) than the regular &lt;strong&gt;Display Errors&lt;/strong&gt; control. If the field with a validation error has a label, it shows the label, then the error message. On the label, a link is generated that sets focus to the related field when you click it.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;xp:view xmlns:xp="http://www.ibm.com/xsp/core"&amp;gt;&lt;br /&gt; &amp;lt;xp:this.beforeRenderResponse&amp;gt;&amp;lt;![CDATA[#{javascript:try {&lt;br /&gt; var messageObjects = [];&lt;br /&gt; var clientId,&lt;br /&gt; clientIds = facesContext.getClientIdsWithMessages(); &lt;br /&gt; while( clientIds.hasNext() ){&lt;br /&gt;  clientId = clientIds.next();&lt;br /&gt;  var component = view.findComponent(clientId.replace( view.getClientId(facesContext), '').replace(/\:\d*\:/g, ':'));&lt;br /&gt;  if( !component ){ continue; }&lt;br /&gt;  &lt;br /&gt;  var message = '',&lt;br /&gt;  messages = facesContext.getMessages(clientId);&lt;br /&gt;  while( messages.hasNext() ){&lt;br /&gt;   message += (message) ? ', ' : '' + messages.next().getSummary();&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  var labelComponent = getLabelFor(component);&lt;br /&gt;  var label = (labelComponent) ? labelComponent.getValue() : '';&lt;br /&gt;  if( !label &amp;&amp; component ){ &lt;br /&gt;   var id = component.getId(); &lt;br /&gt;   if( id.indexOf( '_' ) &amp;gt; 0 ){ &lt;br /&gt;    label = id;&lt;br /&gt;   } &lt;br /&gt;  }&lt;br /&gt;  if( label &amp;&amp; label.indexOf( ':' ) === -1 ){ label += ':'; }&lt;br /&gt;  &lt;br /&gt;  messageObjects.push({&lt;br /&gt;   clientId : clientId,&lt;br /&gt;   label : label,&lt;br /&gt;   message : message&lt;br /&gt;  });&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; viewScope.messageObjects = messageObjects;&lt;br /&gt;} catch (e) { /*Debug.logException(e);*/ }}]]&amp;gt;&amp;lt;/xp:this.beforeRenderResponse&amp;gt;&lt;br /&gt; &amp;lt;xp:this.resources&amp;gt;&lt;br /&gt;  &amp;lt;xp:script src="/UtilitiesSSJS.jss" clientSide="false"&amp;gt;&amp;lt;/xp:script&amp;gt;&lt;br /&gt; &amp;lt;/xp:this.resources&amp;gt;&lt;br /&gt; &amp;lt;xp:scriptBlock&amp;gt;&lt;br /&gt;  &amp;lt;xp:this.value&amp;gt;&amp;lt;![CDATA[var EMessages = {&lt;br /&gt; // Set focus to field&lt;br /&gt; setFocus: function( clientId ){&lt;br /&gt;  var matchingFields = dojo.query('[name=' + clientId + ']');&lt;br /&gt;  if( matchingFields.length &amp;gt; 0 ){&lt;br /&gt;   if( dijit &amp;&amp; dijit.registry ){&lt;br /&gt;    this.showDojoTabWithField( clientId );&lt;br /&gt;   }&lt;br /&gt;   var field = matchingFields[0]&lt;br /&gt;   field.focus();&lt;br /&gt;   dojo.animateProperty({&lt;br /&gt;    duration: 800,&lt;br /&gt;    node: field,&lt;br /&gt;    properties: {&lt;br /&gt;     backgroundColor: {&lt;br /&gt;      start: '#FFFFEE',&lt;br /&gt;      end: dojo.style( field, 'backgroundColor' )&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }).play();&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt; },&lt;br /&gt; &lt;br /&gt; // If field is inside a dijit TabContainer - activate&lt;br /&gt; showDojoTabWithField: function( clientId ){&lt;br /&gt;  dijit.registry.byClass("dijit.layout.TabContainer").forEach(function( tabContainer ){&lt;br /&gt;   dojo.forEach( tabContainer.getChildren(), function( containerPane ){&lt;br /&gt;    if( dojo.query( containerPane.containerNode ).query( '[name=' + clientId + ']' ).length &amp;gt; 0 ){&lt;br /&gt;     tabContainer.selectChild( containerPane );&lt;br /&gt;    }&lt;br /&gt;   });&lt;br /&gt;  });&lt;br /&gt; }&lt;br /&gt;}]]&amp;gt;&amp;lt;/xp:this.value&amp;gt;&lt;br /&gt; &amp;lt;/xp:scriptBlock&amp;gt;&lt;br /&gt; &amp;lt;xp:div styleClass="xspMessage" &lt;br /&gt;  rendered="#{javascript:return ( getComponent( 'messageRepeat' ).getRowCount() &amp;gt; 0 );}"&amp;gt;&lt;br /&gt;  &amp;lt;xp:repeat id="messageRepeat" rows="30" &lt;br /&gt;   value="#{viewScope.messageObjects}" var="messageObject"&amp;gt;&lt;br /&gt;   &amp;lt;xp:this.facets&amp;gt;&lt;br /&gt;    &amp;lt;xp:text value="Validation errors:" xp:key="header" &lt;br /&gt;     tagName="strong" /&amp;gt;&lt;br /&gt;   &amp;lt;/xp:this.facets&amp;gt;&lt;br /&gt;   &amp;lt;br /&amp;gt;&lt;br /&gt;   &amp;lt;xp:text value="#{messageObject.label}" /&amp;gt;&lt;br /&gt;   &amp;lt;a href="#" &lt;br /&gt;    onclick="return EMessages.setFocus( '#{messageObject.clientId}');"&amp;gt;&lt;br /&gt;    &amp;lt;xp:text value="#{messageObject.message}" /&amp;gt;&lt;br /&gt;   &amp;lt;/a&amp;gt;   &lt;br /&gt;  &amp;lt;/xp:repeat&amp;gt;&lt;br /&gt; &amp;lt;/xp:div&amp;gt;&lt;br /&gt;&amp;lt;/xp:view&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-d0XQVPlbkvg/TiXU2vqso3I/AAAAAAAAAVg/urIFa4fYgg4/s1600/ScreenShot004.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 189px;" src="http://2.bp.blogspot.com/-d0XQVPlbkvg/TiXU2vqso3I/AAAAAAAAAVg/urIFa4fYgg4/s400/ScreenShot004.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5631140946070250354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The code should work with fields inside a single level repeat. I'm not sure about deeper nesting. Pop the custom control into the page like you would with the &lt;strong&gt;Display Errors&lt;/strong&gt; control.&lt;br /&gt;&lt;br /&gt;Feel free to use the code however you like. If you improve on it, please share with the community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-7339001578647295786?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=KpsImnHRJaQ:X9GlJrO1q_k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=KpsImnHRJaQ:X9GlJrO1q_k:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=KpsImnHRJaQ:X9GlJrO1q_k:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=KpsImnHRJaQ:X9GlJrO1q_k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=KpsImnHRJaQ:X9GlJrO1q_k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=KpsImnHRJaQ:X9GlJrO1q_k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=KpsImnHRJaQ:X9GlJrO1q_k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=KpsImnHRJaQ:X9GlJrO1q_k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/KpsImnHRJaQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/7339001578647295786/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=7339001578647295786" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/7339001578647295786?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/7339001578647295786?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/KpsImnHRJaQ/custom-control-for-enhanced-validation.html" title="Custom Control for &quot;enhanced&quot; validation messages" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-d0XQVPlbkvg/TiXU2vqso3I/AAAAAAAAAVg/urIFa4fYgg4/s72-c/ScreenShot004.png" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/07/custom-control-for-enhanced-validation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUGSHc4fip7ImA9WhdTFkk.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-6742943733030041379</id><published>2011-07-13T09:47:00.010+01:00</published><updated>2011-07-14T12:33:49.936+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-14T12:33:49.936+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>XPages: Styling required and invalid fields</title><content type="html">Just discovered that in Domino 8.5.2 (not sure about previous releases), invalid fields get the attribute aria-invalid=true, and required fields aria-required=true.&lt;br /&gt;&lt;br /&gt;That makes it easy to style in modern browsers (&gt;IE6).&lt;br /&gt;&lt;br /&gt;Simply add a couple of style rules (just an example):&lt;pre&gt;&lt;code&gt;[aria-required=true] { background-color: #ffe; }&lt;br /&gt;[aria-invalid=true] { background-color: #fee; border-color: red; }&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Valid - required fields "highlighted"&lt;/strong&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-5a21sjpx0mo/Th1e2h9C5uI/AAAAAAAAAVY/zYvehpug4ik/s1600/ScreenShot015.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://4.bp.blogspot.com/-5a21sjpx0mo/Th1e2h9C5uI/AAAAAAAAAVY/zYvehpug4ik/s400/ScreenShot015.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5628759400203347682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Invalid&lt;/strong&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-TFB2uh962Go/Th1cgm3OlcI/AAAAAAAAAVQ/T7yARfXgtq0/s1600/ScreenShot014.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 127px;" src="http://4.bp.blogspot.com/-TFB2uh962Go/Th1cgm3OlcI/AAAAAAAAAVQ/T7yARfXgtq0/s400/ScreenShot014.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5628756824540747202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;+1 to IBM for implementing :)&lt;br /&gt;&lt;br /&gt;Share and enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-6742943733030041379?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=FSyjQbvAZn0:ElYjoVOVzXs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=FSyjQbvAZn0:ElYjoVOVzXs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=FSyjQbvAZn0:ElYjoVOVzXs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=FSyjQbvAZn0:ElYjoVOVzXs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=FSyjQbvAZn0:ElYjoVOVzXs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=FSyjQbvAZn0:ElYjoVOVzXs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=FSyjQbvAZn0:ElYjoVOVzXs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=FSyjQbvAZn0:ElYjoVOVzXs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/FSyjQbvAZn0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/6742943733030041379/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=6742943733030041379" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/6742943733030041379?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/6742943733030041379?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/FSyjQbvAZn0/xpages-styling-invalid-field.html" title="XPages: Styling required and invalid fields" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-5a21sjpx0mo/Th1e2h9C5uI/AAAAAAAAAVY/zYvehpug4ik/s72-c/ScreenShot015.png" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/07/xpages-styling-invalid-field.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkACRnc8fyp7ImA9WhdTFEU.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-5344161863530569318</id><published>2011-07-12T17:03:00.005+01:00</published><updated>2011-07-12T17:39:27.977+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-12T17:39:27.977+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Small tip regarding optimizing FTSearches</title><content type="html">Lately I've been working on SQL (MS). At work today, I had a talk about optimizing queries with a colleague more seasoned in the art of writing queries. We got into a talk about if the order of the filter statements (WHEN ..=..) and performance. Apparently, MS have optimized their engine so that the order of the filtering statements don't have much influence on the performance of the query.&lt;br /&gt;&lt;br /&gt;This got me thinking about FTSearch. A year or so ago, I thought about doing some testing on how you could structure an FT query to get the best performance, but never got around to do it.&lt;br /&gt;&lt;br /&gt;I did a little test today, and it seems like the order of the filters doesn't influence the result much. One thing that seems to heavily influence the result is if one of the query items alone results in a lot of documents.&lt;br /&gt;&lt;br /&gt;If you search for "Tom", and the value "Tom" is in a field in a lot of documents, this will drag down the result, no matter if another query item in the query would result if only one document being returned from the query.&lt;br /&gt;&lt;br /&gt;Example from test:&lt;br /&gt;Searching for 'abigail AND abbott' - 2-5ms to get result.&lt;br /&gt;Searching for '[Form=Person] AND abigail AND abbott' - 15-20ms to get result.&lt;br /&gt;&lt;br /&gt;Conclusion from my test. Query items in a FTSearch that alone results in a lot of documents drags down the performance of the entire query. Order of query items doesn't seem to influence the performance of the query.&lt;br /&gt;&lt;br /&gt;If you're building a search engine for databases with a lot of documents, try to avoid having general filters (Form/etc.) if possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-5344161863530569318?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=aMGXxHClGs8:X8c8KTLHp2Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=aMGXxHClGs8:X8c8KTLHp2Y:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=aMGXxHClGs8:X8c8KTLHp2Y:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=aMGXxHClGs8:X8c8KTLHp2Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=aMGXxHClGs8:X8c8KTLHp2Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=aMGXxHClGs8:X8c8KTLHp2Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=aMGXxHClGs8:X8c8KTLHp2Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=aMGXxHClGs8:X8c8KTLHp2Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/aMGXxHClGs8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/5344161863530569318/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=5344161863530569318" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/5344161863530569318?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/5344161863530569318?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/aMGXxHClGs8/small-tip-regarding-optimizing.html" title="Small tip regarding optimizing FTSearches" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/07/small-tip-regarding-optimizing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEMSXo-fSp7ImA9WhZbFkk.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-4052941438293773699</id><published>2011-06-21T09:17:00.002+01:00</published><updated>2011-06-21T09:24:48.455+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-21T09:24:48.455+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Tip for those working with Database events in 8.5.x designer</title><content type="html">If you're working with Open/Close events, it's quite cumbersome when you want to test your code. You have to close the app in both Domino Designer and Notes. I used to close the designer every time I wanted to test modified code.&lt;br /&gt;&lt;br /&gt;During a chat, Tim Tripcony mentioned that you could close the apps in Designer from the Package Explorer. In Package Explorer, each app is shown as a project. To release the app from Designer, simply right click the project, and select close project. No need to remove the app from Designer or close Designer to release the app from memory.&lt;br /&gt;&lt;br /&gt;Share and enjoy! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-4052941438293773699?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=AXbnI02uwhI:ZNRxEg0E5zk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=AXbnI02uwhI:ZNRxEg0E5zk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=AXbnI02uwhI:ZNRxEg0E5zk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=AXbnI02uwhI:ZNRxEg0E5zk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=AXbnI02uwhI:ZNRxEg0E5zk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=AXbnI02uwhI:ZNRxEg0E5zk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=AXbnI02uwhI:ZNRxEg0E5zk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=AXbnI02uwhI:ZNRxEg0E5zk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/AXbnI02uwhI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/4052941438293773699/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=4052941438293773699" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4052941438293773699?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4052941438293773699?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/AXbnI02uwhI/tip-for-those-working-with-database.html" title="Tip for those working with Database events in 8.5.x designer" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/tip-for-those-working-with-database.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACQn8yfSp7ImA9WhZbFkk.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-4454918693470646337</id><published>2011-06-21T08:33:00.004+01:00</published><updated>2011-06-21T08:36:03.195+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-21T08:36:03.195+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Creating your own keyboard shortcuts in Domino Designer</title><content type="html">File -&gt; Preferences --&gt; General -&gt; Keys&lt;br /&gt;&lt;br /&gt;I currently have two custom keyboard shortcuts, &lt;strong&gt;Alt + b to build a single project&lt;/strong&gt;, and &lt;strong&gt;Alt + c to close a project in Package Explorer&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-4454918693470646337?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=osyoplGmnQM:Sb-wqOxFA78:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=osyoplGmnQM:Sb-wqOxFA78:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=osyoplGmnQM:Sb-wqOxFA78:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=osyoplGmnQM:Sb-wqOxFA78:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=osyoplGmnQM:Sb-wqOxFA78:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=osyoplGmnQM:Sb-wqOxFA78:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=osyoplGmnQM:Sb-wqOxFA78:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=osyoplGmnQM:Sb-wqOxFA78:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/osyoplGmnQM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/4454918693470646337/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=4454918693470646337" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4454918693470646337?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4454918693470646337?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/osyoplGmnQM/creating-your-own-keyboard-shortcuts-in.html" title="Creating your own keyboard shortcuts in Domino Designer" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/creating-your-own-keyboard-shortcuts-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkINRnY_eyp7ImA9WhZbEkQ.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-4928252363273163164</id><published>2011-06-17T06:54:00.006+01:00</published><updated>2011-06-17T07:03:17.843+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-17T07:03:17.843+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>One editable area can be used multiple times in a Custom Control</title><content type="html">Not sure how many now this, but an editable area (xp:callback) can be used multiple times inside a custom control.&lt;br /&gt;&lt;br /&gt;If you have an editable area with fields, you can put the field several places in the custom control (same facetName). I'm currently working on a custom control that lets the user edit/add documents. Inside a repeat control, I show the existing documents. Below that, the user can add documents.&lt;br /&gt;&lt;br /&gt;E.g.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;..&lt;br /&gt;&amp;lt;xp:repeat&amp;gt;&lt;br /&gt;..&lt;br /&gt;&amp;lt;!-- View and edit existing fields --&amp;gt;&lt;br /&gt;&amp;lt;xp:callback facetName="fields" disableTheme="true" /&amp;gt;&lt;br /&gt;..&lt;br /&gt;&amp;lt;/xp:repeat&amp;gt;&lt;br /&gt;..&lt;br /&gt;&amp;lt;!-- Create new document --&amp;gt;&lt;br /&gt;&amp;lt;xp:callback facetName="fields" disableTheme="true" /&amp;gt;&lt;br /&gt;..&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;I also discovered that &lt;strong&gt;currentDocument&lt;/strong&gt; seems to point to the "closest" document data source.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-4928252363273163164?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=vzXZwk7Pi7w:3YJvQxDyIxk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=vzXZwk7Pi7w:3YJvQxDyIxk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=vzXZwk7Pi7w:3YJvQxDyIxk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=vzXZwk7Pi7w:3YJvQxDyIxk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=vzXZwk7Pi7w:3YJvQxDyIxk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=vzXZwk7Pi7w:3YJvQxDyIxk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=vzXZwk7Pi7w:3YJvQxDyIxk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=vzXZwk7Pi7w:3YJvQxDyIxk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/vzXZwk7Pi7w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/4928252363273163164/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=4928252363273163164" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4928252363273163164?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4928252363273163164?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/vzXZwk7Pi7w/one-editable-area-can-be-used-multiple.html" title="One editable area can be used multiple times in a Custom Control" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/one-editable-area-can-be-used-multiple.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEICSHY_fCp7ImA9WhZbEE4.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-5228328754861370614</id><published>2011-06-13T17:03:00.007+01:00</published><updated>2011-06-14T07:22:49.844+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-14T07:22:49.844+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><title>Simple API tester - SSJS bugs remain</title><content type="html">A couple of years ago I blogged about bugs in Array.splice, String.match with global modifier, and String.replace with function as parameter.&lt;br /&gt;&lt;br /&gt;I did a little test on the current beta of 8.5.3. Guess what. Two years later, the bugs still haven't been fixed.&lt;br /&gt;&lt;br /&gt;I made a small API tester utility that you can set up tests for the API/expected result. In the demoapp, there are tests for the bugs that I'm aware of. I also added a couple of tests for inconsistencies in the @-functions api.&lt;br /&gt;&lt;br /&gt;It's quite simple to set up for JS/ECMAScript tests. Do the test in Firebug or a similar JS console. Copy/paste the expression, and the result into the fields in the XPage. Run test to see if the result is what should be expected. Note that SSJS follows ECMA-262 Edition 3. Firefox also follows this standard, but has features from JavaScript 1.8.x (&lt;a href="http://en.wikipedia.org/wiki/ECMAScript#Dialects"&gt;according to wikipedia&lt;/a&gt;) that SSJS doesn't have.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://files.dontpanic82.com/APITester.zip"&gt;&gt;&gt; Download API Tester&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt;&lt;br /&gt;This is beta software from IBM and does not represent a commitment, promise or legal obligation by IBM to deliver, in a future release of Notes/Domino or Lotus Notes Traveler, any material, code or functionality described/shown in this presentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-5228328754861370614?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=kLEctgKhq9I:PpcoIc_Wjws:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=kLEctgKhq9I:PpcoIc_Wjws:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=kLEctgKhq9I:PpcoIc_Wjws:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=kLEctgKhq9I:PpcoIc_Wjws:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=kLEctgKhq9I:PpcoIc_Wjws:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=kLEctgKhq9I:PpcoIc_Wjws:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=kLEctgKhq9I:PpcoIc_Wjws:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=kLEctgKhq9I:PpcoIc_Wjws:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/kLEctgKhq9I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/5228328754861370614/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=5228328754861370614" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/5228328754861370614?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/5228328754861370614?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/kLEctgKhq9I/simple-api-tester-ssjs-bugs-remain.html" title="Simple API tester - SSJS bugs remain" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/simple-api-tester-ssjs-bugs-remain.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYEQ3ozfSp7ImA9WhZUF04.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-4987490434510740586</id><published>2011-06-10T19:53:00.007+01:00</published><updated>2011-06-10T20:11:42.485+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-10T20:11:42.485+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XPages API Inspector" /><title>Another release of the API Inspector</title><content type="html">&lt;strong&gt;Changes&lt;/strong&gt;&lt;br /&gt;* Possibility to select XPage to inspect&lt;br /&gt;* No longer a custom control - One XPage to inspect them all!&lt;br /&gt;* Links to the &lt;a href="http://public.dhe.ibm.com/software/dw/lotus/Domino-Designer/JavaDocs/XPagesExtAPI/8.5.2/index.html?overview-summary.html"&gt;XPages API&lt;/a&gt; for XPages classes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can download the latest release from &lt;a href="http://www.openntf.org/internal/home.nsf/release.xsp?databaseName=CN=NotesOSS2/O=NotesOSS!!Projects%5Cpmt.nsf&amp;documentId=F8813A7677EB468D862578AB00676906&amp;action=openDocument"&gt;OpenNTF&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Screenshots&lt;/strong&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-QbZPrhDeylQ/TfJoUk5CtLI/AAAAAAAAATs/3vcB2Wz8mps/s1600/v5OnlyInspector.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 71px;" src="http://1.bp.blogspot.com/-QbZPrhDeylQ/TfJoUk5CtLI/AAAAAAAAATs/3vcB2Wz8mps/s400/v5OnlyInspector.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616666387994031282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-WdVtY8t5800/TfJoUUtKtfI/AAAAAAAAATk/SS-2h3zpX_Y/s1600/v5External%2BXPage.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 142px;" src="http://4.bp.blogspot.com/-WdVtY8t5800/TfJoUUtKtfI/AAAAAAAAATk/SS-2h3zpX_Y/s400/v5External%2BXPage.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616666383649256946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-GAkIjDnA_aM/TfJoVUfNpNI/AAAAAAAAAT0/FgBMfXV6QKc/s1600/v5XPagesCombo.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 62px;" src="http://3.bp.blogspot.com/-GAkIjDnA_aM/TfJoVUfNpNI/AAAAAAAAAT0/FgBMfXV6QKc/s400/v5XPagesCombo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616666400770598098" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-4987490434510740586?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NEcD7g7EgDQ:0rQ6Z-4TUns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NEcD7g7EgDQ:0rQ6Z-4TUns:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=NEcD7g7EgDQ:0rQ6Z-4TUns:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NEcD7g7EgDQ:0rQ6Z-4TUns:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NEcD7g7EgDQ:0rQ6Z-4TUns:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=NEcD7g7EgDQ:0rQ6Z-4TUns:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=NEcD7g7EgDQ:0rQ6Z-4TUns:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=NEcD7g7EgDQ:0rQ6Z-4TUns:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/NEcD7g7EgDQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/4987490434510740586/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=4987490434510740586" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4987490434510740586?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/4987490434510740586?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/NEcD7g7EgDQ/another-release-of-api-inspector.html" title="Another release of the API Inspector" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-QbZPrhDeylQ/TfJoUk5CtLI/AAAAAAAAATs/3vcB2Wz8mps/s72-c/v5OnlyInspector.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/another-release-of-api-inspector.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4DR3czfyp7ImA9WhZUFk4.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-489644070737422653</id><published>2011-06-09T17:59:00.003+01:00</published><updated>2011-06-09T18:02:56.987+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-09T18:02:56.987+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XPages API Inspector" /><title>New release of the XPages API Inspector</title><content type="html">You can download it &lt;a href="http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&amp;name=XPages%20API%20Inspector"&gt;from OpenNTF&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Changes:&lt;/strong&gt;&lt;br /&gt;* Tweaked the user interface&lt;br /&gt;* Now requires 8.5.2 or higher (Process data without validation)&lt;br /&gt;* Removed dijit.form.Textarea from the expression area, and made a simple resize function instead (due to refresh issues)&lt;br /&gt;* Previous expressions are stored/can be selected from a combo box&lt;br /&gt;* SSJS Code and CSS moved into a library/stylesheet for easier maintenance&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Screenshots&lt;/strong&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-oRQG9WlPM_0/TfD8f-NI0TI/AAAAAAAAATU/sNwpGlCbEH0/s1600/v4MultilineExpressions.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 313px; height: 104px;" src="http://2.bp.blogspot.com/-oRQG9WlPM_0/TfD8f-NI0TI/AAAAAAAAATU/sNwpGlCbEH0/s400/v4MultilineExpressions.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616266361535254834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-myAYQuPzKWU/TfD8fVafYvI/AAAAAAAAATM/syWmnjn533M/s1600/v4ComponentIdsWithHidden.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 198px;" src="http://3.bp.blogspot.com/-myAYQuPzKWU/TfD8fVafYvI/AAAAAAAAATM/syWmnjn533M/s400/v4ComponentIdsWithHidden.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616266350585406194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-Emtf2XsPpWk/TfD8fOjo2gI/AAAAAAAAATE/2KUdfob7uG4/s1600/v4ComponentIds.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://3.bp.blogspot.com/-Emtf2XsPpWk/TfD8fOjo2gI/AAAAAAAAATE/2KUdfob7uG4/s400/v4ComponentIds.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616266348744727042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-4xnjK9C49wk/TfD8gOxYPUI/AAAAAAAAATc/7ZzYsm1Xfe0/s1600/v4PreviousExpression.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 150px;" src="http://3.bp.blogspot.com/-4xnjK9C49wk/TfD8gOxYPUI/AAAAAAAAATc/7ZzYsm1Xfe0/s400/v4PreviousExpression.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616266365982227778" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-489644070737422653?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=tnohuyssTp0:-MlrueUBrXQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=tnohuyssTp0:-MlrueUBrXQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=tnohuyssTp0:-MlrueUBrXQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=tnohuyssTp0:-MlrueUBrXQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=tnohuyssTp0:-MlrueUBrXQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=tnohuyssTp0:-MlrueUBrXQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=tnohuyssTp0:-MlrueUBrXQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=tnohuyssTp0:-MlrueUBrXQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/tnohuyssTp0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/489644070737422653/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=489644070737422653" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/489644070737422653?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/489644070737422653?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/tnohuyssTp0/new-release-of-xpages-api-inspector.html" title="New release of the XPages API Inspector" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-oRQG9WlPM_0/TfD8f-NI0TI/AAAAAAAAATU/sNwpGlCbEH0/s72-c/v4MultilineExpressions.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/new-release-of-xpages-api-inspector.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIBSXs5fip7ImA9WhZUFU8.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-8599387685797822882</id><published>2011-06-08T09:28:00.007+01:00</published><updated>2011-06-08T10:15:58.526+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-08T10:15:58.526+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Enabling template inheritance per design element on new design elements</title><content type="html">The new design elements (everything that you have to edit through Package Explorer) don't have an interface to set template inheritance on them.&lt;br /&gt;&lt;br /&gt;You can enable this functionality with a little hack.&lt;br /&gt;&lt;br /&gt;Create a view that &lt;a href="http://www-10.lotus.com/ldd/ddwiki.nsf/dx/view-of-design-elements.htm"&gt;shows all design elements&lt;/a&gt;. Set the first column formula to $Title. This makes it easier to find the design element you're looking for.&lt;br /&gt;&lt;br /&gt;Set the $Class field on the design element document to the template you want it to inherit from. You can do this using a formula agent, or a plugin like &lt;a href="http://www.jeffgilfelt.com/Formul8/"&gt;Formul8&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;That's about it. I'm not sure how the refresh task handles compiling of your java code, but since it seems to work when the design task refreshes an entire application from a template, I'm not surprised if everything works as you expect it to do.&lt;br /&gt;&lt;br /&gt;Per design element inheritance enables you to have a central repository for things like &lt;a href="http://www.dominoguru.com/pages/multilingual_xpage_controls_via_properties.html"&gt;message bundles&lt;/a&gt;. If you want to change a typo in a label (e.g. Adress -&gt; Address), you can change this in the repository, and all applications that "subscribes" to this bundle will be updated with the fix.&lt;br /&gt;&lt;br /&gt;Share and enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-8599387685797822882?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ilOTzTqFBaY:J1jbAX5wvlQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ilOTzTqFBaY:J1jbAX5wvlQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=ilOTzTqFBaY:J1jbAX5wvlQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ilOTzTqFBaY:J1jbAX5wvlQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ilOTzTqFBaY:J1jbAX5wvlQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=ilOTzTqFBaY:J1jbAX5wvlQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ilOTzTqFBaY:J1jbAX5wvlQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=ilOTzTqFBaY:J1jbAX5wvlQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/ilOTzTqFBaY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/8599387685797822882/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=8599387685797822882" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/8599387685797822882?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/8599387685797822882?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/ilOTzTqFBaY/enabling-template-inheritance-per.html" title="Enabling template inheritance per design element on new design elements" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/enabling-template-inheritance-per.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04EQX49fCp7ImA9WhZUFE4.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-1933803285531597758</id><published>2011-06-07T09:33:00.002+01:00</published><updated>2011-06-07T09:38:20.064+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-07T09:38:20.064+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="request" /><title>Trying to find ntrigger.dll for 64 bit server - Trigger Happy/Audit Manager</title><content type="html">I'm trying to implement Audit Manager on a 64bit domino server.&lt;br /&gt;&lt;br /&gt;I've hammered my friend Google with every keyword I can think of, but it doesn't look like anyone has successfully made a 64bit version of the ntrigger.dll/published it.&lt;br /&gt;&lt;br /&gt;I managed to compile a 64bit version, but it crashes the server after it's initialized.&lt;br /&gt;&lt;br /&gt;If anyone has managed to make a working 64bit version of the dll, I would be very happy if you could send it to me (tvaland at gmail)/contribute it to OpenNTF.&lt;br /&gt;&lt;br /&gt;Thanks in advance :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-1933803285531597758?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=dRvkJb0tquo:NqOOok3DskE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=dRvkJb0tquo:NqOOok3DskE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=dRvkJb0tquo:NqOOok3DskE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=dRvkJb0tquo:NqOOok3DskE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=dRvkJb0tquo:NqOOok3DskE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=dRvkJb0tquo:NqOOok3DskE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=dRvkJb0tquo:NqOOok3DskE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=dRvkJb0tquo:NqOOok3DskE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/dRvkJb0tquo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/1933803285531597758/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=1933803285531597758" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/1933803285531597758?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/1933803285531597758?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/dRvkJb0tquo/trying-to-find-ntriggerdll-for-64-bit.html" title="Trying to find ntrigger.dll for 64 bit server - Trigger Happy/Audit Manager" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/trying-to-find-ntriggerdll-for-64-bit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4DR3g-fip7ImA9WhZUE0k.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-2241655458324952399</id><published>2011-06-06T09:23:00.003+01:00</published><updated>2011-06-06T09:29:36.656+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-06T09:29:36.656+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="code snippet" /><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><title>Simple helper function to get path to an application</title><content type="html">I use this when generating URLs in SSJS. The reason that protocol/hostname is added is so that the generated urls work with xp:link. &lt;br /&gt;&lt;br /&gt;If an xp:link url starts with /, it generates the path to the current application at the start of the url. If you want to link to another app/page on the current server you either have to make an html link (&amp;lt;a&amp;gt;), hard code the path, or use something like this function.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;// Returns absolute path (including protocol/hostname) to the current application&lt;br /&gt;// or specified [database]&lt;br /&gt;function getAppPath( db:NotesDatabase ){&lt;br /&gt; try {&lt;br /&gt;  var currentUrl = context.getUrl();&lt;br /&gt;  var hostname = currentUrl.getHost();&lt;br /&gt;  var protocol = currentUrl.getScheme();&lt;br /&gt;  &lt;br /&gt;  db = db || database;&lt;br /&gt;  return protocol + '://' + hostname + '/' + db.getFilePath().replace( /\\/g, '/' );&lt;br /&gt; } catch( e ){ /* Exception handling */ }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-2241655458324952399?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ZjxVJBWb5I8:jBv_XTYUL6Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ZjxVJBWb5I8:jBv_XTYUL6Y:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=ZjxVJBWb5I8:jBv_XTYUL6Y:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ZjxVJBWb5I8:jBv_XTYUL6Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ZjxVJBWb5I8:jBv_XTYUL6Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=ZjxVJBWb5I8:jBv_XTYUL6Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=ZjxVJBWb5I8:jBv_XTYUL6Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=ZjxVJBWb5I8:jBv_XTYUL6Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/ZjxVJBWb5I8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/2241655458324952399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=2241655458324952399" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/2241655458324952399?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/2241655458324952399?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/ZjxVJBWb5I8/simple-helper-function-to-get-path-to.html" title="Simple helper function to get path to an application" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/06/simple-helper-function-to-get-path-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYMRXc5cSp7ImA9WhZVF04.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-3726139644606122114</id><published>2011-05-30T07:13:00.003+01:00</published><updated>2011-05-30T07:16:24.929+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-30T07:16:24.929+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Useful sidebar widgets/plugins</title><content type="html">I was looking for the &lt;a href="http://www.domiclipse.com/domiclipse/web.nsf/htdocs/docviewer"&gt;DocViewer&lt;/a&gt; plugin and found a couple more plugins posted by Alan Lepofsky a couple of years ago.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.socialtext.net/lotus/lotus_notes_sidebar_apps_and_plugins"&gt;https://www.socialtext.net/lotus/lotus_notes_sidebar_apps_and_plugins&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-3726139644606122114?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=CsjhcwDxwAI:wF2dzMMGZ-E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=CsjhcwDxwAI:wF2dzMMGZ-E:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=CsjhcwDxwAI:wF2dzMMGZ-E:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=CsjhcwDxwAI:wF2dzMMGZ-E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=CsjhcwDxwAI:wF2dzMMGZ-E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=CsjhcwDxwAI:wF2dzMMGZ-E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=CsjhcwDxwAI:wF2dzMMGZ-E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=CsjhcwDxwAI:wF2dzMMGZ-E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/CsjhcwDxwAI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/3726139644606122114/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=3726139644606122114" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/3726139644606122114?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/3726139644606122114?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/CsjhcwDxwAI/useful-sidebar-widgetsplugins.html" title="Useful sidebar widgets/plugins" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/05/useful-sidebar-widgetsplugins.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMNQX47fyp7ImA9WhZbFkk.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-5473013619295584491</id><published>2011-05-16T08:13:00.007+01:00</published><updated>2011-06-21T08:48:10.007+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-21T08:48:10.007+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lotusscript" /><category scheme="http://www.blogger.com/atom/ns#" term="code snippet" /><title>Force embedded views to open on the same server as the app containing them</title><content type="html">I've been doing some Notes development lately. I've noticed that the embedded views are being loaded from the server where the app that have the embedded views was opened last. I wrote a little procedure that you can run on &lt;strong&gt;PostOpen in database script&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;Input parameter: the name(s) of the forms with external embedded views.&lt;br /&gt;&lt;br /&gt;The code inspects the DXL of the form and fetches all the replicaids of the external embedded views. It then tries to open these databases and add them to the workspace with the server the user is currently on. As far as I've tested, it seems to work as described. Let me know if there are bugs.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Sub loadEmbeddedViewsOnCurrentServer( formsWithEmbedded As Variant )&lt;br /&gt; On Error GoTo bubbleError&lt;br /&gt; '// Goes through the form(s) specified by name in formsWithEmbedded and opens the dbs&lt;br /&gt; '//  that have the embedded views on the same server as the code is running&lt;br /&gt; If DataType( formsWithEmbedded ) = 8 Then&lt;br /&gt;  formsWithEmbedded = Split( formsWithEmbedded, "¤¤¤" )&lt;br /&gt; End If &lt;br /&gt; &lt;br /&gt; Dim s As New NotesSession, db As NotesDatabase, currentServer As String&lt;br /&gt; Set db = s.currentDatabase&lt;br /&gt; currentServer = db.server&lt;br /&gt; &lt;br /&gt; '// Find forms&lt;br /&gt; Dim noteCol As NotesNoteCollection&lt;br /&gt; Set noteCol = db.createNoteCollection( False )&lt;br /&gt; noteCol.selectForms = True&lt;br /&gt; noteCol.selectionFormula = |$title="| + Join( formsWithEmbedded, |":"| ) + |"|&lt;br /&gt; Call noteCol.buildCollection()&lt;br /&gt; &lt;br /&gt; Dim formNoteId As String, formDoc As NotesDocument&lt;br /&gt; Dim dxlExporter As NotesDXLExporter, dxlStream As NotesStream&lt;br /&gt; Dim embeddedPosition As String, embeddedView As String&lt;br /&gt; Dim formDxl As String, embeddedViews As Variant, replicaid As String&lt;br /&gt; Dim workspace As New NotesUIWorkspace(), embeddedViewDb As NotesDatabase&lt;br /&gt; Dim openedDbs As Variant, result As Variant&lt;br /&gt;  &lt;br /&gt; openedDbs = Split( "" )&lt;br /&gt; Set dxlStream = s.createStream()  &lt;br /&gt; &lt;br /&gt; formNoteId = noteCol.getFirstNoteId() &lt;br /&gt; While formNoteId &amp;lt;&amp;gt; ""&lt;br /&gt;  Set formDoc = db.getDocumentById( formNoteId )&lt;br /&gt;  &lt;br /&gt;  '// Extract DXL from form&lt;br /&gt;  Set dxlExporter = s.createDxlExporter( formDoc, dxlStream )&lt;br /&gt;  Call dxlExporter.process() &lt;br /&gt;  &lt;br /&gt;  dxlStream.position = 0&lt;br /&gt;  formDxl = dxlStream.readText&lt;br /&gt;  &lt;br /&gt;  '// Get embedded view info&lt;br /&gt;  embeddedPosition = InStr( formDxl, "&amp;lt;embeddedview" )&lt;br /&gt;  While embeddedPosition &amp;gt; 0&lt;br /&gt;   '// Embedded views can be defined as &amp;lt;embeddedview /&amp;gt; or &amp;lt;embeddedview&amp;gt;&amp;lt;/embeddedview&amp;gt; - try both&lt;br /&gt;   embeddedView = StrLeftBack( StrRightBack( formDxl, "&amp;lt;embeddedview" ), "&amp;lt;/embeddedview&amp;gt;" )&lt;br /&gt;   If embeddedView = "" Then embeddedView = StrLeftBack( StrRightBack( formDxl, "&amp;lt;embeddedview" ), "/&amp;gt;" )&lt;br /&gt;   &lt;br /&gt;   '// Open databases&lt;br /&gt;   If InStr( embeddedView, "database" ) &amp;gt; 0 Then&lt;br /&gt;    replicaid = Strtoken( StrRightBack( embeddedview, "database='" ), "'", 1 ) &lt;br /&gt;    If replicaid &amp;lt;&amp;gt; "" Then&lt;br /&gt;     '// If db hasn't been opened before in the script - open&lt;br /&gt;     If IsNull( ArrayGetIndex( openedDbs, replicaid ) ) Then&lt;br /&gt;      Set embeddedViewDb = New NotesDatabase( "", "" )&lt;br /&gt;      Call embeddedViewDb.openByReplicaId( currentServer, replicaid )&lt;br /&gt;      If Not embeddedViewDb Is Nothing Then       &lt;br /&gt;       If embeddedViewDb.isOpen Then&lt;br /&gt;        Call workspace.addDatabase( currentServer, embeddedViewDb.filePath )        &lt;br /&gt;       End If&lt;br /&gt;      End If&lt;br /&gt;      &lt;br /&gt;      openedDbs = ArrayAppend( openedDbs, replicaid )&lt;br /&gt;     End If&lt;br /&gt;    End If&lt;br /&gt;   End If&lt;br /&gt;   &lt;br /&gt;   '// Remove start tag for the processed embedded view - only run once per embedded&lt;br /&gt;   formDxl = Replace( formDxl, "&amp;lt;embeddedview" + embeddedView, "" )&lt;br /&gt;   &lt;br /&gt;   '// Find next embedded view&lt;br /&gt;   embeddedPosition = InStr( formDxl, "&amp;lt;embeddedview" )&lt;br /&gt;  Wend&lt;br /&gt;  &lt;br /&gt;  Call dxlStream.truncate()&lt;br /&gt;  formNoteId = noteCol.getNextNoteId( formNoteId )&lt;br /&gt; Wend &lt;br /&gt; &lt;br /&gt; Exit Sub&lt;br /&gt;bubbleError:&lt;br /&gt; Error Err, Error&lt;br /&gt;End Sub&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-5473013619295584491?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=MUVhKaKEEAs:hZl0RAueN7k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=MUVhKaKEEAs:hZl0RAueN7k:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=MUVhKaKEEAs:hZl0RAueN7k:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=MUVhKaKEEAs:hZl0RAueN7k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=MUVhKaKEEAs:hZl0RAueN7k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=MUVhKaKEEAs:hZl0RAueN7k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=MUVhKaKEEAs:hZl0RAueN7k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=MUVhKaKEEAs:hZl0RAueN7k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/MUVhKaKEEAs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/5473013619295584491/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=5473013619295584491" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/5473013619295584491?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/5473013619295584491?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/MUVhKaKEEAs/force-embedded-views-opening-from-same.html" title="Force embedded views to open on the same server as the app containing them" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/05/force-embedded-views-opening-from-same.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUFQXs-eSp7ImA9WhZRF0o.&quot;"><id>tag:blogger.com,1999:blog-3745504982837212509.post-7672533119945892057</id><published>2011-04-14T10:22:00.003+01:00</published><updated>2011-04-14T10:26:50.551+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-14T10:26:50.551+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xpages" /><category scheme="http://www.blogger.com/atom/ns#" term="random tip" /><title>Simple trick to format XPages Checkbox group</title><content type="html">If you put display:inline on a table (which XPages generates for a CheckboxGroup), you can style each cell like an inline element.&lt;br /&gt;&lt;br /&gt;To make a four column checkbox group (put fourColumnCheckboxGroup as styleClass on the xp:checkBoxGroup), put this in your CSS file:&lt;pre&gt;&lt;code&gt;.fourColumnCheckboxGroup { display: inline; }&lt;br /&gt;.fourColumnCheckboxGroup td { float: left; width: 24%; }&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;For three columns, use 32% and so on. I use (100 / numberOfColumns) - 1 as that seems to work best cross browser.&lt;br /&gt;&lt;br /&gt;Share and enjoy :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3745504982837212509-7672533119945892057?l=dontpanic82.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=QH1iPBwXkYc:B72J0OSs6RU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=QH1iPBwXkYc:B72J0OSs6RU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=QH1iPBwXkYc:B72J0OSs6RU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=QH1iPBwXkYc:B72J0OSs6RU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=QH1iPBwXkYc:B72J0OSs6RU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=QH1iPBwXkYc:B72J0OSs6RU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/dontpanic82?a=QH1iPBwXkYc:B72J0OSs6RU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/dontpanic82?i=QH1iPBwXkYc:B72J0OSs6RU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dontpanic82/~4/QH1iPBwXkYc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://dontpanic82.blogspot.com/feeds/7672533119945892057/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3745504982837212509&amp;postID=7672533119945892057" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/7672533119945892057?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3745504982837212509/posts/default/7672533119945892057?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/dontpanic82/~3/QH1iPBwXkYc/simple-trick-to-format-xpages-checkbox.html" title="Simple trick to format XPages Checkbox group" /><author><name>Tommy Valand</name><uri>http://www.blogger.com/profile/11052104644034054473</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://i110.photobucket.com/albums/n102/_tommy_45-/IMGP25252.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://dontpanic82.blogspot.com/2011/04/simple-trick-to-format-xpages-checkbox.html</feedburner:origLink></entry></feed>

