Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://notesnl.blogspot.com/feeds/posts/default?alt=rss

  1. <?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-8284229893947571160</atom:id><lastBuildDate>Wed, 07 Feb 2024 14:20:16 +0000</lastBuildDate><category>xpages</category><category>snippets</category><category>domino</category><category>lotus</category><category>domino designer</category><category>lotusscript</category><category>lotus notes</category><category>Lotusphere</category><category>NL LUG</category><category>user conference</category><category>bug</category><category>dojo</category><category>notes</category><category>squash</category><category>teamstudio</category><category>agent</category><category>beer</category><category>blog template</category><category>browser</category><category>ciao</category><category>conference</category><category>eclipse</category><category>formula</category><category>ibm</category><category>language detect</category><category>openntf</category><category>planet lotus</category><category>quickr</category><category>social networking</category><category>sorting</category><category>sustainability</category><category>web 2.0</category><category>workaround</category><title>Notes NL</title><description>Notes about Lotus Notes / Domino development from the Netherlands</description><link>https://notesnl.blogspot.com/</link><managingEditor>noreply@blogger.com (Tom Steenbergen)</managingEditor><generator>Blogger</generator><openSearch:totalResults>56</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-1451259176186346248</guid><pubDate>Mon, 24 Sep 2012 12:00:00 +0000</pubDate><atom:updated>2014-10-13T20:27:17.506+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus notes</category><category domain="http://www.blogger.com/atom/ns#">lotusscript</category><title>Notes error: Field is too large (32k) or ....</title><description>&quot;Notes error: Field is too large (32k) or View&#39;s column &amp;amp; selection formulas are too large&quot;. I ran accross this error last week and it took a while to solve, as the error is not as descriptive as it seems.&lt;br /&gt;
  2. The error occurred in a lotusscript agent while updating a document after receiving and processing an xml response from a webservice. As the agent is not dealing with changing views or view selection formulas, the problem had to be at field level.&lt;br /&gt;
  3. Initially the error indicated its location in the code to be when storing the xml as an attachment on the document. But attachments are stored in rich text fields so that would be impossible.&lt;br /&gt;
  4. While debugging the first thing I found is that the error would not occur at the moment an item/field would grow beyond the 32k limit, but at the moment the NotesDocument.Save method is called.&lt;br /&gt;
  5. I did find a field that grew past the 32k limit, and solved it by changing the field type to richtext. But still the agent kept nagging with the 32k message.&lt;br /&gt;
  6. Debugging on, it took a couple of hours of trial and error and googling around to find what was causing this next 32k limit error.&lt;br /&gt;
  7. After a while I discovered that the content of the xml could occasionally contain large numbers repeating data and the agent processes this into 4 fields per repeat. The xml I discovered this on contained a 700+ repeat resulting in 2800+ extra fields on the form. As field summary was not disabled on the fields, this seemed to be causing a 32k message and excluding this code in a next debug run with the same xml confirmed this as no error was produced.&lt;br /&gt;
  8. Eventually I solved the problem by replacing these 4 fields per repeat, into combining them in one richtext field using a richtext table.&lt;br /&gt;
  9. &lt;br /&gt;
  10. Conclusion: The error message is a bit misleading, as adding more than 32k characters to a normal text field will cause a 32k error (but we already knew that), but adding lots of fields to a form with field summary enabled (which is default) can also cause this message when the total field summary exceeds the 32k limit.&lt;br /&gt;
  11. &lt;br /&gt;
  12. &lt;a href=&quot;http://www-01.ibm.com/support/docview.wss?uid=swg21087474&quot;&gt;This is what IBM writes about the error&lt;/a&gt;.</description><link>https://notesnl.blogspot.com/2012/09/notes-error-field-is-too-large-32k-or.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-6986639114901889258</guid><pubDate>Tue, 18 Sep 2012 19:44:00 +0000</pubDate><atom:updated>2012-09-21T20:07:41.903+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">beer</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>First Xpages &amp; beer session</title><description>&lt;a href=&quot;http://blog.clearitconsulting.nl/web/blog.nsf/dx/xpages_beer_1.htm/content/M2?OpenElement&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://blog.clearitconsulting.nl/web/blog.nsf/dx/xpages_beer_1.htm/content/M2?OpenElement&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;After some discussions between a couple of xpages developers, Martin Meijer, Mark Leusink and the guys from Clear IT Consulting organised the first Xpages &amp;amp; beer session in Hengelo (ov), the Netherlands on wednesday 12 september 2012.&lt;br /&gt;
  13. &lt;br /&gt;
  14. The format is simple have a couple of presentations and discussions and finish with a beer.&lt;br /&gt;
  15. The presentations for this first edition were by&lt;br /&gt;
  16. &lt;ul&gt;
  17. &lt;li&gt;Mark Leusink,&lt;a href=&quot;http://linqed.eu/&quot;&gt; LinQed&lt;/a&gt;, about using managed beans in xpages applications&lt;span style=&quot;text-decoration: underline;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
  18. &lt;li&gt;&lt;a href=&quot;https://twitter.com/flinden68&quot; target=&quot;_new&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Frank van der Linden&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.e-office.com/&quot;&gt;e-Office&lt;/a&gt;, about connections activity stream&lt;/li&gt;
  19. &lt;li&gt;&lt;a href=&quot;https://twitter.com/martininaction&quot;&gt;Martin Meijer&lt;/a&gt;, &lt;a href=&quot;http://www.yellow2010.nl/&quot;&gt;Yellow 2010&lt;/a&gt;, about the use of custom controls and cusom properties.&lt;/li&gt;
  20. &lt;/ul&gt;
  21. &lt;br /&gt;
  22. The idea is continue this initiative every quarter and the second edition is planned for wednesday 12 december 2012 at the e-Office location in Houten (NL).&lt;br /&gt;
  23. So if you missed the first edition, put the next one on your calendar. See you there.&lt;br /&gt;
  24. &lt;br /&gt;
  25. I really enjoyed watching the presentation and talking about xpages development and will definitely be there for the next edition. &lt;br /&gt;
  26. A big thank you to Martin, Mark and Wim&amp;nbsp; for organising the first Xpages &amp;amp; Beer&lt;br /&gt;
  27. &lt;br /&gt;
  28. &lt;span style=&quot;font-size: x-small;&quot;&gt;Photo courtesy of &lt;a href=&quot;http://www.clearitconsulting.nl/&quot;&gt;Clear IT Consulting&lt;/a&gt; &lt;/span&gt;</description><link>https://notesnl.blogspot.com/2012/09/first-xpages-beer-session.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-8340493108753503735</guid><pubDate>Wed, 11 Apr 2012 11:51:00 +0000</pubDate><atom:updated>2023-07-08T13:20:14.610+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">domino</category><category domain="http://www.blogger.com/atom/ns#">lotusscript</category><title>&quot;Invalid or nonexistent document&quot; with embedded object on form</title><description>There seems to be a problem with embedded objects stored in the design of a form. I recently came accross this bug at a client site. They use an embedded word document object on a form to allow the users to create templates for letters. These letters are used on the dossiers they handle for their customers/clients.&lt;br /&gt;
  29. This problem or bug is introduced with the latest release of Lotus Notes, 8.5.3. The bug only occurs when creating new documents based on saving the form after editing and saving the object. Copies made of old documents continue work as before.&lt;br /&gt;
  30. &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGl8iF4ef86uYNwQhdaqyi1ThtUj6pR4r4-5aT8EoNY8QBrkXwGcH-sQalRmuEv86bYUZetuxfT_AbjQmHC8U-htuTJcTNMnmlCOLkF0tbEeXlIM-SzANb8qTsXNdJViyoXpQ_kk437Rpk2y0Er3RHXvuw0FyxdaiB6bU3e3FpEIrMInd22VDQVIjI0Gk/s427/invalidornoexistentdocument.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;129&quot; data-original-width=&quot;427&quot; height=&quot;97&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGl8iF4ef86uYNwQhdaqyi1ThtUj6pR4r4-5aT8EoNY8QBrkXwGcH-sQalRmuEv86bYUZetuxfT_AbjQmHC8U-htuTJcTNMnmlCOLkF0tbEeXlIM-SzANb8qTsXNdJViyoXpQ_kk437Rpk2y0Er3RHXvuw0FyxdaiB6bU3e3FpEIrMInd22VDQVIjI0Gk/s320/invalidornoexistentdocument.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;
  31. An apar already exists (&lt;span style=&quot;font-size: small;&quot;&gt;LO65725&lt;/span&gt;) but for now it doesnot seem IBM will solve it anytime soon. A pity as the suggested workaround &lt;sup&gt;*1)&lt;/sup&gt; is difficult to implement in applications that already have dozens of documents based on the design with the embedded object.&lt;br /&gt;
  32. &lt;br /&gt;
  33. I created another workaround which works perfectly on my clients applications. I have created a Lotusscript function that will create a new copy of an already existing document (created before the 8.5.3. ugrade) (regular copy/paste is not allowed in the application).&lt;br /&gt;
  34. This dedicated document is a stripped version of what they normally use. And to keep the users from accidentally changing or deleting it I have hidden it for the views the users are using.&lt;br /&gt;
  35. &lt;br /&gt;
  36. I have found one &lt;a href=&quot;http://atnotes.de/index.php?topic=53964.msg348261;topicseen&quot;&gt;other article (by Sonja Schiffer)&lt;/a&gt; on this problem on the web, so I thought it might be worthwhile sharing.&lt;br /&gt;
  37. &lt;br /&gt;
  38. &lt;br /&gt;
  39. &lt;sup&gt;*1)&lt;/sup&gt; the suggested workaround is to work with attachments, detach edit save and reattach to the document.&lt;br /&gt;
  40. Obviously not very handy in an already existing application, but a good idea for new applications.</description><link>https://notesnl.blogspot.com/2012/04/invalid-or-nonexistent-document-on.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGl8iF4ef86uYNwQhdaqyi1ThtUj6pR4r4-5aT8EoNY8QBrkXwGcH-sQalRmuEv86bYUZetuxfT_AbjQmHC8U-htuTJcTNMnmlCOLkF0tbEeXlIM-SzANb8qTsXNdJViyoXpQ_kk437Rpk2y0Er3RHXvuw0FyxdaiB6bU3e3FpEIrMInd22VDQVIjI0Gk/s72-c/invalidornoexistentdocument.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-5571292282032261751</guid><pubDate>Wed, 14 Mar 2012 18:45:00 +0000</pubDate><atom:updated>2023-07-08T13:21:49.082+02:00</atom:updated><title>1st LotusSquash of 2012, Deventer, 29 march</title><description>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTzJQsYlRbHOk_fEh9VVdcB-_eC7TVMqF9-7ZKMXhIKrH5XAUxRApSctQI7530Q1a5joVSvb0RNIx4-1mksL-jlCXo-19FeuPm15a8rFuYL1LrclwgfyPWUbP5X6nkcghDLIv5HCWZce0vjFD3ejeu7qZ8F9JRTBJCW9Ctm9r269VvR91750RolGqy1MI/s442/lotussquash.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;60&quot; data-original-width=&quot;442&quot; height=&quot;55&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTzJQsYlRbHOk_fEh9VVdcB-_eC7TVMqF9-7ZKMXhIKrH5XAUxRApSctQI7530Q1a5joVSvb0RNIx4-1mksL-jlCXo-19FeuPm15a8rFuYL1LrclwgfyPWUbP5X6nkcghDLIv5HCWZce0vjFD3ejeu7qZ8F9JRTBJCW9Ctm9r269VvR91750RolGqy1MI/w413-h55/lotussquash.gif&quot; width=&quot;413&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;
  41. LotusSquash:
  42. playing squash with other Lotus geeks - a friendly  training session
  43. open  for players of all levels and Lotus geeks of all  levels - a
  44. quarterly event organised around the country.&lt;br /&gt;
  45. Non Lotus geeks are welcome too ;-)&lt;br /&gt;
  46. &lt;br /&gt;
  47. It
  48. is also an  alternative, nice and sporty way of  networking and
  49. chatting about IBM  Lotus stuff. Watch for updates via twitter
  50. #lotussquash.&lt;br /&gt;
  51. Let us know if you want to join via twitter or post a comment here.&lt;br /&gt;
  52. &lt;br /&gt;
  53. &lt;span style=&quot;font-weight: bold;&quot;&gt;Next LotusSquash:&lt;/span&gt;&lt;br /&gt;
  54. Date: thursday 29 march&lt;br /&gt;
  55. Time: 19:00 hrs&lt;br /&gt;
  56. &lt;span style=&quot;font-size: small;&quot;&gt;Where: &lt;/span&gt;&lt;a href=&quot;http://www.sportbedrijfdeventer.nl/sport-en-educatie/squashen/informatie/&quot;&gt;Sportbedrijf Deventer&lt;/a&gt;&lt;br /&gt;
  57. Address: Piet van Donkplein 1, 7422LW Deventer (NL)&lt;br /&gt;
  58. Organised by: &lt;a href=&quot;http://www.clearitconsulting.nl/&quot;&gt;Clear IT Consulting&lt;/a&gt;</description><link>https://notesnl.blogspot.com/2012/03/1st-lotussquash-of-2012-deventer-29.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTzJQsYlRbHOk_fEh9VVdcB-_eC7TVMqF9-7ZKMXhIKrH5XAUxRApSctQI7530Q1a5joVSvb0RNIx4-1mksL-jlCXo-19FeuPm15a8rFuYL1LrclwgfyPWUbP5X6nkcghDLIv5HCWZce0vjFD3ejeu7qZ8F9JRTBJCW9Ctm9r269VvR91750RolGqy1MI/s72-w413-h55-c/lotussquash.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-4460652560922546870</guid><pubDate>Wed, 21 Dec 2011 13:00:00 +0000</pubDate><atom:updated>2011-12-21T22:05:55.274+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">domino</category><category domain="http://www.blogger.com/atom/ns#">lotusscript</category><category domain="http://www.blogger.com/atom/ns#">workaround</category><title>agent.RunOnServer - cannot create automated object</title><description>The other day I had to make some changes to process an incoming html page containing client data from a paid service.&lt;br /&gt;
  59. To limit the access to this service, it can only be called from the domino servers. And is currently done&amp;nbsp; through a scheduled agent.&lt;br /&gt;
  60. But now some users also need to be able to call the service on demand. To keep the restriction of calling only from a domino server I created a lotusscript button that runs the process via an agent.RunOnServer call.&lt;br /&gt;
  61. This agent is reusing the code from the scheduled agent and does a CreateObject of the MSXML service to handle the incoming html/xml.&lt;br /&gt;
  62. It constantly failed with an error message &quot;cannot create automated object&quot; on the console.&lt;br /&gt;
  63. After some searching and a tip by &lt;a href=&quot;http://www.d2k.nl/domino/blog4.php&quot;&gt;Dennis van Remortel&lt;/a&gt; I found a &lt;a href=&quot;http://www-01.ibm.com/support/docview.wss?uid=swg21088529&quot;&gt;technote (21088529)&lt;/a&gt; through the &lt;a href=&quot;http://www-10.lotus.com/ldd/nd6forum.nsf/0/bdc9b8f2ff107a778525780e003cff20?OpenDocument&quot;&gt;LDD forum&lt;/a&gt; that explained this error and how to work around it. It notes it affects releases 5, 6 &amp;amp; 6.5, but appearantly it is still valid for 8.5.x as well!!&lt;br /&gt;
  64. &lt;br /&gt;
  65. The workaround is to create another agent that is called from the client button with the RunOnServer method an to have this agent call the original agent with the Run method.</description><link>https://notesnl.blogspot.com/2011/12/agentrunonserver-cannot-create.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-3510382832408570053</guid><pubDate>Tue, 22 Nov 2011 19:46:00 +0000</pubDate><atom:updated>2023-07-08T13:24:08.175+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">openntf</category><category domain="http://www.blogger.com/atom/ns#">snippets</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>XSnippets - do not reinvent the wheel</title><description>&lt;br /&gt;A gem for code sharing was launched about a month ago on OpenNTF, &lt;a href=&quot;http://openntf.org/XSnippets.nsf/home.xsp&quot;&gt;XSnippets&lt;/a&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://openntf.org/XSnippets.nsf/home.xsp&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnGcW3vqt7NVJp5y0vqby0mQtA1qUPKFvoYRHIeOD5rlL32a4F7Hh6eVWIs5s_LDjmnAKNWp7YLR9q1SmbsXFmzGS93EM-9qa5yexCslwoLGTACfP8_iuvJEZlhdU7CGGuxMuyTJB2qTuo_tHB2UoO7hOxUDsJKgh1-wd_tOhv2o5_oYJO7lBqIQNlkZA/s263/reinventwheel.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;192&quot; data-original-width=&quot;263&quot; height=&quot;146&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnGcW3vqt7NVJp5y0vqby0mQtA1qUPKFvoYRHIeOD5rlL32a4F7Hh6eVWIs5s_LDjmnAKNWp7YLR9q1SmbsXFmzGS93EM-9qa5yexCslwoLGTACfP8_iuvJEZlhdU7CGGuxMuyTJB2qTuo_tHB2UoO7hOxUDsJKgh1-wd_tOhv2o5_oYJO7lBqIQNlkZA/w200-h146/reinventwheel.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;. It contains small re-usable chunks of code related to Xpages.&lt;br /&gt;
  66. The UI is very simple and userfriendly and finding that codefragment you need in your next project should not be a problem. The code snippets are even colour coded.&lt;br /&gt;
  67. &lt;br /&gt;
  68. Hopefully all those great contributors of code to the Notes Domino community will gradually copy their pieces of code to this site. That would make XSnippets the place to look first and avoid reinventing the wheel.</description><link>https://notesnl.blogspot.com/2011/11/xsnippets-do-not-reinvent-wheel.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnGcW3vqt7NVJp5y0vqby0mQtA1qUPKFvoYRHIeOD5rlL32a4F7Hh6eVWIs5s_LDjmnAKNWp7YLR9q1SmbsXFmzGS93EM-9qa5yexCslwoLGTACfP8_iuvJEZlhdU7CGGuxMuyTJB2qTuo_tHB2UoO7hOxUDsJKgh1-wd_tOhv2o5_oYJO7lBqIQNlkZA/s72-w200-h146-c/reinventwheel.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-6971842618220951149</guid><pubDate>Mon, 10 Oct 2011 13:00:00 +0000</pubDate><atom:updated>2011-10-10T15:00:15.987+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">snippets</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Xpages Internationalisation</title><description>Working in Europe for a multinational, providing a multi-lingual website is not an option, it is a must. So the option for internationalisation in Xpages is very welcome.&lt;br /&gt;
  69. The standard xpages localisation option (in the application properties) creates a properties file per specified language per custom control/xpage. Works great, but it does create a lot of maintenance work if things needs changing afterwards or when you add a language.&lt;br /&gt;
  70. There is another option available which is not as automated like the xpages localization, but in the long run will probably turn out to be more flexible when doing maintenance or adding an extra language. &lt;br /&gt;
  71. Here is how it works:&lt;br /&gt;
  72. &lt;br /&gt;
  73. - For every language create a properties file, a flat text file with the extension .properties and make them available to the application through the &quot;file resources&quot;. For ease of use name these files something like english.properties, dutch.properties, etc. In the properties files add name-value pairs separated by the equals sign (=) for labels, buttons etc. in your applocation that you want translated.&lt;br /&gt;
  74. &lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; login_text=Login&lt;/i&gt;&lt;br /&gt;
  75. &lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logout_text=Logout&lt;/i&gt;&lt;br /&gt;
  76. &lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu_text=Menu&lt;/i&gt;&lt;br /&gt;
  77. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;br /&gt;
  78. &lt;br /&gt;
  79. - In a custom control that loads on every page in the application, e.g. an initialisation custom control, in the resources properties add a resource bundle, name it something like &quot;lang&quot; and compute the location to the desired language properties file, e.g. using the browser language setting or for testing as simple as below..&lt;br /&gt;
  80. &lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;i&gt;return &quot;/dutch.properties&quot;;&lt;/i&gt;&lt;br /&gt;
  81. &lt;br /&gt;
  82. - Next go through all the xpages and custom controls and change the fixed text of labels, buttons, etc. by a value from the properties file set in the resources.&lt;br /&gt;
  83. &lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lang.login_text&lt;/i&gt;&lt;br /&gt;
  84. &lt;br /&gt;
  85. - After setting all the necessary entries in the properties file for the default language, create the file resources (copy) for the other languages. To spot not translated labels in the application, you can prefix them with the target language.&lt;br /&gt;
  86. &lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; login_text=[EN]Login&lt;/i&gt;&lt;br /&gt;
  87. &lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logout_text=[EN]Logout&lt;/i&gt;&lt;br /&gt;
  88. &lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menu_text=[EN]Menu&lt;/i&gt;&lt;br /&gt;
  89. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;br /&gt;
  90. &lt;br /&gt;
  91. This process is best done at the end of the development phase of a project and work with a default language until than.&lt;br /&gt;
  92. &lt;br /&gt;
  93. &lt;span style=&quot;border-collapse: separate; color: black; font-family: Tahoma; font-size: x-small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;Used sources:&lt;br /&gt; &lt;a href=&quot;http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_views&quot;&gt;xpages101.net&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
  94. &lt;span style=&quot;border-collapse: separate; color: black; font-family: Tahoma; font-size: x-small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;a href=&quot;http://www-10.lotus.com/ldd/ddwiki.nsf/dx/UsingLocalizationOptions.htm&quot;&gt;LND Application dvlp wiki&lt;/a&gt;&lt;/span&gt;</description><link>https://notesnl.blogspot.com/2011/10/xpages-internationalisation.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-6596307798050299374</guid><pubDate>Tue, 27 Sep 2011 22:30:00 +0000</pubDate><atom:updated>2011-09-28T21:04:31.273+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">snippets</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Keep view position between (x)pages</title><description>By default xpages doesnot keep the position of the view (pageno.) when going to another page. So when you go back to the view page from another page, the view will display from the first entry (and page) again. Not very userfriendly if you had just left it from page 3.&lt;br /&gt;
  95. You will have to make the view page remember its position by storing the number of the first row on the page in a scoped variable.&lt;br /&gt;
  96. In the &quot;beforeRenderResponse&quot; event add the following code:&lt;br /&gt;
  97. &lt;br /&gt;
  98. &lt;div style=&quot;font-family: inherit;&quot;&gt;
  99. &lt;i&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp; var c = getComponent(&quot;viewPanel&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (c) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; sessionScope.put(&quot;viewFirst&quot;+view.getPageName()&lt;span class=&quot;wikiDoc&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;, c.first);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
  100. &lt;div style=&quot;font-family: inherit;&quot;&gt;
  101. &lt;span style=&quot;font-size: small;&quot;&gt;&quot;viewPanel&quot; is the id of your view control of course.&lt;/span&gt;&lt;/div&gt;
  102. &lt;div style=&quot;font-family: inherit;&quot;&gt;
  103. &lt;span style=&quot;font-size: small;&quot;&gt;And in the view control&#39;s All properties - first - add the code:&lt;/span&gt;&lt;/div&gt;
  104. &lt;div style=&quot;font-family: inherit;&quot;&gt;
  105. &lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
  106. &lt;div style=&quot;font-family: inherit;&quot;&gt;
  107. &lt;span style=&quot;font-size: small;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; var vwFirst = sessionScope.get(&quot;viewFirst&quot;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-size: small;&quot;&gt;+view.getPageName()&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;i&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (vwFirst) return vwFirst;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
  108. &lt;div style=&quot;font-family: inherit;&quot;&gt;
  109. &lt;br /&gt;&lt;/div&gt;
  110. &lt;div style=&quot;font-family: inherit;&quot;&gt;
  111. &lt;span style=&quot;font-size: small;&quot;&gt;This will also work when displaying data tables through a repeat control.&lt;/span&gt;&lt;br /&gt;
  112. &lt;span style=&quot;font-size: small;&quot;&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
  113. &lt;span style=&quot;border-collapse: separate; color: black; font-family: Tahoma; font-size: x-small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;Used sources:&lt;br /&gt; &lt;a href=&quot;http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_views&quot;&gt;xpageswiki.com&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
  114. &lt;span style=&quot;border-collapse: separate; color: black; font-family: Tahoma; font-size: x-small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
  115. </description><link>https://notesnl.blogspot.com/2011/09/keep-view-position-between-xpages.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-1642098114131995059</guid><pubDate>Mon, 19 Sep 2011 16:36:00 +0000</pubDate><atom:updated>2023-07-08T13:25:21.980+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus</category><category domain="http://www.blogger.com/atom/ns#">squash</category><title>LotusSquash - 29 september 2011 postponed to 27 october</title><description>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;
  116. &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPxin3WkOMlTM3xlqvfQ0fytaDvZHpyGupQXFfE1GqYwFRnNUIbo0iheMfHzYfjIv5Ad_Oo1FMCQmP9pUcnybM5OFHkDfI9lebDElKFYNN8U0Rt_T2A_98X3Z3ecdOLKOTPz9h32F49DgjMNY2rtWyfwV373T0sXEVfnTbHFOGfoRrU4c9ecxmTiZYGVk/s442/lotussquash.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;60&quot; data-original-width=&quot;442&quot; height=&quot;54&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPxin3WkOMlTM3xlqvfQ0fytaDvZHpyGupQXFfE1GqYwFRnNUIbo0iheMfHzYfjIv5Ad_Oo1FMCQmP9pUcnybM5OFHkDfI9lebDElKFYNN8U0Rt_T2A_98X3Z3ecdOLKOTPz9h32F49DgjMNY2rtWyfwV373T0sXEVfnTbHFOGfoRrU4c9ecxmTiZYGVk/w400-h54/lotussquash.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;LotusSquash: playing squash with other Lotus geeks - a friendly  training session open  for players of all levels and Lotus geeks of all  levels - a quarterly event organised around the country.&lt;br /&gt;
  117. Non Lotus geeks are welcome too ;-)&lt;br /&gt;
  118. &lt;br /&gt;
  119. It is also an  alternative, nice and sporty way of  networking and chatting about IBM  Lotus stuff. Watch for updates via twitter #lotussquash.&lt;br /&gt;
  120. Let us know if you want to join via twitter or post a comment here.&lt;br /&gt;
  121. &lt;br /&gt;
  122. &lt;span style=&quot;font-weight: bold;&quot;&gt;Next LotusSquash:&lt;/span&gt;&lt;br /&gt;
  123. Date: thursday &lt;strike&gt;29 september&lt;/strike&gt; postponed to 27 oktober&lt;br /&gt;
  124. Time: 19:00 hrs&lt;br /&gt;
  125. &lt;span style=&quot;font-size: small;&quot;&gt;Where: &lt;/span&gt;&lt;a href=&quot;http://squashzwolle.nl/&quot;&gt;&lt;span face=&quot;sans-serif&quot; style=&quot;font-size: small;&quot;&gt;Squash &amp;amp; Cardiofit Centrum Zwolle&lt;/span&gt;&lt;span face=&quot;sans-serif&quot; style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
  126. Address: &lt;span face=&quot;sans-serif&quot; style=&quot;font-size: small;&quot;&gt;Dobbe 69&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;sans-serif&quot; style=&quot;font-size: small;&quot;&gt;8032 JX Zwolle (NL)&lt;/span&gt;&lt;br /&gt;
  127. Organised by: &lt;a href=&quot;http://www.tooconnect.nl/&quot;&gt;TooConnect Software Solutions&lt;/a&gt;</description><link>https://notesnl.blogspot.com/2011/09/lotussquash-29-september-2011.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPxin3WkOMlTM3xlqvfQ0fytaDvZHpyGupQXFfE1GqYwFRnNUIbo0iheMfHzYfjIv5Ad_Oo1FMCQmP9pUcnybM5OFHkDfI9lebDElKFYNN8U0Rt_T2A_98X3Z3ecdOLKOTPz9h32F49DgjMNY2rtWyfwV373T0sXEVfnTbHFOGfoRrU4c9ecxmTiZYGVk/s72-w400-h54-c/lotussquash.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-688716759166146028</guid><pubDate>Tue, 13 Sep 2011 18:40:00 +0000</pubDate><atom:updated>2011-11-22T21:13:06.732+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">snippets</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Final version of DbLookupArray &amp; DbColumnArray</title><description>Time to post the final version (I think) of the DbLookupArray and DbColumnArray functions, which I started blogging about a couple of months ago.&lt;br /&gt;
  128. To date these functions only worked on the current database. So now I have added the option to also execute on another database on another server&amp;nbsp;(beware that proper authorisation is in place).&lt;br /&gt;
  129. &lt;div&gt;
  130. The server will only be used when a database name is provided. In both cases, if omitted, the current server/database is used.&lt;/div&gt;
  131. &lt;div&gt;
  132. And the final added option is to be able to request the results back in a sorted order.&lt;br /&gt;
  133. &lt;br /&gt;&lt;/div&gt;
  134. &lt;div&gt;
  135. &lt;b&gt;DbLookup&lt;/b&gt;
  136. &lt;br /&gt;
  137. &lt;pre style=&quot;background: #f0f0f0; border: 1px solid #CCCCCC; color: black; font-family: arial; font-size: 11px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; /**  
  138.  * Returns @DbLookup results as array and allows for cache  
  139.  * @param server -name of the server the database is on (only used if dbname not empty, if omitted, the server of the current database is used)  
  140.  * @param dbname -name of the database (if omitted the current database is used)  
  141.  * @param cache -&quot;cache&quot; for using cache, empty or anything for nocache  
  142.  * @param unique -&quot;unique&quot; for returning only unique values, empty or anything for all results  
  143.  * @param sortit -&quot;sort&quot; for returning the values sorted alphabetically  
  144.  * @param viewname -name of the view  
  145.  * @param keyname -key value to use in lookup  
  146.  * @param field -field name in the document or column number to retrieve  
  147.  * @return array with requested results  
  148.  */  
  149. function DbLookupArray(server, dbname, cache, unique, sortit, viewname, keyname, field) {  
  150.      var cachekey = &quot;dblookup_&quot;+dbname+&quot;_&quot;+@ReplaceSubstring(viewname,&quot; &quot;,&quot;_&quot;)+&quot;_&quot;+@ReplaceSubstring(keyname,&quot; &quot;,&quot;_&quot;)+&quot;-&quot;+@ReplaceSubstring(field,&quot; &quot;,&quot;_&quot;);  
  151.      // if cache is specified, try to retrieve the cache from the sessionscope  
  152.      if (cache.equalsIgnoreCase(&#39;cache&#39;)) {  
  153.           var result = sessionScope.get(cachekey);  
  154.      }  
  155.      // if the result is empty, no cache was available or not requested,  
  156.      //  do the dblookup, convert to array if not, cache it when requested  
  157.      if (!result) {  
  158.           // determine database to run against  
  159.           var db = &quot;&quot;;  
  160.           if (!dbname.equals(&quot;&quot;)) { // if a database name is passed, build server, dbname array  
  161.                if (server.equals(&quot;&quot;)){  
  162.                     db = new Array(@DbName()[0],dbname); // no server specified, use server of current database  
  163.                } else {  
  164.                     db = new Array(server, dbname)  
  165.                }  
  166.           }  
  167.           var result = @DbLookup(db, viewname, keyname, field);  
  168.           if (result &amp;amp;&amp;amp; unique.equalsIgnoreCase(&quot;unique&quot;)) result = @Unique(result);  
  169.           if (result &amp;amp;&amp;amp; typeof result == &quot;string&quot;) result = new Array(result);  
  170.           if (result &amp;amp;&amp;amp; sortit.equalsIgnoreCase(&quot;sort&quot;)) result.sort();  
  171.           if (result &amp;amp;&amp;amp; cache.equalsIgnoreCase(&#39;cache&#39;)) sessionScope.put(cachekey,result);  
  172.      }  
  173.      return result;  
  174. }  
  175. &lt;/code&gt;&lt;/pre&gt;
  176. &lt;/div&gt;
  177. &lt;div&gt;
  178. &lt;b&gt;DbColumn&lt;/b&gt;
  179. &lt;br /&gt;
  180. &lt;pre style=&quot;background: #f0f0f0; border: 1px solid #CCCCCC; color: black; font-family: arial; font-size: 11px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; /**  
  181.  * Returns @DbColumn results as array and allows for cache  
  182.  * @param server -name of the server the database is on (only used if dbname not empty, if omitted, the server of the current database is used)  
  183.  * @param dbname -name of the database (if omitted the current database is used)  
  184.  * @param cache -&quot;cache&quot; for using cache, empty or anything for nocache  
  185.  * @param unique -&quot;unique&quot; for returning only unique values, empty or anything for all results  
  186.  * @param sortit -&quot;sort&quot; for returning the values sorted alphabetically  
  187.  * @param viewname -name of the view  
  188.  * @param column -column number to retrieve  
  189.  * @return array with requested results  
  190.  */  
  191. function DbColumnArray(server, dbname, cache, unique, sortit, viewname, column) {  
  192.      var cachekey = &quot;dbcolumn_&quot;+dbname+&quot;_&quot;+@ReplaceSubstring(viewname,&quot; &quot;,&quot;_&quot;)+&quot;_&quot;+@ReplaceSubstring(column,&quot; &quot;,&quot;_&quot;);  
  193.      // if cache is specified, try to retrieve the cache from the sessionscope  
  194.      if (cache.equalsIgnoreCase(&#39;cache&#39;)) {  
  195.           var result = sessionScope.get(cachekey);  
  196.      }  
  197.      // if the result is empty, no cache was available or not requested,  
  198.      //  do the dbcolumn, convert to array if not, cache it when requested  
  199.      if (!result) {  
  200.           // determine database to run against  
  201.           var db = &quot;&quot;;  
  202.           if (!dbname.equals(&quot;&quot;)) { // if a database name is passed, build server, dbname array  
  203.                if (server.equals(&quot;&quot;)){  
  204.                     db = new Array(@DbName()[0],dbname); // no server specified, use server of current database  
  205.                } else {  
  206.                     db = new Array(server, dbname)  
  207.                }  
  208.           }  
  209.           var result = @DbColumn(db, viewname, column);  
  210.           if (result &amp;amp;&amp;amp; unique.equalsIgnoreCase(&quot;unique&quot;)) result = @Unique(result);  
  211.           if (result &amp;amp;&amp;amp; typeof result == &quot;string&quot;) result = new Array(result);  
  212.           if (result &amp;amp;&amp;amp; sortit.equalsIgnoreCase(&quot;sort&quot;)) result.sort();  
  213.           if (result &amp;amp;&amp;amp; cache.equalsIgnoreCase(&#39;cache&#39;)) sessionScope.put(cachekey,result);  
  214.      }      
  215.      return result;  
  216. }  
  217. &lt;/code&gt;&lt;/pre&gt;
  218. &lt;/div&gt;
  219. &lt;div&gt;
  220. &lt;br /&gt;
  221. &lt;span style=&quot;font-size: x-small;&quot;&gt;Used sources:&lt;/span&gt;&lt;br /&gt;
  222. &lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;a href=&quot;http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_DbColumn_and_DbLookup&quot;&gt;xpageswiki.com &lt;/a&gt;&lt;/span&gt;&lt;/div&gt;</description><link>https://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-1814655604273372764</guid><pubDate>Mon, 15 Aug 2011 10:10:00 +0000</pubDate><atom:updated>2011-08-15T12:10:02.630+02:00</atom:updated><title>Another &quot;repeat control&quot; encounter - multivalue fields</title><description>Beginning of this year I reported about some problems I encountered with repeat controls getting data from @DbLookup and @DbColumn. Specifically if the returned results were a single value. These are not returned as arrays.
  223. &lt;br /&gt;The other week I encountered a similar thing while displaying a multivalue field through a repeat control. Here is the catch: although the field is declared multivalue on the Notes form, when accessing in Xpages a multivalue field containing a single value is not passed as an array. So you will have to catch it and convert to an array for use in a repeat control.
  224. &lt;br /&gt;
  225. &lt;br /&gt;Also see:
  226. &lt;br /&gt;&lt;a href=&quot;http://notesnl.blogspot.com/2011/01/xpages-and-failing-repeat-control.html&quot;&gt;Xpages and the failing repeat control&lt;/a&gt;
  227. &lt;br /&gt;&lt;a href=&quot;http://notesnl.blogspot.com/2011/03/getting-unique-results-from-xpages_28.html&quot;&gt;Getting unique results from xpages @dblookup and @dbcolumn&lt;/a&gt;
  228. &lt;br /&gt;</description><link>https://notesnl.blogspot.com/2011/08/another-repeat-control-encounter.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-8125868049446101715</guid><pubDate>Tue, 17 May 2011 06:47:00 +0000</pubDate><atom:updated>2011-05-17T09:04:00.329+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Typo in code - dbcolumn !!</title><description>Had a sametime chat yesterday via BleedYellow started by Ed x Sanford with a question about a post from end of march on &lt;a href=&quot;http://notesnl.blogspot.com/2011/03/getting-unique-results-from-xpages_28.html&quot;&gt;dblookup and dbcolumn&lt;/a&gt; in Xpages. The cache setting is not working on the dbcolumn code, why?&lt;br /&gt;A glance at the code quickly learned that indeed the dbcolumn code would never cache.&lt;br /&gt;The problem was in the second (actual) line of code. The &quot;not&quot; ! should not be there.&lt;br /&gt;Thanks Ed for contacting me. The code snippets on the original blog entries have been changed accordingly.</description><link>https://notesnl.blogspot.com/2011/05/typo-in-code-dbcolumn.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-4664443473624063870</guid><pubDate>Mon, 18 Apr 2011 10:00:00 +0000</pubDate><atom:updated>2023-07-08T13:27:15.267+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus notes</category><title>Lotus Notes client SSO problem</title><description>After rebuilding my laptop end of last year for some reason the single  signon, although installed, did not work as expected and every time I  started Notes I had to key in my password. Not a big deal, but definitely annoying.&lt;br /&gt;Searching the web for clues also did not bring any anwsers.&lt;br /&gt;The  other week the old laptop was replaced by a new one. Data was copied  over from old to new machine, except for the notes.ini file which I  deliberately left out hoping it would solve the problem. Well it did not!&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6C5DaSiRTsTj_QVlGQ022qmG2WYpolBLR0SOaYLrbBoII2lqxpl_OqJEGOr7PBNxqLw42B5cKEsirc0gA0GTF1nCDwaHJIR8LNi8vK9J7JecZoWURn8f2JGGM8BNGbfuHTXJttMSXJYLtSFZN4H9HruNKgrdwTgU4FN8F5F6b_Kk7Y418fBgGxLBIu-g/s373/startup_bookmarks(1).gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;373&quot; data-original-width=&quot;362&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6C5DaSiRTsTj_QVlGQ022qmG2WYpolBLR0SOaYLrbBoII2lqxpl_OqJEGOr7PBNxqLw42B5cKEsirc0gA0GTF1nCDwaHJIR8LNi8vK9J7JecZoWURn8f2JGGM8BNGbfuHTXJttMSXJYLtSFZN4H9HruNKgrdwTgU4FN8F5F6b_Kk7Y418fBgGxLBIu-g/s320/startup_bookmarks(1).gif&quot; width=&quot;311&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;At  the same time I had for some reason clicked the option to use the  workspace bookmark as homepage once too often and the client also  started up with the home tab and a workspace tab. Again not a big deal,  but annoying. And I could not figure out where that was configured.&lt;br /&gt;After  going through all the options in the preferences and all lines in the  notes.ini and no luck, I also checked all the folders in the &quot;open list&quot;  button (or open list &quot;dock&quot; sidebar). In the &quot;more bookmarks - startup&quot; folder I found the workspace was listed twice. Removing those would at least solve that problem!&lt;br /&gt;&lt;br /&gt;And indeed next time starting the Notes client, the extra workspace tab was no longer there. But more important, for some reason the SSO started working again as well. Yeeh!!&lt;br /&gt;&lt;br /&gt;I wonder if anyone else has encountered this nice little problem as well?</description><link>https://notesnl.blogspot.com/2011/04/lotus-notes-client-sso-problem.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6C5DaSiRTsTj_QVlGQ022qmG2WYpolBLR0SOaYLrbBoII2lqxpl_OqJEGOr7PBNxqLw42B5cKEsirc0gA0GTF1nCDwaHJIR8LNi8vK9J7JecZoWURn8f2JGGM8BNGbfuHTXJttMSXJYLtSFZN4H9HruNKgrdwTgU4FN8F5F6b_Kk7Y418fBgGxLBIu-g/s72-c/startup_bookmarks(1).gif" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-943390983922019450</guid><pubDate>Mon, 28 Mar 2011 11:10:00 +0000</pubDate><atom:updated>2011-10-06T15:26:52.974+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus notes</category><category domain="http://www.blogger.com/atom/ns#">snippets</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Getting unique results from Xpages DbLookup and DbColumn functions</title><description>After using the DbColumn and DbLookup code I posted a while back I found another thing that needed solving.&lt;br /&gt;
  229. Frequently I want these functions to only return unique values. But placing @Unique around the function calls gives the empty result as &lt;a href=&quot;http://notesnl.blogspot.com/2011/01/xpages-and-failing-repeat-control.html&quot;&gt;before for a repeat control&lt;/a&gt; if the result of the function is a single value, a string in effect.&lt;br /&gt;
  230. So I added a line of code and a parameter to the functions to be able to request unique values (see the code below).&lt;br /&gt;
  231. &lt;br /&gt;
  232. &lt;span style=&quot;font-weight: bold;&quot;&gt;DbLookup&lt;/span&gt;&lt;br /&gt;
  233. The code has been moved and can be found here&lt;span style=&quot;font-weight: bold;&quot;&gt;:&lt;/span&gt; &lt;a href=&quot;http://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html&quot;&gt;http://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html&lt;/a&gt;&lt;br /&gt;
  234. &lt;br /&gt;&lt;br /&gt;
  235. &lt;span style=&quot;font-weight: bold;&quot;&gt;DbColumn&lt;/span&gt;&lt;br /&gt;
  236. The code has been moved and can be found here&lt;span style=&quot;font-weight: bold;&quot;&gt;:&lt;/span&gt; &lt;a href=&quot;http://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html&quot;&gt;http://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html&lt;/a&gt;&lt;br /&gt;
  237. </description><link>https://notesnl.blogspot.com/2011/03/getting-unique-results-from-xpages_28.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-6398999753314221913</guid><pubDate>Mon, 21 Mar 2011 09:12:00 +0000</pubDate><atom:updated>2011-03-21T11:33:55.967+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus</category><category domain="http://www.blogger.com/atom/ns#">squash</category><title>Another Lotussquash coming up, 7 april - Apeldoorn</title><description>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvtKJQLP8_4xJVTR27Y98FFXO1Rwon_7V5KD9ijm0ErfDH-AYMRshBUOLuOE97ErNmNIXVTZqKNMJ1xwU1v4oBGxWsuv8GYVFiTnqNliA9bmr0_ucmyLXYQzWtq48eLvMSKSKiUdu8CSBK/s1600/lotussquash.gif&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 400px; height: 54px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvtKJQLP8_4xJVTR27Y98FFXO1Rwon_7V5KD9ijm0ErfDH-AYMRshBUOLuOE97ErNmNIXVTZqKNMJ1xwU1v4oBGxWsuv8GYVFiTnqNliA9bmr0_ucmyLXYQzWtq48eLvMSKSKiUdu8CSBK/s400/lotussquash.gif&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5540815714316301090&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Last year in Q4 we picked up the Lotussquash initiative and agreed to have a Lotussquash event approximately every 3 months.&lt;br /&gt;The next Lotussquash will be on the 7th of april in Apeldoorn (NL) and is organised by &lt;a href=&quot;http://www.clearitconsulting.nl/&quot;&gt;Clear IT Consulting&lt;/a&gt;.&lt;br /&gt;&lt;a href=&quot;http://blog.clearitconsulting.nl/&quot;&gt;More information&lt;/a&gt; can be found on their blog.&lt;br /&gt;I hope to see you there.</description><link>https://notesnl.blogspot.com/2011/03/another-lotussquash-coming-up-7-april.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvtKJQLP8_4xJVTR27Y98FFXO1Rwon_7V5KD9ijm0ErfDH-AYMRshBUOLuOE97ErNmNIXVTZqKNMJ1xwU1v4oBGxWsuv8GYVFiTnqNliA9bmr0_ucmyLXYQzWtq48eLvMSKSKiUdu8CSBK/s72-c/lotussquash.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-8738884434411379744</guid><pubDate>Wed, 23 Feb 2011 08:47:00 +0000</pubDate><atom:updated>2011-10-06T15:27:28.383+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">snippets</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Improved caching for Xpages DbLookup and DbColumn</title><description>A while back I blogged about a failing repeat control in Xpages when passing it a single value returned from a @DbLookup or @DbColumn. In the comments to this entry it was already mentioned by some that it needs an array as input.&lt;br /&gt;
  238. The other week I received a reply from IBM on my PMR (87011,211,788) stating exactly that, &quot;The repeat control works as designed, it needs an array as input.&quot;.&lt;br /&gt;
  239. From the earlier comments on that blogpost I had already started using the suggested solution from the &lt;a href=&quot;http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_DbColumn_and_DbLookup&quot;&gt;xpages wiki&lt;/a&gt; by Julian Buss.&lt;br /&gt;
  240. But like in the Notes client not every situation calls for cached results, so I amended this code to allow for cache or not.  And instead of requestScope I used sessionScope as I want the cache to last until the session is ended (browser closed/session times out).&lt;br /&gt;
  241. If you want to use it, put the code below in a server side JavaScript library and you are ready to use it.&lt;br /&gt;
  242. &lt;br /&gt;
  243. &lt;span style=&quot;font-weight: bold;&quot;&gt;DbLookup&lt;/span&gt;&lt;br /&gt;
  244. The code has been moved and can be found here&lt;span style=&quot;font-weight: bold;&quot;&gt;:&lt;/span&gt; &lt;a href=&quot;http://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html&quot;&gt;http://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html&lt;/a&gt;&lt;br /&gt;
  245. &lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;/code&gt;&lt;br /&gt;
  246. &lt;span style=&quot;font-weight: bold;&quot;&gt;DbColumn&lt;/span&gt;&lt;br /&gt;
  247. The code has been moved and can be found here&lt;span style=&quot;font-weight: bold;&quot;&gt;:&lt;/span&gt; &lt;a href=&quot;http://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html&quot;&gt;http://notesnl.blogspot.com/2011/09/final-version-of-dblookuparray.html&lt;/a&gt;&lt;br /&gt;
  248. </description><link>https://notesnl.blogspot.com/2011/02/improved-caching-for-xpages-dblookup.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-7693500775633136866</guid><pubDate>Sun, 13 Feb 2011 18:38:00 +0000</pubDate><atom:updated>2011-02-15T08:14:35.256+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Lotusphere</category><title>My thoughts on Lotusphere 2011 #ls11</title><description>&lt;span style=&quot;font-weight: bold;&quot;&gt;My fourth Lotusphere&lt;/span&gt;&lt;br /&gt;This Lotusphere is my fourth.  I had the opportunity to go in 1996, 1998, 2008 and now in 2011. This time I was together with my collegue &lt;a href=&quot;http://www.d2k.nl/domino/blog4.php&quot;&gt;Dennis van Remortel&lt;/a&gt;.&lt;br /&gt;The overall experience and excitement of watching great content in the sessions and sharing ideas and thoughts with peers and speakers was just super again and made up for the disappointing number of announcements from IBM this year.&lt;br /&gt;I will definitely try to be back for the 2012 edition.&lt;br /&gt;&lt;br /&gt;So finally, after a couple of days back home now, after visiting our collegues of &lt;a href=&quot;http://www.interfaceflor.com/&quot;&gt;InterfaceFLOR&lt;/a&gt; in the US, I think it is time to start writing down my thoughts.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Opening session&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;Many comments have already been made about this session which can be summarised as too much over rehearsed customer content and to little technical content and demoes. IBM clearly had very little to announce this year. The &quot;next&quot; releases were mentioned without a clear end date. Hopefully we will see some great announcements next year. I hope IBM realise they need to keep the pace to keep/regain the lead.&lt;br /&gt;The guest speaker, Kevin Spacey, possibly made the best impression and touching on the core of the Lotus community, &quot;send the elevator down&quot; to help others learn/expand their skills and knowledge&lt;br /&gt;Remarkable: Later it was announced that almost 1 in 5 attendees at the opening session had been using an iPad!!!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Students?&lt;/span&gt;&lt;br /&gt;Yes students, in the opening session 500 students were welcomed to the Lotusphere Opening day (lets hope the OGS didnot turn them off) on invitation of Group Business Software and IBM to get a glimpse of the wonderfull world of yellow. Way to go, students are the link to the future.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;IBM&lt;/span&gt;&lt;br /&gt;Not sure if it was only me, but I noticed a lot of attendees from IBM this year (blue badges). Coincidence or was it to fill up unsold seats.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cloud&lt;/span&gt;&lt;br /&gt;This years breakout sessions and sundays jumpstart sessions had to make up for lack of news in the opening session. I chose for a mix of strategic and technical sessions. The technical sessions to see how things can be done and the strategic to see the capabilities of products like &lt;a href=&quot;http://www-01.ibm.com/software/lotus/products/sametime/unifiedtelephony/&quot;&gt;Sametime Unified Telephony&lt;/a&gt; and &lt;a href=&quot;http://www-01.ibm.com/software/lotus/products/connections/?pgel=wspace&quot;&gt;Connections&lt;/a&gt; and to start thinking about how my company could benefit from using these. Very nice to see the transfer of a single phone call being moved to the computer and to the mobile phone. And furthermore the integration of it all into the notes client as well IBM effort to move it all to the cloud with &lt;a href=&quot;http://www-01.ibm.com/software/lotus/online_collaboration_services/&quot;&gt;lotuslive&lt;/a&gt;, soon even existing Notes applications.&lt;br /&gt;Highlights from the technical sessions:&lt;br /&gt;- Xpages blast - 30 very usefull tips in 60 minutes. Outstanding.&lt;br /&gt;- &lt;a href=&quot;http://www-01.ibm.com/software/lotus/products/symphony/&quot;&gt;Symphony&lt;/a&gt; - the robust IBM, open source alternative, to MS office&lt;br /&gt;- the increasing extension of the power of mobile devices&lt;br /&gt;- xpages, xpages, xpages - build powerfull webapplications in lotus notes RAD style&lt;br /&gt;- dojo - quickly enhance the user experience&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Jeopardy&lt;/span&gt;&lt;br /&gt;The closing session was awesome. IBM presented a brief demo of the sametime setup that was put in place to ensure a smooth safety organisation at the coming Superbowl match in Fort Worth. It showes the technology is ready to support mission critical communications. The next thing was the line up of the Watson computer to play a game of &lt;a href=&quot;http://www.jeopardy.com/&quot;&gt;Jeopardy&lt;/a&gt; against some very skilled Lotusphere attendees. No mean feat to get a computer to understand the finesses of human language, interpret the meaning and coming up with the right solution. Later in february Watson will compete with the best Jeopardy players in the US to show its capabilities. Fingers  crossed for Watson!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Energy&lt;/span&gt;&lt;br /&gt;In the four times I have been so far, even though spread over several years, each time I found I come back with lots of energy that will last for months on end and at least until the next registration period for Lotusphere comes around. I got home with lots of ideas and things to explore from the technical session I watched.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Thank you&lt;/span&gt;&lt;br /&gt;I would like to end this entry with a thank you to all the staff at IBM that work very hard at making this great event happen every year.&lt;br /&gt;And of course thank you to all the people I met at this years Lotusphere.</description><link>https://notesnl.blogspot.com/2011/02/my-thoughts-on-lotusphere-2011-ls11.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-1177340766535346266</guid><pubDate>Wed, 19 Jan 2011 10:09:00 +0000</pubDate><atom:updated>2011-01-19T13:44:45.479+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">snippets</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Xpages - Combobox - set first choice to blank</title><description>In Xpages the combobox works different from what you are used to in the Notes form equivalent, the dialog list field.&lt;br /&gt;In Notes if you get the choices using an @DbColumn or @DbLookup, assign no default value and the user does not consciously pick a value, no value is assigned to the field.&lt;br /&gt;But when you do that with a combobox in Xpages, the first value in the list of choices will be assigned to the field.&lt;br /&gt;Usually that is not what I want, I want the user to make a conscious choice. And assigning a default value of a space does not help if that value is not in the list of choices. So you will have to add a blank value as the first option in the list of choices.&lt;br /&gt;I found 2 ways to solve this and it eliminates the need to set a default value.&lt;br /&gt;&lt;br /&gt;1. The simplest way is to add a space as the first label-value pair and for the second add the rest of the choices using @DbColumn/@DbLookup.&lt;br /&gt;&lt;br /&gt;2. Insert a blank value in the javascript code that retrieves the list of choices using @DbColumn/@DbLookup. This is probably the better method if you also want to include code to do some form of cache. See the code sample below.&lt;br /&gt;&lt;br /&gt;&lt;pre style=&quot;font-family: arial; font-size: 12px; border: 1px solid rgb(204, 204, 204); width: 99%; height: auto; overflow: auto; background: none repeat scroll 0% 0% rgb(240, 240, 240); padding: 0px; color: rgb(0, 0, 0); text-align: left; line-height: 20px;&quot;&gt;&lt;code style=&quot;color: rgb(0, 0, 0); word-wrap: normal;&quot;&gt; // get the cached result if used before &lt;br /&gt;var list = sessionScope.&amp;lt;cachename&amp;gt;; &lt;br /&gt;// if no cached values found, create it &lt;br /&gt;if (!list) { &lt;br /&gt;     // create an array with 1 blank entry as first entry &lt;br /&gt;     var arr = new Array(&quot; &quot;); &lt;br /&gt;     var res = @DbLookup(&quot;&quot;, &quot;&amp;lt;a view&amp;gt;&quot;, &quot;&amp;lt;a key&amp;gt;&quot;, 2); &lt;br /&gt;     // append the retrieved values to the array  &lt;br /&gt;     var list = arr.concat(res); &lt;br /&gt;     sessionScope.&amp;lt;cachename&amp;gt; = list; &lt;br /&gt;} &lt;br /&gt;return list; &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;</description><link>https://notesnl.blogspot.com/2011/01/xpages-combobox-set-first-choice-to.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-6840532086432142711</guid><pubDate>Tue, 18 Jan 2011 08:32:00 +0000</pubDate><atom:updated>2011-01-18T12:09:54.454+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Lotusphere</category><title>Lotusphere 2011 agenda app for Android</title><description>For the Android adepts it is good to know that there is also a ls11 agenda app available. Search for &quot;lotusphere&quot; in the market and you will find the LS11 agenda app posted by Joseph Jaquinta based on the geniisoft version.&lt;br /&gt;Dave Hay also mentions it on his &lt;a href=&quot;http://portal2portal.blogspot.com/2011/01/mobile-ls11-goodness-lotusphere-2011.html&quot;&gt;blog.&lt;/a&gt;&lt;br /&gt;As for the mix up of names. The app is written by Jo Grant (as Dave mentions), but appearantly posted in the market by Joseph Jaquinta.&lt;br /&gt;It has a nice and simple layout and good options to filter and tag your favorite sessions.&lt;br /&gt;&lt;br /&gt;thanx Jo !!&lt;br /&gt;&lt;br /&gt;You will also find a LS11 app in the market from Sogeti, a game with a nice reward for the winner?!</description><link>https://notesnl.blogspot.com/2011/01/lotusphere-2011-aganda-app-for-android.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-438341728668461079</guid><pubDate>Thu, 06 Jan 2011 08:13:00 +0000</pubDate><atom:updated>2011-03-28T09:08:56.085+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">domino designer</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Xpages and the failing Repeat control</title><description>I am converting an application to Xpages and use the repeat control to build several levels of dynamic menu structures.&lt;br /&gt;They are based on simple @DbColumn and @DbLookup. But when the result array is only one entry the repeat control fails. The code below shows the failing repeat control (xp:link simplified to keep the code clean).&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;[Note: single results from @DbColumn or @DbLookup are returned as string and not an array.]&lt;/span&gt;&lt;br /&gt;&lt;pre style=&quot;font-family: arial; font-size: 12px; border: 1px solid rgb(204, 204, 204); width: 99%; height: auto; overflow: auto; background: none repeat scroll 0% 0% rgb(240, 240, 240); padding: 0px; color: rgb(0, 0, 0); text-align: left; line-height: 20px;&quot;&gt;&lt;code style=&quot;color: rgb(0, 0, 0); word-wrap: normal;&quot;&gt; &amp;lt;xp:repeat id=&quot;repeat1&quot; rows=&quot;30&quot; var=&quot;rowData&quot; indexVar=&quot;rowIndex&quot;&amp;gt; &lt;br /&gt;  &amp;lt;xp:this.value&amp;gt;&amp;lt;![CDATA[#{javascript: &lt;br /&gt;    @Unique(@DbLookup(&quot;&quot;, &quot;xpSectionList&quot;, sessionScope.regionFilter, 2)) &lt;br /&gt;  }]]&amp;gt;&amp;lt;/xp:this.value&amp;gt; &lt;br /&gt;  &amp;lt;li&amp;gt; &lt;br /&gt;    &amp;lt;xp:link escape=&quot;true&quot; id=&quot;linkSubSection&quot; title=&quot;#{javascript:rowData}&quot;&amp;gt; &lt;br /&gt;      &amp;lt;xp:this.text&amp;gt;&amp;lt;![CDATA[#{javascript:rowData}]]&amp;gt;&amp;lt;/xp:this.text&amp;gt; &lt;br /&gt;    &amp;lt;/xp:link&amp;gt; &lt;br /&gt;  &amp;lt;/li&amp;gt; &lt;br /&gt;&amp;lt;/xp:repeat&amp;gt; &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;After some searching I found a solution in the LDD by Bob Cross, &lt;a href=&quot;http://www-10.lotus.com/ldd/nd85forum.nsf/5f27803bba85d8e285256bf10054620d/f6fd22b9a87221ea8525772e0068bdb3?&quot;&gt;&quot;Hint for Repeating a single value&quot;&lt;/a&gt;.&lt;br /&gt;&lt;blockquote style=&quot;font-style: italic;&quot;&gt;Repeat controls are great - but they MUST return an array, even if it is just one entry.&lt;br /&gt;&lt;br /&gt;In my example, I used a repeat control to display entries from a dblookup. However, some of my lookups only returned one entry, so the result was a string, not an array. Since the result of my dblookup was a string, the repeat control would not display the one returned result.&lt;br /&gt;&lt;br /&gt;The solution is to convert the result to a string first by using valueOf(). This returns a string delimited by commas. Then split the result by the commas to get an array. If split fails, then the result was an array to start with.&lt;br /&gt;&lt;br /&gt;var tmpstr = result.valueOf();&lt;br /&gt;try {&lt;br /&gt;var newarr = tmpstr.split(&quot;,&quot;);&lt;br /&gt;return(newarr)&lt;br /&gt;}&lt;br /&gt;catch(err){&lt;br /&gt;return(tmpstr);&lt;br /&gt;}&lt;/blockquote&gt;The proposed solution works fine and does solve the problem, but I consider it a workaround for a bug. The repeat control should also work when a single value is returned.&lt;br /&gt;I have filed a service request (PMR) with IBM. Please do the same if you think this should be solved!&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;[Note: IBM have responded to the PMR: The repeat control works as designed and expects an array as input.]&lt;/span&gt;&lt;br /&gt;The &lt;strike&gt;solution&lt;/strike&gt; workaround is implemented in the code below.&lt;br /&gt;&lt;pre style=&quot;font-family: arial; font-size: 12px; border: 1px solid rgb(204, 204, 204); width: 99%; height: auto; overflow: auto; background: none repeat scroll 0% 0% rgb(240, 240, 240); padding: 0px; color: rgb(0, 0, 0); text-align: left; line-height: 20px;&quot;&gt;&lt;code style=&quot;color: rgb(0, 0, 0); word-wrap: normal;&quot;&gt; &amp;lt;xp:repeat id=&quot;repeat1&quot; rows=&quot;30&quot; var=&quot;rowData&quot;  indexVar=&quot;rowIndex&quot;&amp;gt;&lt;br /&gt;&amp;lt;xp:this.value&amp;gt;&amp;lt;![CDATA[#{javascript:&lt;br /&gt;var result = @Unique(@DbLookup(&quot;&quot;, &quot;xpSectionList&quot;, sessionScope.regionFilter, 2));&lt;br /&gt;var tmpstr = result.valueOf();&lt;br /&gt;try {&lt;br /&gt;  var newarr = tmpstr.split(&quot;,&quot;);&lt;br /&gt;  return(newarr)&lt;br /&gt;}&lt;br /&gt;catch(err){&lt;br /&gt;  return(tmpstr);&lt;br /&gt;}&lt;br /&gt;}]]&amp;gt;&amp;lt;/xp:this.value&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&lt;br /&gt;&amp;lt;xp:link escape=&quot;true&quot; id=&quot;linkSection&quot;  title=&quot;#{javascript:rowData}&quot;&amp;gt;&lt;br /&gt;  &amp;lt;xp:this.text&amp;gt;&amp;lt;![CDATA[#{javascript:rowData}]]&amp;gt;&amp;lt;/xp:this.text&amp;gt;&lt;br /&gt;&amp;lt;/xp:link&amp;gt;&lt;br /&gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/xp:repeat&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;</description><link>https://notesnl.blogspot.com/2011/01/xpages-and-failing-repeat-control.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-2827833707547388318</guid><pubDate>Thu, 25 Nov 2010 13:18:00 +0000</pubDate><atom:updated>2010-11-25T15:23:06.292+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">notes</category><category domain="http://www.blogger.com/atom/ns#">quickr</category><title>Migrate quickr places to Notes</title><description>Although the latest version of Quickr has great improvements, we didnot see enough adoption of the tool throughout our company to justify keeping the server running at the moment.&lt;br /&gt;I will not go into the reasons for lack of adoption here.&lt;br /&gt;&lt;br /&gt;For a couple of the places we had to come up with a solution to preserve the information stored in them. We decided that a Notes 8.5.x Discussion database would be the best fit.&lt;br /&gt;&lt;br /&gt;For those that are facing the same issue I added the agent in a rich text file for download. It contains the agent I created to do this migration. It may be a bit rough around the edges, but it does the job and you can fine tune it where you like.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.d2k.nl/domino/media/blogs/blog/quickrexport.rtf&quot;&gt;quickrexport.rtf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note: the agent uses OpenLog, please include this library in your database or set the lines for OpenLog to comment.</description><link>https://notesnl.blogspot.com/2010/11/migrate-quickr-places-to-notes.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-3485849801440265890</guid><pubDate>Thu, 18 Nov 2010 09:11:00 +0000</pubDate><atom:updated>2023-07-08T13:46:08.680+02:00</atom:updated><title>LotusSquash - thursday 9 december 18:00hrs</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0fv5z8nh-uCPjxEdShIqXbrAD-vbQ1aLgd8LJCPmnAUADlrUiAaD3DxmLihM64XUMxi_pix_IYuNlrv6Pak9JyCjgj5PPWqKUoApljLjwLr5AGNK_HY_FnR8rwEzpHPE-GdslMbE-XOt41iZ_jJbbCbgMD_eYX_pSolGNbFidJOarXkJVDplyjefumbM/s442/lotussquash.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;60&quot; data-original-width=&quot;442&quot; height=&quot;54&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0fv5z8nh-uCPjxEdShIqXbrAD-vbQ1aLgd8LJCPmnAUADlrUiAaD3DxmLihM64XUMxi_pix_IYuNlrv6Pak9JyCjgj5PPWqKUoApljLjwLr5AGNK_HY_FnR8rwEzpHPE-GdslMbE-XOt41iZ_jJbbCbgMD_eYX_pSolGNbFidJOarXkJVDplyjefumbM/w400-h54/lotussquash.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&quot;LotusSquash&quot;. What is it? Simple, playing squash with other Lotus geeks (it  started last year via twitter by @zonderpoeha and @drenth). You can see it as a friendly training session open  for players of all levels and Lotus geeks of all levels.&lt;br /&gt;It is also an  alternative, nice and sporty way of networking and chatting about IBM  Lotus stuff. Afterwards there is the option to have a meal somewhere,  but not mandatory of course.&lt;br /&gt;From now on we aim to make it a quarterly event. Watch for updates via twitter.&lt;br /&gt;Let us know if you want to join via twitter or post a comment here.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Next LotusSquash:&lt;/span&gt;&lt;br /&gt;Date: thursday 9 december&lt;br /&gt;Time: 18:00 hrs&lt;br /&gt;Where: &lt;a href=&quot;http://www.theomeijersport.nl/&quot;&gt;Theo Meijer Sport&lt;/a&gt;&lt;br /&gt;Address: &lt;a href=&quot;http://maps.google.nl/maps?f=q&amp;amp;source=s_q&amp;amp;hl=nl&amp;amp;geocode=&amp;amp;q=groene+zoom+1,+leusden&amp;amp;sll=52.469397,5.509644&amp;amp;sspn=4.806339,14.787598&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Groene+Zoom+1,+Leusden,+Utrecht&amp;amp;z=16&quot;&gt;Groene Zoom 1, 3833AW Leusden&lt;/a&gt; (NL)&lt;br /&gt;&lt;br /&gt;twitter hashtag: #lotussquash&lt;br /&gt;&lt;br /&gt;Note: @dennisvr and myself play weekly on tuesdays (at the above address) and if you like you are welcome to join us (please send a dm in advance).</description><link>https://notesnl.blogspot.com/2010/11/lotussquash-thursday-9-december-1800hrs.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0fv5z8nh-uCPjxEdShIqXbrAD-vbQ1aLgd8LJCPmnAUADlrUiAaD3DxmLihM64XUMxi_pix_IYuNlrv6Pak9JyCjgj5PPWqKUoApljLjwLr5AGNK_HY_FnR8rwEzpHPE-GdslMbE-XOt41iZ_jJbbCbgMD_eYX_pSolGNbFidJOarXkJVDplyjefumbM/s72-w400-h54-c/lotussquash.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-3528342697785498416</guid><pubDate>Thu, 16 Sep 2010 11:29:00 +0000</pubDate><atom:updated>2023-07-08T13:44:07.405+02:00</atom:updated><title>Domino Designer really as IDE (in Notes client)</title><description>I was surprised to see my Domino Designer all of a sudden integrate into my Notes client.&lt;br /&gt;Weird !!&lt;br /&gt;I guess it is time to reboot the laptop.&lt;div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF4Z39Nz1Rggfm6jxzpxBb46EXpO3GHAqw83Z4FFqfWnJMjsTjvQdxG6QeK9bIMOOdfkHoLCO1C4pIMKUnjyClh9p3S5QWoJjPV2ZErmxVsOY6PRoUR3Qm95G8rU5MZhngOTM8yQbkzROGEcSJ_zw4tnKzHROdZSCtzvJ3ndBRaRpCuOoFoQDIApRfNL0/s984/DomDesigner_IDE(1).gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;543&quot; data-original-width=&quot;984&quot; height=&quot;221&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF4Z39Nz1Rggfm6jxzpxBb46EXpO3GHAqw83Z4FFqfWnJMjsTjvQdxG6QeK9bIMOOdfkHoLCO1C4pIMKUnjyClh9p3S5QWoJjPV2ZErmxVsOY6PRoUR3Qm95G8rU5MZhngOTM8yQbkzROGEcSJ_zw4tnKzHROdZSCtzvJ3ndBRaRpCuOoFoQDIApRfNL0/w400-h221/DomDesigner_IDE(1).gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 85%;&quot;&gt;Click image for a larger view&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Version: Domino Designer 8.5.1 - 20091002.1006 (Release 8.5.1)&lt;/div&gt;&lt;/div&gt;</description><link>https://notesnl.blogspot.com/2010/09/domino-designer-really-as-ide-in-notes.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF4Z39Nz1Rggfm6jxzpxBb46EXpO3GHAqw83Z4FFqfWnJMjsTjvQdxG6QeK9bIMOOdfkHoLCO1C4pIMKUnjyClh9p3S5QWoJjPV2ZErmxVsOY6PRoUR3Qm95G8rU5MZhngOTM8yQbkzROGEcSJ_zw4tnKzHROdZSCtzvJ3ndBRaRpCuOoFoQDIApRfNL0/s72-w400-h221-c/DomDesigner_IDE(1).gif" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-995454905996498607</guid><pubDate>Thu, 04 Feb 2010 13:00:00 +0000</pubDate><atom:updated>2023-07-08T13:42:31.260+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus notes</category><title>SNTT: create initial ACL on database create from template</title><description>This one is in Lotus Notes for ages, so maybe you already know it.&lt;br /&gt;I had not been using it for a while, but recently re-discovered this little gem. And although not high-tech, thought I would share it.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieKYRkpFU8bWlnfNP6Bb4G6caYnBvsgGneyGPcvNcub3nAaX2CwQwiSx1cI2u47aNaoTiveb8sRmLBvzUfWtn-a3GNiSfeQUpRVddYFuH3cUDmWgXya_N8nZ6G8MSSFJQ2ZhxycB8hW_K6LoV4eWkuvTlc3p8ikI8Jqd5h12wH2SU00LTrQy2-1wMHQIg/s251/ACL.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;251&quot; data-original-width=&quot;152&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieKYRkpFU8bWlnfNP6Bb4G6caYnBvsgGneyGPcvNcub3nAaX2CwQwiSx1cI2u47aNaoTiveb8sRmLBvzUfWtn-a3GNiSfeQUpRVddYFuH3cUDmWgXya_N8nZ6G8MSSFJQ2ZhxycB8hW_K6LoV4eWkuvTlc3p8ikI8Jqd5h12wH2SU00LTrQy2-1wMHQIg/s1600/ACL.gif&quot; width=&quot;152&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;When creating a Lotus Notes database (or application as it now called) from a template, the database can get a default ACL (e.g. you companies minimum required ACL entries) which is defined in the templates ACL.&lt;br /&gt;Normal ACL entries in the templates ACL are not copied over to the new database when creating a database from a template. But ACL entries marked up in square brackets are copied accross from the templates ACL to the new database ACL (e.g. [my_acl_entry] in a template ACL will get copie to the database.&lt;br /&gt;&lt;br /&gt;This screenshot shows an ACL of a template with normal access entries and special entries that are copied to a database when it is created from the template.</description><link>https://notesnl.blogspot.com/2010/02/sntt-create-initial-acl-on-database.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieKYRkpFU8bWlnfNP6Bb4G6caYnBvsgGneyGPcvNcub3nAaX2CwQwiSx1cI2u47aNaoTiveb8sRmLBvzUfWtn-a3GNiSfeQUpRVddYFuH3cUDmWgXya_N8nZ6G8MSSFJQ2ZhxycB8hW_K6LoV4eWkuvTlc3p8ikI8Jqd5h12wH2SU00LTrQy2-1wMHQIg/s72-c/ACL.gif" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8284229893947571160.post-1696677654011499656</guid><pubDate>Mon, 01 Feb 2010 11:17:00 +0000</pubDate><atom:updated>2010-02-01T16:04:08.248+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">domino</category><category domain="http://www.blogger.com/atom/ns#">xpages</category><title>Workaround for Xpages file download control bug</title><description>Last week I posted about a bug in the Xpages File Download Control.&lt;br /&gt;See the &lt;a href=&quot;http://notesnl.blogspot.com/2010/01/xpages-bug-file-download-control-in.html&quot;&gt;post&lt;/a&gt; from 27 januari for details.&lt;br /&gt;&lt;br /&gt;We have reported the problem through a PMR with IBM, but that unfortunately only resulted in a response that the problem is resolved in 8.5.1. and it will not be fixed in the 8.5.0 release.&lt;br /&gt;&lt;br /&gt;In the PMR response IBM did mention a possible workaround could be found in &lt;a href=&quot;http://www.jmackey.net/groupwareinc/johnblog/johnblog.nsf/d6plinks/XPages-File-Download-Control&quot;&gt;John Mackey&#39;s&lt;/a&gt; blogpost and a response to last weeks post from Irina Kojevnikova also pointed to John Mackey&#39;s post. And as it turns out John based his code on &lt;a href=&quot;http://www-10.lotus.com/ldd/nd85forum.nsf/5f27803bba85d8e285256bf10054620d/38099b506bf791e08525759a0076565d?OpenDocument&quot;&gt;Irina&#39;s initial solution&lt;/a&gt;.&lt;br /&gt;In that post the solution to the problem is overriding the file download code with custom code to build the old style url for downloading attachments.&lt;br /&gt;On 8.5.0 Domino the subdirectory is omitted in the file download control, so another work around would be to place replica of the database in the domino data root directory (nightmare for admins).&lt;br /&gt;&lt;br /&gt;But John and Irina&#39;s solution is cleaner.</description><link>https://notesnl.blogspot.com/2010/02/workaround-for-xpages-file-download.html</link><author>noreply@blogger.com (Tom Steenbergen)</author><thr:total>1</thr:total></item></channel></rss>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//notesnl.blogspot.com/feeds/posts/default%3Falt%3Drss

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda