<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.christianyates.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Mmm... Geeky</title>
 <link>http://www.christianyates.com/taxonomy/term/3</link>
 <description>The taxonomy view with a depth of 0.</description>
 <language>en</language>
<item>
 <title>Displaying multiple axes for a single series in Flex charts</title>
 <link>http://www.christianyates.com/blog/flex/displaying-multiple-axes-single-series-flex-charts</link>
 <description>&lt;p&gt;I&#039;m building a Flex application for &lt;a href=&quot;http://mars.asu.edu&quot;&gt;work&lt;/a&gt; used to manage and manipulate &lt;a href=&quot;http://en.wikipedia.org/wiki/Infrared_spectroscopy&quot;&gt;infrared spectroscopy&lt;/a&gt; data. &lt;/p&gt;
&lt;p&gt;Typically, this data is plotted like so, using Gnuplot or some similar plotting package.&lt;br /&gt;
&lt;img src=&quot;http://ratw.asu.edu/Spectra/RATW101/RATW10114_spec_br.png&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Where one or more series are plotted where X values are wavelength/wavenumber and Y values are emissivities.&lt;/p&gt;
&lt;p&gt;The two X-axes shown are simply different representations of the same scale where &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;wavelength &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;wavenumber&lt;/code&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;I was stumped as to how to render a chart with two axes for the &lt;em&gt;same&lt;/em&gt; data, as the more common use case for multiple axes in Flex charting is to render multiple series with entirely different scales on the same chart.&lt;/p&gt;
&lt;p&gt;It occurred to me then that while it&#039;s not possible to have multiple &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;horizontalAxis&lt;/code&gt;&lt;/span&gt; declarations in the same chart, there&#039;s no reason you can use more than one &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;AxisRenderer&lt;/code&gt;&lt;/span&gt; per axis.&lt;/p&gt;
&lt;p&gt;There were three keys to duplicating the original plot in Flex, noted in the code comments below.&lt;/p&gt;
&lt;p&gt;In the MXML:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;horizontalAxisRenderers&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;!--&lt;/span&gt;
        Adding multiple axes &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; the same lineseries &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;is&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;as&lt;/span&gt;
        simple &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;as&lt;/span&gt; adding multiple AxisRenderers &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;with&lt;/span&gt; different
        placement parameters.
  &lt;span style=&quot;color: #339933;&quot;&gt;--&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;AxisRenderer axis&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;{primaryXaxis}&amp;quot;&lt;/span&gt; labelFunction&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;{primaryXaxisLabelFunc}&amp;quot;&lt;/span&gt; placement&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;bottom&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;AxisRenderer axis&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;{primaryXaxis}&amp;quot;&lt;/span&gt; labelFunction&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;{secondaryXaxisLabelFunc}&amp;quot;&lt;/span&gt; placement&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;top&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;!--&lt;/span&gt;
            Because we want different titles &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; each X&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;axis we&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;re
            using a titleRenderer. Here all we want to do is change
            the text of the title, so we&#039;&lt;/span&gt;re using an inline renderer
            but you could subclass the ChartLabel &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;class&lt;/span&gt; to create an
            external renderer &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; more extensive changes.
        &lt;span style=&quot;color: #339933;&quot;&gt;--&amp;gt;&lt;/span&gt; 
      &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;titleRenderer&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
          &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;Component&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
              &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;Label text&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;Wavelength (μm)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&amp;gt;&lt;/span&gt;
          &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;Component&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;titleRenderer&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;AxisRenderer&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;mx&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;horizontalAxisRenderers&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/p&gt;
&lt;p&gt;And then to manipulate the labels for each axis, we create a custom &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;labelFunction&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/**
* To set the secondary X-axis to a different scale using the
* same data, we&#039;re applying a scaling factor to the label and
* returning it. We&#039;re also inverting as we do with the primary
* X-axis.
* 
* To convert from wavenumber in cm-1 to wavelength in μm the
* formula is wavelength = 10000/wavenumber
*/&lt;/span&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt; secondaryXaxisLabelFunc&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;axisrenderer&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;IAxisRenderer&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; label&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;String&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;String
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; labelAsNumber &lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; Number &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Number&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;label&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;isNaN&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;labelAsNumber&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; label;
&amp;nbsp;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;axisFormatter.&lt;span style=&quot;color: #660066;&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;10000&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;labelAsNumber &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;And the result (right click to view complete source).&lt;br /&gt;
&lt;iframe src=&quot;http://static.christianyates.com/DualScaleDemo/DualScaleDemo.html&quot; width=&quot;500&quot; height=&quot;405&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
</description>
 <comments>http://www.christianyates.com/blog/flex/displaying-multiple-axes-single-series-flex-charts#comments</comments>
 <category domain="http://www.christianyates.com/category/subject/actionscript">Actionscript</category>
 <category domain="http://www.christianyates.com/category/subject/development">development</category>
 <category domain="http://www.christianyates.com/category/subject/flex">Flex</category>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/661</wfw:commentRss>
 <pubDate>Wed, 13 Jan 2010 01:18:09 -0500</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">661 at http://www.christianyates.com</guid>
</item>
<item>
 <title>Drupal on Glassfish with clean urls using Url Rewrite Filter</title>
 <link>http://www.christianyates.com/blog/glassfish/drupal-glassfish-clean-urls-using-url-rewrite-filter</link>
 <description>&lt;p&gt;You have a &lt;a href=&quot;http://glassfish.dev.java.net&quot;&gt;Glassfish&lt;/a&gt; server.&lt;/p&gt;
