<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>drupal</title>
  <link rel="alternate" type="text/html" href="http://tumbleweed.org.za/tags/drupal"/>
  <link rel="self" type="application/atom+xml" href="http://tumbleweed.org.za/taxonomy/term/39/atom/feed"/>
  <id>http://tumbleweed.org.za/taxonomy/term/39/atom/feed</id>
  <updated>2008-09-14T20:41:18+00:00</updated>
  <entry>
    <title>Drupal Hacking</title>
    <link rel="alternate" type="text/html" href="http://tumbleweed.org.za/2008/09/19/drupal-hacking" />
    <id>http://tumbleweed.org.za/2008/09/19/drupal-hacking</id>
    <published>2008-09-19T12:15:16+00:00</published>
    <updated>2008-09-19T12:15:16+00:00</updated>
    <author>
      <name>tumbleweed</name>
    </author>
    <category term="drupal" />
    <category term="technical" />
    <category term="website" />
    <summary type="html"><![CDATA[<p>I apologise for my last post on this topic, it probably wasn't very interesting :-)</p>

<p>I've done the Drupal 6 upgrade, and it was relatively painless. Most modules ported smoothly, a few required me to learn how to port modules to Drupal 6, and one I just gave up on.</p>

<p>On the whole, the porting is simple, Druplal.org has <a href="http://drupal.org/update/modules">a pretty good howto</a> on the topic. A few APIs have changed, and that's about it. A great tool to help with this is the <a href="http://drupal.org/project/coder">coder</a> module, which knows about the API changes, as well as Drupal's <a href="http://drupal.org/coding-standards">coding standards</a>.</p>

<p>I've added the <a href="http://drupal.org/project/geshifilter">GeSHi</a> module for code syntax highlighting (apologies for the planet-spam caused by this), and I've moved from <a href="http://drupal.org/project/marksmarty">marksmarty</a> to <a href="http://drupal.org/project/markdown">markdown</a> + <a href="http://drupal.org/project/typogrify">typogrify</a> (which I had to <a href="http://drupal.org/node/308400#comment-1018480">port to Drupal 6</a>). I'm not too happy with the geshi colour-scheme and indenting, but it does a good enough job. I should write a "command prompt" mode for it, but that can wait for now...</p>

<p><a href="http://drupal.org/project/akismet">Akismet</a> is currently totally broken for Drupal 6, even if it's labelled as being in beta. I got about half way through porting it before giving up and switching to <a href="http://drupal.org/project/mollom">mollom</a>, which looks like a pretty good replacement (and it takes care of the sign-up form too).</p>

<p>Finally, the subject of input-filters. Drupal lets you define a "default filter", but that filter has to be available for everyone, even comments. So your default filter has to protect against XSS. I'd much prefer it if commenters used a simple, locked-down input-format, and I used a nice markdown format.</p>

<p>I'm <a href="http://groups.drupal.org/node/8911">not the only one to notice this</a>, and it seems like it'll be fixed in Drupal 7. Until then, I'm using <a href="http://drupal.org/project/remember_filter">remember-filter</a> which remembers that I use markdown, and all the commenters use the default, locked-down filter. (Again, <a href="http://drupal.org/node/235380#comment-1017934">ported</a>.)</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I apologise for my last post on this topic, it probably wasn't very interesting :-)</p>

<p>I've done the Drupal 6 upgrade, and it was relatively painless. Most modules ported smoothly, a few required me to learn how to port modules to Drupal 6, and one I just gave up on.</p>

<p>On the whole, the porting is simple, Druplal.org has <a href="http://drupal.org/update/modules">a pretty good howto</a> on the topic. A few APIs have changed, and that's about it. A great tool to help with this is the <a href="http://drupal.org/project/coder">coder</a> module, which knows about the API changes, as well as Drupal's <a href="http://drupal.org/coding-standards">coding standards</a>.</p>

<p>I've added the <a href="http://drupal.org/project/geshifilter">GeSHi</a> module for code syntax highlighting (apologies for the planet-spam caused by this), and I've moved from <a href="http://drupal.org/project/marksmarty">marksmarty</a> to <a href="http://drupal.org/project/markdown">markdown</a> + <a href="http://drupal.org/project/typogrify">typogrify</a> (which I had to <a href="http://drupal.org/node/308400#comment-1018480">port to Drupal 6</a>). I'm not too happy with the geshi colour-scheme and indenting, but it does a good enough job. I should write a "command prompt" mode for it, but that can wait for now...</p>

<p><a href="http://drupal.org/project/akismet">Akismet</a> is currently totally broken for Drupal 6, even if it's labelled as being in beta. I got about half way through porting it before giving up and switching to <a href="http://drupal.org/project/mollom">mollom</a>, which looks like a pretty good replacement (and it takes care of the sign-up form too).</p>

<p>Finally, the subject of input-filters. Drupal lets you define a "default filter", but that filter has to be available for everyone, even comments. So your default filter has to protect against XSS. I'd much prefer it if commenters used a simple, locked-down input-format, and I used a nice markdown format.</p>

<p>I'm <a href="http://groups.drupal.org/node/8911">not the only one to notice this</a>, and it seems like it'll be fixed in Drupal 7. Until then, I'm using <a href="http://drupal.org/project/remember_filter">remember-filter</a> which remembers that I use markdown, and all the commenters use the default, locked-down filter. (Again, <a href="http://drupal.org/node/235380#comment-1017934">ported</a>.)</p>
    ]]></content>
  </entry>
  <entry>
    <title>Drupal 6</title>
    <link rel="alternate" type="text/html" href="http://tumbleweed.org.za/2008/09/16/drupal-6" />
    <id>http://tumbleweed.org.za/2008/09/16/drupal-6</id>
    <published>2008-09-16T15:45:08+00:00</published>
    <updated>2008-09-16T15:59:53+00:00</updated>
    <author>
      <name>tumbleweed</name>
    </author>
    <category term="drupal" />
    <category term="programming" />
    <category term="website" />
    <summary type="html"><![CDATA[<p>I&#8217;ve been playing with <a href="http://drupal.org/drupal-6.0">Drupal 6</a> while helping my parents set up <a href="http://scct.co.za/" title="The Symphony Choir of Cape Town">a website for their choir</a>. I&#8217;m impressed, it just keeps getting better. I&#8217;ll be upgrading this site in the next day&nbsp;or&nbsp;two.</p>

<p>I had to patch a few modules for Drupal 6 support, but it&#8217;s really easy to do. I only waited this long because most of the modules I used took a while to get Drupal 6 support, but in retrospect, I&nbsp;needn&#8217;t&nbsp;have.</p>

<p>I host a few websites for various people and causes using Drupal, as described <a href="/2007/12/30/drupal-migration">here</a>. Now I&#8217;m feeling the urge to work on Drupal stuff again, and hope to make some big improvements to this site soon. I&#8217;m thinking Activity Stream type stuff for a start (thanks <a href="http://vhata.net/">Vhata</a>).</p>

<p>In other news, I have been helping a house-mate set up a website <a href="http://ctglobalist.za.org/" title="The Cape Town Globalist">for his magazine</a> in <a href="http://wordpress.org/">WordPress</a>. I&#8217;m amazed how much <span class="caps"><span class="caps">PHP</span></span> you need to mangle to get wordpress to do what you want. Watching someone who has no programming experience at all do this stuff can be both entertaining and depressing. What a terrible introduction to programming&#8230; The WordPress <span class="caps"><span class="caps">API</span></span> scares me, it uses <span class="caps"><span class="caps">URL</span></span>-encoded parameters to many functions for a start. And php isn&#8217;t exactly a&nbsp;well-designed&nbsp;language.</p>

<p>Well, I suppose I <a href="/me/linux-history">learned to program in <span class="caps"><span class="caps">BASIC</span></span> 2.0</a> - everyone has to&nbsp;start&nbsp;somewhere&#8230;</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I&#8217;ve been playing with <a href="http://drupal.org/drupal-6.0">Drupal 6</a> while helping my parents set up <a href="http://scct.co.za/" title="The Symphony Choir of Cape Town">a website for their choir</a>. I&#8217;m impressed, it just keeps getting better. I&#8217;ll be upgrading this site in the next day or&nbsp;two.</p>

<p>I had to patch a few modules for Drupal 6 support, but it&#8217;s really easy to do. I only waited this long because most of the modules I used took a while to get Drupal 6 support, but in retrospect, I needn&#8217;t&nbsp;have.</p>

<p>I host a few websites for various people and causes using Drupal, as described <a href="/2007/12/30/drupal-migration">here</a>. Now I&#8217;m feeling the urge to work on Drupal stuff again, and hope to make some big improvements to this site soon. I&#8217;m thinking Activity Stream type stuff for a start (thanks <a href="http://vhata.net/">Vhata</a>).</p>

<p>In other news, I have been helping a house-mate set up a website <a href="http://ctglobalist.za.org/" title="The Cape Town Globalist">for his magazine</a> in <a href="http://wordpress.org/">WordPress</a>. I&#8217;m amazed how much <span class="caps">PHP</span> you need to mangle to get wordpress to do what you want. Watching someone who has no programming experience at all do this stuff can be both entertaining and depressing. What a terrible introduction to programming&#8230; The WordPress <span class="caps">API</span> scares me, it uses <span class="caps">URL</span>-encoded parameters to many functions for a start. And php isn&#8217;t exactly a well-designed&nbsp;language.</p>

<p>Well, I suppose I <a href="/me/linux-history">learned to program in <span class="caps">BASIC</span> 2.0</a> - everyone has to start&nbsp;somewhere&#8230;</p>
    ]]></content>
  </entry>
  <entry>
    <title>Wordpress -&gt; Drupal</title>
    <link rel="alternate" type="text/html" href="http://tumbleweed.org.za/code/wp-to-drupal" />
    <id>http://tumbleweed.org.za/code/wp-to-drupal</id>
    <published>2008-01-02T22:06:44+00:00</published>
    <updated>2008-01-03T18:15:33+00:00</updated>
    <author>
      <name>tumbleweed</name>
    </author>
    <category term="code" />
    <category term="drupal" />
    <category term="Howto" />
    <category term="migrate" />
    <category term="php" />
    <category term="wordpress" />
    <summary type="html"><![CDATA[<p>This is my script for migrating from Wordpress to Drupal. I know that there is already a <a href="http://www.borber.com/en/projects/wp2drupal">migration script</a> out there, but I still wrote my own for a&nbsp;few&nbsp;reasons:</p>

<ul>
<li>My needs are simple, and I knew what&nbsp;I&nbsp;wanted.</li>
<li>I wanted to migrate comments and pingbacks if possible. This turned out to&nbsp;be&nbsp;easy.</li>
<li>I wanted to learn more about coding&nbsp;for&nbsp;Drupal.</li>
<li>I&#8217;d already started writing it when I saw&nbsp;Borek&#8217;s&nbsp;migrator.</li>
<li>I wanted to migrate straight to Drupal 5, not&nbsp;4&nbsp;first.</li>
</ul>

<p>So here&nbsp;it&nbsp;is.</p>

<p>Limitations&nbsp;and&nbsp;bugs:</p>

<ul>
<li>Attached files are copied by requesting them off the old server. But thumbnails aren&#8217;t&nbsp;migrated&nbsp;too.</li>
<li>Pages aren&#8217;t migrated. But I&#8217;m sure this would be a piece of cake&nbsp;to&nbsp;fix</li>
<li>I put dumped my wordpress tables into my drupal database (They are all prefixed with <span class="geshifilter"><code class="geshifilter-text">wp-</code></span>). This is messy, but while <a href="http://drupal.org/node/18429">Drupal&#8217;s multi-database system</a> is a cool and would be perfect, it&#8217;s unworkable when you are debugging. Errors seem to be hooked in drupal, and if you have a broken <span class="caps"><span class="caps">SQL</span></span> query (for example) the error handling code hooks Drupal themes, which aren&#8217;t findable in the alternate-db world you&nbsp;are&nbsp;visiting.</li>
<li>All blog posts are migrated to a single user on the&nbsp;other&nbsp;side.</li>
<li>I&#8217;m pretty sure that I didn&#8217;t solve the character encoding issues, just&nbsp;sidestepped&nbsp;them&#8230;</li>
<li>I didn&#8217;t look into Drupal&nbsp;6&nbsp;compatibility.</li>
</ul>
    ]]></summary>
    <content type="html"><![CDATA[<p>This is my script for migrating from Wordpress to Drupal. I know that there is already a <a href="http://www.borber.com/en/projects/wp2drupal">migration script</a> out there, but I still wrote my own for a few&nbsp;reasons:</p>

<ul>
<li>My needs are simple, and I knew what I&nbsp;wanted.</li>
<li>I wanted to migrate comments and pingbacks if possible. This turned out to be&nbsp;easy.</li>
<li>I wanted to learn more about coding for&nbsp;Drupal.</li>
<li>I&#8217;d already started writing it when I saw Borek&#8217;s&nbsp;migrator.</li>
<li>I wanted to migrate straight to Drupal 5, not 4&nbsp;first.</li>
</ul>

<p>So here it&nbsp;is.</p>

<p>Limitations and&nbsp;bugs:</p>

<ul>
<li>Attached files are copied by requesting them off the old server. But thumbnails aren&#8217;t migrated&nbsp;too.</li>
<li>Pages aren&#8217;t migrated. But I&#8217;m sure this would be a piece of cake to&nbsp;fix</li>
<li>I put dumped my wordpress tables into my drupal database (They are all prefixed with <code>wp-</code>). This is messy, but while <a href="http://drupal.org/node/18429">Drupal&#8217;s multi-database system</a> is a cool and would be perfect, it&#8217;s unworkable when you are debugging. Errors seem to be hooked in drupal, and if you have a broken <span class="caps">SQL</span> query (for example) the error handling code hooks Drupal themes, which aren&#8217;t findable in the alternate-db world you are&nbsp;visiting.</li>
<li>All blog posts are migrated to a single user on the other&nbsp;side.</li>
<li>I&#8217;m pretty sure that I didn&#8217;t solve the character encoding issues, just sidestepped&nbsp;them&#8230;</li>
<li>I didn&#8217;t look into Drupal 6&nbsp;compatibility.</li>
</ul>
    ]]></content>
  </entry>
  <entry>
    <title>Drupal Migration</title>
    <link rel="alternate" type="text/html" href="http://tumbleweed.org.za/2007/12/30/drupal-migration" />
    <id>http://tumbleweed.org.za/2007/12/30/drupal-migration</id>
    <published>2007-12-30T22:35:18+00:00</published>
    <updated>2008-01-03T16:04:50+00:00</updated>
    <author>
      <name>tumbleweed</name>
    </author>
    <category term="blog" />
    <category term="bzr" />
    <category term="drupal" />
    <category term="wordpress" />
    <summary type="html"><![CDATA[<p>As should be obvious to non-feed readers, I&#8217;ve migrated my blog to <a href="http://drupal.org/">Drupal</a>. This fits in with my greater plan of organising myself and moving into digs this holiday. Drupal is an awesome <span class="caps"><span class="caps">CMS</span></span> - or maybe a better description is &#8220;the <em>only</em> decent <span class="caps"><span class="caps">CMS</span></span>&#8221;. I&#8217;ve set up and maintained a few drupal sites, and have been very impressed&nbsp;with&nbsp;it.</p>

<p>I&#8217;ve yet to migrate all my previous blog-posts across, but by the time you see <em>this</em> post, that&#8217;ll be done. Vhata has walked this road before me (albeit from Serendipity), and I intent do follow <a href="http://vhata.net/blog/2007/03/27/converting-from-serendipity-to-drupal">his advice</a>.</p>

<p>In the past, I mantained my <a href="http://www.wordpress.org/">Wordpress</a> blog as an <a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion"><span class="caps"><span class="caps">SVN</span></span> install</a>. This allowed me to install plugins with <span class="geshifilter"><code class="geshifilter-text">svn:externals</code></span>, which made upgrades a doddle. Drupal uses <span class="caps">CVS</span>, so this approach wasn&#8217;t an option. After months of procrastination, I investigated <a href="http://bazaar-vcs.org/ConfigManager">config-manager</a>. With it, I built a recipe for downloading drupal and all the modules I use with it. Then I committed this as a <a href="https://code.launchpad.net/~stefanor/drupal/sr">bzr tree</a>, so that I could base all my sites on a common base. To install a module, I <span class="geshifilter"><code class="geshifilter-text">bzr mv modules/foo drupal/sites/all/modules/</code></span>.</p>

<p>Now to update all my drupal sites, I update my <span class="geshifilter"><code class="geshifilter-text">config-manager</code></span> recipe, and build a new master tree. Commit it to the repo, and push to launchpad. And then <span class="geshifilter"><code class="geshifilter-text">bzr merge</code></span> in all the sites. It&#8217;s pretty quick&nbsp;and&nbsp;painless.</p>

<p>For anyone who&#8217;s interested, the modules I&#8217;m&nbsp;using&nbsp;are:</p>

<ul>
<li><a href="http://drupal.org/project/akismet">akismet</a>&nbsp;-&nbsp;Anti-spam.</li>
<li><a href="http://drupal.org/project/atom">atom</a> - Some people prefer to consume&nbsp;atom&nbsp;feeds</li>
<li><a href="http://drupal.org/project/marksmarty">marksmarty</a> - I&#8217;m a&nbsp;markdown&nbsp;fan.</li>
<li><a href="http://drupal.org/project/openid">openid</a></li>
<li><a href="http://drupal.org/project/openidurl">openidurl</a> - To point to my  <a href="http://www.siege.org/projects/phpMyID/">phpMyID</a></li>
<li><a href="http://drupal.org/project/pathauto">pathauto</a> - A drupal must, I like&nbsp;clean&nbsp;URLs.</li>
<li><a href="http://drupal.org/project/pingback">pingback</a> - The best of the <a href="http://en.wikipedia.org/wiki/Linkback">linkbacks</a></li>
<li><a href="http://drupal.org/project/recaptcha">recaptcha</a> - Stop bogus account creation.&nbsp;(i.e.&nbsp;more-anti-spam)</li>
<li><a href="http://drupal.org/project/xmlsitemap">xmlsitemap</a> - Be polite to the&nbsp;search&nbsp;engines.</li>
</ul>

<p>So far I&#8217;ve had to write a drupal module to <a href="/code/amatomu">support amatomu</a>, and it was a bliss. Drupal&#8217;s <span class="caps"><span class="caps">API</span></span> and code is some of the neatest <span class="caps"><span class="caps">PHP</span></span> I&#8217;ve ever had to&nbsp;work&nbsp;with.</p>

<p>I think I&#8217;ll be happy&nbsp;here&nbsp;:-)</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>As should be obvious to non-feed readers, I&#8217;ve migrated my blog to <a href="http://drupal.org/">Drupal</a>. This fits in with my greater plan of organising myself and moving into digs this holiday. Drupal is an awesome <span class="caps">CMS</span> - or maybe a better description is &#8220;the <em>only</em> decent <span class="caps">CMS</span>&#8221;. I&#8217;ve set up and maintained a few drupal sites, and have been very impressed with&nbsp;it.</p>

<p>I&#8217;ve yet to migrate all my previous blog-posts across, but by the time you see <em>this</em> post, that&#8217;ll be done. Vhata has walked this road before me (albeit from Serendipity), and I intent do follow <a href="http://vhata.net/blog/2007/03/27/converting-from-serendipity-to-drupal">his advice</a>.</p>

<p>In the past, I mantained my <a href="http://www.wordpress.org/">Wordpress</a> blog as an <a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion"><span class="caps">SVN</span> install</a>. This allowed me to install plugins with <code>svn:externals</code>, which made upgrades a doddle. Drupal uses CVS, so this approach wasn&#8217;t an option. After months of procrastination, I investigated <a href="http://bazaar-vcs.org/ConfigManager">config-manager</a>. With it, I built a recipe for downloading drupal and all the modules I use with it. Then I committed this as a <a href="https://code.launchpad.net/~stefanor/drupal/sr">bzr tree</a>, so that I could base all my sites on a common base. To install a module, I <code>bzr mv modules/foo drupal/sites/all/modules/</code>.</p>

<p>Now to update all my drupal sites, I update my <code>config-manager</code> recipe, and build a new master tree. Commit it to the repo, and push to launchpad. And then <code>bzr merge</code> in all the sites. It&#8217;s pretty quick and&nbsp;painless.</p>

<p>For anyone who&#8217;s interested, the modules I&#8217;m using&nbsp;are:</p>

<ul>
<li><a href="http://drupal.org/project/akismet">akismet</a> -&nbsp;Anti-spam.</li>
<li><a href="http://drupal.org/project/atom">atom</a> - Some people prefer to consume atom&nbsp;feeds</li>
<li><a href="http://drupal.org/project/marksmarty">marksmarty</a> - I&#8217;m a markdown&nbsp;fan.</li>
<li><a href="http://drupal.org/project/openid">openid</a></li>
<li><a href="http://drupal.org/project/openidurl">openidurl</a> - To point to my  <a href="http://www.siege.org/projects/phpMyID/">phpMyID</a></li>
<li><a href="http://drupal.org/project/pathauto">pathauto</a> - A drupal must, I like clean&nbsp;URLs.</li>
<li><a href="http://drupal.org/project/pingback">pingback</a> - The best of the <a href="http://en.wikipedia.org/wiki/Linkback">linkbacks</a></li>
<li><a href="http://drupal.org/project/recaptcha">recaptcha</a> - Stop bogus account creation. (i.e.&nbsp;more-anti-spam)</li>
<li><a href="http://drupal.org/project/xmlsitemap">xmlsitemap</a> - Be polite to the search&nbsp;engines.</li>
</ul>

<p>So far I&#8217;ve had to write a drupal module to <a href="/code/amatomu">support amatomu</a>, and it was a bliss. Drupal&#8217;s <span class="caps">API</span> and code is some of the neatest <span class="caps">PHP</span> I&#8217;ve ever had to work&nbsp;with.</p>

<p>I think I&#8217;ll be happy here&nbsp;:-)</p>
    ]]></content>
  </entry>
  <entry>
    <title>Amatomu Drupal Module</title>
    <link rel="alternate" type="text/html" href="http://tumbleweed.org.za/code/amatomu" />
    <id>http://tumbleweed.org.za/code/amatomu</id>
    <published>2007-12-30T21:44:58+00:00</published>
    <updated>2008-09-14T20:41:18+00:00</updated>
    <author>
      <name>tumbleweed</name>
    </author>
    <category term="amatomu" />
    <category term="code" />
    <category term="drupal" />
    <category term="Howto" />
    <category term="php" />
    <summary type="html"><![CDATA[<p>I&#8217;ve written a simple <a href="http://drupal.org/" title="Drupal, the CMS this site uses">drupal</a> module for including the <a href="http://www.amatomu.com/">Amatomu</a>&nbsp;tracker.</p>

<p>It also supports the &#8220;What&#8217;s hot in South African blogs&#8221; tag-cloud, albeit via ugly javascript. I&#8217;m not a fan of all this javascript <span class="caps"><span class="caps">DHTML</span></span> nonsense, but maybe they can be talked into providing a better&nbsp;<span class="caps"><span class="caps">API</span></span>&#8230;</p>

<p>Todo list (Things amatomu does that I don&#8217;t care for, and thus&nbsp;haven&#8217;t&nbsp;coded):</p>

<ul>
<li>I&#8217;d like to extend this to include support for the <a href="http://www.amatomu.com/widgets.php">shmaak button</a>s.</li>
<li>The&nbsp;rank&nbsp;ribbon.</li>
</ul>

<p>Available <a href="http://drupal.org/project/amatomu">from Drupal.org</a>. Releases for Drupal 5 and 6&nbsp;are&nbsp;available.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I&#8217;ve written a simple <a href="http://drupal.org/" title="Drupal, the CMS this site uses">drupal</a> module for including the <a href="http://www.amatomu.com/">Amatomu</a>&nbsp;tracker.</p>

<p>It also supports the &#8220;What&#8217;s hot in South African blogs&#8221; tag-cloud, albeit via ugly javascript. I&#8217;m not a fan of all this javascript <span class="caps">DHTML</span> nonsense, but maybe they can be talked into providing a better&nbsp;<span class="caps">API</span>&#8230;</p>

<p>Todo list (Things amatomu does that I don&#8217;t care for, and thus haven&#8217;t&nbsp;coded):</p>

<ul>
<li>I&#8217;d like to extend this to include support for the <a href="http://www.amatomu.com/widgets.php">shmaak button</a>s.</li>
<li>The rank&nbsp;ribbon.</li>
</ul>

<p>Available <a href="http://drupal.org/project/amatomu">from Drupal.org</a>. Releases for Drupal 5 and 6 are&nbsp;available.</p>
    ]]></content>
  </entry>
</feed>
