<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
  <channel>
    <title>Goondocks Blog</title>
    <description>Gabe Sumner's Goondocks blog feed.  Random posts about Telerik, Sitefinity, ASP.NET, web development and assorted subjects.</description>
    <link>http://goondocks.com/blog.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <item>
      <title>The Launch of Sitefinity Watch</title>
      <description>&lt;p&gt;When I launched goondocks.com over a year ago I never planned on blogging about &lt;a href="http://www.sitefinity.com/"&gt;Sitefinity&lt;/a&gt; or getting a job with &lt;a href="http://www.telerik.com/"&gt;Telerik&lt;/a&gt;.  In fact, all I really wanted to do was write &lt;a href="http://www.goondocks.com/blog/08-02-22/Programming_Jeet_Kune_Do.aspx"&gt;obscure articles&lt;/a&gt; and &lt;a href="http://www.goondocks.com/blog/08-02-07/Restaurant_Review_Bourbon_Steak_Scottsdale_AZ.aspx"&gt;amuse myself&lt;/a&gt;.  But I kept getting more &amp;amp; more involved in the Sitefinity community.  I didn't have anywhere else to publish my articles, so I just kept tossing them on goondocks.com.  Each time I did this I thought &lt;em&gt;I should get a new domain name for this, &lt;/em&gt;but I kept putting it off.&lt;/p&gt; &lt;p&gt;I'm announcing that I probably won't be blogging about Sitefinity on goondocks.com anymore.  I've launched a brand new web site for my Sitefinity related content.  &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinitywatch.com/"&gt;&lt;strong&gt;Sitefinity Watch - Sitefinity news &amp;amp; tips from inside the tubes!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I'm really excited to have a more appropriate platform to publish Sitefinity articles. Furthermore, I can finally get back to publishing useless rubbish on goondocks.com.&lt;/p&gt; &lt;p&gt;Please check out &lt;a href="http://www.sitefinitywatch.com/"&gt;Sitefinity Watch&lt;/a&gt; and subscribe to the &lt;a href="http://feeds.feedburner.com/SitefinityWatch"&gt;RSS feed&lt;/a&gt;.  I'll do my best to keep you up-to-date on the latest Sitefinity happenings.&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-11-24/The_Launch_of_Sitefinity_Watch.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-11-24/The_Launch_of_Sitefinity_Watch.aspx</comments>
      <guid isPermaLink="false">7fb6a411-ea8b-4daf-9e3c-4726ac5e3497</guid>
      <pubDate>Mon, 24 Nov 2008 22:34:23 GMT</pubDate>
    </item>
    <item>
      <title>Adding Custom Fields to Existing Sitefinity Modules</title>
      <description>&lt;p&gt;Sitefinity comes with several useful modules you can use within your web site.&amp;#160; However, you might wish these modules contained extra options or worked slightly differently.&lt;/p&gt; &lt;p&gt;For example, I might use the Sitefinity Events module to schedule group hiking events, but I would also like to enter trail difficulty, group size and and a link to a trail map.&lt;/p&gt; &lt;p&gt;Luckily, many Sitefinity modules inherit from a common &lt;a href="http://www.sitefinity.com/help/developer-manual/overview.html"&gt;Generic Content Module&lt;/a&gt; base class.&amp;#160; Generic Content Modules can be extended by &lt;a href="http://www.sitefinity.com/help/developer-manual/how-to-gc-based-add-custom-meta-fields.html"&gt;adding new custom meta-fields&lt;/a&gt;.&amp;#160; This makes it easy for us to tweak many existing Sitefinity modules and add small bits of functionality.&amp;#160; Below we will look at how this is done.&lt;/p&gt; &lt;h2&gt;Step 1: Let Sitefinity know about your custom meta-field&lt;/h2&gt; &lt;p&gt;To add a new meta-field to an existing Sitefinity module you must first add a key mapping in the web.config file.&amp;#160; Look for the following section in your web.config file:&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;cmsEngine &lt;/span&gt;&lt;span style="color: red"&gt;defaultProvider&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Generic_Content&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;
  &lt;/span&gt;...
  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;metaFields&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &lt;/span&gt;....
    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;key&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Module.KeyName&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;valueType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ShortText&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;visible&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;searchable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;sortable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;False&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;defaultValue&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &lt;/span&gt;...
  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;metaFields&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
  &lt;/span&gt;...