&lt;p&gt;You are a &lt;a href=&quot;https://drupal.org&quot;&gt;Drupal&lt;/a&gt; developer.&lt;/p&gt;
&lt;p&gt;You want to run Drupal in Glassfish. More importantly, you want to have it use &lt;a href=&quot;http://drupal.org/node/15365&quot;&gt;clean urls&lt;/a&gt; because without that capability, all of your urls look like this: &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;index.&lt;span style=&quot;color: #660066;&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;?&lt;/span&gt;foo&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;bar&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;baz&lt;/code&gt;&lt;/span&gt;. Which sucks, of course.&lt;/p&gt;
&lt;p&gt;Let&#039;s set aside for the moment the desirability of running PHP in a Java application container for the moment&lt;sup&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, and jump right to the meat of this geeky post. Here&#039;s how I got some of the clean url functionality you&#039;d normally get from Apache&#039;s mod_rewrite, or using either mod_rewrite or Lua in lighttpd.&lt;/p&gt;
&lt;p&gt;I&#039;m assuming you&#039;ve already got Glassfish installed, so from there:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Get a copy of &lt;a href=&quot;http://quercus.caucho.com/&quot;&gt;Quercus&lt;/a&gt;, &lt;a href=&quot;http://www.caucho.com/&quot;&gt;Caucho&#039;s&lt;/a&gt; Java implementation of PHP 5. I downloaded the version &lt;a href=&quot;http://quercus.caucho.com/download/quercus-3.2.1.war&quot;&gt;3.2.1&lt;/a&gt; .war file.&lt;/li&gt;
&lt;li&gt;Unzip the .war:&lt;sup&gt;&lt;a href=&quot;#2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;jar &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;xvf quercus&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;3.2.1.&lt;span style=&quot;color: #660066;&quot;&gt;war&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;li&gt;Get a copy of &lt;a href=&quot;http://tuckey.org/urlrewrite/#download&quot;&gt;Url Rewrite Filter&lt;/a&gt;. I used version 3.2.0 (beta), but 2.6 should work also.&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; cd quercus&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;3.2.1
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; wget http&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;//urlrewritefilter.googlecode.com/files/urlrewritefilter-3.2.0-src.zip&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; unzip urlrewritefilter&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;3.2.0&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;src.&lt;span style=&quot;color: #660066;&quot;&gt;zip&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Get Drupal. I used &lt;a href=&quot;http://drupal.org/drupal-6.10&quot;&gt;the latest 6.x version&lt;/a&gt;.:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; cd ..&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; wget http&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;//ftp.drupal.org/files/projects/drupal-6.10.tar.gz&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; tar zxvf drupal&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;6.10.&lt;span style=&quot;color: #660066;&quot;&gt;tar&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;gz&lt;/span&gt;
&amp;nbsp;
Copy Drupal files to the quercus docroot
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; cp &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;r drupal&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;6.10&lt;/span&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/* quercus-3.2.1/&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Configure Url Rewrite Filter. This is where it gets a little sketchy. Drupal comes prepackaged with a &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;htaccess&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; file, which sets up the mod_rewrite rules for Apache:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;# Rewrite current&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;style URLs of the form &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;index.php?q=x&#039;&lt;/span&gt;.
&lt;span style=&quot;color: #660066;&quot;&gt;RewriteCond&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;REQUEST_FILENAME&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;!-&lt;/span&gt;f
RewriteCond &lt;span style=&quot;color: #339933;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;REQUEST_FILENAME&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;!-&lt;/span&gt;d
RewriteRule &lt;span style=&quot;color: #339933;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;$ index.&lt;span style=&quot;color: #660066;&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;?&lt;/span&gt;q&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;$&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;L&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;QSA&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;em&gt;Unfortunately&lt;/em&gt;, Url Rewrite Filter doesn&#039;t support the REQUEST_FILENAME directive (&lt;a href=&quot;http://code.google.com/p/urlrewritefilter/wiki/ProposedFeatures&quot;&gt;yet&lt;/a&gt;). So I&#039;ve put in some hacks to at least get clean urls working. I don&#039;t pretend that this is production-ready, but it gets it working for basic testing. If anyone has input, I&#039;d welcome it. Anyway, in the WEB-INF/web.xml file, the following directives need to be added:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;name&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;UrlRewriteFilter&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;name&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;class&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;org.&lt;span style=&quot;color: #660066;&quot;&gt;tuckey&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;web&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;filters&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;urlrewrite&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;UrlRewriteFilter&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;class&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;mapping&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;name&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;UrlRewriteFilter&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;filter&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;name&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;url&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;pattern&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/*&amp;lt;/url-pattern&amp;gt;
&amp;lt;/filter-mapping&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
This should go before the &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;servlet&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;servlet&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; section.&lt;/p&gt;
&lt;p&gt;Next, create &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;WEB&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;INF&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;urlrewrite.&lt;span style=&quot;color: #660066;&quot;&gt;xml&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;?&lt;/span&gt;xml version&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;!&lt;/span&gt;DOCTYPE urlrewrite
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;PUBLIC&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;-//tuckey.org//DTD UrlRewrite 2.6//EN&amp;quot;&lt;/span&gt;
&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;http://tuckey.org/res/dtds/urlrewrite2.6.dtd&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;urlrewrite&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;rule&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;note&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
      Prevent rewriting of specific files. &lt;span style=&quot;color: #660066;&quot;&gt;Definitely&lt;/span&gt; not
      the best way to &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;do&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;note&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;from&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;^/&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;css|js|png|jpg|gif&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;$&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;from&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;to&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;/&lt;/span&gt;$&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;$&lt;span style=&quot;color: #CC0000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;to&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;rule&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;rule&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;note&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
      Prevent rewriting of files &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;in&lt;/span&gt; the files directory
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;note&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;from&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;^/&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;files&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;$&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;from&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;to&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;/&lt;/span&gt;$&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;files&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;$&lt;span style=&quot;color: #CC0000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;to&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;rule&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;rule&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;note&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;Do&lt;/span&gt; the Drupaly stuff
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;note&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;from&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;^/&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;$&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;from&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;to&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;/&lt;/span&gt;index.&lt;span style=&quot;color: #660066;&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;?&lt;/span&gt;q&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;$&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;to&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;rule&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;urlrewrite&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Re-zip your directory back into a .war file to deploy onto the app server:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;jar &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;cvf quercus&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;3.2.1.&lt;span style=&quot;color: #660066;&quot;&gt;war&lt;/span&gt; quercus&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;3.2.1&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Deploy to Glassfish through the admin console, or from the auto-deploy directory. Note that you should set your context-root to / to run Drupal at the root of the app server.
&lt;/li&gt;
&lt;li&gt;Oh yeah, you&#039;ll probably want to connect to a database too, right? In the admin panel, go to Resources &gt; JDBC &gt; Connection Pools and create a new Connection Pool. Let&#039;s call it &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;mysqlpool&lt;/code&gt;&lt;/span&gt;.
&lt;p&gt;Set Datasource Classname to &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;com.&lt;span style=&quot;color: #660066;&quot;&gt;mysql&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;jdbc&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;jdbc2&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;optional&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MysqlConnectionPoolDataSource&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Plug in the following Additional Parameters for your Drupal DB:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;password
user
databaseName
portNumber
serverName&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That &lt;em&gt;should&lt;/em&gt; be about it.&lt;/p&gt;
&lt;div style=&quot;font-size:0.8em;&quot;&gt;
&lt;a name=&quot;1&quot;&gt;&lt;sup&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/sup&gt;&lt;/a&gt;: There are a couple of reasons I think this is interesting. First, Caucho claims that Quercus should run PHP apps as least as fast as Apache + &lt;a href=&quot;http://php.net/apc&quot;&gt;APC&lt;/a&gt;, and I&#039;ve seen numbers of 24-56% faster for the &lt;a href=&quot;http://www.jroller.com/ferg/entry/quercus_benchmarking&quot;&gt;same complex app&lt;/a&gt;. Second, you can use Java functions natively from within PHP. Working in an environment with a lot of Java code, that&#039;s potentially appealing, especially for complex scientific functions I don&#039;t really want to re-implement in PHP. Third, the ability to deploy a .war file containing the whole Drupal docroot is also interesting.&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;2&quot;&gt;&lt;sup&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/sup&gt;&lt;/a&gt;: I expect that most Drupal developers aren&#039;t using IDEs like Eclipse or NetBeans, so I&#039;m just using command-line tools here.&lt;/div&gt;
</description>
 <comments>http://www.christianyates.com/blog/glassfish/drupal-glassfish-clean-urls-using-url-rewrite-filter#comments</comments>
 <category domain="http://www.christianyates.com/taxonomy/term/33">Drupal</category>
 <category domain="http://www.christianyates.com/category/subject/glassfish">Glassfish</category>
 <category domain="http://www.christianyates.com/category/subject/java">Java</category>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <category domain="http://www.christianyates.com/category/subject/quercus">Quercus</category>
 <category domain="http://www.christianyates.com/category/subject/urlrewritefilter">UrlRewriteFilter</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/652</wfw:commentRss>
 <pubDate>Tue, 17 Mar 2009 23:16:35 -0400</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">652 at http://www.christianyates.com</guid>
</item>
<item>
 <title>Finder-like column view from hierarchical lists with jQuery</title>
 <link>http://www.christianyates.com/blog/jquery/finder-column-view-hierarchical-lists-jquery</link>
 <description>&lt;p&gt;Mac OS X&#039;s Finder features a nifty &lt;a href=&quot;http://en.wikipedia.org/wiki/NeXT&quot;&gt;NeXT&lt;/a&gt; throwback - the column view. This lets you browse through a hierarchy of files in a relatively compact space, and still see your path through directory structure.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;#download&quot;&gt;Ok already, just show me the downloads!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://static.christianyates.com/columnview.png&quot; alt=&quot;OS X Column View&quot;/&gt;&lt;/p&gt;
&lt;p&gt;There are a couple of jQuery plugins in the &lt;a href=&quot;http://plugins.jquery.com&quot;&gt;archive&lt;/a&gt; that claim to do this, but none really fit my core needs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The script should be unobtrusive, and let you transform a hierarchy of unordered lists of links (like a &lt;a href=&quot;http://drupal.org&quot;&gt;Drupal&lt;/a&gt; menu) into a column view, without requiring altering the underlying markup.&lt;/li&gt;
&lt;li&gt;The script shouldn&#039;t require a bunch of support files - css, images, etc.&lt;/li&gt;
&lt;li&gt;The output should work basically like a Finder list view - allow keyboard navigation with arrow keys, show when items have submenus (i.e. differentiate between &quot;folders&quot; and &quot;files&quot;).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I think I&#039;ve achieved two out of three - keyboard navigation doesn&#039;t seem to work in Webkit browsers (Safari and Chrome), and I got lazy and used the excellent &lt;a href=&quot;http://plugins.jquery.com/project/livequery&quot;&gt;Livequery&lt;/a&gt; plugin rather than rebinding events - but otherwise, it transforms this:&lt;/p&gt;
&lt;ul class=&quot;menu&quot; id=&quot;original&quot;&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/node/add&quot;&gt;Create content&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/node/add/planetview&quot;&gt;Map&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/node/add/page&quot;&gt;Page&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/node/add/story&quot;&gt;Story&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/devel/queries&quot;&gt;Database queries&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/filebrowser&quot;&gt;Filebrowser&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/tracker&quot;&gt;Recent posts&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/user/1&quot;&gt;My account&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin&quot;&gt;Administer&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/content&quot; title=&quot;Manage your site&#039;s content.&quot;&gt;Content management&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/taxonomy&quot; title=&quot;Create vocabularies and terms to categorize your content.&quot;&gt;Categories&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/comment&quot; title=&quot;List and edit site comments and the comment moderation queue.&quot;&gt;Comments&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/node&quot; title=&quot;View, edit, and delete your site&#039;s content.&quot;&gt;Content&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/types&quot; title=&quot;Manage posts by content type, including default status, front page promotion, etc.&quot;&gt;Content types&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/node-settings&quot; title=&quot;Control posting behavior, such as teaser length, requiring previews before posting, and the number of posts on the front page.&quot;&gt;Post settings&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/rss-publishing&quot; title=&quot;Configure the number of items per feed and whether feeds should be titles/teasers/full-text.&quot;&gt;RSS publishing&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/signup&quot; title=&quot;View all signup-enabled posts, and open or close signups on them.&quot;&gt;Signup administration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/build&quot; title=&quot;Control how your site looks and feels.&quot;&gt;Site building&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/block&quot; title=&quot;Configure what block content appears in your site&#039;s sidebars and other regions.&quot;&gt;Blocks&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/menu&quot; title=&quot;Control your site&#039;s navigation menu, primary links and secondary links. as well as rename and reorganize menu items.&quot;&gt;Menus&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/menutree&quot; title=&quot;Configure page titles and intro text for menu tree pages.&quot;&gt;Menu trees&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/modules&quot; title=&quot;Enable or disable add-on modules for your site.&quot;&gt;Modules&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/themes&quot; title=&quot;Change which theme your site uses or allows users to set.&quot;&gt;Themes&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/path&quot; title=&quot;Change your site&#039;s URL paths by aliasing them.&quot;&gt;URL aliases&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/views&quot; title=&quot;Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented.&quot;&gt;Views&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/settings&quot; title=&quot;Adjust basic site configuration options.&quot;&gt;Site configuration&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/admin&quot; title=&quot;Settings for how your administrative pages should look.&quot;&gt;Administration theme&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/clean-urls&quot; title=&quot;Enable or disable clean URLs for your site.&quot;&gt;Clean URLs&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/date-time&quot; title=&quot;Settings for how Drupal displays date and time, as well as the system&#039;s default timezone.&quot;&gt;Date and time&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/devel&quot;&gt;Devel&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/error-reporting&quot; title=&quot;Control how Drupal deals with errors including 403/404 errors as well as PHP error reporting.&quot;&gt;Error reporting&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/filebrowser&quot; title=&quot;Set filebrowser root folder and display properties.&quot;&gt;Filebrowser&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/file-system&quot; title=&quot;Tell Drupal where to store uploaded files and how they are accessed.&quot;&gt;File system&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/image-toolkit&quot; title=&quot;Choose which image toolkit to use if you have installed optional toolkits.&quot;&gt;Image toolkit&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/filters&quot; title=&quot;Configure how content input by users is filtered, including allowed HTML tags, PHP code tags. Also allows enabling of module-provided filters.&quot;&gt;Input formats&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/jquery_ui&quot; title=&quot;Configure settings for jQuery UI module.&quot;&gt;jQuery UI&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/lightbox2&quot; title=&quot;Allows the user to configure the lightbox2 settings&quot;&gt;Lightbox2&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/msffimages&quot;&gt;Mars Space Flight Facility Image Tool&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/performance&quot; title=&quot;Enable or disable page caching for anonymous users, and enable or disable CSS preprocessor.&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/planetview&quot; title=&quot;Configuration options for MSFF Planetary Data Viewer&quot;&gt;Planet Viewer&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/signup&quot; title=&quot;Configure settings for signups.&quot;&gt;Signup&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/simplemenu&quot; title=&quot;Select the menu to display.&quot;&gt;SimpleMenu&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/site-information&quot; title=&quot;Change basic site information, such as the site name, slogan, e-mail address, mission, front page and more.&quot;&gt;Site information&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/site-maintenance&quot; title=&quot;Take the site off-line for maintenance or bring it back online.&quot;&gt;Site maintenance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/user&quot; title=&quot;Manage your site&#039;s users, groups and access to site features.&quot;&gt;User management&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/access&quot; title=&quot;Determine access to features by selecting permissions for roles.&quot;&gt;Access control&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/rules&quot; title=&quot;List and create rules to disallow usernames, e-mail addresses, and IP addresses.&quot;&gt;Access rules&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/roles&quot; title=&quot;List, edit, or add user roles.&quot;&gt;Roles&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/user&quot; title=&quot;List, add, and edit users.&quot;&gt;Users&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/settings&quot; title=&quot;Configure default behavior of users, including registration requirements, e-mails, and user pictures.&quot;&gt;User settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/logs&quot; title=&quot;View system logs and other status information.&quot;&gt;Logs&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/logs/watchdog&quot; title=&quot;View events that have recently been logged.&quot;&gt;Recent log entries&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/logs/access-denied&quot; title=&quot;View &#039;access denied&#039; errors (403s).&quot;&gt;Top &#039;access denied&#039; errors&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/logs/page-not-found&quot; title=&quot;View &#039;page not found&#039; errors (404s).&quot;&gt;Top &#039;page not found&#039; errors&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/logs/status&quot; title=&quot;Get a status report about your site&#039;s operation and any detected problems.&quot;&gt;Status report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/help&quot;&gt;Help&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/logout&quot;&gt;Log out&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Into this:&lt;/p&gt;
&lt;ul class=&quot;menu&quot; id=&quot;columnized&quot;&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/node/add&quot;&gt;Create content&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/node/add/planetview&quot;&gt;Map&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/node/add/page&quot;&gt;Page&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/node/add/story&quot;&gt;Story&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/devel/queries&quot;&gt;Database queries&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/filebrowser&quot;&gt;Filebrowser&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/tracker&quot;&gt;Recent posts&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/user/1&quot;&gt;My account&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin&quot;&gt;Administer&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/content&quot; title=&quot;Manage your site&#039;s content.&quot;&gt;Content management&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/taxonomy&quot; title=&quot;Create vocabularies and terms to categorize your content.&quot;&gt;Categories&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/comment&quot; title=&quot;List and edit site comments and the comment moderation queue.&quot;&gt;Comments&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/node&quot; title=&quot;View, edit, and delete your site&#039;s content.&quot;&gt;Content&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/types&quot; title=&quot;Manage posts by content type, including default status, front page promotion, etc.&quot;&gt;Content types&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/node-settings&quot; title=&quot;Control posting behavior, such as teaser length, requiring previews before posting, and the number of posts on the front page.&quot;&gt;Post settings&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/rss-publishing&quot; title=&quot;Configure the number of items per feed and whether feeds should be titles/teasers/full-text.&quot;&gt;RSS publishing&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/content/signup&quot; title=&quot;View all signup-enabled posts, and open or close signups on them.&quot;&gt;Signup administration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/build&quot; title=&quot;Control how your site looks and feels.&quot;&gt;Site building&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/block&quot; title=&quot;Configure what block content appears in your site&#039;s sidebars and other regions.&quot;&gt;Blocks&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/menu&quot; title=&quot;Control your site&#039;s navigation menu, primary links and secondary links. as well as rename and reorganize menu items.&quot;&gt;Menus&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/menutree&quot; title=&quot;Configure page titles and intro text for menu tree pages.&quot;&gt;Menu trees&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/modules&quot; title=&quot;Enable or disable add-on modules for your site.&quot;&gt;Modules&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/themes&quot; title=&quot;Change which theme your site uses or allows users to set.&quot;&gt;Themes&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/path&quot; title=&quot;Change your site&#039;s URL paths by aliasing them.&quot;&gt;URL aliases&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/build/views&quot; title=&quot;Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented.&quot;&gt;Views&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/settings&quot; title=&quot;Adjust basic site configuration options.&quot;&gt;Site configuration&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/admin&quot; title=&quot;Settings for how your administrative pages should look.&quot;&gt;Administration theme&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/clean-urls&quot; title=&quot;Enable or disable clean URLs for your site.&quot;&gt;Clean URLs&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/date-time&quot; title=&quot;Settings for how Drupal displays date and time, as well as the system&#039;s default timezone.&quot;&gt;Date and time&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/devel&quot;&gt;Devel&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/error-reporting&quot; title=&quot;Control how Drupal deals with errors including 403/404 errors as well as PHP error reporting.&quot;&gt;Error reporting&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/filebrowser&quot; title=&quot;Set filebrowser root folder and display properties.&quot;&gt;Filebrowser&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/file-system&quot; title=&quot;Tell Drupal where to store uploaded files and how they are accessed.&quot;&gt;File system&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/image-toolkit&quot; title=&quot;Choose which image toolkit to use if you have installed optional toolkits.&quot;&gt;Image toolkit&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/filters&quot; title=&quot;Configure how content input by users is filtered, including allowed HTML tags, PHP code tags. Also allows enabling of module-provided filters.&quot;&gt;Input formats&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/jquery_ui&quot; title=&quot;Configure settings for jQuery UI module.&quot;&gt;jQuery UI&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/lightbox2&quot; title=&quot;Allows the user to configure the lightbox2 settings&quot;&gt;Lightbox2&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/msffimages&quot;&gt;Mars Space Flight Facility Image Tool&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/performance&quot; title=&quot;Enable or disable page caching for anonymous users, and enable or disable CSS preprocessor.&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/planetview&quot; title=&quot;Configuration options for MSFF Planetary Data Viewer&quot;&gt;Planet Viewer&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/signup&quot; title=&quot;Configure settings for signups.&quot;&gt;Signup&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/simplemenu&quot; title=&quot;Select the menu to display.&quot;&gt;SimpleMenu&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/site-information&quot; title=&quot;Change basic site information, such as the site name, slogan, e-mail address, mission, front page and more.&quot;&gt;Site information&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/settings/site-maintenance&quot; title=&quot;Take the site off-line for maintenance or bring it back online.&quot;&gt;Site maintenance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/user&quot; title=&quot;Manage your site&#039;s users, groups and access to site features.&quot;&gt;User management&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/access&quot; title=&quot;Determine access to features by selecting permissions for roles.&quot;&gt;Access control&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/rules&quot; title=&quot;List and create rules to disallow usernames, e-mail addresses, and IP addresses.&quot;&gt;Access rules&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/roles&quot; title=&quot;List, edit, or add user roles.&quot;&gt;Roles&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/user&quot; title=&quot;List, add, and edit users.&quot;&gt;Users&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/user/settings&quot; title=&quot;Configure default behavior of users, including registration requirements, e-mails, and user pictures.&quot;&gt;User settings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;expanded&quot;&gt;&lt;a href=&quot;/admin/logs&quot; title=&quot;View system logs and other status information.&quot;&gt;Logs&lt;/a&gt;&lt;br /&gt;
&lt;ul class=&quot;menu&quot;&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/logs/watchdog&quot; title=&quot;View events that have recently been logged.&quot;&gt;Recent log entries&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/logs/access-denied&quot; title=&quot;View &#039;access denied&#039; errors (403s).&quot;&gt;Top &#039;access denied&#039; errors&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/logs/page-not-found&quot; title=&quot;View &#039;page not found&#039; errors (404s).&quot;&gt;Top &#039;page not found&#039; errors&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/logs/status&quot; title=&quot;Get a status report about your site&#039;s operation and any detected problems.&quot;&gt;Status report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/admin/help&quot;&gt;Help&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;leaf&quot;&gt;&lt;a href=&quot;/logout&quot;&gt;Log out&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;!--[if IE]&gt;&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://static.christianyates.com/excanvas-compressed.js&quot;&gt;&lt;/script&gt;&lt;p&gt;&lt;![endif]--&gt;&lt;/p&gt;
&lt;script src=&quot;http://static.christianyates.com/jquery.livequery.pack.js&quot; type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;script src=&quot;http://static.christianyates.com/columnview/jquery.columnview.js&quot; type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot;&gt;
$(function(){
$(&#039;#columnized&#039;).columnview();
});
&lt;/script&gt;&lt;p&gt;
Usage is pretty basic:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#columnized&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;columnview&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;There are no options. The aesthetics and behavior of the menu are determined by overriding the CSS that it provides, and providing a double-click handler.&lt;/p&gt;
&lt;p&gt;The script provides few CSS classes that can be overridden to change the way the script is displayed.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/*Top level container - set the width, height and border here*/&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  border&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; 1px solid #ccc;
  height&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;5em;
  overflow&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;x&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;auto;
  overflow&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;y&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;hidden;
  white&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;space&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;nowrap;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009966; font-style: italic;&quot;&gt;/*Div containing an individual level of the menu hierarchy*/&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; div &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  height&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;100&lt;/span&gt;%;
  overflow&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;y&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #000066;&quot;&gt;scroll&lt;/span&gt;;
  overflow&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;x&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;hidden;
  float&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;left;
  min&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;width&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;150px;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009966; font-style: italic;&quot;&gt;/*Link*/&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; a &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  display&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;block;
  clear&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;both;
  white&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;space&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;nowrap;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; a canvas&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  padding&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;left&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;1em;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/*A bottom-level element (the furthest down in the hierarchy) is displayed as a 
link, but could be overriden*/&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; .&lt;span style=&quot;color: #660066;&quot;&gt;feature&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  min&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;width&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;200px;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; .&lt;span style=&quot;color: #660066;&quot;&gt;feature&lt;/span&gt; a &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  white&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;space&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;normal;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/*If you want to display links as folders vs. files, you can apply styles to the
.hasChildMenu class*/&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; .&lt;span style=&quot;color: #660066;&quot;&gt;hasChildMenu&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; .&lt;span style=&quot;color: #660066;&quot;&gt;active&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  background&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;color&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;#3671cf;
  color&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;#fff;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009966; font-style: italic;&quot;&gt;/*You can override the color of the triangles here*/&lt;/span&gt;
