<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>unsaturated.com &#187; WordPress</title>
	<atom:link href="http://www.unsaturated.com/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.unsaturated.com</link>
	<description>The personal and professional website of Matthew Crumley</description>
	<lastBuildDate>Mon, 19 Apr 2010 03:51:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Proxy Vote</title>
		<link>http://www.unsaturated.com/projects/proxyvote/</link>
		<comments>http://www.unsaturated.com/projects/proxyvote/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 03:00:34 +0000</pubDate>
		<dc:creator>Matthew Crumley</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[HOA]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[Wildewood]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.unsaturated.com/?p=238</guid>
		<description><![CDATA[Trying to reach a quorum and the traditional methods aren't working?  It's time to use the Proxy Vote plug-in for Wordpress.  If your website is running on Wordpress, you're already closer to a solution than you realize. ]]></description>
			<content:encoded><![CDATA[<h2>History</h2>
<p>I developed this plug-in out of necessity while managing my neighborhood homeowner association (HOA). In past meetings of our HOA, achieving quorums were a wait-and-see ordeal.  Will enough people show to the meeting?  Will they bother to mail us their proxy vote?  I had enough so I started to code a solution.</p>
<p>The result is a system that provides immediate feedback, a decent measure of security, and simple integration with Wordpress blogs.  The first version I fielded worked great with our HOA website.  Everyone in the community was given a customized paper explaining the process.  That paper also provided a customized key, much like a business provides to its shareholders.  The process is very simple: the voter goes to the website, enters his key, his name, the proxy&#8217;s name, then submits the information.  That&#8217;s all there is to it!</p>
<p>The first version I tried had limited capabilities.  I think the concept was solid but the feature list needed improving.  After a few months of development I made the feature list grow, worked out the bugs, and polished the user interface.  The result is a compelling product worthy of commercial distribution.</p>
<h2>Features and Anti-Features</h2>
<p>You usually buy a product based upon its feature list.  Naturally, I&#8217;ve listed those but I&#8217;ve also listed anti-features.  An anti-feature is a capability a product should probably have <i>but doesn&#8217;t</i>.  You might think that works against the &#8220;sell more&#8221; ethos of business but I disagree.  When I buy something I want to know what I&#8217;m getting but also what I&#8217;m <i>not</i> getting.  An anti-feature might deter some potential buyers but I feel it removes ambiguity and instills confidence in the committed buyers.</p>
<h3>Features</h3>
<ul>
<li>Proxy Vote can manage multiple, simultaneous events.</li>
<li>Proxy Vote 1.1 is verified to work with Wordpress versions 2.5/2.6. Version 1.0 is verified to work with Wordpress version 2.3.  The administrative interface is unique to each version but features and capabilities are the same.</li>
<li>Each proxy event description can contain HTML, images, URL links, and more.</li>
<li>Event descriptions are formatted to print on individual pages.</li>
<li>Results of the event are optimized for printing.</li>
<li>Cleanly remove the plug-in once you&#8217;re done. You have the option to completely remove all traces of Proxy Vote, including its tables.</li>
<li>Customize the form text then insert it with an entry like <code>[proxy123]</code>.</li>
<li>It works on posts and pages.</li>
<li>Information and error messages can be localized to another language very easily.</li>
<li>All submitted proxies record the IP address of the sender.</li>
<li>Events can be exported to an XML file. Use Microsoft Excel or any XML-friendly application for viewing the raw data.  Format it however you please.  It&#8217;s <i>your</i> data.</li>
</ul>
<h3>Anti-Features</h3>
<ul>
<li>Events cannot be re-imported to the database from the XML file. Arguably, what&#8217;s the point when the event has expired?</li>
<li>The number of voters cannot be changed once an event is created.  However, expiration, title, and description <i>can</i> be changed at any time.</li>
<li>There is no event start time, only an expiration time.  In other words, do not post your event until you are ready to use it. If this anti-feature is added, it would make the second anti-feature much easier to implement.</li>
<li>Formatting and compatibility is unknown on earlier 6.x versions of Internet Explorer.  If this applies to you, I highly recommend you upgrade IE.</li>
</ul>
<h2>Adding an Event</h2>
<p>Adding an event is very easy.  Provide the title, description, expiration time, and the number of voters.  Proxy Vote manages multiple, simultaneous events. <br/><br />
<img src="http://www.unsaturated.com/wordpress/wp-content/data/manage-add-event.png" alt="" title="Add Event" class="aligncenter size-full wp-image-252" /></p>
<h2>Managing Your Event</h2>
<p>Once you&#8217;ve created your event, you can monitor its progress, print data, modify its properties, or export the data to XML. Submitted proxies are displayed as they are received.  Back on the main management page, you&#8217;ll have a real-time look at how many proxies are submitted for each event.<br/><br />
<img src="http://www.unsaturated.com/wordpress/wp-content/data/manage-first-proxy.png" alt="" title="First Proxy" class="aligncenter size-full wp-image-253" /></p>
<h2>Spreading the Word</h2>
<p>Your proxy is only useful if people are given a brief, informative paper with instructions to submit the proxy.  In my opinion, keeping the message brief and informative is the best means to getting proxies and achieving a quorum. In this example, I included multiple HTML elements to illustrate the flexibility of the proxy messages.  This event had 250 voters, therefore, 250 unique keys and pages were generated &#8211; just print and distribute!<br/><br />
<img src="http://www.unsaturated.com/wordpress/wp-content/data/proxy-message-page.png" alt="" title="Message Page" class="aligncenter size-full wp-image-254" /></p>
<h2>Go &#8216;Live&#8217; with Your Event</h2>
<p>Ready to post your proxy event form?  It&#8217;s easy.  You can add any text before or after the form itself.  Give your voters a simple reminder of what&#8217;s required.  Publish your post or page and you&#8217;re one step closer to a quorum.<br/><br />
<img src="http://www.unsaturated.com/wordpress/wp-content/data/proxy-post.png" alt="" title="Proxy Post" class="aligncenter size-full wp-image-255" /></p>
<h2>It&#8217;s Your Data</h2>
<p>Once your proxy event is complete, you might want to organize the data differently. Proxy Vote wasn&#8217;t designed to analyze, process, or format data in fancy ways.  Export your event to an XML file and open the results in Microsoft Excel or some other program.  You can format, sort, and arrange the data however you prefer. <br/><br />
<img src="http://www.unsaturated.com/wordpress/wp-content/data/proxy-xml.png" alt="" title="Proxy XML" class="aligncenter size-full wp-image-256" /></p>
<h2>Activate</h2>
<ol>
<li>Open the downloaded zip file</li>
<li>If you&#8217;re using Wordpress 2.3, extract the contents of the <tt>Version1.0</tt> folder to your Wordpress <tt>plugins</tt> folder; if you&#8217;re using Wordpress 2.5 or 2.6, extract the contents of the <tt>Version1.1</tt> folder</li>
<li>Activate the Proxy Vote plugin</li>
<li>Go to the <b>Settings</b> page (<b>Options</b> in WP 2.3); select the <b>Create Tables</b> button.</li>
<li>Activation is complete, so create a proxy event.</li>
</ol>
<h2>The Events Management View</h2>
<p>The Events Management View shows a list of all proxy events and the form for <a href="#createevent">creating a new event</a>.  Events with the nearest expiration time are shown on the top.  The number of proxies generated and submitted are displayed.</p>
<p>Each event has two selections: <b>Edit</b> and <b>Delete</b>.  Selecting <b>Delete</b> will open a dialog box which allows you to proceed or cancel the action.  Selecting <b>Edit</b> brings you to the next screen which displays proxy details.</p>
<h2><a name="proxydetailsview"></a>The Proxy Details View</h2>
<p>This view shows actions relevant to the current event.  All actions are display in the top section called &#8220;Activities&#8221;.  Let&#8217;s briefly review each one.</p>
<ul>
<li>The first bullet shows the activation string necessary to insert the proxy form into a post or page.  You can type or copy the text displayed.  It will always follow the pattern <tt>[proxy<i>ID</i>]</tt> where <i>ID</i> is the id number of the proxy event.  If you insert this text with an invalid id number, the plugin will ignore the text.</li>
<li>The second bullet provides a link to the <a href="#proxymessageview">Proxy Message View</a>.</li>
<li>The third bullet links to the <a href="#proxyresultsview">Proxy Results View</a>.</li>
<li>The fourth bullet links to the bottom of the page where you can update properties of the event, such as title, description, and expiration time.</li>
<li>Finally, the last bullet links to the <a href="#proxyxmlview">Proxy XML View</a>.</li>
</ul>
<h2><a name="proxymessageview"></a>The Proxy Message View</h2>
<p>The proxy message is the keystone of the Proxy Vote plugin.  You can use the proxy message for a variety of purposes, but its main intent is to provide a custom message to each voter with a unique proxy key.  In the Proxy Message View, you can preview what these messages will look like.  At the top of the screen you will see a message box which provides some tips on printing the proxy message.  If you have 300 voters, you should have 300 proxy messages. For almost all web browsers, you will proceed to <b>File</b> -> <b>Print Preview</b> menu item.  Verify your <a href="#createeventdescription">description</a> has been formatted the way you intended.</p>
<h2><a name="proxyresultsview"></a>The Proxy Results View</h2>
<p>Proxy results include all the submitted proxies for the event.  Much like the Proxy Message, the print preview feature of your web browser will format the page.  In most circumstances, the landscape page format is superior for tabular data.  This view is display only.</p>
<p>In the table you will find these columns:</p>
<ul>
<li><b>Key</b> is the 10-character random code distributed to this voter.</li>
<li><b>Voter</b> is the person submitting the proxy.</li>
<li><b>Proxy</b> is the person who will vote on behalf of the voter.</li>
<li><b>IP</b> is the internet protocol address of the computer which submitted the proxy.</li>
<li><b>Submit Time</b> is when the proxy information was submitted to your site.</li>
</ul>
<h2><a name="proxyxmlview"></a>The Proxy XML View</h2>
<p>This view displays all event data in XML format. The proxy event can be exported to a file using the <b>Export to XML File</b> button.  The auto-generated name will be <tt>export<i>ID</i>.xml</tt> where <i>ID</i> is the id number of the proxy event. Although the data is displayed in a text editable field, you <i>cannot</i> change the data here.</p>
<h2><a name="createevent"></a>Create an Event</h2>
<ol>
<li>Go to the <b>Manage</b> tab, then select <b>Proxy Votes</b>.</li>
<li>Enter your event information under the section &#8220;Add Proxy Event&#8221;</li>
<ul>
<li><b>Title</b> can be anything meaningful to identify this event.  You can update the Title at any time.</li>
<li><a name="createeventdescription"></a><b>Description</b> can contain actual HTML code; line breaks, headings, images, tables, or anything you need to summarize the event.  However, it should always contain the <tt>[key]</tt> and <tt>[expires]</tt> tag.  The Description section forms the text of your proxy message, which is a custom set of instructions to your voter.  It should also provide the URL of the proxy form.  It&#8217;s a good idea to create a draft of the post so you can finalize your proxy message. You can update the Description at any time. </li>
<li><b>Expiration</b> is the local end time for the proxy event.  The plugin will not accept proxies submitted after the expiration.  The expiration time uses the properties setup in your blog, such as the UTC offset.  You can update the Expiration at any time.</li>
<li><b>Number of Voters</b> is the maximum number of people who can submit a voter proxy.  This value <i>cannot</i> be changed once the event is created.</li>
</ul>
<li>Select <b>Add Event</b> and you will see a message which confirms the event was created and the random keys generated.</li>
</ol>
<h2>Sample Proxy Message</h2>
<p>The following snippet of HTML code is a good starting point for your proxy message.  It doesn&#8217;t contain any image links.  However, it makes use of embedded styles, unordered lists, and those two important tags: <tt>[key]</tt> and <tt>[expires]</tt>.</p>
<blockquote><p>
<code>&lt;h1&gt;The Proxy Event&lt;/h1&gt;
&lt;p&gt;This is the proxy event you've waited for all year.  To achieve a quorum at our annual meeting, we only ask for a few moments of your time.  This year we've made the process of submitting a proxy easier than ever.  Please follow these directions carefully.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to our website: www.unsaturated.com/proxyvote&lt;/li&gt;
&lt;li&gt;Look for entry titled "Proxy Event of the Year"&lt;/li&gt;
&lt;li&gt;In the first space you will notice the expiration date, which is currently [expires].  You must submit your proxy before that time.&lt;/li&gt;
&lt;li&gt;In the next space enter your unique code: &lt;b&gt;[key]&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Enter your name (last name, first name)&lt;/li&gt;
&lt;li&gt;Enter your proxy's name (last name, first name)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Again, we thank you for your support.  This will help our meeting proceed smoothly and ensure business continues without any further delays.&lt;/p&gt;
&lt;p&gt;Sincerely,&lt;br/&gt;
Matthew Crumley&lt;br/&gt;
Board President&lt;/p&gt;</code>
</p></blockquote>
<h2>Purchasing</h2>
<p>Proxy Vote version 1.1 is the newest version and is compatible with Wordpress version 2.6 and 2.5.  Styles are updated for consistency with the new administrative interface introduced with Wordpress 2.5.  The plugin features are exactly the same as Proxy Vote version 1.0.<br />
<strong><a href="https://files.dreamhost.com/66194/proxyvote-1.1.zip">Click here to buy version 1.1 for $1 USD</a></strong>.</p>
<p>The Proxy Vote Bundle includes version 1.1 and 1.0.  This provides compatibility with Wordpress 2.3.  If you&#8217;re updating your Wordpress in the near future, this is the best option.<br />
<strong><a href="https://files.dreamhost.com/66193/proxyvote-1.0-1.1.zip">Click here to buy the 1.1/1.0 bundle for $2 USD</a></strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.unsaturated.com/projects/proxyvote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tale of Two Themes</title>
		<link>http://www.unsaturated.com/projects/tale-of-two-themes/</link>
		<comments>http://www.unsaturated.com/projects/tale-of-two-themes/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 05:26:38 +0000</pubDate>
		<dc:creator>Matthew Crumley</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.unsaturated.com/projects/tale-of-two-themes/</guid>
		<description><![CDATA[This is my struggle to make a unifying theme for two open source applications:  Gallery and WordPress.  I quickly discovered plug-ins can work for you <i>and</i> against you.]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p>Gallery organizes my vast collection of personal photos but its theme system is not easy to modify.  Although my site was redesigned three months ago, a large percentage of it remained untouched.  To complete the site and bring closure to my redesign, a consistent look and feel was absolutely necessary.  I just wanted the same colors, fonts, and formatting.  Instead, I got the Tale of Two Themes.  It&#8217;s a quick look at the complexity, usability, and costs of two open source applications and their themes.</p>
<h2>First Impressions</h2>
<p><a href="http://en.wikipedia.org/wiki/Wordpress">WordPress</a> and <a href="http://en.wikipedia.org/wiki/Gallery_Project">Gallery</a> have two distinct methods of implementing a theme system.  Both applications use CSS, HTML, and various template files but there the similarities stop.  While Gallery uses Smarty, WordPress contends with PHP at every turn.  That last difference is a big one.  These open source projects take drastically different approaches to theme development.  </p>
<p>Gallery imposes a strict regime of access to template methods.  Its selection is almost Soviet.  Meanwhile, WordPress throws caution to the wind and lets PHP rule with impunity.  It&#8217;s a broad generalization but Gallery imposes a police state form of security while WordPress trusts its developers and users to bring anything on the plane.  These two applications show software design is clearly about tradeoffs.  </p>
<p><img src='http://www.unsaturated.com/wordpress/wp-content/data/galleryredesign.png' alt='Gallery theme' /></p>
<h2>A Brief Comparison</h2>
<p>There&#8217;s no limit to lines to code.  Code can be written to impose a detailed design scheme, or permit an absurd level of extensibility.  The real question is: What&#8217;s the role of this software?  When the developers of Gallery and WordPress addressed this question they directly affected how theme developers would do their jobs. </p>
<h3>Gallery</h3>
<p>Gallery uses <a href="http://en.wikipedia.org/wiki/Smarty">Smarty</a>.  If you&#8217;re unfamiliar with this tool, then you&#8217;re not alone.  This is the first obstacle I faced when writing a Gallery theme for my site.  It takes all the PHP code out of the theme and generates it for you.  It sounds great.  Unfortunately, it imposes a lot of <i>up front</i> time investment to learn a new tool.  Productivity doesn&#8217;t climb until you can reasonably manipulate its tags.  Look forward to the following:</p>
<pre>
<code>{if isset($theme.photoFrame)}
  {g-&gt;container type="imageframe.ImageFrame"
                      frame=$theme.photoFrame
                      width=$image.width height=$image.height}
  {g-&gt;image id="%ID%" item=$theme.item image=$image
                      fallback=$smarty.capture.fallback class="%CLASS%"}
  {/g-&gt;container}
{else}
  {g-&gt;image item=$theme.item image=$image fallback=$smarty.capture.fallback}
{/if}</code>
</pre>
<p>Gallery uses plug-ins.  This is the trend for most applications these days.  It&#8217;s great for open source because it allows other developers the chance to add capabilities not originally supported.  Unfortunately, adding features means a purpose-built application can quickly devolve into a slow, bloated monster.  A Gallery plug-in integrates just enough theme customization to be useful&#8230;for <b>one</b> theme only.  </p>
<p>Each plug-in has a set of templates expressly built for theme usage.  Within each plug-in&#8217;s template directory you can create a &#8220;local&#8221; sub-directory which overrides the default template.  It sounds good, but when you apply a customization, say, to add some header text, <i>it affects every theme</i>.  Themes cannot specify <i>which</i> local template to utilize.  Thus, the designer is not truly free to make modifications.</p>
<h3>WordPress</h3>
<p>Unlike Gallery, the role of plug-ins in WordPress is diminished because the core capabilities are all I require.  Storing text, comments, and providing RSS feeds is the extent of a blog.  I only use three plug-ins in WordPress compared to over 20 in Gallery.  The plug-ins I&#8217;m using for WordPress leave the theme mostly untouched.  </p>
<p>Themes and templates in WordPress are a set of files containing CSS, HTML, and <a href="http://en.wikipedia.org/wiki/PHP">PHP</a>.  There&#8217;s nothing more to it.  The following is a sample of what you&#8217;ll see in WordPress themes:</p>
<p><code>&lt;h3 id="comments"&gt;&lt;?php comments_number('No Comments', 'One Comment', '% Comments' );?&gt; on &amp;#8220;&lt;?php the_title(); ?&gt;&amp;#8221;&lt;/h3&gt;</code></p>
<p>Template functions make repetitive tasks easier and, yes, they&#8217;re functions written in PHP. The example above uses <code>comments_number</code> and <code>the_title</code> to get the number of comments for a post and the post&#8217;s title.  Accomplishing anything via WordPress involves PHP and there are downfalls to embedded code:</p>
<ol>
<li><b>Design and code are not separated.</b>  It&#8217;s not easy to separate data, interface, and design.  WordPress attempts it but only marginally succeeds.  This is important in large software teams when the share of work <i>must</i> be divided.</li>
<li><b>Breaks from the WordPress loop are not constrained.</b>  What amount of PHP code is necessary to escape the security measures put in place?  If you allow <b>any</b> code, then you&#8217;ve already opened the possibility.</li>
<li><b>Version compatibility with PHP.</b>  This problem should <i>not</i> be caused by files on the theme-level of the site.  Your theme designer wants access to something in PHP 5 and the coder refuses to support anything beyond PHP 4.</li>
</ol>
<h2>The Path of Least Resistance</h2>
<p>My strategy was simple:  create the theme for WordPress then design the Gallery template to finalize the remainder of my site.  This is exactly how it happened but unequal weight was given to Gallery in the final effort.  It took a couple weeks here and there after work to finish the WordPress theme.  By comparison, the theme and template development for Gallery was dragging on for a month.  My Gallery theme was completely based upon my initial WordPress theme.  This sounds fine but the format was not right for displaying photos.  I was reworking multiple plug-in templates, fudging the CSS, and finally cut my sunk costs.  I looked at the long term maintenance of the modifications and could no longer rationalize my initial design.  The present Gallery theme is a derivative of the Matrix theme.  </p>
<p>When the site was finished I realized too many plug-ins complicated my experience with Gallery.  Smarty is an excellent tool and a great idea for separating work share.  However, it greatly slows development for the individual.  WordPress keeps things simple (almost simplistic) at the cost of security and stability.  Remember, developers, PHP can work <i>against you</i> as easily as <i>for you</i>.  </p>
<p>I enjoy working with code, but when too much stands in the way of my goal, it becomes frustrating and tiresome.  Do yourself and the open source community a favor and ask yourself:  Do I <i>really</i> need that extra plug-in?  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.unsaturated.com/projects/tale-of-two-themes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Event Calendar for WordPress 2.3</title>
		<link>http://www.unsaturated.com/projects/eventcalendar-for-wordpress/</link>
		<comments>http://www.unsaturated.com/projects/eventcalendar-for-wordpress/#comments</comments>
		<pubDate>Sat, 29 Sep 2007 21:19:47 +0000</pubDate>
		<dc:creator>Matthew Crumley</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.unsaturated.com/projects/eventcalendar-for-wordpress/</guid>
		<description><![CDATA[A compatibility fix for Event Calendar 3.1.0 and WordPress 2.3. ]]></description>
			<content:encoded><![CDATA[<p>I recently upgraded my homeowners association blog to WordPress 2.3.  The core upgrade from 2.2 to 2.3 was easy.  However, compatibility problems with plug-ins and themes are inevitable.  I&#8217;m currently using Event Calendar 3.1.0 and immediately noticed problems after upgrading.  </p>
<p>The new SQL structure introduced in 2.3 removed the <code>post2cat</code> table.  As a result you&#8217;re seeing a lot of broken SQL queries.  To fix the problem I changed all queries that referred to <code>$wpdb-&gt;post2cat</code> with <code>$wpdb-&gt;terms</code> and changed the conditions from <code>post_id</code> to <code>term_id</code>.  </p>
<p>Extract the ZIP file to your Event Calendar plug-in directory and things should work smoothly again.  I&#8217;m not a heavy user of all the Event Calendar features, so I can&#8217;t vouch for <i>full</i> WP 2.3 compatibility.   If you find any additional problems, first inform the <a href="http://wpcal.firetree.net">developer</a>.  It&#8217;s a great plug-in and worth maintaining.  </p>
<p>Download the update: <a href='http://www.unsaturated.com/wordpress/wp-content/data/eventcalendar310-wp23.zip' title='EventCalendar3.1.0-WP2.3'>EventCalendar3.1.0-WP2.3.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.unsaturated.com/projects/eventcalendar-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