&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;cmsEngine&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;Adding a custom meta-field can be done by simply adding a new key in the &amp;lt;metaFields&amp;gt; section.&amp;#160; For example, you could add 3 custom meta-fields to the Events module using the following tags:&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;key&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Events.Trail_Difficulty&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;valueType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ShortText&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;visible&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;searchable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;sortable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;defaultValue&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;key&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Events.Group_Size&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;valueType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ShortText&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;visible&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;searchable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;sortable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;defaultValue&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;key&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Events.Trail_Link&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;valueType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ShortText&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;visible&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;searchable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;sortable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;True&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;defaultValue&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;
&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;Below are the possible valueTypes for your MetaFields (&lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bdadkm.aspx"&gt;source&lt;/a&gt;):&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ShortText &lt;/li&gt; &lt;li&gt;LongText &lt;/li&gt; &lt;li&gt;DateTime &lt;/li&gt; &lt;li&gt;Integer &lt;/li&gt; &lt;li&gt;FloatingPoint &lt;/li&gt; &lt;li&gt;Boolean &lt;/li&gt; &lt;li&gt;Guid &lt;/li&gt; &lt;li&gt;Binary &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;em&gt;Tip: If you use valueType other than ShortText and LongText, you will be forced to manually handle valueType to String conversions.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Step 2: Use Sitefinity to insert/edit values for your custom meta-field&lt;/h2&gt; &lt;p&gt;You now have 3 new custom meta-fields but no way of managing them.&amp;#160; To manage this data you need to alter a couple of Sitefinity Admin Control Templates.&amp;#160; All of these ControlTemplates can be found in the following directory:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;~/Sitefinity/Admin/ControlTemplates/&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;From there it might take a little guessing to locate the correct template.&amp;#160; You can always enter a small bit of text in the template (hello world) and refresh the page to see if you're altering the correct template.&amp;#160; To manage the new custom meta-field Event fields, you would alter the following Sitefinity Admin ControlTemplates:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;~/Sitefinity/Admin/ControlTemplates/Events/ControlPanelInsert.ascx 
    &lt;br /&gt;~/Sitefinity/Admin/ControlTemplates/Events/ControlPanelEdit.ascx&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;At this point you're basically altering a UserControl.&amp;#160; You can add, change or remove as much HTML as you like.&amp;#160; Regarding the ASP.NET server tags, there is a little bit of magic happening within this file.&amp;#160; When Sitefinity renders this page it tries to find ASP.NET server tags with an ID matching the available meta-fields.&amp;#160; When a matching tag is found, Sitefinity tries to get or set the control value.&amp;#160; For many common ASP.NET form tags (TextBox, DropDownList, Checkbox) Sitefinity will work just fine.&lt;/p&gt; &lt;p&gt;This makes it trivial for us to add custom meta-fields to the Sitefinity insert &amp;amp; edit pages.&amp;#160; For example, to add a Trail_Link, Group_Size &amp;amp; Trail_Difficulty text boxes, just add the following code to the two files shown above:&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Difficulty&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Group_Size&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Link&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;Notice the ID's match the ID's we specified in the web.config key mappings.&amp;#160; If you want to add a nice label, a drop-down for Trail Difficulty and add some validation, you can use the following code:&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ol&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;li&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Label2&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;='Trail Difficulty' &lt;/span&gt;&lt;span style="color: red"&gt;AssociatedControlID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Difficulty&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DropDownList &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Difficulty&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Easy&amp;quot;&amp;gt;&lt;/span&gt;Easy&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Medium&amp;quot;&amp;gt;&lt;/span&gt;Medium&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Hard&amp;quot;&amp;gt;&lt;/span&gt;Hard&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;DropDownList&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;li&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;li&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Label3&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;='Max Group Size' &lt;/span&gt;&lt;span style="color: red"&gt;AssociatedControlID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Group_Size&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Group_Size&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt;width&lt;/span&gt;: &lt;span style="color: blue"&gt;50px&lt;/span&gt;;&lt;span style="color: blue"&gt;&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;MaxLength&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;5&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;RangeValidator &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;validator1&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Group_Size&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Display&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Dynamic&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;EnableViewState&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;False&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;CssClass&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;validMessage&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;SetFocusOnError&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Integer&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;MinimumValue&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;1&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;MaximumValue&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;strong&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Must contain a valid number between 1-100.&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;strong&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;RangeValidator&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;li&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;li&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Label5&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;='Trail Info Link' &lt;/span&gt;&lt;span style="color: red"&gt;AssociatedControlID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Link&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Link&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;li&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ol&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;Just look at the other code in the files to understand where to place your new controls and how to make it fit with the existing design.&amp;#160; When finished, you can fire up Sitefinity and use the web admin edit the new custom meta-fields.&lt;/p&gt; &lt;h2&gt;Step 3: Displaying your custom meta-field to the public&lt;/h2&gt; &lt;p&gt;You now have 3 new custom meta-fields and you're able to modify the meta-field values using the Sitefinity web admin.&amp;#160; Our next task is to display these values on the public web site.&amp;#160; &lt;/p&gt; &lt;p&gt;Once again, the events display details are controlled via a Sitefinity ControlTemplate.&amp;#160; However, this time we're working with public ControlTemplates and not admin ControlTemplates.&amp;#160; All these public ControlTemplates can be found in the following directory:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;~/Sitefinity/ControlTemplates/&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The ControlTemplate for your &amp;quot;Events View&amp;quot; control will change depending on which display mode you're using.&amp;#160; For example, drag &amp;amp; drop an &amp;quot;Events View&amp;quot; control onto a Sitefinity page.&amp;#160; Now click &amp;quot;Edit&amp;quot; and choose &amp;quot;List &amp;amp; page&amp;quot;.&amp;#160; To make changes to this design, alter the following ControlTemplate:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;~/Sitefinity/ControlTemplates/Events/ContentViewSingleItem.ascx&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;When Sitefinity renders this ControlTemplate it will scan through the page and look for ASP.NET server tags with an ID matching the meta-fields found in the web.config file.&amp;#160; When a matching tag is found, Sitefinity will attempt to set its Text property to meta field&amp;#8217;s value.&amp;#160; This means we can display the 3 meta field values by merely adding 3 simple server tags:&lt;/p&gt; &lt;pre class="code"&gt;Difficulty: &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Difficulty&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; /&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;br &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
&lt;/span&gt;Group Size: &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Group_Size&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; /&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;br &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
&lt;/span&gt;Trail Info: &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Link&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; /&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;br &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;This will output the values we have stored in the custom meta fields.&amp;#160; However, this will NOT output a hyperlink for Trail_Link.&amp;#160; Instead it will simply output plain text.&amp;#160; You might be inclined to try the following code instead:&lt;/p&gt; &lt;pre class="code"&gt;Trail Info: &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HyperLink &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Link&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; /&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;br &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;This will output a link but it WILL NOT be a functional link.&amp;#160; Remember, Sitefinity ONLY sets the Text property of the ASP.NET server tag.&amp;#160; The property we need Sitefinity to set is the NavigateUrl property.&amp;#160; There are a few ways to accomplish.&amp;#160; Below I will describe 3 methods of setting non-Text control properties with meta field values.&lt;/p&gt; &lt;h2&gt;Method 1: Setting non-Text Control Properties with Meta Field Values (UserControl Method)&lt;/h2&gt; &lt;p&gt;Sitefinity will attempt to set the Text property of any control with an ID matching the ID of underlying meta field.&amp;#160; We can use this behavior to our advantage.&amp;#160; All we need to do is create a custom UserControl that contains a Text property.&amp;#160; When this property is set, we can simply redirect the value to our desired property.&amp;#160; Below is an example.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;~/Sitefinity/UserControls/Events/TrailLink.ascx&lt;/strong&gt;&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@ &lt;/span&gt;&lt;span style="color: #a31515"&gt;Control &lt;/span&gt;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;C#&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;true&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;CodeFile&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TrailLink.ascx.cs&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;UserControls_Events_TrailLink&amp;quot; &lt;/span&gt;&lt;span style="background: #ffee62"&gt;%&amp;gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HyperLink &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;HyperLink1&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Target&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;_blank&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;Click here for more information.&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HyperLink&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;&lt;strong&gt;~/Sitefinity/UserControls/Events/TrailLink.ascx.cs&lt;/strong&gt;&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web.UI;

&lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;UserControls_Events_TrailLink &lt;/span&gt;: System.Web.UI.&lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;ITextControl
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;public string &lt;/span&gt;Text
    {
        &lt;span style="color: blue"&gt;get
        &lt;/span&gt;{
            &lt;span style="color: blue"&gt;return &lt;/span&gt;HyperLink1.NavigateUrl;
        }
        &lt;span style="color: blue"&gt;set
        &lt;/span&gt;{
            HyperLink1.NavigateUrl = &lt;span style="color: blue"&gt;value&lt;/span&gt;;
        }
    }

    &lt;span style="color: blue"&gt;protected void &lt;/span&gt;Page_Load(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)
    {
    }
}&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;Now instead of using the &amp;lt;asp:HyperLink&amp;gt; control we need to use our own custom UserControl:&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@ &lt;/span&gt;&lt;span style="color: #a31515"&gt;Register &lt;/span&gt;&lt;span style="color: red"&gt;Src&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;~/UserControls/Events/TrailLink.ascx&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;TagName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TrailLink&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;TagPrefix&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;my&amp;quot; &lt;/span&gt;&lt;span style="background: #ffee62"&gt;%&amp;gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;my&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TrailLink &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Link&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot; /&amp;gt;
&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;h2&gt;Method 2: Setting non-Text Control Properties with Meta Field Values (MetaMaster Method)&lt;/h2&gt; &lt;p&gt;For those who don't want to create a custom UserControl just to populate a non-Text property, Ivan created a clever Composite Control that he has dubbed&amp;#160; &amp;quot;&lt;a href="http://blogs.sitefinity.com/Ivan/Post/08-07-03/metamaster_2008_finally_released_.aspx"&gt;MetaMaster 2008&lt;/a&gt;&amp;quot;.&amp;#160; This control, once placed inside the ControlTemplate, allows you to arbitrarily associate any meta-field with any control &amp;amp; control property.&amp;#160; Here is a some sample code showing this control in action:&lt;/p&gt; &lt;p&gt;To make use of this, I downloaded Ivan&amp;#8217;s code and then placed the two files (MetaMaster.cs &amp;amp; MetaMapping.cs) in the ~/App_Code directory.&amp;#160; Once in place, you can register this control within the ControlTemplate by putting the following code at the top:&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@ &lt;/span&gt;&lt;span style="color: #a31515"&gt;Register &lt;/span&gt;&lt;span style="color: red"&gt;Assembly&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;App_Code&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;MetaMaster2008&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;TagPrefix&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;my&amp;quot; &lt;/span&gt;&lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;Now I can add the MetaMaster control to my ControlTemplate and add the meta field to control property mappings:&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;my&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;MetaMaster &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;MetaMaster1&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;   
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Mappings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;  
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;my&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;MetaMapping &lt;/span&gt;&lt;span style="color: red"&gt;MetaKey&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_Link&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;TargetControlId&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_HyperLink&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;TargetProperty&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;NavigateUrl&amp;quot; /&amp;gt;  
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Mappings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;  
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;my&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;MetaMaster&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
&lt;/span&gt;&lt;/pre&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;To finish, I simply need to add the target control hyperlink:&lt;/p&gt; &lt;pre class="code"&gt;Trail Info: &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HyperLink &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Trail_HyperLink&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;Click here for MORE information&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HyperLink&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;br &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;Notice I changed the name of the TargetControlId from Trail_Link to Trail_HyperLink.&amp;#160; If you don&amp;#8217;t give the control a new ID then Sitefinity will still take control of the Text property.&lt;/p&gt; &lt;h2&gt;Method 3: Setting non-Text Control Properties with Meta Field Values (Extender method)&lt;/h2&gt; &lt;p&gt;I'm not going to describe this method in full because...well...I don't like it.&amp;#160; For this method, you're overriding methods and using alternate display controls.&amp;#160; It's complicated and it involves changing core Sitefinity control operations.&amp;#160; In &lt;strong&gt;very&lt;/strong&gt; small doses, it's probably ok.&amp;#160; &lt;/p&gt; &lt;p&gt;However, at the point where I&amp;#8217;m needing an extender class, I'm starting to wonder if it's time to abandon the &amp;quot;out of box&amp;quot; Sitefinity module and instead create my own module.&amp;#160; Sitefinity allows us to create our own custom Sitefinity modules.&amp;#160; You aren't required to contort existing modules just to deliver some custom features.&lt;/p&gt; &lt;p&gt;If you create your own module, then you get to control everything about how your module works.&amp;#160; Yes it's a bit more work up-front, but long-term who get to control your own destiny.&amp;#160; Future versions of Sitefinity will never break your custom module.&lt;/p&gt; &lt;p&gt;All this being said, if you still want to contort existing Sitefinity modules, &lt;a href="http://www.sitefinity.com/help/developer-manual/extending-built-in-controls-content-view-control.html"&gt;please click here to get the details&lt;/a&gt;.&amp;#160; Good luck!&lt;/p&gt; &lt;h2&gt;Download the Project&lt;/h2&gt; &lt;p&gt;All the code and files referenced in this article can be downloaded via the following link:&lt;/p&gt; &lt;p&gt;&lt;a href="/Libraries/Downloads/Adding_Custom_Fields_To_Existing_Sitefinity_Modules.sflb.ashx?download=true"&gt;&lt;strong&gt;Download the Adding Custom Fields to Existing Sitefinity Modules Project.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-11-17/Adding_Custom_Fields_to_Existing_Sitefinity_Modules.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-11-17/Adding_Custom_Fields_to_Existing_Sitefinity_Modules.aspx</comments>
      <guid isPermaLink="false">3172e562-5c93-4f93-91d2-11a60f95b7a0</guid>
      <pubDate>Mon, 17 Nov 2008 13:35:32 GMT</pubDate>
    </item>
    <item>
      <title>Upgraded from Sitefinity 3.2 to Sitefinity 3.5 SP1</title>
      <description>&lt;p&gt;This web site is now upgraded to &lt;a href="http://blogs.sitefinity.com/Ivan/Post/08-10-14/sitefinity_3_5_out.aspx"&gt;Sitefinity 3.5&lt;/a&gt; &lt;a href="http://blogs.sitefinity.com/Ivan/Post/08-10-30/sitefinity_3_5_service_pack_1_released.aspx"&gt;SP 1&lt;/a&gt;.  Compared to the issues I had &lt;a href="http://www.goondocks.com/blog/08-05-05/Now_Upgraded_to_Sitefinity_3_2.aspx"&gt;upgrading to 3.2&lt;/a&gt;, this was a relatively easy upgrade process.  I did hit a few minor snags along the way though:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Single Assembly for new ASP.NET AJAX Controls&lt;/strong&gt; &lt;br /&gt;
    Sitefinity now includes the latest version of the &lt;a href="http://www.telerik.com/products/aspnet-ajax/overview.aspx"&gt;ASP.NET AJAX RadControls&lt;/a&gt;.  Previously, each of these controls had its own assembly (DLL).  With the latest release, all of these assemblies have been combined into a single assembly (Telerik.Web.UI).  This is a great move and makes managing the files easier.  But some of my custom controls were referencing these old separate assemblies.  These references needed to be updated.  &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Migrate Customizations to Sitefinity ControlTemplates&lt;/strong&gt; &lt;br /&gt;
    Any custom modifications made to the Sitefinity ControlTemplates needed to be manually merged with the latest release.  This process is not as easy as I would like it to be, but it's manageable.  Just keep track of the Sitefinity ControlTemplates you're changing. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;URLs for "Images &amp;amp; Documents" Resources Changed&lt;/strong&gt; &lt;br /&gt;
    The URLs for my "Images &amp;amp; Documents" resources changed with this upgrade.  For example, previously my URLs looked like this:
    &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.goondocks.com/Libraries/Blog%20Images/rock-climbing.sflb" title="http://www.goondocks.com/Libraries/Blog_Images/rock-climbing.sflb"&gt;http://www.goondocks.com/Libraries/Blog%20Images/rock-climbing.sflb&lt;/a&gt; &lt;br /&gt;
        (notice the "%20") - these URLs no longer work and have now changed to: &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.goondocks.com/Libraries/Blog_Images/rock-climbing.sflb" title="http://www.goondocks.com/Libraries/Blog_Images/rock-climbing.sflb"&gt;http://www.goondocks.com/Libraries/Blog_Images/rock-climbing.sflb&lt;/a&gt; &lt;br /&gt;
        This required me to manually update several image links. &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Minor Sitefinity API Changes&lt;/strong&gt; &lt;br /&gt;
    There were a couple of minor Sitefinity API changes that caused errors.  The following lines of code previously worked with 3.2, but needed to be updated for the 3.5 release:
    &lt;ul&gt; &lt;li&gt;Telerik.DataAccess.CacheDependencyHandler.Current.Notify(typeof(Telerik.Cms.ICmsPage)); &lt;/li&gt; &lt;li&gt;CmsRootSiteMapNode rootnode = (CmsRootSiteMapNode)ourMapProvider.RootNode;
        &lt;ul&gt;&lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Not a perfect upgrade process, but it's getting a lot better.  We're beginning see the Sitefinity API &amp;amp; framework stabilize.  &lt;/p&gt; &lt;p&gt;I have updated the &lt;a href="http://www.goondocks.com/projects/goondocks-sitefinity-controls.aspx"&gt;Goondocks Sitefinity Controls&lt;/a&gt; to work with Sitefinity 3.5 SP1.  These controls, sadly, had fallen into disrepair.  They are now current and should work fine in your Sitefinity web site.&lt;/p&gt; &lt;p&gt;With Sitefinity 3.6 we're looking at better upgrade &amp;amp; deployment options.  The upgrade process should continue to get easier.&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-11-04/Upgraded_from_Sitefinity_3_2_to_Sitefinity_3_5_SP1.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-11-04/Upgraded_from_Sitefinity_3_2_to_Sitefinity_3_5_SP1.aspx</comments>
      <guid isPermaLink="false">ac52309c-f239-4729-9bc5-9cf823a59ac6</guid>
      <pubDate>Tue, 04 Nov 2008 12:55:22 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity Questions from PDC</title>
      <description>&lt;p&gt;&lt;a href="http://www.microsoftpdc.com/" target="_blank"&gt;PDC&lt;/a&gt; has now come &amp;amp; gone and there were several interesting announcements from the conference.   However, in the short-term, I'm not sure life will be very different for many developers.  In the next few years, however, I expect cloud computing will yield some interesting opportunities.&lt;/p&gt; &lt;p&gt;One of the most valuable parts of the conference was simply being able to talk to many developers about &lt;a href="http://www.sitefinity.com/" target="_blank"&gt;Sitefinity&lt;/a&gt;.  I'm very anxious to get feedback and understand what features would be most useful to developers.  Here are some of the frequently asked questions I received from PDC: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Does Sitefinity work with cloud services? &lt;/strong&gt;&lt;br /&gt;
    Because of Microsoft's Azure announcement, many people wanted to know how Sitefinity might work with cloud services.  I was learning about Microsoft Azure along with everyone else.  My PDC attendance will give me access to experiment with Azure and I'll certainly attempt to use Sitefinity in this new cloud services environment.  As of this writing, I'm unsure how easy or hard this might be.  I'll report on this topic when I have more information. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;How does Sitefinity handle deployment?&lt;/strong&gt;&lt;br /&gt;
    Deploying Sitefinity to a production server currently involves the transfer of many files.  Better deployment tools for Sitefinity are already being investigated for the 4.0 release.  &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Does Sitefinity scale? &lt;br /&gt; &lt;/strong&gt;Performance &amp;amp; scalability were concerns as well.  In this regard, the Telerik.com web site is providing a wonderful case study.  Telerik.com is being recreated and will be launching in the coming weeks.   This web site is being launched on the Sitefinity platform and many of the performance enhancements found in Sitefinity 3.5 were a direct result of optimizations that were needed for Telerik.com. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;How does Sitefinity integrate with SharePoint? &lt;br /&gt; &lt;/strong&gt;We absolutely want to build a collaborative story with SharePoint and I know we have customers who are already using Sitefinity with SharePoint.  But we are also investigating ways to make this integration even easier.  If anyone has thoughts or suggestions, please &lt;a href="mailto:gabe.sumner@telerik.com" target="_blank"&gt;email me&lt;/a&gt;. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;What's coming with 4.0? &lt;br /&gt; &lt;/strong&gt;The exact feature list is still being discussed.  However, we know for sure that Telerik's new OpenAccess ORM will be part of Sitefinity 4.0.  We're also looking at better deployment tools and making it easy to customize and manage Sitefinity.  &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;This was the first time I've ever worked a trade show booth.  I'm not a sales guy and my first few conversations were a challenge.  "&lt;em&gt;So what's good about Sitefinity?&lt;/em&gt;"  How do I answer this question coherently in 30 seconds?  In the end, I started telling everyone how I personally discovered Sitefinity 2 years ago.  I needed a CMS and I was trying to choose between "building my own" and "using an existing product".  Building a CMS from scratch is tedious &amp;amp; boring.  But using an existing CMS often limits the customizations that can be made.  &lt;/p&gt; &lt;p&gt;Sitefinity presented the best of both approaches.  It had a lot of features out of the box that I didn't need to build.  But Sitefinity was also based entirely on normal ASP.NET conventions.  This meant I could use technologies I was already using (Master Pages, Themes, UserControls, etc.) to easily extend &amp;amp; customize my web site.  In many ways, Sitefinity felt more like a framework than a CMS.&lt;/p&gt; &lt;p&gt;A huge "features" list is nice to have, but the best test of a CMS is how easily you can create your own features.  This is where I want Sitefinity to continue to shine.  I want developers to be comfortable building their solutions on top of Sitefinity and I never want developers to feel "trapped" or "powerless".  &lt;/p&gt; &lt;p&gt;Thanks to everyone who stopped by the Telerik booth.  It was great getting to meet each of you in person!&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-10-31/Sitefinity_Questions_from_PDC.aspx</link>
      <author>admin</author>
      <comments>http://goondocks.com/blog/08-10-31/Sitefinity_Questions_from_PDC.aspx</comments>
      <guid isPermaLink="false">d37ba137-c4df-4846-a91f-5f200f2575e5</guid>
      <pubDate>Fri, 31 Oct 2008 13:29:26 GMT</pubDate>
    </item>
    <item>
      <title>PDC: Thousands of Programmers Haunt Universal Studios</title>
      <description>&lt;p&gt;&lt;img alt="" style="display: inline; margin-left: 0px; margin-right: 0px" src="http://www.goondocks.com/Libraries/Blog_Images/horror_nights.sflb" align="right" /&gt; Last evening, Microsoft reserved all of &lt;a href="http://www.universalstudioshollywood.com/" target="_blank"&gt;Universal Studios Hollywood&lt;/a&gt; for attendees of PDC.  (This is one of the reasons the price for &lt;a href="http://www.microsoftpdc.com/" target="_blank"&gt;PDC&lt;/a&gt; registration is more than $2000).&lt;/p&gt; &lt;p&gt;Imagine for a moment the demographics at Universal Studios on any given night.  Let's assume 50% men and 50% women.  Now imagine the demographics at a Microsoft Professional Developers conference.  Based on my VERY informal study, I'm guessing it is 80% men and 20% women. And these aren't regular people.  Rather these are emotionally detached analytical programmers.&lt;/p&gt; &lt;p&gt;Halloween is in 2 days and Universal Studios was fully embracing the upcoming holiday.  Almost everything in the park had a horror theme.  Freddy Krueger greeted us at the entrance and mobs of chainsaw wielding pig beasts roamed the park.  There were several haunted "mazes" setup and even the studio tour was stopped due to an "accident".  All of us were forced off the shuttle and made to walk a gauntlet of macabre scenery.&lt;/p&gt; &lt;p&gt;All of this was fun to see, but even more amusing was the PDC crowd and how odd they looked in this park.  You would see a line stretching outside the men's restroom while the women's restroom was completely empty.  The haunted house tours were almost completely quiet except for the performers trying, in vain, to get a reaction out of anyone.  Everyone was carefully analyzing the corridors, identifying the hidden crevices, noticing patterns and calmly prepared when hatchet-wielding Jason jumped in front of you.  &lt;/p&gt; &lt;p&gt;Here is the moral of the story; haunted-house theme parks need women &amp;amp; children.  Even if you yourself aren't easily startled, you can at least laugh at the antics of others.&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-10-29/PDC_Thousands_of_Programmers_Haunt_Universal_Studios.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-10-29/PDC_Thousands_of_Programmers_Haunt_Universal_Studios.aspx</comments>
      <guid isPermaLink="false">fbb27d6f-407c-4337-a3f9-a4ded743c7d5</guid>
      <pubDate>Wed, 29 Oct 2008 13:38:19 GMT</pubDate>
    </item>
    <item>
      <title>PDC Update: Azure Colored Highlights</title>
      <description>&lt;p&gt;There is a lot being presented at the PDC.  Here is a quick overview of some of the highlights we've seen so far.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Windows Azure (Windows in the Cloud)&lt;/strong&gt; - this is the name being given to Microsoft's cloud services offering.  This technology will make it possible to deploy your projects onto Microsoft managed data services.  You'll then be able to virtually &amp;amp; infinitely scale your applications.  It looked really interesting and I'm anxious to test it, but no information on pricing was given.  Time will tell if hosting providers and co-location facilities should be afraid or not. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Windows 7&lt;/strong&gt; - fresh off the Vista fiasco, Microsoft is rebranding their flash-ship OS and trying again.  Many of the features shown looked like "common sense" enhancements.  For example, Windows 7 will include: a customizable taskbar, easy virtual hard disk management, multi-monitor support with Remote Desktop, better support for low-cost NetBooks and a new version of Paint.  Much of this stuff will be good to have, but it seems like we should've had all of this a long time ago. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Windows Live, Office Live &amp;amp; Live Mesh&lt;/strong&gt; - in recent months I've spent far more time on the road than ever before.  I have acutely felt the pain of accessing my data on multiple systems (home, laptop, work &amp;amp; phone) and keeping everything in sync.  Microsoft is making a strong push to bring their services online and make it possible to store your data in the Microsoft cloud.  This is something I'm going to spend a lot of time with.  Hopefully, this will help me overcome a giant pain point.  The API's that make this possible will be made available to developers to use in their own applications.  We've seen some impressive demonstrations of real time synchronization with this technology. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;WPF, Multi-touch&lt;/strong&gt; - we've been shown a lot of touch technology with Microsoft Surface and HP's Touch Screen.  Despite seeing multiple demonstrations of this technology, I don't get it.  To get a sense of what this looks like, dip your finger in paint and write your name on a wall by pointing at it.  How is your hand writing?  Does it look sloppy.  This is how the demonstrations of multi-touch technology look to me.  They appear clumsy &amp;amp; imprecise.  Even in the hands of experienced demonstrators the interface frequently looks bad. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The highlight for me has been the Live Services &amp;amp; Live Mesh.  I'm also very intrigued by Window's cloud services offering.  &lt;/p&gt;