.&lt;span style=&quot;color: #660066;&quot;&gt;containerobj&lt;/span&gt; .&lt;span style=&quot;color: #660066;&quot;&gt;hasChildMenu&lt;/span&gt; .&lt;span style=&quot;color: #660066;&quot;&gt;widget&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  color&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;black;
  float&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;right;
  text&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;decoration&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;none;
  font&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;size&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;0.7em;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I chose to include these styles in the script rather than as an external file to avoid having to reference external files and worry about their placement on the server.&lt;/p&gt;
&lt;p&gt;I should note that instead of including images for the little triangle widgets, I&#039;m using &lt;a href=&quot;https://developer.mozilla.org/En/Drawing_Graphics_with_Canvas&quot;&gt;Canvas&lt;/a&gt; to draw them, where available. Where it&#039;s not (in Internet Explorer), I put in a little ASCII triangle. I have to admit I did this as much to play around with Canvas as anything else.&lt;/p&gt;
&lt;p&gt;To actually do something with the menu, I chose to use double-clicks, in keeping with the OS X style UI. Here&#039;s a sample handler:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#columnize a&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;livequery&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;dblclick&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  window.&lt;span style=&quot;color: #660066;&quot;&gt;location&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;href&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;When I have time, I&#039;ll probably post up a demo page with some other examples of how to style the menu. In the meantime, you can download the script here:&lt;br /&gt;
&lt;s&gt;&lt;br /&gt;
&lt;strong&gt;For jQuery 1.2.x&lt;/strong&gt; (requires Live Query plugin):&lt;br /&gt;
&lt;a href=&quot;http://static.christianyates.com/jquery.columnview-1.01.js&quot;&gt;jquery.columnview-1.0.1.js [source]&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://static.christianyates.com/jquery.columnview-1.0.1.min.js&quot;&gt;jquery.columnview-1.0.1.min.js [minified]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For jQuery 1.3.x&lt;/strong&gt;:&lt;br /&gt;
&lt;a href=&quot;http://static.christianyates.com/jquery.columnview-1.1.1.js&quot;&gt;jquery.columnview-1.1.1.js [source]&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://static.christianyates.com/jquery.columnview-1.1.1.min.js&quot;&gt;jquery.columnview-1.1.1.min.js [minified]&lt;/a&gt;&lt;br /&gt;
&lt;/s&gt;&lt;br /&gt;
&lt;s&gt;&lt;strong&gt;Note:&lt;/strong&gt; I have only tested this with jQuery 1.2.6, though I&#039;d expect it to work with 1.3.x as well. Of course, 1.3 includes the &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;live&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; method, which might be used in place of LiveQuery. For now, I&#039;m focusing on 1.2.6, as this is what I&#039;m running with all of my Drupal installations.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;&lt;strong&gt;Update:&lt;/strong&gt; I&#039;ve updated the script to work with 1.3.x (tested against 1.3.2) and removed the dependency on the Live Query plugin. We&#039;re using the &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;live&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt; method now. Downloads added above.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;I&#039;ve tested this script in Safari 3.x and 4.x, Chrome, Firefox 3.x, and IE 6 and 7. As previously noted, keyboard navigation doesn&#039;t work yet in Safari and Chrome, and due to silly IE css handling, the width of submenus is fixed (via css) at 200px rather than shrinking to fit the content.&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The latest version of Columnview now supports jQuery version 1.2.x, 1.3.x and 1.4.x. Additionally, keyboard navigation is now available on all browsers when using jQuery 1.3 or later. The Livequery plugin is no longer required, but keyboard navigation is not supported with jQuery 1.2 (at the moment).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 19 April 2010:&lt;/strong&gt; New features added to Columnview&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added control/command- and shift- select options. Shift-select requires jQuery 1.4.x. &lt;strong&gt;Multi-selection is disabled by default&lt;/strong&gt;, but you can enable it in two ways:
&lt;ol&gt;
&lt;li&gt;When calling the method: &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;yourselector&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;columnview&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;multi&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Prior to calling the columnview method:&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;$.&lt;span style=&quot;color: #660066;&quot;&gt;fn&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;columnview&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;defaults&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;multi&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;true&lt;/span&gt;;
$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;yourselector&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;columnview&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Now assigning ID of original hierarchical object to columnview object, to allow easier styling, etc. Old object is reassigned to ID-processed and hidden.&lt;/li&gt;
&lt;li&gt;Fixed assignment of active/inpath classes so that only items that are currently selected have class=active.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a name=&quot;download&quot; href=&quot;http://columnview.googlecode.com/svn/trunk/jquery.columnview.js&quot;&gt;Download latest version&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/columnview/source/browse/&quot;&gt;Browse SVN repository&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://static.christianyates.com/columnview/demo.html&quot;&gt;Demo with jQuery 1.4.x&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://columnview.googlecode.com/files/columnview-1.2.1.tar.gz&quot;&gt;Download demo and latest javascript file&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
 <comments>http://www.christianyates.com/blog/jquery/finder-column-view-hierarchical-lists-jquery#comments</comments>
 <category domain="http://www.christianyates.com/category/subject/hierarchical-lists">hierarchical lists</category>
 <category domain="http://www.christianyates.com/taxonomy/term/27">javascript</category>
 <category domain="http://www.christianyates.com/taxonomy/term/157">jQuery</category>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <category domain="http://www.christianyates.com/category/subject/plugin">plugin</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/650</wfw:commentRss>
 <pubDate>Thu, 26 Feb 2009 23:30:42 -0500</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">650 at http://www.christianyates.com</guid>
