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://spmcmanusblog.wordpress.com/feed/

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
  9. >
  10.  
  11. <channel>
  12. <title>The codeXplorer Blog by Shean P McManus</title>
  13. <atom:link href="https://spmcmanusblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
  14. <link>https://spmcmanusblog.wordpress.com</link>
  15. <description>Exploring the code that runs the web...xPages and beyond.</description>
  16. <lastBuildDate>Thu, 16 Feb 2017 22:59:37 +0000</lastBuildDate>
  17. <language>en</language>
  18. <sy:updatePeriod>
  19. hourly </sy:updatePeriod>
  20. <sy:updateFrequency>
  21. 1 </sy:updateFrequency>
  22. <generator>http://wordpress.com/</generator>
  23. <cloud domain='spmcmanusblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
  24. <image>
  25. <url>https://s0.wp.com/i/buttonw-com.png</url>
  26. <title>The codeXplorer Blog by Shean P McManus</title>
  27. <link>https://spmcmanusblog.wordpress.com</link>
  28. </image>
  29. <atom:link rel="search" type="application/opensearchdescription+xml" href="https://spmcmanusblog.wordpress.com/osd.xml" title="The codeXplorer Blog by Shean P McManus" />
  30. <atom:link rel='hub' href='https://spmcmanusblog.wordpress.com/?pushpress=hub'/>
  31. <item>
  32. <title>PSC at IBM Connect Next Week</title>
  33. <link>https://spmcmanusblog.wordpress.com/2017/02/16/psc-at-ibm-connect-next-week/</link>
  34. <comments>https://spmcmanusblog.wordpress.com/2017/02/16/psc-at-ibm-connect-next-week/#respond</comments>
  35. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  36. <pubDate>Thu, 16 Feb 2017 22:59:37 +0000</pubDate>
  37. <category><![CDATA[Uncategorized]]></category>
  38. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=406</guid>
  39.  
  40. <description><![CDATA[&#160; If you are going to IBM Connect next week in San Francisco, consider meeting our PSC Representatives John Head and Kathy Brown for a free consultation on how PSC can assist with your company with your collaboration roadmap. Follow this link  to set up a meeting.  If you don&#8217;t already know John and Kathy, think of &#8230; <a href="https://spmcmanusblog.wordpress.com/2017/02/16/psc-at-ibm-connect-next-week/" class="more-link">Continue reading<span class="screen-reader-text"> "PSC at IBM Connect Next&#160;Week"</span></a>]]></description>
  41. <content:encoded><![CDATA[<p>&nbsp;</p>
  42. <p>If you are going to <a href="http://link2-em-us.unicaondemand.com/frontend/dynamicAssets?e=tB33474F7ABBE7D2C8093E989A8A5EA1EA3380958021314DD794597FB4E9F0F1058F9603A3623B33937C43AA5666DC6B78C3B6199105D397FD00AB77AED37A89C26339AACB6A7A171CD5F3336F15D1A4B0F60B065E33281BAD215BF04F011FEDB" target="_blank">IBM Connect</a> next week in San Francisco, consider meeting our <a href="http://www.psclistens.com" target="_blank">PSC</a> Representatives John Head and Kathy Brown for a free consultation on how PSC can assist with your company with your collaboration roadmap.</p>
  43. <p>Follow this <a href="http://connect17.psclistens.com/" target="_blank">link </a> to set up a meeting.  If you don&#8217;t already know John and Kathy, think of this as a networking opportunity.  Chat up Kathy about her new Mini and John about, well anything really.</p>
  44. <p>I wish I was going to be there too but someone has to stay home and pay the bills <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  45. ]]></content:encoded>
  46. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2017/02/16/psc-at-ibm-connect-next-week/feed/</wfw:commentRss>
  47. <slash:comments>0</slash:comments>
  48. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  49. <media:title type="html">sheanmcmanus</media:title>
  50. </media:content>
  51. </item>
  52. <item>
  53. <title>Creating an SFTP Utility in SSJS using JSch</title>
  54. <link>https://spmcmanusblog.wordpress.com/2016/09/28/creating-an-sftp-utility-in-ssjs-using-jsch/</link>
  55. <comments>https://spmcmanusblog.wordpress.com/2016/09/28/creating-an-sftp-utility-in-ssjs-using-jsch/#comments</comments>
  56. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  57. <pubDate>Wed, 28 Sep 2016 23:24:20 +0000</pubDate>
  58. <category><![CDATA[Uncategorized]]></category>
  59. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=303</guid>
  60.  
  61. <description><![CDATA[I recently had a requirement to write some ssjs utilities to handle basic SFTP functions.  I&#8217;m not FTP expert so it was new to me that FTPS has functions built into the Apache Commons FTP library but SFTP does not.  (For more on FTP vs FTP/S vs SFTP, check out this article.) To create the &#8230; <a href="https://spmcmanusblog.wordpress.com/2016/09/28/creating-an-sftp-utility-in-ssjs-using-jsch/" class="more-link">Continue reading<span class="screen-reader-text"> "Creating an SFTP Utility in SSJS using&#160;JSch"</span></a>]]></description>
  62. <content:encoded><![CDATA[<p>I recently had a requirement to write some ssjs utilities to handle basic SFTP functions.  I&#8217;m not FTP expert so it was new to me that FTPS has functions built into the <a href="https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTP.html" target="_blank">Apache Commons FTP library</a> but SFTP does not.  (For more on FTP vs FTP/S vs SFTP, check out <a href="https://southrivertech.com/whats-difference-ftp-sftp-ftps/" target="_blank">this article</a>.)</p>
  63. <p>To create the desired library I found <a href="http://www.jcraft.com/jsch/" target="_blank">Java Secure Channel</a> by JCraft.com that would allow me to use java libraries in my ssjs to create the desired utility functions.  Using java classes in ssjs is a useful way to extend the functionality of ssjs if your requirements are such that you can&#8217;t have your business logic in java.</p>
  64. <ol>
  65. <li>Import the file into your NSF</li>
  66. <li> <a href="http://sourceforge.net/projects/jsch/files/jsch.jar/0.1.54/jsch-0.1.54.jar/download" target="_blank">Download the .jar file</a> for JSch.
  67. <ul>
  68. <li>Right-click on your file in Package Explorer</li>
  69. <li>Choose Build P ath &#8211;&gt; Configure Build Path</li>
  70. <li>Choose the &#8220;Add JARs&#8221; button</li>
  71. <li>Navigate to your .jar file from step 1 and select OK</li>
  72. </ul>
  73. </li>
  74. <li>Create a ssjs library for your utility functions.  I&#8217;ve functions to do the following tasks:
  75. <ul>
  76. <li>Connect to a server</li>
  77. <li>Close the connection</li>
  78. <li>Put a file on the server</li>
  79. <li>Delete a file from the server</li>
  80. <li>Get a list of file names from the server that match a pattern</li>
  81. <li>Get a file from the server and return the contents as an input stream</li>
  82. </ul>
  83. </li>
  84. </ol>
  85. <p>The time consuming part here was in the conversion of the java objects to ssjs.  Aside from that the code is mostly straightforward.</p>
  86. <pre class="brush: jscript; title: ; notranslate">
  87.  
  88. var utilFTP = {
  89.  
  90.  /*
  91.  * Initialize global variables used in all FTP methods
  92.  * Code uses Java Secure Channel from JCraft
  93.  * Shean McManus | PSC Group | September 2016
  94.  */
  95.  ftp:org.apache.commons.net.ftp.FTP,
  96.  ftpClient:org.apache.commons.net.ftp.FTPClient,
  97.  ftpClientConfig:org.apache.commons.net.ftp.FTPClientConfig,
  98.  ssh:com.jcraft.jsch.JSch,
  99.  sftpSession:com.jcraft.jsch.Session,
  100.  sftpChannel:com.jcraft.jsch.ChannelSftp,
  101.  
  102.  /*
  103.  * Initialize FTP session
  104.  */
  105.  connect: function(ftpServer:string, ftpUsername:string, ftpPassword:string, ftpKeyChecking:boolean, ftpKeyString:string) {
  106.    try {
  107.      // initialize JSCH object
  108.      this.ssh = new com.jcraft.jsch.JSch();
  109.      // create sftp session
  110.      this.sftpSession = this.ssh.getSession(ftpUsername,ftpServer);
  111.      // set the password
  112.      this.sftpSession.setPassword(ftpPassword);
  113.      // read boolean to implement key checking or not
  114.      if (ftpKeyChecking == true) {
  115.        // get host key string from calling function
  116.        var his:java.io.InputStream = new java.io.ByteArrayInputStream(ftpKeyString.getBytes());
  117.        // add key to known hosts
  118.        this.ssh.setKnownHosts(his);
  119.      } else {
  120.        // disable key checking
  121.        var config:java.util.Properties = new java.util.Properties();
  122.        config.put(&amp;quot;StrictHostKeyChecking&amp;quot;,&amp;quot;no&amp;quot;);
  123.        this.sftpSession.setConfig(config);
  124.      }
  125.      // connect to server
  126.      this.sftpSession.connect();
  127.      // get sftp channel
  128.      this.sftpChannel = this.sftpSession.openChannel(&amp;quot;sftp&amp;quot;);
  129.      // connect
  130.      this.sftpChannel.connect();
  131.      // return value
  132.      return true;
  133.    } catch(e) {
  134.      // INSERT YOUR ERROR LOGGING CODE HERE
  135.      return false;
  136.    }
  137.  },
  138.  
  139.  /*
  140.  * Close FTP session
  141.  */
  142.  close: function() {
  143.    try {
  144.      // disconnect channel
  145.      if (this.sftpChannel != null) {
  146.        this.sftpChannel.disconnect();
  147.      }
  148.      // disconnect session
  149.      if (this.sftpSession != null) {
  150.        this.sftpSession.disconnect();
  151.      }
  152.      return true;
  153.    } catch(e) {
  154.      // INSERT YOUR ERROR LOGGING CODE HERE
  155.      return false;
  156.    }
  157.  },
  158.  
  159.  /*
  160.  * Delete file on FTP Server
  161.  */
  162.  deleteFile: function(ftpFilePath,ftpFileName) {
  163.    try {
  164.      this.sftpChannel.rm(ftpFilePath + &amp;quot;\\&amp;quot; + ftpFileName);
  165.      return true;
  166.    } catch(e) {
  167.      // INSERT YOUR ERROR LOGGING CODE HERE
  168.      return false;
  169.    }
  170.  },
  171.  
  172.  /*
  173.  * Transfer file to FTP server
  174.  */
  175.  putFile: function(ftpFromFilePath:string, ftpFileName:string, ftpToFilePath:string) {
  176.    try {
  177.      // add the file to the ftp server, using double slashes to account for escaping
  178.      this.sftpChannel.put(ftpFromFilePath + &amp;quot;\\&amp;quot; + ftpFileName, ftpToFilePath + &amp;quot;\\&amp;quot; + ftpFileName);
  179.      return true;
  180.    } catch (e) {
  181.      // INSERT YOUR ERROR LOGGING CODE HERE return false;
  182.    }
  183.  },
  184.  
  185.  /*
  186.  * Retrieve file from FTP server and return the input stream of the file
  187.  */
  188.  getFile: function(ftpFilePath:string,ftpFileName:string) {
  189.    try {
  190.      // get the file and return it into an input stream
  191.      var myInputStream:java.io.FileInputStream = this.sftpChannel.get(ftpFilePath + &amp;quot;\\&amp;quot; + ftpFileName);
  192.      return myInputStream
  193.    } catch(e) {
  194.      // INSERT YOUR ERROR LOGGING CODE HERE return false;
  195.    }
  196.  },
  197.  
  198.  /*
  199.  * Returns an array of file names that match the prefix string
  200.  */
  201.  getFileNames: function(ftpMode:string,ftpFilePath:string,ftpFilePrefix:string) {
  202.    try {
  203.      // get a list of files that are in the file path
  204.      var ls:java.util.Vector = this.sftpChannel.ls(ftpFilePath);
  205.      var matchedFiles = [];
  206.      // loop through list
  207.      for (entry in ls) {
  208.        // set up pattern to match
  209.        var thisPattern:java.util.regex.Pattern = java.util.regex.Pattern.compile(ftpFilePrefix + '[0-9]{8}.csv');
  210.        // get each entry
  211.        var thisEntry:java.lang.String = entry.getFilename();
  212.        // check if the entry matches the pattern
  213.        var m:java.util.regex.Matcher = thisPattern.matcher(thisEntry);
  214.        // initialize the temporary sequence input stream
  215.        var sis:java.io.SequenceInputStream = null;
  216.        if (m.matches()) {
  217.          // if the file matches, push the contents into the matched files array
  218.          matchedFiles.push(thisEntry)
  219.       }
  220.     }
  221.     // sort the files by filename - most recent will be last
  222.     return matchedFiles.sort();
  223.    } catch(e) {
  224.      // INSERT YOUR ERROR LOGGING CODE HERE return false;
  225.    }
  226.  }
  227. }
  228. </pre>
  229. ]]></content:encoded>
  230. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2016/09/28/creating-an-sftp-utility-in-ssjs-using-jsch/feed/</wfw:commentRss>
  231. <slash:comments>2</slash:comments>
  232. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  233. <media:title type="html">sheanmcmanus</media:title>
  234. </media:content>
  235. </item>
  236. <item>
  237. <title>MWLUG 2016 Recap</title>
  238. <link>https://spmcmanusblog.wordpress.com/2016/08/23/mwlug-2016-recap/</link>
  239. <comments>https://spmcmanusblog.wordpress.com/2016/08/23/mwlug-2016-recap/#respond</comments>
  240. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  241. <pubDate>Tue, 23 Aug 2016 01:53:08 +0000</pubDate>
  242. <category><![CDATA[Uncategorized]]></category>
  243. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=266</guid>
  244.  
  245. <description><![CDATA[Attending MWLUG  last week in Austin, Texas was an enjoyable and educating experience despite the undercurrent of uncertainty that was felt throughout most of the event.  The decision of IBM to drop the release of Domino 9.0.2 from the 2016 roadmap had many attendees discussing the ramification of that decision on the future of their work &#8230; <a href="https://spmcmanusblog.wordpress.com/2016/08/23/mwlug-2016-recap/" class="more-link">Continue reading<span class="screen-reader-text"> "MWLUG 2016 Recap"</span></a>]]></description>
  246. <content:encoded><![CDATA[<p>Attending <a href="http://www.mwlug.com" target="_blank">MWLUG </a> last week in Austin, Texas was an enjoyable and educating experience despite the undercurrent of uncertainty that was felt throughout most of the event.  The decision of IBM to drop the release of Domino 9.0.2 from the 2016 roadmap had many attendees discussing the ramification of that decision on the future of their work and careers.  Despite all of that, I feel very positive about the future.   For current xPages developers, there will likely be plenty of work in that space for years to come even if future releases are fix packs on top of the 9.0.1 codestream.  Furthermore, there are many options available to modernize xPages applications in varying levels of complexity and reliance on the current xPages stack.    My co-worker <a href="http://www.johndavidhead.com/jhead/johnhead.nsf/dx/the-fork-in-the-road-the-application-modernization-roadmap-for-notes-domino-xpages-customers" target="_blank">John Head</a> addressed that topic in his session on application modernization, <a href="http://runningnotes.net/" target="_blank">Kathy </a>and I provided platform-neutral ideas on dashboards and data visualizations, and many other sessions offered platform-neutral content valuable in and beyond Domino.</p>
  247. <p>Some of the other specific highlights (in no particular order) of interesting content included:</p>
  248. <ul>
  249. <li>Roy Rumaner presenting on vision accessibility in web pages</li>
  250. <li>Kato Mann and Keith Strickland talking about Web Components</li>
  251. <li>Howard Greenberg offering details on using maps, trees, and collections in Java</li>
  252. <li>Eric McCormick talking about automating application builds and webpack</li>
  253. <li>Jesse Gallagher talking about Darwino and modern application structures</li>
  254. </ul>
  255. <p>The slides for <a href="http://www.slideshare.net/sheanmcmanus/using-dashboards-to-transform-application-data-visualization" target="_blank">my session</a> with Kathy titled <a href="http://Using Dashboards to Transform Application Data Visualization" target="_blank">Using Dashboards to Transform Application Data Visualization</a> can be found at SlideShare.</p>
  256. <p>Finally, I can&#8217;t speak about MWLUG without talking about the wonderful friendships I have made attending these events.  This year was no exception.  New friends were made and plenty of time was spent socializing with many of the people that make this such a special community.  Special thanks to Richard Moy and Amanda Bauman for all their hard work making this event happen.  I hope we are all able to get together like this in some fashion or another for years to come.</p>
  257. <p>&nbsp;</p>
  258. <p>&nbsp;</p>
  259. ]]></content:encoded>
  260. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2016/08/23/mwlug-2016-recap/feed/</wfw:commentRss>
  261. <slash:comments>0</slash:comments>
  262. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  263. <media:title type="html">sheanmcmanus</media:title>
  264. </media:content>
  265. </item>
  266. <item>
  267. <title>MWLUG Registration Complete</title>
  268. <link>https://spmcmanusblog.wordpress.com/2016/07/07/mwlug-registration-complete/</link>
  269. <comments>https://spmcmanusblog.wordpress.com/2016/07/07/mwlug-registration-complete/#respond</comments>
  270. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  271. <pubDate>Thu, 07 Jul 2016 01:44:10 +0000</pubDate>
  272. <category><![CDATA[Uncategorized]]></category>
  273. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=255</guid>
  274.  
  275. <description><![CDATA[A couple weeks ago I was honored to be selected to speak at MWLUG next month in Austin, Texas.  Attending my first conference as consultant with PSC, I will be once again speaking&#8230;this time with my co-worker Kathy Brown.  Having such a terrific and experienced speaker like Kathy as my co-presenter is comfort as we &#8230; <a href="https://spmcmanusblog.wordpress.com/2016/07/07/mwlug-registration-complete/" class="more-link">Continue reading<span class="screen-reader-text"> "MWLUG Registration Complete"</span></a>]]></description>
  276. <content:encoded><![CDATA[<p>A couple weeks ago I was honored to be selected to speak at <a href="http://mwlug.com/mwlug/mwlug.nsf/">MWLUG </a>next month in Austin, Texas.  Attending my first conference as consultant with <a href="https://www.psclistens.com/">PSC</a>, I will be once again speaking&#8230;this time with my co-worker <a href="http://www.runningnotes.net/">Kathy Brown</a>.  Having such a terrific and experienced speaker like Kathy as my co-presenter is comfort as we prepare over the next six weeks to provide a quality session on the use of dashboards in modern web applications.</p>
  277. <h4 id="view:_id1:_id2:_id51:rptSessions:13:cmpTitle" class="sessionTitle">Using Dashboards to Transform Application Data Visualization</h4>
  278. <p><span id="view:_id1:_id2:_id51:rptSessions:13:cmpAbstractText">When you&#8217;re driving a car, you need a lot of data quickly. How fast are you going? Are there any problems you need to address? Where do you get that data at a glance? Your dashboard, of course. All the info you need at your finger tips, easily understood. Your applications have a lot of data and important information, but can your users get to it quickly? Can they easily spot issues or know what they need to do right now? Shean and Kathy will take you for a test drive through some XPage application dashboards. They will demonstrate how to move away from email-driven tasks and buried information to show you how you can easily visualize your critical business data. Come see how an application can provide a visually striking, functional, and easy to use Data Visualization for common workflow actions, important info, charts, and key metrics. Put your users in the driver’s seat!</span></p>
  279. <p>If you have not attended an MWLUG conference before I strongly urge you to consider attending.  It&#8217;s a fantastic event, full of great content (we hope to live up to that standard), great friends, and plenty of productive conversations.  I can&#8217;t wait!</p>
  280. <p>&nbsp;</p>
  281. <p>&nbsp;</p>
  282. ]]></content:encoded>
  283. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2016/07/07/mwlug-registration-complete/feed/</wfw:commentRss>
  284. <slash:comments>0</slash:comments>
  285. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  286. <media:title type="html">sheanmcmanus</media:title>
  287. </media:content>
  288. </item>
  289. <item>
  290. <title>Using jQuery.resize to Enhance Responsive Design</title>
  291. <link>https://spmcmanusblog.wordpress.com/2016/05/26/using-jquery-resize-to-enhance-responsive-design/</link>
  292. <comments>https://spmcmanusblog.wordpress.com/2016/05/26/using-jquery-resize-to-enhance-responsive-design/#respond</comments>
  293. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  294. <pubDate>Thu, 26 May 2016 02:18:27 +0000</pubDate>
  295. <category><![CDATA[Uncategorized]]></category>
  296. <category><![CDATA[bootstrap]]></category>
  297. <category><![CDATA[jquery]]></category>
  298. <category><![CDATA[xpages]]></category>
  299. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=167</guid>
  300.  
  301. <description><![CDATA[Twitter Bootstrap provides some convenient grid scaffolding to use for responsive design applications.  The xs-sm-md and lg classes allow you to adjust your design based on the screen real estate available.  Sometimes, however, this isn&#8217;t enough.  Recently when working on laying out a couple portlets horizontally on a page I discovered that I needed some additional &#8230; <a href="https://spmcmanusblog.wordpress.com/2016/05/26/using-jquery-resize-to-enhance-responsive-design/" class="more-link">Continue reading<span class="screen-reader-text"> "Using jQuery.resize to Enhance Responsive&#160;Design"</span></a>]]></description>
  302. <content:encoded><![CDATA[<p>Twitter Bootstrap provides some convenient grid scaffolding to use for responsive design applications.  The xs-sm-md and lg classes allow you to adjust your design based on the screen real estate available.  Sometimes, however, this isn&#8217;t enough.  Recently when working on laying out a couple portlets horizontally on a page I discovered that I needed some additional control over the display (or lack thereof) of some columns in my portlets. In short, I wanted to hide some of those columns when the width of the screen was at a certain horizontal threshold.  The standard bootstrap classes were not granular enough for my needs.    Time for some jQuery wizardry.</p>
  303. <p>Plan:</p>
  304. <ol>
  305. <li>Use $(window).resize to listen for the window size changing</li>
  306. <li>Check the size of the desired elements against certain thresholds</li>
  307. <li>Perform DOM manipulation as necessary to add/remove elements</li>
  308. </ol>
  309. <pre class="brush: xml; title: ; notranslate">
  310. &lt;div class=&quot;panel panel-primary panel-heading-custom&quot;&gt;
  311. &lt;div class=&quot;panel-heading&quot;&gt;
  312. &lt;h2 class=&quot;&quot;&gt;
  313. Extending Responsive Design with jQuery.resize()
  314. &lt;/h2&gt;
  315. &lt;/div&gt;
  316. &lt;div class=&quot;row row1&quot;&gt;
  317. &lt;div class=&quot;col-lg-6 col-md-6 col-sm-6 col-xs-6 panel-body-header&quot;&gt;Panel Left&lt;/div&gt;
  318. &lt;div class=&quot;col-lg-6 col-md-6 col-sm-6 col-xs-6 panel-body-header&quot;&gt;Panel Right&lt;/div&gt;
  319. &lt;/div&gt;
  320. &lt;div class=&quot;row&quot;&gt;
  321. &lt;div class=&quot;col-lg-6 col-md-6 col-sm-6 col-xs-6 panel-body-header&quot;&gt;
  322. Width:&lt;span id=&quot;panel-left-width&quot;&gt;&lt;/span&gt;
  323. &lt;/div&gt;
  324. &lt;div class=&quot;col-lg-6 col-md-6 col-sm-6 col-xs-6 panel-body-header&quot;&gt;
  325. Width:&lt;span id=&quot;panel-right-width&quot;&gt;&lt;/span&gt;
  326. &lt;/div&gt;
  327. &lt;/div&gt;
  328. &lt;div class=&quot;row&quot;&gt;
  329. &lt;div id=&quot;panel-left&quot; class=&quot;col-lg-6 col-md-6 col-sm-6 col-xs-6 panel-body-custom&quot;&gt;
  330. &lt;div class=&quot;panel-body-inner-left&quot;&gt;
  331. &lt;table&gt;
  332. &lt;thead&gt;
  333. &lt;th class=&quot;c1&quot;&gt;Column 1&lt;/th&gt;
  334. &lt;th class=&quot;c2&quot;&gt;Column 2&lt;/th&gt;
  335. &lt;th class=&quot;c3&quot;&gt;Column 3&lt;/th&gt;
  336. &lt;th class=&quot;c4&quot;&gt;Column 4&lt;/th&gt;
  337. &lt;/thead&gt;
  338. &lt;tbody&gt;
  339. &lt;tr&gt;
  340. &lt;td class=&quot;c1&quot;&gt;&lt;/td&gt;
  341. &lt;td class=&quot;c2&quot;&gt;&lt;/td&gt;
  342. &lt;td class=&quot;c3&quot;&gt;&lt;/td&gt;
  343. &lt;td class=&quot;c4&quot;&gt;&lt;/td&gt;
  344. &lt;/tr&gt;
  345. &lt;/tbody&gt;
  346. &lt;/table&gt;
  347. &lt;/div&gt;
  348. &lt;/div&gt;
  349. &lt;div id=&quot;panel-right&quot; class=&quot;col-lg-6 col-md-6 col-sm-6 col-xs-6  panel-body-custom&quot;&gt;
  350. &lt;div class=&quot;panel-body-inner-right&quot;&gt;
  351. &lt;table&gt;
  352. &lt;thead&gt;
  353. &lt;th class=&quot;c1&quot;&gt;Column 1&lt;/th&gt;
  354. &lt;th class=&quot;c2&quot;&gt;Column 2&lt;/th&gt;
  355. &lt;th class=&quot;c3&quot;&gt;Column 3&lt;/th&gt;
  356. &lt;th class=&quot;c4&quot;&gt;Column 4&lt;/th&gt;
  357. &lt;/thead&gt;
  358. &lt;tbody&gt;
  359. &lt;tr&gt;
  360. &lt;td class=&quot;c1&quot;&gt;&lt;/td&gt;
  361. &lt;td class=&quot;c2&quot;&gt;&lt;/td&gt;
  362. &lt;td class=&quot;c3&quot;&gt;&lt;/td&gt;
  363. &lt;td class=&quot;c4&quot;&gt;&lt;/td&gt;
  364. &lt;/tr&gt;
  365. &lt;/tbody&gt;
  366. &lt;/table&gt;
  367. &lt;/div&gt;
  368. &lt;/div&gt;
  369. &lt;/div&gt;
  370. &lt;/div&gt;
  371. </pre>
  372. <p>The following bit of javascript will check the size of the panels and remove a column if the width of the panel becomes less than 500 (and then 400) pixels.</p>
  373. <pre class="brush: jscript; title: ; notranslate">
  374. $('document').ready( function() {
  375. // initialize panel width display
  376. resizer();
  377.  
  378. $(window).resize(function(){
  379.    resizer();
  380. });
  381. });
  382.  
  383. function resizer() {
  384.    $('#panel-left-width').text($('#panel-left').width());
  385.    $('#panel-right-width').text($('#panel-right').width());
  386.    plw = $('#panel-left').width();
  387.    prw = $('#panel-right').width();
  388.    $('#panel-left-width').text(plw);
  389.    $('#panel-right-width').text(prw);
  390.    if (plw &amp;lt; 500) {
  391. $('.c4').hide();
  392.    } else {
  393. $('.c4').show();
  394.    }
  395.    if (prw &amp;lt; 500) {
  396. $('.c4').hide();
  397.    } else {
  398. $('.c4').show();
  399.    }
  400.    if (plw &amp;lt; 400) {
  401. $('.c3').hide();
  402.    } else {
  403. $('.c3').show();
  404.    }
  405.    if (prw &amp;lt; 400) {
  406. $('.c3').hide();
  407.    } else {
  408. $('.c3').show();
  409.    }
  410. }
  411. </pre>
  412. <p>Simple and effective. This could be extended to other uses as well, taking into account different devices in addition to screen size.</p>
  413. <p><a href="http://apps01.prominic.net/A55E17/resize.nsf/resize.xsp" target="_blank">See a working demo here.</a></p>
  414. ]]></content:encoded>
  415. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2016/05/26/using-jquery-resize-to-enhance-responsive-design/feed/</wfw:commentRss>
  416. <slash:comments>0</slash:comments>
  417. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  418. <media:title type="html">sheanmcmanus</media:title>
  419. </media:content>
  420. </item>
  421. <item>
  422. <title>ICON US Slides</title>
  423. <link>https://spmcmanusblog.wordpress.com/2016/05/11/icon-us-slides/</link>
  424. <comments>https://spmcmanusblog.wordpress.com/2016/05/11/icon-us-slides/#respond</comments>
  425. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  426. <pubDate>Wed, 11 May 2016 23:36:13 +0000</pubDate>
  427. <category><![CDATA[Uncategorized]]></category>
  428. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=158</guid>
  429.  
  430. <description><![CDATA[On Monday May 9, I presented with Eric McCormick at ICON US on Normalizing xPages Web Development. Here are the slides from that session. Demo code will be available soon as we have a few tweaks to make before posting that link.]]></description>
  431. <content:encoded><![CDATA[<p>On Monday May 9, I presented with Eric McCormick at <a href="http://iamiconus.org/iamiconus/iconus2016.nsf/home.xsp">ICON US</a> on <a href="http://iamiconus.org/iamiconus/iconus2016.nsf/session.xsp?action=openDocument&amp;documentId=10DC98278072638C86257F77004D2BE7">Normalizing xPages Web Development.</a> Here are the <a title="ICONUS 2016 Normalizing XPages Web Development" href="https://spmcmanusblog.files.wordpress.com/2016/05/iconus-2016-normalizing-xpages-web-development.pdf">slides</a> from that session. Demo code will be available soon as we have a few tweaks to make before posting that link.</p>
  432. ]]></content:encoded>
  433. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2016/05/11/icon-us-slides/feed/</wfw:commentRss>
  434. <slash:comments>0</slash:comments>
  435. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  436. <media:title type="html">sheanmcmanus</media:title>
  437. </media:content>
  438. </item>
  439. <item>
  440. <title>An Effective Use of the &#8216;attr&#8217; Property on xPage Elements</title>
  441. <link>https://spmcmanusblog.wordpress.com/2016/01/11/an-effective-use-of-the-attr-property-on-xpage-elements/</link>
  442. <comments>https://spmcmanusblog.wordpress.com/2016/01/11/an-effective-use-of-the-attr-property-on-xpage-elements/#respond</comments>
  443. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  444. <pubDate>Mon, 11 Jan 2016 20:05:20 +0000</pubDate>
  445. <category><![CDATA[Uncategorized]]></category>
  446. <category><![CDATA[javascript]]></category>
  447. <category><![CDATA[jquery]]></category>
  448. <category><![CDATA[xpages]]></category>
  449. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=19</guid>
  450.  
  451. <description><![CDATA[JQuery is a common javascript library today that can be used for any number of client side operations.  Sometimes it can be difficult to construct the right selector with xPage elements due to the way the engine renders the id tag.  Sure it is common to use the elements class attribute as a selector but &#8230; <a href="https://spmcmanusblog.wordpress.com/2016/01/11/an-effective-use-of-the-attr-property-on-xpage-elements/" class="more-link">Continue reading<span class="screen-reader-text"> "An Effective Use of the &#8216;attr&#8217; Property on xPage&#160;Elements"</span></a>]]></description>
  452. <content:encoded><![CDATA[<p dir="ltr">JQuery is a common javascript library today that can be used for any number of client side operations.  Sometimes it can be difficult to construct the right selector with xPage elements due to the way the engine renders the id tag.  Sure it is common to use the elements class attribute as a selector but sometimes that can only serve to muck up your design as you may already have several style sheets used for design.  That is where I have found a nice use for the &#8216;attr&#8217; tag in xPage elements.</p>
  453. <p dir="ltr">Consider the following use case.  I have a timesheet form that has a repeat control nested inside another repeat control.  The first repeat loops through the days of the week while the second loops through a set number of possible project entries per day.  I want to have all but the first row hidden for each day on load of a new timesheet, then have buttons to add a line and remove a line.  I can use jQuery but instead of trying to add the row number to my class attribute of each row, or trying to parse out the id I can use a new attribute called &#8220;rowNum&#8221; and grab that on the client side.</p>
  454. <p dir="ltr">xPage Markup</p>
  455. <blockquote>
  456. <pre>&lt;xp:repeat id="timesheetCard" indexVar="idx" var="rowNum" repeatControls="true" rows="7"&gt;
  457. &lt;xp:this.value&gt;&lt;![CDATA[#{javascript:var arrRow = [0,1,2,3,4,5,6]; return arrRow;}]]&gt;&lt;/xp:this.value&gt;
  458. &lt;xp:tr&gt;
  459. &lt;xp:this.attrs&gt;
  460. &lt;xp:attr name="row"&gt;
  461. &lt;xp:this.value&gt;&lt;![CDATA[#{javascript:rowNum}]]&gt;&lt;/xp:this.value&gt;
  462. &lt;/xp:attr&gt;
  463. &lt;/xp:this.attrs&gt;
  464. .
  465. .
  466. .
  467. &lt;/xp:tr&gt;
  468. &lt;/xp:repeat&gt;</pre>
  469. </blockquote>
  470. <p dir="ltr">So here I have used the &#8216;attr&#8217; property of the xpage element to calculate an attribute I called &#8220;row&#8221;.  I could have done this using straight HTML but by<a href="http://spmcmanus.net/A55E17/blog.nsf/id/APPT-A393YE" target="_blank"> converting the tag to an xPage tag</a> I could access it though the designer properties section and get myself a javascript editor to use.</p>
  471. <p dir="ltr">Now, on the client side wherever I want to have access to this row I can access it via jQuery as shown here:</p>
  472. <blockquote>
  473. <pre>$('[row=5]').show()</pre>
  474. </blockquote>
  475. <p dir="ltr">The above code will find the row with a row=5 and show that row.  This would be useful if I had that row hidden previously.</p>
  476. <p dir="ltr">The above is not the only possible use case for &#8216;attr&#8217;.  You can use it anywhere you want to add additional metadata to your markup for use client-side.  A nice tool to have in your toolbox!</p>
  477. ]]></content:encoded>
  478. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2016/01/11/an-effective-use-of-the-attr-property-on-xpage-elements/feed/</wfw:commentRss>
  479. <slash:comments>0</slash:comments>
  480. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  481. <media:title type="html">sheanmcmanus</media:title>
  482. </media:content>
  483. </item>
  484. <item>
  485. <title>When &#8216;font-weight: bold&#8217; Is Not Quite Right</title>
  486. <link>https://spmcmanusblog.wordpress.com/2015/10/26/when-font-weight-bold-is-not-quite-right/</link>
  487. <comments>https://spmcmanusblog.wordpress.com/2015/10/26/when-font-weight-bold-is-not-quite-right/#respond</comments>
  488. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  489. <pubDate>Mon, 26 Oct 2015 16:26:49 +0000</pubDate>
  490. <category><![CDATA[Uncategorized]]></category>
  491. <category><![CDATA[css]]></category>
  492. <category><![CDATA[xpages]]></category>
  493. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=28</guid>
  494.  
  495. <description><![CDATA[Lately I&#8217;ve been doing a lot of front-end UI work and in doing so there have been situations where I want to call attention to a piece of text.  Sometimes displaying the text in a BOLD font-weight is just right, but other times that feels more like cracking a nut with a sledge hammer.  CSS &#8230; <a href="https://spmcmanusblog.wordpress.com/2015/10/26/when-font-weight-bold-is-not-quite-right/" class="more-link">Continue reading<span class="screen-reader-text"> "When &#8216;font-weight: bold&#8217; Is Not Quite&#160;Right"</span></a>]]></description>
  496. <content:encoded><![CDATA[<p dir="ltr">Lately I&#8217;ve been doing a lot of front-end UI work and in doing so there have been situations where I want to call attention to a piece of text.  Sometimes displaying the text in a BOLD font-weight is just right, but other times that feels more like cracking a nut with a sledge hammer.  CSS has supported a more granular approach to the font-weight attribute for some time but it&#8217;s a feature that can be easily forgotten.  In addition to normal, bold, and italics designations, you can use relative terms like &#8220;lighter&#8221; or &#8220;bolder&#8221; which apply the weight relative to the parent element. Perhaps more useful is the numeric designations available.  CSS supports font-weight&#8217;s of 100 to 900 in even increments of 100.   The catch is that the font you are using needs to support that level of granularity.</p>
  497. <p dir="ltr">I had planned to code out a whole series of examples but I found an article that has already done this so no need to go through that exercise.  Read here to see examples of what this looks like and more details on how it&#8217;s applied to fonts that only support the normal and bold font-weights.</p>
  498. <p dir="ltr"><a href="https://css-tricks.com/almanac/properties/f/font-weight/" target="_blank">CSS Tricks: Font-Weight</a></p>
  499. ]]></content:encoded>
  500. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2015/10/26/when-font-weight-bold-is-not-quite-right/feed/</wfw:commentRss>
  501. <slash:comments>0</slash:comments>
  502. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  503. <media:title type="html">sheanmcmanus</media:title>
  504. </media:content>
  505. </item>
  506. <item>
  507. <title>Converting HTML Tags to XPage Tags</title>
  508. <link>https://spmcmanusblog.wordpress.com/2015/10/12/converting-html-tags-to-xpage-tags/</link>
  509. <comments>https://spmcmanusblog.wordpress.com/2015/10/12/converting-html-tags-to-xpage-tags/#respond</comments>
  510. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  511. <pubDate>Mon, 12 Oct 2015 16:29:45 +0000</pubDate>
  512. <category><![CDATA[Uncategorized]]></category>
  513. <category><![CDATA[bootstrap]]></category>
  514. <category><![CDATA[html]]></category>
  515. <category><![CDATA[xpages]]></category>
  516. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=30</guid>
  517.  
  518. <description><![CDATA[As xPages becomes a common platform for other modern web frameworks, you may find yourself writing a lot of standard HTML (such as Twitter Boostrap markup) in your Domino Designer source panel.  Here is a convenient reminder that most HTML tags can be converted to xPage tags by adding the xp: prefix. So, becomes &#160; &#8230; <a href="https://spmcmanusblog.wordpress.com/2015/10/12/converting-html-tags-to-xpage-tags/" class="more-link">Continue reading<span class="screen-reader-text"> "Converting HTML Tags to XPage&#160;Tags"</span></a>]]></description>
  519. <content:encoded><![CDATA[<p dir="ltr">As xPages becomes a common platform for other modern web frameworks, you may find yourself writing a lot of standard HTML (such as Twitter Boostrap markup) in your Domino Designer source panel.  Here is a convenient reminder that most HTML tags can be converted to xPage tags by adding the xp: prefix.</p>
  520. <p>So,</p>
  521. <pre class="brush: xml; title: ; notranslate">
  522. &lt;div&gt;...&lt;/div&gt;
  523. </pre>
  524. <p>becomes</p>
  525. <p>&nbsp;</p>
  526. <pre class="brush: xml; title: ; notranslate"> &lt;xp:div&gt;...&lt;/xp:div&gt;</pre>
  527. <div></div>
  528. <p dir="ltr">Now it may not be immediately obvious why this would be a useful pattern but xPage tags have with them all the API hooks that are available for the standard xPages controls.  One use case could be to leverage server side logic to selectively render certain parts of your code.   For example you might have some mark up that resembles this:</p>
  529. <pre class="brush: xml; title: ; notranslate">
  530. &lt;div id=&quot;show-when-editable&quot; class=&quot;row&quot;&gt;
  531. &lt;div class=&quot;col-md-2&quot;&gt;...&lt;/div&gt;
  532. &lt;div class=&quot;col-md-4&quot;&gt;...&lt;/div&gt;
  533. &lt;div class=&quot;col-md-6&quot;&gt;...&lt;/div&gt;
  534. &lt;/div&gt;
  535. &lt;div id=&quot;hide-when-editable&quot; class=&quot;row&quot;&gt;
  536. &lt;div class=&quot;col-md-2&quot;&gt;...&lt;/div&gt;
  537. &lt;div class=&quot;col-md-4&quot;&gt;...&lt;/div&gt;
  538. &lt;div class=&quot;col-md-6&quot;&gt;...&lt;/div&gt;
  539. &lt;/div&gt;
  540. </pre>
  541. <p>If you want to show the first div in edit mode and the second otherwise you could convert the above to the following:</p>
  542. <pre class="brush: xml; title: ; notranslate">&lt;xp:div styleClass=&quot;row&quot;&gt;
  543. &lt;xp:this.rendered&gt;&lt;![CDATA[#{javascript:document.isEditable()==true}]]&gt;&lt;/xp:this.rendered&gt;
  544. &lt;div class=&quot;col-md-2&quot;&gt;...&lt;/div&gt;
  545. &lt;div class=&quot;col-md-4&quot;&gt;...&lt;/div&gt;
  546. &lt;div class=&quot;col-md-6&quot;&gt;...&lt;/div&gt;
  547. &lt;/xp:div&gt;
  548. &lt;xp:div styleClass=&quot;row&quot;&gt;
  549. &lt;xp:this.rendered&gt;&lt;![CDATA[#{javascript:document.isEditable()==false}]]&gt;&lt;/xp:this.rendered&gt;
  550. &lt;div class=&quot;col-md-2&quot;&gt;...&lt;/div&gt;
  551. &lt;div class=&quot;col-md-4&quot;&gt;...&lt;/div&gt;
  552. &lt;div class=&quot;col-md-6&quot;&gt;...&lt;/div&gt;
  553. &lt;/xp:div&gt;</pre>
  554. <p dir="ltr">A couple things to note about this type of tag conversion:</p>
  555. <p dir="ltr">&#8211;  &lt;xp:div&gt; tags don&#8217;t respect normal HTML attributes.  For this reason, you need to also convert <code>class="class-name"</code> to <code>styleClass="class-name"</code></p>
  556. <p dir="ltr">&#8211; To use other attributes you can add an attribute block.  For example, code to add a <code>data-title="My Title"</code> to your tag would look like this:</p>
  557. <pre class="brush: xml; title: ; notranslate">&lt;xp:this.attrs&gt;
  558. &lt;xp:attr name=&quot;data-title&quot;&gt;
  559. &lt;xp:this.value&gt;&lt;![CDATA[#{javascript:'My Title'}]]&gt;&lt;/xp:this.value&gt;
  560. &lt;/xp:attr&gt;
  561. &lt;/xp:this.attrs&gt;</pre>
  562. <p dir="ltr">&#8211; I haven&#8217;t tested this with all legal HTML tags, so there may be some incompatibilities but it does work well with most of the standard building block tags used for construction Boostrap grids and tables.  If you know of other limitations, please feel free to share.</p>
  563. ]]></content:encoded>
  564. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2015/10/12/converting-html-tags-to-xpage-tags/feed/</wfw:commentRss>
  565. <slash:comments>0</slash:comments>
  566. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  567. <media:title type="html">sheanmcmanus</media:title>
  568. </media:content>
  569. </item>
  570. <item>
  571. <title>Using a placeholder with Select2 in xPages</title>
  572. <link>https://spmcmanusblog.wordpress.com/2015/09/16/38/</link>
  573. <comments>https://spmcmanusblog.wordpress.com/2015/09/16/38/#respond</comments>
  574. <dc:creator><![CDATA[Shean McManus]]></dc:creator>
  575. <pubDate>Wed, 16 Sep 2015 21:04:10 +0000</pubDate>
  576. <category><![CDATA[Uncategorized]]></category>
  577. <category><![CDATA[select2]]></category>
  578. <category><![CDATA[xpages]]></category>
  579. <guid isPermaLink="false">http://spmcmanusblog.wordpress.com/?p=38</guid>
  580.  
  581. <description><![CDATA[Select2 is a fantastic component that provides for a very nice alternative to the classic combo box.  While working with it this week I ran into an issue where I was unable to get the placeholder option to work.  Turns out you need to seed your values array with a null value or else the &#8230; <a href="https://spmcmanusblog.wordpress.com/2015/09/16/38/" class="more-link">Continue reading<span class="screen-reader-text"> "Using a placeholder with Select2 in&#160;xPages"</span></a>]]></description>
  582. <content:encoded><![CDATA[<p dir="ltr">Select2 is a fantastic component that provides for a very nice alternative to the classic combo box.  While working with it this week I ran into an issue where I was unable to get the placeholder option to work.  Turns out you need to seed your values array with a null value or else the placeholder won&#8217;t display.</p>
  583. <p>Using this select2 initialization code:</p>
  584. <blockquote><p>//Initialize Select2 Drop Down<br />
  585. $(&#8216;.select2&#8217;).select2( {<br />
  586. placeholder: &#8220;Select value&#8221;,<br />
  587. allowClear: true,<br />
  588. minimumResultsForSearch:-1<br />
  589. })</p></blockquote>
  590. <p>This works:</p>
  591. <blockquote><p>var arr = new Array(&#8220;&#8221;);<br />
  592. var values = @DbColumn()  \\Insert your own code here<br />
  593. var list = arr.concat(values);<br />
  594. return list;</p></blockquote>
  595. <p>This does not work:</p>
  596. <blockquote><p>var values = @DbColumn()  \\Insert your own code here<br />
  597. return values;</p></blockquote>
  598. <p dir="ltr">A subtle but important distinction.  Thanks to <a href="http://xpagesandmore.blogspot.com/" target="_blank">Johnny Oldenberger</a> for this tip.  I found this helpful information on one of his blog posts</p>
  599. ]]></content:encoded>
  600. <wfw:commentRss>https://spmcmanusblog.wordpress.com/2015/09/16/38/feed/</wfw:commentRss>
  601. <slash:comments>0</slash:comments>
  602. <media:content url="https://0.gravatar.com/avatar/682c933700ef9a3e3039d71c67a98adc9d6845c54d9016fa9719241c74b1536d?s=96&#38;d=identicon&#38;r=G" medium="image">
  603. <media:title type="html">sheanmcmanus</media:title>
  604. </media:content>
  605. </item>
  606. </channel>
  607. </rss>
  608.  

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//spmcmanusblog.wordpress.com/feed/

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