&lt;p&gt;Beyond that, I've spent a ton of time talking with developers in the Telerik booth.  I'm very happy to see how much "good will" Telerik has among developers.  Even when customers have encountered past technical problems, they still have great things to say about their interactions with Telerik.  &lt;br /&gt;
&lt;br /&gt;
In addition, I'm getting a lot of great suggestions and feedback concerning Sitefinity.  In the coming days I'll post some of this feedback.&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-10-28/PDC_Update_Azure_Colored_Highlights.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-10-28/PDC_Update_Azure_Colored_Highlights.aspx</comments>
      <guid isPermaLink="false">4667ac5b-8518-4495-951b-f344eaf4c0e6</guid>
      <pubDate>Tue, 28 Oct 2008 16:45:52 GMT</pubDate>
    </item>
    <item>
      <title>PDC, DevConnections and conferences galore!</title>
      <description>&lt;p&gt;In a few hours I'm getting on a plane to attend &lt;a href="http://www.microsoftpdc.com/" target="_blank"&gt;Microsoft's Professional Developers Conference&lt;/a&gt; in Los Angeles.  Last week I attended &lt;a href="http://devreach.com/" target="_blank"&gt;DevReach&lt;/a&gt; in Sofia, Bulgaria.  In the coming months I'll also be attending &lt;a href="http://www.devconnections.com/" target="_blank"&gt;DevConnections&lt;/a&gt; in Las Vegas and then the &lt;a href="http://www.ims-show.co.uk/" target="_blank"&gt;IMS Show&lt;/a&gt; in London.  &lt;/p&gt;