</item>
<item>
 <title>About time</title>
 <link>http://www.christianyates.com/blog/s%C3%B8ren/about-time</link>
 <description>&lt;p&gt;Yeah, I finally got around to re-theming my site, and moving it to &lt;a href=&quot;http://www.lighttpd.net/&quot;&gt;Lighty&lt;/a&gt; at the same time.&lt;/p&gt;
&lt;p&gt;How did I manage this? &lt;a href=&quot;http://www.christianyates.com/category/subject/søren&quot;&gt;Søren&lt;/a&gt; was being pacified by his Granddaddy and Grandma Carol:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/bufflehead/3049556938/&quot; title=&quot;DSC_0107 by Christian Yates, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3223/3049556938_1411425dae.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;DSC_0107&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Check out the hair! Yes, it&#039;s still blond in person, despite how it looks in pictures.&lt;/p&gt;
&lt;br class=&quot;clear&quot; /&gt;</description>
 <comments>http://www.christianyates.com/blog/s%C3%B8ren/about-time#comments</comments>
 <category domain="http://www.christianyates.com/taxonomy/term/33">Drupal</category>
 <category domain="http://www.christianyates.com/category/subject/lighty">Lighty</category>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <category domain="http://www.christianyates.com/category/subject/s%C3%B8ren">Søren</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/631</wfw:commentRss>
 <pubDate>Sun, 23 Nov 2008 17:48:24 -0500</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">631 at http://www.christianyates.com</guid>