&lt;p&gt;Prior to joining Telerik I worked as a programmer for 10 years.  I've worked for big companies &amp;amp; small companies.  My roles have ranged from programmer to project manager.  In all that time I only attended 3 conferences.  This recent flurry of conference attendance is totally new to me.&lt;/p&gt;
&lt;p&gt;But can you blame me?  PDC registration is $2400.  Add to this price: a plane ticket, a hotel, a rental car and 1 week of lost productivity.  My previous job was in the real estate industry.  The market was hit hard in Arizona and money was tight.  Even getting an upgraded version of Visual Studio required careful justification.  New expenses or innovative changes needed to be tied very clearly to "pay-off's".  I learned to choose my battles.  &lt;/p&gt;
&lt;p&gt;Developer conferences are a great opportunity to brainstorm &amp;amp; identify new innovations.  But projects &amp;amp; business's have cycles.  To quote the late great Solomon (or was it Pete Seeger?), "to everything there is a season".  You might be neck-deep in legacy code &amp;amp; budget problems and now is not the time to replace your &lt;a href="http://en.wikipedia.org/wiki/Data_access_layer" target="_blank"&gt;DAL&lt;/a&gt; with the &lt;a href="http://en.wikipedia.org/wiki/ADO.NET_Entity_Framework" target="_blank"&gt;Entity Framework&lt;/a&gt;, or your web forms with &lt;a href="http://www.asp.net/mvc/" target="_blank"&gt;MVC&lt;/a&gt; or the coffee-table in your living room with a &lt;a href="http://news.cnet.com/8301-13860_3-10073929-56.html?part=rss&amp;subj=News-Microsoft" target="_blank"&gt;Microsoft Surface&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Travelling &amp;amp; attending these conferences is an aspect of my new evangelist role with &lt;a href="http://www.telerik.com/" target="_blank"&gt;Telerik&lt;/a&gt; &amp;amp; &lt;a href="http://www.sitefinity.com/" target="_blank"&gt;Sitefinity&lt;/a&gt;.  These conferences give me a chance to see the latest &amp;amp; greatest technologies.  I also get a chance to interact with a lot of really smart people in the developer community.  Telerik, as a company, needs to be involved in these conferences for visibility &amp;amp; future strategic planning.  &lt;/p&gt;
&lt;p&gt;However, I'm trying hard not to allow myself to become tainted by my constant immersion in "new" and "untested" technologies.  In this regard, my perspective and Telerik's perspective match-up very nicely.  We want to deliver useful tools for every season.  If you're using bleeding-edge technologies, we want to help.  If you're supporting mature applications, then we want to help there too.  &lt;/p&gt;
&lt;p&gt;In any case, I'll do my best to share tips I learn from these conferences with those who cannot attend.  And for those of you who are attending, please stop by the Telerik booth and say "Hi".&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-10-24/PDC_DevConnections_and_conferences_galore.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-10-24/PDC_DevConnections_and_conferences_galore.aspx</comments>
      <guid isPermaLink="false">79d42ebe-6c9d-4d79-a87a-e5a5749b1dd2</guid>
      <pubDate>Fri, 24 Oct 2008 14:16:55 GMT</pubDate>
    </item>
    <item>
      <title>Vonage's V-Phone and Vista Problems Galore</title>
      <description>&lt;p&gt;So you decided to get a Vonage V-Phone and you're using Vista. Friend you are now in an unholy land.&lt;/p&gt; &lt;p&gt;Before you get started, read Vonage's &lt;a href="http://www.vonage.com/help.php?article=1226&amp;amp;category=113&amp;amp;nav=3"&gt;official article&lt;/a&gt; on using the V-Phone with Vista. If you're lucky, these instructions will work perfectly. If not, follow.&lt;/p&gt; &lt;p&gt;&lt;i&gt;&lt;img style="padding-right: 15px; width: 216px; height: 150px" alt="Tim the Enchanter" src="/Libraries/Blog_Images/tim-the-enchanter.sflb" align="left" /&gt;.but follow only if ye be men of valor! For the entrance to this cave is guarded by a creature so fowl, so cruel that no man yet has fought with it and lived. Bones of four fifty men lie strewn about its lair! So, brave knights, if you do doubt your courage, or your strength, come nay further, for death awaits you all . . . with nasty big pointy teeth!&lt;/i&gt;&lt;/p&gt; &lt;h2&gt;V-Phone Locks Up My Whole Computer&lt;/h2&gt; &lt;p&gt;My computer locked up entirely each time I inserted the V-Phone into my USB drive. It would display an "Installing Driver" message and then stall for the next 15 minutes while attempting to install the Vonage USB &amp;amp; headset drivers. In the meantime, all my other applications would freeze. If this happens, you'll just need to reboot without the USB drive.&lt;/p&gt; &lt;p&gt;In my case, the V-Phone seemed to conflict with an ISO mounting program I was using called &lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt;Virtual CloneDrive&lt;/a&gt; (by SlySoft). Whether this is something particular to Virtual CloneDrive or ALL ISO mounting programs, I cannot say. I've also seen forum messages that suggest V-Phone is picky about the drive letter it is assigned. Some have suggested that V-Phone be assigned the first available letter not associated with a removable device.&lt;/p&gt; &lt;p&gt;Once Virtual CloneDrive was uninstalled, I was able to reboot and access the V-Phone USB drive.&lt;/p&gt; &lt;h2&gt;V-Phone USB Drive Is Empty&lt;/h2&gt; &lt;p&gt;Once you gain access to your V-Phone USB drive you'll be delighted to discover it's completely empty. In reality, it's probably not empty but instead contains hidden files. You'll need to configure your computer to &lt;a href="http://www.xtra.co.nz/help/0,,4155-1916458,00.html"&gt;show hidden files&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Once hidden files are being displayed, you will see a "vonage" directory on your USB drive. &lt;/p&gt; &lt;p&gt;If this doesn't work, check the USB drivers associated with your V-Phone. To do this click "Start", right-click "Computer" and click "Manage". Now click "Device Manager" and expand the options for "Disk Drives" &amp;amp; "DVD/CD-ROM Drives".&lt;/p&gt; &lt;p&gt;If the drivers are correct, you should see the following items:&lt;br /&gt; &lt;br /&gt; &lt;img width="593" height="416" alt="Vonage V-Phone USB Drivers" src="/Libraries/blog_images/vonage-drivers.sflb" /&gt;&lt;/p&gt; &lt;p&gt;In my case, I was seeing a generic disk drive item instead of "VONAGE Flash Disk USB Device". I right-clicked on the item, clicked Properties, disabled the device and uninstalled the driver. I then unplugged the V-Phone and re-inserted it into the USB port. It might also help to plug the V-Phone into a different USB port. You should also use the USB ports on your computer and avoid using an external USB hub. Eventually, after much trial &amp;amp; error, things clicked into place and the correct driver loaded for me.&lt;/p&gt; &lt;h2&gt;V-Phone is missing the autodown.exe file&lt;/h2&gt; &lt;p&gt;The hidden "vonage" directory on the V-Phone should contain a file called "autodown.exe". For me, this file was (and is) missing. I have been unable to coax this file into being created. Here is a work-around though. Download the following file:&lt;/p&gt; &lt;p&gt;&lt;a href="http://httpconfig.vonage.net/usb-update-2007-01-22-000001.exe"&gt;http://httpconfig.vonage.net/usb-update-2007-01-22-000001.exe&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(If this link ceases to work, call Vonage support and get the updated download link.)&lt;/p&gt; &lt;p&gt;&lt;b&gt;Don't run this executable directly!&lt;/b&gt; You need to run it in XP compatibility mode and with parameters. To do this, we're going to create a shortcut on your desktop.&lt;/p&gt; &lt;p&gt;Go to your desktop, right-click, click "New" and then click "Shortcut". Click "Browse" and locate the downloaded "usb-update-2007-01-22-000001.exe". Select the file and click "Ok". You will now see a very long path to your file. Example:&lt;/p&gt; &lt;p&gt;C:\Users\Public\Downloads\usb-update-2007-01-22-000001.exe&lt;/p&gt; &lt;p&gt;You must add a parameter to the end of this path telling this program where your "vonage" USB directory is:&lt;/p&gt; &lt;p&gt;C:\Users\Public\Downloads\usb-update-2007-01-22-000001.exe /TARGETDIR=E:\vonage&lt;/p&gt; &lt;p&gt;&lt;img width="496" height="512" alt="" src="/Libraries/blog_images/vphone-shortcut.sflb" /&gt;&lt;br /&gt; &lt;br /&gt;