</item>
<item>
 <title>Semantic Tabs with jQuery</title>
 <link>http://www.christianyates.com/blog/semantic-tabs/semantic-tabs-jquery</link>
 <description>&lt;p&gt;This plugin creates tabbed panels from semantic markup. What does this mean?&lt;/p&gt;
&lt;p&gt;Many (most?) javascript tab solutions tend to take the following approach: In the markup, create a list of elements to use as the tabs themselves, then create a list of elements to use as the tab panels, like so:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;ul&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;Tab1&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;Tab2&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;Tab3&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;ul&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  Panel &lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  Panel &lt;span style=&quot;color: #CC0000;&quot;&gt;2&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  Panel &lt;span style=&quot;color: #CC0000;&quot;&gt;3&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This works OK for most users, but with javascript disabled, or using a limited platform (like a cell phone) or to a search engine spider, the headers are disconnected from the content they label.&lt;/p&gt;
&lt;p&gt;This script allows you to structure your markup like so:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;div id&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;mytabset&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;panel&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;Tab1&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
     Panel stuff &lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;panel&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;Tab2&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
     Panel stuff &lt;span style=&quot;color: #CC0000;&quot;&gt;2&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;panel&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;h3&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;Tab3&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;h3&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
     Panel stuff &lt;span style=&quot;color: #CC0000;&quot;&gt;3&lt;/span&gt;
  &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;So that to a spider or device with limited rendering capability, the markup is semantically correct.&lt;/p&gt;
&lt;p&gt;To turn the above markup into a tab set, just apply the following:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#mytabset&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;semantictabs&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  panel&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;panel&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;                &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;//-- Selector of individual panel body&lt;/span&gt;
  head&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;h3&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;                    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;//-- Selector of element containing panel head&lt;/span&gt;
  active&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;:first&#039;&lt;/span&gt;               &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;//-- Selector of panel to activate by default&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This will &#039;tabify&#039; the &#039;mytabset&#039; div, turning the text contained in the H3 elements into the tabs. Styling these is a an exercise for the reader, but generally the following works pretty well:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/*semantic tabs*/&lt;/span&gt;
ul.&lt;span style=&quot;color: #660066;&quot;&gt;semtabs&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  margin&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;0 auto;
  clear&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;both;
  border&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;bottom&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; 4px solid #4c77b3;
  height&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;25px;
  list&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;style&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;none &lt;span style=&quot;color: #339933;&quot;&gt;!&lt;/span&gt;important;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
ul.&lt;span style=&quot;color: #660066;&quot;&gt;semtabs&lt;/span&gt; li &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  float&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;left;
  height&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;30px;
  display&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;block;
  margin&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;0 &lt;span style=&quot;color: #339933;&quot;&gt;!&lt;/span&gt;important;
  background&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;image&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;none;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
ul.&lt;span style=&quot;color: #660066;&quot;&gt;semtabs&lt;/span&gt; li a &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span style=&quot;color: #009966; font-style: italic;&quot;&gt;/*  height:15px;*/&lt;/span&gt;
  line&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;height&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;15px;
  display&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;block;
  padding&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; 5px 5em;
  text&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;decoration&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;none;
  font&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;weight&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;bold;
  background&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;color&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;#e6eeee;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
ul.&lt;span style=&quot;color: #660066;&quot;&gt;semtabs&lt;/span&gt; li.&lt;span style=&quot;color: #660066;&quot;&gt;active&lt;/span&gt; a &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  background&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;color&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; #4c77b3;
  color&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; #fff;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/*end semantic tabs*/&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;You can also activate a tab programmatically, like so:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#appcontainer&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;semantictabs&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;activate&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Where 2 is the index of the tab you which to activate (starting from zero, of course).&lt;/p&gt;
&lt;p&gt;See it in action at &lt;a href=&quot;http://viewer.mars.asu.edu&quot;&gt;http://viewer.mars.asu.edu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Download from the &lt;a href=&quot;http://plugins.jquery.com/project/semantictabs&quot;&gt;jQuery Plugins page&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://www.christianyates.com/blog/semantic-tabs/semantic-tabs-jquery#comments</comments>
 <category domain="http://www.christianyates.com/taxonomy/term/157">jQuery</category>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <category domain="http://www.christianyates.com/category/subject/semantic-markup">semantic markup</category>
 <category domain="http://www.christianyates.com/category/subject/semantic-tabs">semantic tabs</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/597</wfw:commentRss>
 <pubDate>Tue, 04 Nov 2008 22:42:07 -0500</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">597 at http://www.christianyates.com</guid>
</item>
<item>
 <title>Multi-column lists with jQuery, an alternative method</title>
 <link>http://www.christianyates.com/blog/mmm-geeky/multi-column-lists-jquery-alternative-method</link>
 <description>&lt;p&gt;So I needed a method to take a long, nested list and turning it into a compact, multiple acolumn list, in order to display it as sort of a site map for the home page for a site I&#039;m working on.&lt;/p&gt;