Edit your file path and set your "TARGETDIR" to your V-Phone drive. Once you've edited the location, click "Next". Type a name for your shortcut and click "Finish".&lt;/p&gt; &lt;p&gt;You're still not done! Right-click your newly created shortcut and click "Properties". Go to the "Compatibility" tab and check "Run this program in compatilbity mode for". Make sure "Windows XP (Service Pack 2)" is selected.&lt;/p&gt; &lt;p&gt;&lt;img width="496" height="626" alt="" src="/Libraries/blog_images/vphone-xp-mode.sflb" /&gt;&lt;br /&gt; &lt;br /&gt;
Click "Ok". Double-click your shortcut.hopefully the V-Phone software will load. This shortcut is how you will load the V-Phone software. As mentioned, I have been unable to get "autodown.exe" to appear on the V-Phone USB device.&lt;/p&gt; &lt;h2&gt;Voice Quality is really bad when using the V-Phone&lt;/h2&gt; &lt;p&gt;Yep, that's the V-Phone. I suggest unplugging the V-Phone headset and buying a reasonable USB microphone/headset from your favorite computer store. You can use the settings in the V-Phone software to utilize this new USB microphone/headset. Do it! Your calls will sound A LOT better.&lt;/p&gt; &lt;h2&gt;But wait a second, if I'm not running software from the V-Phone or using the V-Phone headset, what's the point of having a V-Phone?&lt;/h2&gt; &lt;p&gt;There is no point. Except, you will still need to have the V-Phone plugged into a USB port. Your Vonage account is attached to the MAC address found on your V-Phone. So you will need your V-Phone sitting securely in a USB port at all times. Think of your V-Phone as a hardware-based authentication system.&lt;/p&gt; &lt;p&gt;I would personally prefer to have a downloadable desktop application and use my username &amp;amp; password. I assume Vonage is using hardware-based authentication to prevent account sharing. This is annoying, but the buggyness of this USB hardware compounds my annoyance with this scheme.&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-09-18/Vonage's_V-Phone_and_Vista_Problems_Galore.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-09-18/Vonage%e2%80%99s_V-Phone_and_Vista_Problems_Galore.aspx</comments>
      <guid isPermaLink="false">9511e815-1cef-45b6-8d29-705005d6301f</guid>
      <pubDate>Thu, 18 Sep 2008 17:11:07 GMT</pubDate>
    </item>
    <item>
      <title>Now working at Telerik</title>
      <description>&lt;p&gt;I'm now working as a Developer Evangelist at Telerik; my first day was this past Monday.  In this role I will be focusing on Sitefinity &amp;amp; Sharepoint.  &lt;/p&gt;