&lt;p&gt;Being a huge fan of &lt;a href=&quot;http://jquery.com&quot;&gt;jQuery&lt;/a&gt;, it was naturally my go-to library of choice. &lt;/p&gt;
&lt;p&gt;Scanning the &lt;a href=&quot;http://plugins.jquery.com/&quot;&gt;plugins&lt;/a&gt; site, I found a possible solution from a feller called &lt;a href=&quot;http://chillu.com&quot;&gt;Ingo Schommer&lt;/a&gt; called &lt;a href=&quot;http://chillu.com/2007/9/30/jquery-columnizelist-plugin&quot;&gt;columnizeList&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Score, right? Well... not exactly, at least for my case.&lt;/p&gt;
&lt;p&gt;Ingo used some of the methodoligies outlined in &lt;a href=&quot;http://www.alistapart.com/articles/multicolumnlists&quot;&gt;this article on multi-column lists on A List Apart&lt;/a&gt;. One of the caveats of his methodology is that each list item has to be the same height. This works Ok for a lot of use cases, but since I&#039;m using a &lt;a href=&quot;http://www.drupal.org&quot;&gt;Drupal&lt;/a&gt; menu as the source for the list, it could contain arbitrary text I don&#039;t control.&lt;/p&gt;
&lt;p&gt;So, I started from scratch. Instead of relying on consistent line heights, and applying different margin settings to list elements, I instead decided to decompose the large source list into several smaller lists (one for each column) and then use a css &lt;span class=&quot;geshifilter&quot;&gt;&lt;code class=&quot;geshifilter-javascript&quot;&gt;float&lt;/code&gt;&lt;/span&gt; parameter to make them all appear side-by-side.&lt;/p&gt;
&lt;p&gt;Here&#039;s a sample list for a demonstration, cribbed from Ingo&#039;s example:&lt;/p&gt;
&lt;ol id=&quot;testcase&quot;&gt;
&lt;li&gt;harold (3550)&lt;/li&gt;
&lt;li&gt;horatio (1320)&lt;/li&gt;
&lt;li&gt;hitler (1120)&lt;/li&gt;
&lt;li&gt;henry (784)&lt;/li&gt;
&lt;li&gt;hector (358)&lt;/li&gt;
&lt;li&gt;haploid (315)&lt;/li&gt;
&lt;li&gt;hopping (50)&lt;/li&gt;
&lt;li&gt;herbert mulroney (44)&lt;/li&gt;
&lt;li&gt;hopscotching (29)&lt;/li&gt;
&lt;li&gt;hominibus (19)&lt;/li&gt;
&lt;li&gt;honkey (19)&lt;/li&gt;
&lt;li&gt;hermoine (18)&lt;/li&gt;
&lt;li&gt;hieronymus (13)&lt;/li&gt;
&lt;li&gt;halliburton	(12)&lt;/li&gt;
&lt;li&gt;hummer (10)&lt;/li&gt;
&lt;li&gt;harlod (10)&lt;/li&gt;
&lt;li&gt;heironymious (9)&lt;/li&gt;
&lt;li&gt;hemorrhoids (7)&lt;/li&gt;
&lt;li&gt;hammersack (6)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(apparently a list of the most common fillers for the middle initial in &lt;a href=&quot;http://tenser.typepad.com/tenser_said_the_tensor/2007/01/what_does_the_h.html&quot;&gt;Jesus H. Christ&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Anyway, here&#039;s what my script does to the above list:&lt;/p&gt;
&lt;script src=&quot;/files/jquery.columnizelist.js&quot; type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
$(document).ready(function(){
    $(&#039;#testcase2&#039;).columnizeList({cols:3,constrainWidth:0});
});
&lt;/script&gt;&lt;ol id=&quot;testcase2&quot;&gt;
&lt;li&gt;harold (3550)&lt;/li&gt;
&lt;li&gt;horatio (1320)&lt;/li&gt;
&lt;li&gt;hitler (1120)&lt;/li&gt;
&lt;li&gt;henry (784)&lt;/li&gt;
&lt;li&gt;hector (358)&lt;/li&gt;
&lt;li&gt;haploid (315)&lt;/li&gt;
&lt;li&gt;hopping (50)&lt;/li&gt;
&lt;li&gt;herbert mulroney (44)&lt;/li&gt;
&lt;li&gt;hopscotching (29)&lt;/li&gt;
&lt;li&gt;hominibus (19)&lt;/li&gt;
&lt;li&gt;honkey (19)&lt;/li&gt;
&lt;li&gt;hermoine (18)&lt;/li&gt;
&lt;li&gt;hieronymus (13)&lt;/li&gt;
&lt;li&gt;halliburton	(12)&lt;/li&gt;
&lt;li&gt;hummer (10)&lt;/li&gt;
&lt;li&gt;harlod (10)&lt;/li&gt;
&lt;li&gt;heironymious (9)&lt;/li&gt;
&lt;li&gt;hemorrhoids (7)&lt;/li&gt;
&lt;li&gt;hammersack (6)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And here&#039;s the code:&lt;/p&gt;
&lt;p&gt;&lt;!--&lt;iframe width=&quot;490&quot; height=&quot;400&quot; src=&quot;/files/jquery.columnizelist.js&quot;&gt;&lt;/iframe&gt;--&gt;&lt;br /&gt;
&lt;div class=&quot;geshifilter&quot;&gt;&lt;pre class=&quot;javascript geshifilter-javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;/*
Copyright (c) 2007 Christian yates
christianyates.com
chris [at] christianyates [dot] com
Licensed under the MIT License: 
http://www.opensource.org/licenses/mit-license.php
&amp;nbsp;
Inspired by work of Ingo Schommer
http://chillu.com/2007/9/30/jquery-columnizelist-plugin
*/&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
  $.&lt;span style=&quot;color: #660066;&quot;&gt;fn&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;columnizeList&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;settings&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    settings &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $.&lt;span style=&quot;color: #660066;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
      cols&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
      constrainWidth&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; 0
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; settings&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// var type=this.getNodeType();&lt;/span&gt;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; container &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;container.&lt;span style=&quot;color: #660066;&quot;&gt;length&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; 0&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt;; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; prevColNum &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;10000&lt;/span&gt;; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Start high to avoid appending to the wrong column&lt;/span&gt;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; size &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;li&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; percol &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Math.&lt;span style=&quot;color: #660066;&quot;&gt;ceil&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;size&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;settings.&lt;span style=&quot;color: #660066;&quot;&gt;cols&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; tag &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; container&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;0&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;tagName&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;toLowerCase&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; classN &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; container&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;0&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;className&lt;/span&gt;;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; colwidth &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Math.&lt;span style=&quot;color: #660066;&quot;&gt;floor&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;container&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;settings.&lt;span style=&quot;color: #660066;&quot;&gt;cols&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; maxheight &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; 0;
    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Prevent stomping on existing ids with pseudo-random string&lt;/span&gt;
    &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; rand &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Math.&lt;span style=&quot;color: #660066;&quot;&gt;floor&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;Math.&lt;span style=&quot;color: #660066;&quot;&gt;random&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;toPrecision&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt;10e6&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;&amp;lt;ul id=&amp;quot;container&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;rand&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;&amp;quot; class=&amp;quot;&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;classN&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;css&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;width&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;container&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;px&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;insertBefore&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;container&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;li&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; currentColNum &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Math.&lt;span style=&quot;color: #660066;&quot;&gt;floor&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;percol&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
      &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;prevColNum &lt;span style=&quot;color: #339933;&quot;&gt;!=&lt;/span&gt; currentColNum&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#col&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; rand &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; prevColNum&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; maxheight&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt; maxheight &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#col&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; rand &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; prevColNum&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
        $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#container&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;rand&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;&amp;lt;li class=&amp;quot;list-column-processed&amp;quot;&amp;gt;&amp;lt;&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;tag&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039; id=&amp;quot;col&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;rand&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;currentColNum&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;&amp;quot;&amp;gt;&amp;lt;/&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;tag&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;&amp;gt;&amp;lt;/li&amp;gt;&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
      &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
      $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;value&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;i&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;appendTo&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#col&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;rand&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;currentColNum&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
      prevColNum &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; currentColNum;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;li.list-column-processed&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;css&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;float&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;left&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
      &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;list-style&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;none&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
      &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;margin&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;0&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
      &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;padding&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;0
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;settings.&lt;span style=&quot;color: #660066;&quot;&gt;constrainWidth&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
      $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;.list-column-processed&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;css&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;width&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;colwidth &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;px&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;;
    $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#container&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;rand&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;after&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#container&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;rand&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;tag&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;maxheight&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Add CSS to columns&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;remove&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;        
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;;
  &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;jQuery&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://plugins.jquery.com/project/ya-list-columnizer&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are only two parameters - &lt;b&gt;cols&lt;/b&gt;, the number of columns to break the list into, and &lt;b&gt;constrainWidth&lt;/b&gt; a boolean (defaulting to false) to specify whether you want all columns to be the same width.&lt;/p&gt;
&lt;p&gt;I&#039;ve tested with IE 6&amp;amp;7, FF3, Safari3 and Opera 9.something (for the three Opera users on the planet). The code could use a bit of refactoring perhaps for the purpose of beautification.&lt;/p&gt;
&lt;p&gt;Update: I&#039;ve added this to the &lt;a href=&quot;http://plugins.jquery.com/project/ya-list-columnizer&quot;&gt;jQuery Plugin site&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://www.christianyates.com/blog/mmm-geeky/multi-column-lists-jquery-alternative-method#comments</comments>
 <category domain="http://www.christianyates.com/category/subject/development">development</category>
 <category domain="http://www.christianyates.com/taxonomy/term/33">Drupal</category>
 <category domain="http://www.christianyates.com/taxonomy/term/27">javascript</category>
 <category domain="http://www.christianyates.com/taxonomy/term/157">jQuery</category>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/581</wfw:commentRss>
 <pubDate>Fri, 22 Aug 2008 17:45:29 -0400</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">581 at http://www.christianyates.com</guid>
</item>
<item>
 <title>NASA: Making it as difficult as possible to get the data you need</title>
 <link>http://www.christianyates.com/blog/rant/nasa-making-it-difficult-possible-get-data-you-need</link>
 <description>&lt;p&gt;It&#039;s becoming clear to me that many (perhaps not all) NASA web sites and web services are set up in such a way that it&#039;s damn near impossible to get the information you need out of them without chanting the correct incantation and sacrificing a chicken. It&#039;s a bit frustrating, and a bit like the web c. 1999.&lt;/p&gt;
&lt;p&gt;Case in point: I need to retrieve data from a &lt;a href=&quot;http://ssd.jpl.nasa.gov/?horizons&quot;&gt;JPL data service&lt;/a&gt; and a &lt;a href=&quot;http://www.giss.nasa.gov/tools/mars24/&quot;&gt;Goddard&lt;/a&gt; application to feed data into a little widget I&#039;m working on for the &lt;a href=&quot;http://www.mars.asu.edu&quot;&gt;Explore Mars&lt;/a&gt; site (old site still up). &lt;/p&gt;
&lt;p&gt;In an ideal world, I&#039;d query those services and they&#039;d return something in spiffy XML or JSON format, which I could parse with a script or &lt;a href=&quot;http://www.adobe.com/products/flex/&quot;&gt;Flex&lt;/a&gt;, and I&#039;d be done.&lt;/p&gt;
&lt;p&gt;In a less ideal world, the web pages would be formatted in such a way that I could pull the data I was looking for out of the HTML source code using some clear delimiters.&lt;/p&gt;
&lt;p&gt;Unfortunately, the reality is somewhat less convenient:&lt;/p&gt;
&lt;p&gt;The JPL Horizons service has three ways to access data - &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A web service that returns data in a big &amp;lt;PRE&amp;gt; tag box, which for you non-geeks is basically a big  wad of text. Computers don&#039;t like to find bits within big wads of text, at least not without substantial extra effort. Plus, the input parameters to the script that generates the results is entirely obfuscated.&lt;/li&gt;
&lt;li&gt;An interactive Telnet service that doesn&#039;t seem to have a way to pass all the parameters for the data you&#039;re seeking at once, and STILL returns a big wad of text at the end.&lt;/li&gt;
&lt;li&gt;A batch email service that does return some of the data we&#039;re looking for, but again, wrapped in a crapload of extra text.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Goddard page is just as inconvenient - no friendly text tools there at all, just a goofy Java applet. Sigh. Guess I can run all the equations to calculate the data myself.&lt;/p&gt;
&lt;p&gt;My hope is that I can make my own little corner of the NASA web-o-sphere somewhat more friendly to those that wish to get at the data without spending their days figuring out ways to scrape screens and parsing emails.&lt;/p&gt;
&lt;p&gt;Disclaimer: I understand why some of these tools may have been built this way, but c&#039;mon, I know it really is rocket science, but is it that hard to push this data out into an XML file, or at least CSV, if you&#039;ve gone through all the trouble of making the calculations already? Or, just format your web pages so that the data is wrapped in a reasonably parseable tag structure?&lt;/p&gt;
&lt;br class=&quot;clear&quot; /&gt;</description>
 <comments>http://www.christianyates.com/blog/rant/nasa-making-it-difficult-possible-get-data-you-need#comments</comments>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <category domain="http://www.christianyates.com/category/subject/nasa">NASA</category>
 <category domain="http://www.christianyates.com/taxonomy/term/6">Rant</category>
 <category domain="http://www.christianyates.com/taxonomy/term/1">Work</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/577</wfw:commentRss>
 <pubDate>Fri, 25 Jul 2008 13:31:50 -0400</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">577 at http://www.christianyates.com</guid>
</item>
<item>
 <title>Morgan goes to the beach</title>
 <link>http://www.christianyates.com/blog/morgan/morgan-goes-beach</link>
 <description>&lt;p&gt;Here&#039;s &lt;a href=&quot;http://morganbonner.blogspot.com&quot;&gt;Morgan&#039;s&lt;/a&gt; blow by blow report from his trip to the beach. Yes, he apparently twittered every couple of minutes. Please join me in making fun of him. Read from the bottom up.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
morganbonner: This is your beach reporter Morgan signing off. I have survived another battle with the elements, though only by sheer luck.... about 1 hour ago from web&lt;/p&gt;
&lt;p&gt;morganbonner: Yep, she&#039;s packing up to leave. Wouldn&#039;t you know it, an attractive woman just arrived in front of me. Figures. about 1 hour ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: It appears Allison is growing tired of inflicting the nerd-equivlient of waterboarding on me. She seems ready to leave.... about 1 hour ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: How many Sundays left without football? Eight? Goddamnit. about 1 hour ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: A couple of dudes are rubbing sunsreen on each other directly in front of me. Taking glasses off in 5...4...3....2....1.... about 1 hour ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: I don&#039;t want to take my iPod out for fear of getting sand in it. Christ this sucks. about 1 hour ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: Allison says that she will never drag me to the beach again if I buy her a pool. I am seriously considering her proposal. about 2 hours ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: Due to the liberal application of sunscreen on my face, my glasses keep falling down my nose. This is very upsetting to me. about 2 hours ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: Allison says I need to go in the water. Yes, because being lunch for some shark is going to make me so much more comfortable. about 2 hours ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: So, you&#039;re just supposed to lay here? about 2 hours ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: A large cloud has arrived overhead. Ha ha! Morgan 1, Day ball 0..... about 2 hours ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: There is a bird hovering near me. If only the crossbow I just purchased from www.budk.com had arrived yesterday, I could solve this problem. about 2 hours ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: Besides Allison, there is one attractive woman on this beach. One. And even she&#039;s kind of a Chubby Chubberson. What up with that? about 2 hours ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: In the immortal words of one Anakin Skywalker.....&quot;I hate sand. It gets everywhere....&quot; about 3 hours ago from web	&lt;/p&gt;
&lt;p&gt;morganbonner: On our way to the beach. So giant day ball....we meet again at last, but this time the advantage is mine!! about 3 hours ago from web&lt;/p&gt;&lt;/blockquote&gt;
&lt;br class=&quot;clear&quot; /&gt;</description>
 <comments>http://www.christianyates.com/blog/morgan/morgan-goes-beach#comments</comments>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <category domain="http://www.christianyates.com/category/subject/morgan">Morgan</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/574</wfw:commentRss>
 <pubDate>Sun, 06 Jul 2008 14:27:11 -0400</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">574 at http://www.christianyates.com</guid>
</item>
<item>
 <title>My first real contribution to open source</title>
 <link>http://www.christianyates.com/blog/software/my-first-real-contribution-open-source</link>
 <description>&lt;p&gt;So I finally gave something back. Granted, in proportion to how I&#039;ve benefitted from open source software over the years, it&#039;s not much.  But it&#039;s (marginally) better than nothing, right?&lt;/p&gt;
&lt;p&gt;I released a &lt;a href=&quot;http://drupal.org&quot;&gt;Drupal&lt;/a&gt; module I call &lt;a href=&quot;http://drupal.org/project/commentify&quot;&gt;Commentify&lt;/a&gt;, which is one of several modules I wrote (or thought up/architected) to integrate Drupal with the proprietary CMS we use at work.&lt;/p&gt;
&lt;p&gt;This happens to be the module with the widest potential appeal, since I can&#039;t imagine too many people are interested in modules that interface with proprietary registration systems, or with non-mainstream, non-public video vendors. (Randy&#039;s Location Ads module rocked, but there&#039;s no way that&#039;s ever going to be ported to Drupal 5.x or 6.x)&lt;/p&gt;
&lt;p&gt;Basically, it lets you attach Drupal as a commenting solution to any sort of foreign content management system.&lt;/p&gt;
&lt;p&gt;It was something of an inauspicious release, because I managed to make not one but TWO big, bonehead mistakes with &lt;a href=&quot;http://www.nongnu.org/cvs/&quot;&gt;CVS&lt;/a&gt;, which I blame on haste and my preference for and familiarity with &lt;a href=&quot;http://en.wikipedia.org/wiki/Subversion_(software)&quot;&gt;Subversion&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Embarrassing, but they were fixed with some help from the &lt;a href=&quot;http://drupal.org/user/83&quot;&gt;CVS guru&lt;/a&gt; at Drupal.org.&lt;/p&gt;
&lt;br class=&quot;clear&quot; /&gt;</description>
 <comments>http://www.christianyates.com/blog/software/my-first-real-contribution-open-source#comments</comments>
 <category domain="http://www.christianyates.com/taxonomy/term/33">Drupal</category>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <category domain="http://www.christianyates.com/category/subject/open-source">open source</category>
 <category domain="http://www.christianyates.com/taxonomy/term/7">software</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/534</wfw:commentRss>
 <pubDate>Tue, 25 Mar 2008 12:45:12 -0400</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">534 at http://www.christianyates.com</guid>
</item>
<item>
 <title>High productivity</title>
 <link>http://www.christianyates.com/blog/mmm-geeky/high-productivity</link>
 <description>&lt;p&gt;Have I mentioned that I loves me some Drupal?&lt;/p&gt;
&lt;p&gt;Oh yes. I probably have. Anyway, in the last 48 hours of last week I managed to take two sites from photoshop mockup to fully functioning. Well, almost, anyway. There are of course some minor issues with Internet Exploder to deal with, and some pages to be tweaked.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;inline left&quot;&gt;&lt;a href=&quot;http://mom2momsc.com&quot;&gt;&lt;img src=&quot;http://www.christianyates.com/files/images/mom2mom.thumbnail.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image thumbnail&quot; width=&quot;237&quot; height=&quot;250&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;inline left&quot;&gt;&lt;a href=&quot;http://heritage.islandpacket.com&quot;&gt;&lt;img src=&quot;http://www.christianyates.com/files/images/heritage.thumbnail.png&quot; alt=&quot;&quot; title=&quot;&quot;  class=&quot;image thumbnail&quot; width=&quot;147&quot; height=&quot;250&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We created a common template architecture for niche sites that can rapidly be reskinned with CSS to create unique sites with minimal code changes. The rest, from the &lt;a href=&quot;http://heritage.islandpacket.com/courseguide/harbour-town-golf-links&quot;&gt;Heritage site course guide&lt;/a&gt; to the &lt;a href=&quot;http://mom2momsc.com/brag-book-photos-videos&quot;&gt;Mom2MomSC.com multimedia sharing page&lt;/a&gt; was implemented with a minimum of coding, and in very short order using community-contributed Drupal modules. We plugged in our proprietary &lt;a href=&quot;http://omniture.com&quot;&gt;Omniture&lt;/a&gt; analytics module, &lt;a href=&quot;http://vmix.com&quot;&gt;Vmix&lt;/a&gt; video integration and my own Videowrapper module to round out the sites.&lt;/p&gt;
&lt;p&gt;I&#039;m a fan of more abstracted frameworks like Ruby on Rails, Django and the like for highly specialized vertical applications, but for a rapid time-to market general purpose application platform it&#039;s hard to beat Drupal, where most of the common hooks like authentication, access control, content organization, are already in place, and hundreds (thousands) of other high-quality modules are &lt;a href=&quot;http://drupal.org/projects/Modules/name&quot;&gt;just a click away&lt;/a&gt;. And if you want to plug in your own alternate solutions (like we have for integration with a proprietary corporate registration system), you can do that too. So basically, you can concentrate on features that achieve your business goals, rather than the ancillary elements.&lt;/p&gt;
&lt;p&gt;What would you rather do? Spend your time an energy reinventing the wheel, or building revenue and audience generating products?&lt;/p&gt;
&lt;p&gt;IMHO, which is worth what you paid for it, I&#039;d rather run something that got me 95% of the way on a project and let me spend most of my time on the remaining edge cases, optimization and security than spend 95% of my time just getting the framework built to support whatever business goals I have.&lt;/p&gt;
&lt;br class=&quot;clear&quot; /&gt;</description>
 <comments>http://www.christianyates.com/blog/mmm-geeky/high-productivity#comments</comments>
 <category domain="http://www.christianyates.com/category/subject/development">development</category>
 <category domain="http://www.christianyates.com/taxonomy/term/33">Drupal</category>
 <category domain="http://www.christianyates.com/taxonomy/term/3">Mmm... Geeky</category>
 <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.christianyates.com/crss/node/533</wfw:commentRss>
 <pubDate>Sun, 23 Mar 2008 21:01:49 -0400</pubDate>
 <dc:creator>chris</dc:creator>
 <guid isPermaLink="false">533 at http://www.christianyates.com</guid>
</item>
</channel>
</rss>