&lt;p&gt;Those of you who've read a couple of my past Sitefinity articles are probably now thinking "Huh?"  Seth summed this up perfectly &lt;a href="http://blogs.sitefinity.com/Ivan/Post/08-09-08/first_book_on_sitefinity_sitefinity_made_easy_by_aimee_nusz.aspx"&gt;in his comment&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px"&gt;
&lt;p&gt;&lt;i&gt;Oh gees... the world has turned upside down... Gabe Sumner one of the most vocal Sitefinity users (and in past times scathingly so Gabe! :-) is working as a Developer Evangelist.&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My reply to this comment was "it takes a confident company to hire their critics".  One year ago I wrote how I picked Sitefinity because there were open forums, an online demo, a community-version of the product and I didn't need to talk to sales to give it a look.  These things showed confidence, not only in the product, but in Telerik's customers.&lt;/p&gt;
&lt;p&gt;I trust companies who invite scrutiny.  In my experience, these are the companies committed to integrity, quality &amp;amp; constant improvement.&lt;/p&gt;
&lt;p&gt;Bringing me into the ranks is just another demonstration of that confidence.  Furthermore, from what I've seen, it's a confidence that is well warranted.  I'm very excited about Sitefinity's future plans.  I'm also excited to be part of the Telerik team.&lt;/p&gt;
&lt;p&gt;So here I am.  I'll be much more heavily involved with the Sitefinity &amp;amp; Telerik community.  I also encourage you to contact me at &lt;a href="mailto:gabe.sumner@telerik.com"&gt;gabe.sumner@telerik.com&lt;/a&gt;.&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-09-12/Now_working_at_Telerik.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-09-12/Now_working_at_Telerik.aspx</comments>
      <guid isPermaLink="false">5258f5d9-fffd-4749-a7eb-a8e5d91ae9d3</guid>
      <pubDate>Fri, 12 Sep 2008 19:23:21 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity: Refreshing the Cache</title>
      <description>&lt;p&gt;Inside the "Properties" of each Sitefinity page there is an option for enabling "Page Caching".&lt;/p&gt; &lt;p&gt;&lt;img width="589" height="147" alt="" src="/Libraries/Blog_Images/Sitefinity_Cache_Option.sflb" /&gt;&lt;/p&gt; &lt;p&gt;Setting this option to "Yes" will make a dramatic difference in performance. In fact, unless you have a strong reason for not doing so, you should enable page caching on all of your Sitefinity pages. Web pages served from cache do not require expensive database interactions or code processing. Everything is pre-fetched &amp;amp; pre-rendered. The web page will load almost instantly.&lt;/p&gt; &lt;p&gt;If you need information about enabling, configuring or using caching in Sitefinity, please visit the following resources: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.sitefinity.com/support/knowledge-base/kb-article/b1154K-bagb-b1154T-cgb.aspx"&gt;"Optimizing Performance on Sitefinity Web Site" KB Article &lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-htthk.aspx"&gt;"Curious About Caching" support thread started by Josef Rogovsky&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;br /&gt; &lt;h2&gt;Stale Pages &amp;amp; Old Caches&lt;/h2&gt; &lt;p&gt;Page caching is great, but it can result in stale web pages. Server-side caching essentially involves creating a "static" version of a "dynamic" web page. In order for page caching to be effective we need a reliable way of expiring and refreshing the cache when the underlying web page has changed.&lt;/p&gt; &lt;p&gt;Sitefinity automatically refreshes the cache each time pages are edited in the administration. In many cases, this is good enough. However, there are situations when a page is updated outside the Sitefinity administration. One example of this is Blog comments. When a new blog comment is posted, the page has changed outside of the administration. This means the cache is not refreshed and the old web page will continues to be displayed. &lt;/p&gt; &lt;p&gt;This behaviour is an &lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bcteak.aspx"&gt;acknowledged Sitefinity bug&lt;/a&gt; and will be addressed in a future version of Sitefinity.&lt;/p&gt; &lt;h2&gt;Updating the Cache with New Blog Comments&lt;/h2&gt; &lt;p&gt;In the meantime, I discovered a way to refresh the cache when a new Sitefinity blog comment is posted. This work-around involves putting a very small UserControl into your Blog ControlTemplate. This UserControl does not display anything. Instead, it simply checks for a "PostBack". If "IsPostBack" is "true" then we assume a new Blog comment has been posted and the cache is expired &amp;amp; refreshed.&lt;/p&gt; &lt;p&gt;Here is how to implement this work-around.&lt;/p&gt; &lt;p&gt;Create &lt;strong&gt;~/Goondocks/UserControls/CacheExpire.ascx&lt;/strong&gt;&lt;/p&gt; &lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt; &lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt; &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;%@ Control &lt;/span&gt;&lt;span style="color: #ff0000"&gt;Language&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"C#"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"true"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;CodeFile&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"CacheExpire.ascx.cs"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;Inherits&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"Goondocks_UserControls_CacheExpire"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; %&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Create &lt;strong&gt;~/Goondocks/UserControls/CacheExpire.ascx.cs&lt;/strong&gt;&lt;/p&gt; &lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt; &lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt; &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System;  &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Web;  &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="font-size: 11px"&gt; System.Web.UI;  &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px"&gt; partial &lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="font-size: 11px"&gt; Goondocks_UserControls_CacheExpire : System.Web.UI.UserControl  &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;{  &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;    &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="font-size: 11px"&gt; Page_Prerender(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="font-size: 11px"&gt; sender, EventArgs e)  &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;    {  &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;        &lt;span style="color: #008000"&gt;// Only evaluate if this is a postback. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (IsPostBack == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;        {  &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;            &lt;span style="color: #008000"&gt;// Only evaluate if the form is valid. &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (Page.IsValid == &lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;            {  &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;                &lt;span style="color: #008000"&gt;// Expire/Refresh Cache &lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;                Telerik.DataAccess.CacheDependencyHandler.Current.Notify(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&lt;span style="font-size: 11px"&gt;(Telerik.Cms.ICmsPage));  &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;            }  &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;        }  &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;    }  &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt;} &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Register the "CacheExpire" UserControl in &lt;strong&gt;~/Sitefinity/ControlTemplates/Blogs/ContentViewSingleItem.ascx&lt;/strong&gt;&lt;/p&gt; &lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt; &lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt; &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;%@ Register &lt;/span&gt;&lt;span style="color: #ff0000"&gt;src&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"~/Goondocks/UserControls/CacheExpire.ascx"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;tagname&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"CacheExpire"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;tagprefix&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"uc1"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; %&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Add the "CacheExpire" UserControl tag in &lt;strong&gt;~/Sitefinity/ControlTemplates/Blogs/ContentViewSingleItem.ascx&lt;/strong&gt;&lt;/p&gt; &lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt; &lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt; &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt;uc1:CacheExpire &lt;/span&gt;&lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"CacheExpire1"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="font-size: 11px"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;"server"&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;br /&gt; &lt;p&gt;The &lt;strong&gt;&amp;lt;uc1:CacheExpires&amp;gt;&lt;/strong&gt; tag can be inserted almost anywhere inside the "&lt;strong&gt;ContentViewSingleItem.ascx&lt;/strong&gt;" page.  I personally put this tag inside the &lt;strong&gt;&amp;lt;sfWeb:CommentsList&amp;gt;&lt;/strong&gt; block.&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-08-18/Sitefinity_Refreshing_the_Cache.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-08-18/Sitefinity_Refreshing_the_Cache.aspx</comments>
      <guid isPermaLink="false">9014bdde-7729-4036-9ff0-e2010cb172f6</guid>
      <pubDate>Mon, 18 Aug 2008 00:39:52 GMT</pubDate>
    </item>
    <item>
      <title>ASP.NET: Supporting Casual Exploration &amp; Discovery</title>
      <description>&lt;p&gt;Many of us who now primarily use ASP.NET began web programming with another technology.  In many cases, our first exposure to a technology didn't come from a job, but rather from personal projects.  The platform we choose was based entirely on what was accessible to us at the time.  &lt;/p&gt; &lt;p&gt;In my case, this meant PHP, Apache, MySQL and UNIX.  Each of these technologies remains completely free, yet very capable.  Building on this technology doesn't require the purchase of an IDE, server license or database server.  The barrier to entry remains low.  &lt;/p&gt; &lt;p&gt;I was eventually given the opportunity to learn ASP.NET in a business setting and now prefer ASP.NET as a web development platform.  However, I continue to feel a great affinity towards the &lt;a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)"&gt;LAMP&lt;/a&gt; community that helped me get started.   &lt;/p&gt; &lt;p&gt;This being said, it can be very hard to be an ASP.NET developer who participates in these communities.  The prevailing thought seems to be that ASP.NET is a completely unreasonable choice.  David Heinemeier Hansson with 37signals.com &lt;a href="http://www.loudthinking.com/arc/000433.html"&gt;put it very bluntly&lt;/a&gt;:&lt;/p&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;&lt;em&gt;I would have a hard time imagining hiring a programmer who was still on Windows for 37signals. If you don't care enough about your tools to get the best, your burden of proof just got a lot heavier.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;I have felt this burden and it's easy to become resentful of this mindset.  Once the resentment wears off, I'm simply left saddened.  ASP.NET is a solid web development platform with some respectable advantages.  It's not perfect (nothing is), but it's certainly worth a look.  ASP.NET experience should certainly not be a liability.  &lt;/p&gt; &lt;p&gt;Recently, Rick Strahl wrote an article entitled "&lt;a href="http://www.west-wind.com/weblog/posts/453551.aspx"&gt;ASP.NET gets no Respect&lt;/a&gt;".  In addressing this topic he writes: &lt;/p&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;&lt;em&gt;The obvious question is whether all of this should concern us at all, or whether we should just be happy we've found our development platform that we're happy with and go on our merry way. It does matter to some degree to me. Like most people I want to be using a framework that has merit and is popular and maybe more importantly that I don't have to fight to justify my use of everywhere I go.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;I very much agree!  But how do you begin to combat the preconceptions many programmers have developed against M$ technologies?  &lt;/p&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;&lt;em&gt;I think it would also help if Microsoft spent a little more effort to push the Microsoft platform outside of the already converted. Most of the advertising for ASP.NET and .NET and developer tools in general tends to be targeted at .NET developers, which is just preaching to the choir. What's really needed is more of a push to gain the hearts of those outside of the already converted circle. This is not easy and has to be done sensibly and not in the ram rod fashion that Microsoft 'case studies' often employ.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Rick is correct, "case studies" certainly won't help.  It will be assumed anything Microsoft writes will be biased.  To even begin to reach this audience we need to first understand the preconceptions that are already in place.  Rick highlights one of them in his article:&lt;/p&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;&lt;em&gt;But the problem is one of perception: Micro$oft is by default associated with big dollar signs, and "Microsoft is always after your money".&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;This perception is very strong.  It doesn't help that many ASP.NET product tutorials and sample projects assume a full-version of Visual Studio and administrative control of a dedicated web server.  A curious developer is given the immediate impression that it takes several thousand dollars to even evaluate ASP.NET.  As a result, a negative M$ stereotype is reinforced.   &lt;/p&gt; &lt;p&gt;My most recent experience with this is Silverlight.  I typed "Silverlight Getting Started" into Google and was greeted with the following page:&lt;/p&gt; &lt;p&gt;&lt;img alt="Silverlight Getting Started Steps" src="/Libraries/Blog_Images/silverlight-getting-started.sflb" /&gt;&lt;br /&gt; &lt;br /&gt;
Please note, I'm doing this from home on my personal time.  Right off the bat, I'm told I need "Visual Studio 2008".  My home computer doesn't have "Visual Studio 2008".  Do I need to make a purchase for the opportunity to "play" with Silverlight?  I'm not even sure what Silverlight is.  I read somewhere it's simply the M$-version of Flash.   Do I really need it?  Do I care that much?  &lt;/p&gt; &lt;p&gt;It's important to recognize that many talented programmers refine their skills in their personal time instead of on the company dime.  The LAMP platform &amp;amp; community does a wonderful job of &lt;em&gt;&lt;strong&gt;&lt;span style="text-decoration: underline"&gt;nurturing casual exploration &amp;amp; discovery&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;.  It's no surprise this proves a fertile environment for start-ups.  I understand the loyalty these programmers later feel towards the platform that helped them get started.&lt;/p&gt; &lt;p&gt;To overcome the stigma being applied to ASP.NET we need to celebrate casual exploration &amp;amp; discovery.  As a community we cannot assume everyone is using Visual Studio, MS-SQL, IE, Office, etc.  When viewed from the outside, this looks like "dogma" &amp;amp; "lock-in" and it's not attractive.  It also becomes prohibitively expensive to get started.&lt;/p&gt; &lt;p&gt;Engaging these casual programmers may require foregoing immediate profit in favor of cultivating a wider-community.  The value of this community should not be understated though.  These are programmers who are passionate enough about technology that they spend their free-time doing research.  &lt;em&gt;These are good people to have in your corner.&lt;/em&gt;  These programmers will go on to advise the companies they work for.  As a result, the technologies that helped nurture them will infiltrate (and are infiltrating) large organizations.  &lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-08-16/ASP_NET_Supporting_Casual_Exploration_Discovery.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-08-16/ASP_NET_Supporting_Casual_Exploration_Discovery.aspx</comments>
      <guid isPermaLink="false">3dee88a1-0942-482e-a1ad-3c0822234989</guid>
      <pubDate>Sat, 16 Aug 2008 16:54:59 GMT</pubDate>
    </item>
    <item>
      <title>Enabling CAPTCHA for Sitefinity Blog Comments</title>
      <description>&lt;p&gt;&lt;img style="width: 320px; height: 80px" alt="Really Really Annoying CAPTCHA" src="/Libraries/Blog Images/Bad Captcha.sflb" align="right" /&gt;Since this blog launched I have deleted hundreds of SPAM comments from my various posts.  These comments say nothing &amp;amp; merely link to some other web site.  In most cases it's obvious the comments were made by an automated SPAM bot.  Cleaning this garbage off my web site has been a weekly chore for me.&lt;br /&gt;
 &lt;br /&gt;
With Sitefinity 3.2 Telerik introduced a new &lt;a href="http://www.sitefinity.com/help/developer-manual/telerik.cms.web.ui-telerik.web.ui.spamprotection.spamprotector.html"&gt;SpamProtector&lt;/a&gt; control.  This control can be placed onto any page or form to provide various SPAM-fighting capabilities.  Two methods of SPAM protection are offered by this control; auto-detection &amp;amp; CAPTCHA.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="550" height="400" alt="Control Designer for the SpamProtector Control" src="/Libraries/Blog Images/SpamProtector Configure.sflb" /&gt;&lt;br /&gt;
 &lt;br /&gt;
By default the SpamProtector control is enabled on Sitefinity Blog Comments.  However, it is switched into "auto-detection" mode.  This mode uses various techniques &amp;amp; hidden text fields to trick automated bots into revealing themselves.  This is not always effective though and some sophisticated bots will be capable of circumventing detection.&lt;br /&gt;
 &lt;br /&gt;
Which leads us to &lt;a href="http://en.wikipedia.org/wiki/Captcha"&gt;CAPTCHA&lt;/a&gt; detection.  We've all seen (and hate) the garbled images we're shown and asked to reproduce.  As annoying as this is for us, it's even more annoying for SPAM bots.  These images offer a significant hurdle to blog comment SPAM. &lt;/p&gt;
&lt;h2&gt;Adding CAPTCHA in 2 Easy Steps&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt;  Load the following file into your favorite editor:&lt;br /&gt;
 &lt;br /&gt;
&lt;strong&gt;~/Sitefinity/ControlTemplates/Blogs/ContentViewSingleItem.ascx&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; Find the existing &lt;strong&gt;&amp;lt;sf:spamprotector /&amp;gt;&lt;/strong&gt; tag and add an &lt;strong&gt;EnableCaptcha="true"&lt;/strong&gt; parameter.&lt;br /&gt;
 &lt;br /&gt;
 &lt;img width="566" height="460" alt="CAPTCHA for SpamProtector being enabled" src="http://www.goondocks.com/Libraries/Blog%20Images/Captcha%20Enabled.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
You're done.  Your blogs posts will now be free(er) of blog comment SPAM.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="550" height="478" alt="SpamProtector CAPTCHA in action" src="/Libraries/Blog Images/Captcha In Action.sflb" /&gt;&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-08-10/Enabling_CAPTCHA_for_Sitefinity_Blog_Comments.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-08-10/Enabling_CAPTCHA_for_Sitefinity_Blog_Comments.aspx</comments>
      <guid isPermaLink="false">d35cb051-af41-41fb-a886-436002c985ce</guid>
      <pubDate>Sun, 10 Aug 2008 14:23:29 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity "File Link" Control</title>
      <description>&lt;p&gt;Sitefinity 3.2 comes with an "&lt;a href="http://www.sitefinity.com/help/developer-manual/libraries-api-overview.html"&gt;Images &amp;amp; Documents Module&lt;/a&gt;". This module makes it relatively easy to create &amp;amp; manage libraries of images, files &amp;amp; documents on your web site. I found this module to be a much easier than using FTP to manage my web site's files.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="550" height="404" alt="Sitefinity Images &amp;amp; Documents Module" src="/Libraries/Blog Images/images-and-documents-module.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
I now manage all files related to Goondocks through the Images &amp;amp; Documents module. This includes the images that appear on this article, as well as files available for download.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;strong&gt;Caution:&lt;/strong&gt; The Sitefinity "Images &amp;amp; Documents Module" stores files directly in the database. Some hosting packages offer generous hosting disk space but very limited database storage. If you have limited database storage I would caution you about relying heavily on the Images &amp;amp; Documents Module. With frequent use you will find your database size quickly growing. Alternately, Ivan, with Sitefinity, &lt;/em&gt;&lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bdgdtd.aspx"&gt;&lt;em&gt;posted some options&lt;/em&gt;&lt;/a&gt;&lt;em&gt; for modifying the Images &amp;amp; Documents Module to use alternate storage methods. I have not personally experimented with the customizations he describes.&lt;/em&gt; &lt;/p&gt;
&lt;h2&gt;Using Images &amp;amp; Documents in your Sitefinity Pages&lt;/h2&gt;
&lt;p&gt;Once a file is uploaded via the Images &amp;amp; Documents Module, Sitefinity creates a unique URL for accessing the file. Example:&lt;br /&gt;
 &lt;br /&gt;
&lt;a href="http://www.goondocks.com/Libraries/Havasu%20Falls/before-the-falls.sflb"&gt;http://www.goondocks.com/Libraries/Havasu%20Falls/before-the-falls.sflb&lt;/a&gt;&lt;br /&gt;
 &lt;br /&gt;
You can then insert a static anchor link into your web page to link to the file. &lt;br /&gt;
 &lt;br /&gt;
I wanted to go a step beyond this however. Rather than inserting a static link to my file, I wanted to place a control on my page that could be associated with a previously uploaded file. This method has the following advantages: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The control-to-file association is based on an ID, not a URL. If the file name is changed, the URL will also change. This would cause a static link to break. By using an ID association, the control dynamically updates the URL and the association remains intact. &lt;/li&gt;
    &lt;li&gt;The control can render dynamic information about the underlying file (file type, file size, date created, date modified). You could statically reproduce all of this information in the page, but it would become outdated quickly. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To accomplish this I created a new Sitefinity "File Link" control. This control can be dropped onto any Sitefinity page. Once placed the "File Link" control can be associated with any existing file uploaded via the "Images &amp;amp; Documents Module". When the file association is in-place the control will render a "Download Box". &lt;/p&gt;
&lt;h2&gt;How To Use the "File Link" Control&lt;/h2&gt;
&lt;p&gt;Drop the "File Link" control onto your Sitefinity page.&lt;/p&gt;
&lt;p&gt;&lt;img width="550" height="361" alt="Dropping the Sitefinity File Link Control onto a page." src="/Libraries/Blog Images/file-link-drop.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
Edit the "File Link" control and select the Images &amp;amp; Documents file you wish to associate with the control:&lt;/p&gt;
&lt;p&gt;&lt;img width="550" height="400" alt="Configuring the Sitefinity File Link Control" src="/Libraries/Blog Images/file-link-configure.sflb" /&gt;&lt;br /&gt;
&lt;br /&gt;
Click "&lt;strong&gt;I'm Done&lt;/strong&gt;" and you now have a fully dynamic download-box for your file:&lt;br /&gt;
&lt;br /&gt;
&lt;img width="550" height="452" alt="Sitefinity File Link Control placed on a page." src="/Libraries/Blog Images/file-link-placed.sflb" /&gt;&lt;/p&gt;
&lt;h2&gt;How To Download&lt;/h2&gt;
&lt;p&gt;This control and its source-code is included in the &lt;a href="/projects/goondocks-sitefinity-controls.aspx"&gt;GoonDocks Sitefinity Controls&lt;/a&gt;.   &lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-08-09/Sitefinity_File_Link_Control.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-08-09/Sitefinity_File_Link_Control.aspx</comments>
      <guid isPermaLink="false">5822db34-a71b-4bbd-8266-e3b5bce9c458</guid>
      <pubDate>Sat, 09 Aug 2008 21:44:00 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity on a Virtual Private Server</title>
      <description>&lt;br /&gt;
Goondocks.com has now been moved to a &lt;a href="http://www.hostmysite.com/"&gt;HostMySite.com&lt;/a&gt; Virtual Private Server.&lt;br /&gt;
&lt;br /&gt;
Previously I had been using &lt;a href="http://www.discountasp.net/"&gt;DiscountASP.net&lt;/a&gt; to host my Sitefinity-based web site.  For the record, I have absolutely no complaints with DiscountASP.net.  The service was solid and I was a happy customer.&lt;br /&gt;
&lt;br /&gt;
This being said, I wanted a higher-level of control over my web site &amp;amp; hosting environment.  My new VPS hosting platform allows Remote Desktop, multiple web sites, my own IP address, dedicated resources, more file space.  The downside is my new VPS is also more expensive.&lt;br /&gt;
&lt;br /&gt;
The goondocks.com web site has only been running on this new hosting environment for a few days but so far so good.  Based on my limited testing, the web site is running faster &amp;amp; better than ever.&lt;br /&gt;
&lt;br /&gt;
Time will tell.... &lt;br /&gt;
</description>
      <link>http://goondocks.com/blog/08-07-21/Sitefinity_on_a_Virtual_Private_Server.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-07-21/Sitefinity_on_a_Virtual_Private_Server.aspx</comments>
      <guid isPermaLink="false">e7887d41-7765-4b8a-9bd9-ba95754ecee0</guid>
      <pubDate>Mon, 21 Jul 2008 13:43:13 GMT</pubDate>
    </item>
    <item>
      <title>Now Upgraded to Sitefinity 3.2</title>
      <description>&lt;p&gt;&lt;img style="width: 200px; height: 221px" alt="Rock Climber" hspace="7" src="/Libraries/Blog_Images/rock-climbing.sflb" align="right" border="1" /&gt;I am happy to announce, after a dozen attempts, I have managed to upgrade Goondocks.com to Sitefinity 3.2.&lt;/p&gt; &lt;p&gt;My advice to anyone attempting to upgrade from 3.1 is to go through this entire process on your local machine before you even &lt;strong&gt;attempt&lt;/strong&gt; to do this in a live setting.  You will discover many controls have changed.  You will also discover the "&lt;em&gt;ControlTemplate&lt;/em&gt;" changes you made for 3.1 may no longer be compatible with the updated 3.2 controls.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Here are the steps involved in the Goondocks.com upgrade:&lt;/strong&gt;  &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Backup web files. &lt;/li&gt; &lt;li&gt;Backup database. &lt;/li&gt; &lt;li&gt;Disable web server &lt;/li&gt; &lt;li&gt;FTP "Sitefinity" directory. &lt;/li&gt; &lt;li&gt;FTP "bin" directory. &lt;/li&gt; &lt;li&gt;FTP "RadControls" directory. &lt;/li&gt; &lt;li&gt;FTP updated "web.config" file. &lt;/li&gt; &lt;li&gt;Re-add customizations to the "web.config" file. &lt;/li&gt; &lt;li&gt;Delete "/bin/RadChart.NET2.dll" file. &lt;/li&gt; &lt;li&gt;Delete "/bin/RadEditor.NET2.dll" file. &lt;/li&gt; &lt;li&gt;Restart web server. &lt;/li&gt; &lt;li&gt;Access web site. &lt;/li&gt; &lt;li&gt;Pray. &lt;/li&gt; &lt;li&gt;Use wizard, re-setup the connection to the database. &lt;/li&gt; &lt;li&gt;Login to Sitefinity with my existing username/password. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;At this point my existing pages were viewable; although my web site looked horrible.  Sitefinity 3.2 introduces several updated versions of the 3.1 controls.  In some cases these updated controls were not compatible with my 3.1 Control Templates.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Work through the web site. &lt;/li&gt; &lt;li&gt;Update Master Templates as needed. &lt;/li&gt; &lt;li&gt;Update Control Templates as needed. &lt;/li&gt; &lt;li&gt;Update stylesheets as needed. &lt;/li&gt; &lt;li&gt;Replace old controls as needed.  &lt;/li&gt; &lt;li&gt;Replace the Blog posts control. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;At this point all of my Sitefinity 3.1 blog posts were missing.  &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.sitefinity.com/support/forums/support-forum-thread/b1043S-bckhge.aspx"&gt;Execute raw SQL against my database.&lt;/a&gt;  &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;I now had some of my blog posts back.  For some reason approximately 10 blogs posts had simply disappeared.  Upon investigation I discovered these blogs posts were missing an entry in the "&lt;em&gt;sf_CmsContentVersion&lt;/em&gt;" table.&lt;/p&gt; &lt;p&gt;To fix this I manually inserted the values.  I used the "&lt;em&gt;sf_CmsContentBase&lt;/em&gt;" table as a reference.  Using that table I was able to see which blog posts were missing.  I was also able to get the ID's and dates.&lt;/p&gt; &lt;p&gt;Each time I inserted a value in this table I needed to find the blog post in the Sitefinity Admin.  The title was blank.  I needed to click "Edit" and then "Save".  This fixed the blog post and made it look normal.&lt;/p&gt; &lt;p&gt;Ok, I now have all my blog posts, but the search-engine friendly blog URLs are gone.  The URL column in the "&lt;em&gt;sf_CmsContentBase&lt;/em&gt;" table is "NULL".&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Click through the Sitefinity Admin and re-save each blog post. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;I then noticed that some of my blog URLs had changed.  For example I had a blog post titled "Sitefinity - Please, No More Modules!".&lt;/p&gt; &lt;p&gt;The old URL was: /08-04-19/sitefinity_-_please_no_more_modules_.aspx&lt;br /&gt;
The new URL was: /08-04-19/sitefinity_-_please_no_more_modules.aspx&lt;/p&gt; &lt;p&gt;Notice the missing "underscore" at the end.  To fix this I directly altered the "URL" column in the "&lt;em&gt;sf_CmsContentBase&lt;/em&gt;" table.&lt;/p&gt; &lt;p&gt;All my blog posts now appear and the existing search-engine friendly URLs are working fine.  However, my "Tags" &amp;amp; "Categories" links aren't working.&lt;/p&gt; &lt;p&gt;The Blog controls are completely updated.  You need to remove your existing Blogs, Categories, Tags, and Archive controls and drop updated versions of these controls onto your page.  Configure the controls as needed.&lt;/p&gt; &lt;p&gt;Note the query string values that are being used between these controls.  The "Blog" control defaults to "BlogTagID" while the Tag control defaults to "CntTagID".  These obviously do not match and this will result in your Tag &amp;amp; Category links not working.&lt;/p&gt; &lt;p&gt;There are still a few lingering problems, but this web site is mostly functioning again.  &lt;/p&gt; &lt;hr noshade="true" size="1" /&gt; &lt;p&gt;This upgrade process has been horrid.  I hope to never go through anything like this again.  I pity anyone trying to follow in my foot-steps.  I've already written about this however and Telerik expressed their commitment to addressing these issues in the future.  For the moment, I am going to let the issue drop.&lt;/p&gt; &lt;p&gt;All of this being said, I'm really enjoying some of the new Sitefinity 3.2 features.  After I've had some time to "live" with these new features I will write-up of Sitefinity 3.2 review.  For now, I'm simply thankful to be through the upgrade.&lt;/p&gt;
</description>
      <link>http://goondocks.com/blog/08-05-05/Now_Upgraded_to_Sitefinity_3_2.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://goondocks.com/blog/08-05-05/Now_Upgraded_to_Sitefinity_3_2.aspx</comments>
      <guid isPermaLink="false">66dd9195-81c9-49e3-9129-7d1f6da7054d</guid>
      <pubDate>Mon, 05 May 2008 14:41:27 GMT</pubDate>
    </item>
  </channel>
</rss>