<?xml version="1.0"?>
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007">
   <channel>
      <title>Umbraco</title>
      <description>Umbraco community blog posts
(http://blog.hendyracher.co.uk/umbraco-blogs-and-pipes/)</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=8llM7pvk3RGFfPy4pgt1Yg</link>
      <pubDate>Sun, 29 Nov 2009 16:33:50 -0800</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <item>
         <title>Our phone line is currently out of order (update: fixed)</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/FcgpPX1Me7k/29158</link>
         <description>&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; the phones are back up&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update 15:00 gmt+1:&lt;/strong&gt; the lines are still down, we sincerely apologize for any inconvenience&lt;/p&gt; &lt;p&gt;We've been informed that our phone line is currently out of order, so when you try to call the Umbraco HQ, you will get an annoying &quot;Please hold the line&quot; message instead of talking to one of the very friendly ladies handling all calls to Umbraco HQ.
&lt;/p&gt;
&lt;p&gt;
The issue is being worked on as we speak and should hopefully be fixed very soon. In the meantime, you can use our contact page to write us an email, if you are in need of talking to us directly, leave your name and phone number and we will give you a call as soon as possible. &lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=FcgpPX1Me7k:O0BIYF4d8BE:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=FcgpPX1Me7k:O0BIYF4d8BE:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=FcgpPX1Me7k:O0BIYF4d8BE:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/FcgpPX1Me7k&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Per Ploug Hansen</author>
         <guid isPermaLink="false">http://umbraco.org/29158</guid>
         <pubDate>Fri, 27 Nov 2009 01:09:02 -0800</pubDate>
      </item>
      <item>
         <title>Umbraco Gallery Package - jqGallery</title>
         <link>http://www.geckonewmedia.com/blog/2009/11/17/umbraco-gallery-package---jqgallery</link>
         <guid isPermaLink="false">http://www.geckonewmedia.com/blog/2009/11/17/umbraco-gallery-package---jqgallery</guid>
         <pubDate>Tue, 17 Nov 2009 03:10:50 -0800</pubDate>
         <content:encoded><![CDATA[jqGallery is a simple umbraco package that allows end-users to create a gallery from a folder in the media library.]]></content:encoded>
      </item>
      <item>
         <title>Umbraco Contour is out</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/s-v_g904MgM/29009</link>
         <description>&lt;p&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
&lt;img
 style=&quot;border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;&quot; title=&quot;contour&quot; border=&quot;0&quot; alt=&quot;contour&quot; align=&quot;right&quot;
 width=&quot;132&quot; height=&quot;176&quot;/&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot;&gt;Contour&lt;/a&gt; - our brand new
form designer that makes creating contact forms, entry forms and
questionnaires just as easy as editing content - is finally
released. It's the best thing we've ever made and it's also the
most relevant product we've shipped.&lt;/p&gt; &lt;p&gt;Until this date making online forms with Umbraco have been
either developer work, hacks using AutoForm/Doc2Form or other
creative but odd solutions. Odd because the techniques used were
never meant to deal with gathering form data.&lt;/p&gt; &lt;p&gt;Contour is designed for that purpose only. It has taken nearly
three years to come up with the perfect balance where simplicity
and functional depth goes hand-in-hand - just like Umbraco. But
over the summer the pieces came together and I'm really sure you'll
love it. Whether it's simple contact forms, huge questionnaires or
making &quot;web2.0'ish&quot; functionality like user-generated content it
got you covered.&lt;/p&gt; &lt;p&gt;Contour is also the first product that follows our new pricing
strategy where you don't need to purchase Umbraco PRO. Contour is
priced at just EUR199, but the rest of the year &lt;strong&gt;&lt;a rel=&quot;nofollow&quot;
&gt;we're giving it away for a mere of
99EUR&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;That was a lot of words. Tim Geyssens have done a great job of
showing it instead - enjoy:&lt;/p&gt; &lt;div id=&quot;flashcontent&quot;&gt;
You need to have Flash and javascript enabled to use this video tutorial&lt;/div&gt;
&lt;p&gt;
 
&lt;/p&gt; &lt;p&gt;* and yes, Contour is the artist formerly known as
UmbracoForms!&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=s-v_g904MgM:kiyn6kUyS1g:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=s-v_g904MgM:kiyn6kUyS1g:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=s-v_g904MgM:kiyn6kUyS1g:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/s-v_g904MgM&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Niels Hartvig</author>
         <guid isPermaLink="false">http://umbraco.org/29009</guid>
         <pubDate>Mon, 16 Nov 2009 03:57:20 -0800</pubDate>
      </item>
      <item>
         <title>Feed Cache for Umbraco 1.1 released</title>
         <link>http://feedproxy.google.com/~r/darrenjferguson/~3/ochbNu332z4/feed-cache-for-umbraco-11-released.aspx</link>
         <description>&lt;p&gt;I've update my Feed Cache for Umbraco package. The latest
version can be downloaded from the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/feed-cache&quot;
&gt;our.umbraco project page&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The main update in this package is the addition of a
configuration GUI (see screenshot). The package now automatically
creates the scheduled task that it requires so no manual
configuration is necessary.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
&lt;img width=&quot;244&quot; height=&quot;153&quot; alt=&quot;Untitled&quot; border=&quot;0&quot; style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot;/&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The configuration GUI is a sub project that renders any
serialisable (.net) object as an HTML form. Changes made in the GUI
can then be submitted back to the server. This GUI will be a
standard part of any future packages.&lt;/p&gt; &lt;p&gt;When I have time I'll record a screen cast demonstrating how
this works - including nested object collections to any depth. For
now just check out the update to Feed Cache.&lt;/p&gt; &lt;p&gt;Comments, feedback and suggestions are welcome as always.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.darren-ferguson.com/2009/11/15/feed-cache-for-umbraco-11-released.aspx</guid>
         <pubDate>Sun, 15 Nov 2009 03:45:00 -0800</pubDate>
         <content:encoded><![CDATA[<p>I've update my Feed Cache for Umbraco package. The latest
version can be downloaded from the <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects/feed-cache"
>our.umbraco project page</a>.</p> <p>The main update in this package is the addition of a
configuration GUI (see screenshot). The package now automatically
creates the scheduled task that it requires so no manual
configuration is necessary.</p> <p><a rel="nofollow"
>
<img width="244" height="153" alt="Untitled" border="0" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;"/></a></p> <p>The configuration GUI is a sub project that renders any
serialisable (.net) object as an HTML form. Changes made in the GUI
can then be submitted back to the server. This GUI will be a
standard part of any future packages.</p> <p>When I have time I'll record a screen cast demonstrating how
this works - including nested object collections to any depth. For
now just check out the update to Feed Cache.</p> <p>Comments, feedback and suggestions are welcome as always.</p>
<img src="http://feeds.feedburner.com/~r/darrenjferguson/~4/ochbNu332z4" height="1" width="1"/>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Twitter Feeds in Umbraco using XSLT</title>
         <link>http://blog.vizioz.com/2009/11/twitter-feeds-in-umbraco-using-xslt.html</link>
         <description>There are currently two packages tagged on the Umbraco forum that can be used to add a twitter feed to your website. I was playing around with &quot;Twitter for Umbraco&quot; by Warren Buckley and noticed a bug in the way it converted twitter @names to links, so I thought I would try and solve this using XSLT.&lt;br /&gt;&lt;br /&gt;It may also be useful for those of you using Darren Ferguson's &quot;Feed Cache&quot; package as the demo on Darren's site does not add links to the tweets.&lt;br /&gt;&lt;br /&gt;To use this XSLT you simple call the XSLT Template passing in your Twitter message:&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;xsl:call-template name=&quot;formaturl&quot;&amp;gt;&lt;br /&gt; &amp;lt;xsl:with-param name=&quot;url&quot; select=&quot;text&quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:call-template&amp;gt;&lt;/pre&gt;&lt;br /&gt;Then add the XSLT template to your XSLT macro (outside of the main template)&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;xsl:template name=&quot;formaturl&quot;&amp;gt;&lt;br /&gt; &amp;lt;xsl:param name=&quot;twitterfeed&quot;/&amp;gt;&lt;br /&gt; &amp;lt;xsl:variable name=&quot;transform-http&quot; select=&quot;Exslt.ExsltRegularExpressions:replace($twitterfeed, '(http&amp;#92;:&amp;#92;/&amp;#92;/&amp;#92;S+)',ig,'&amp;lt;a href=&quot;$1&quot;&amp;gt;$1&amp;lt;/a&amp;gt;')&quot;/&amp;gt;&lt;br /&gt; &amp;lt;xsl:variable name=&quot;transform-https&quot; select=&quot;Exslt.ExsltRegularExpressions:replace($transform-http, '(HTTps&amp;#92;:&amp;#92;/&amp;#92;/&amp;#92;S+)',ig,'&amp;lt;a href=&quot;$1&quot;&amp;gt;$1&amp;lt;/a&amp;gt;')&quot;/&amp;gt;&lt;br /&gt; &amp;lt;xsl:variable name=&quot;transform-AT&quot; select=&quot;Exslt.ExsltRegularExpressions:replace($transform-https, '(^|&amp;#92;s)@(&amp;#92;w+)',ig,' &amp;lt;a href=&quot;http://www.twitter.com/$2&quot;&amp;gt;@$2&amp;lt;/a&amp;gt;')&quot;/&amp;gt;&lt;br /&gt; &amp;lt;xsl:variable name=&quot;transform-HASH&quot; select=&quot;Exslt.ExsltRegularExpressions:replace($transform-AT, '(^|&amp;#92;s)#(&amp;#92;w+)',ig,' &amp;lt;a href=&quot;http://www.twitter.com/search?q=$2&quot;&amp;gt;#$2&amp;lt;/a&amp;gt;')&quot;/&amp;gt;&lt;br /&gt; &amp;lt;xsl:value-of select=&quot;$transform-HASH&quot; disable-output-escaping=&quot;yes&quot;/&amp;gt;&lt;br /&gt; &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You should find that this now replaces all the @names, #names and URL's with links!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8614620678187102145-6851235739658248360?l=blog.vizioz.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Chris)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8614620678187102145.post-6851235739658248360</guid>
         <pubDate>Sun, 15 Nov 2009 07:41:00 -0800</pubDate>
      </item>
      <item>
         <title>Porting Playerfind.co.uk Into Umbraco</title>
         <link>http://www.blogfodder.co.uk/post/Porting-Playerfindcouk-Into-Umbraco.aspx</link>
         <description>&lt;p&gt;I created &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.playerfind.co.uk&quot;&gt;www.playerfind.co.uk&lt;/a&gt; quite some time ago and even got a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.n3o.co.uk/post/47_-net-magazine-feature.htm&quot;&gt;little feature&lt;/a&gt; in the .NET magazine with it – Main problem I had was that I rushed it initially because of my work commitments so I really didn’t build it correctly and with all the features I wanted, about 6 months ago I got about 75% through re-coding the DAL to use SubSonic and then realised how much work was involved to get it to where I really wanted it to be. &lt;/p&gt; &lt;p&gt;So I stopped again and it’s just been sat there not doing much!&amp;#160; &lt;/p&gt; &lt;p&gt;&lt;img style=&quot;border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;&quot; title=&quot;playerfind&quot; border=&quot;0&quot; alt=&quot;playerfind&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=playerfind_1.jpg&quot; width=&quot;492&quot; height=&quot;398&quot;/&gt; &lt;/p&gt; &lt;p&gt;A few weeks ago I toyed with the idea of dusting off the project and re-building/designing it, and thought it was about time I pushed my Umbraco skills and use the site as a great example of what can be done using the CMS.&amp;#160;&amp;#160; Not to mention by using Umbraco I would get a fantastic Administration area which I could get people to help me moderate the site.&lt;/p&gt; &lt;p&gt;Along with this I thought it would make a good blog series for me to write about how I am going to approach the rebuild using Umbraco – So its time to get my lad Des to do some concepts on how the new pages will look as it really needs some design input. Then I am going to set of the structure and look at member types and what Document Types will be needed.&lt;/p&gt; &lt;p&gt;I’ll post up all the details in my next blog, along with any visuals I get and what the next stage will be.&lt;/p&gt;</description>
         <author>leen3o</author>
         <guid isPermaLink="false">http://www.blogfodder.co.uk/post.aspx?id=bac8ba2f-238f-45d9-9d36-a90dbbf52a4f</guid>
         <pubDate>Sat, 14 Nov 2009 12:50:43 -0800</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Umbraco Contour is out !</title>
         <link>http://www.nibble.be/?p=75</link>
         <description>The last couple of months (since joining the umbraco corp) I’ve been involved in the development of Umbraco Contour.
It turned out to be an amazing product! Detailed info and some screencast can be found on the official Contour product page. You can also try Contour before buy, by installing a trial straight from the package [...]</description>
         <guid isPermaLink="false">http://www.nibble.be/?p=75</guid>
         <pubDate>Fri, 13 Nov 2009 07:57:02 -0800</pubDate>
         <content:encoded><![CDATA[<p>The last couple of months (since joining the umbraco corp) I’ve been involved in the development of <a rel="nofollow" target="_blank" href="http://bit.ly/1v68Dp">Umbraco Contour</a>.</p>
<p>It turned out to be an amazing product! Detailed info and some screencast can be found on the <a rel="nofollow" target="_blank" href="http://bit.ly/1v68Dp">official Contour product page</a>. </p>
<p>You can also try Contour before buy, by installing a trial straight from the package repository.</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/UmbracoContourisout_EE3B/image.png"><img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="349" alt="image" src="http://www.nibble.be/wlwimages/UmbracoContourisout_EE3B/image_thumb.png" width="581" border="0"/></a> </p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/UmbracoContourisout_EE3B/image_3.png"><img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="349" alt="image" src="http://www.nibble.be/wlwimages/UmbracoContourisout_EE3B/image_thumb_3.png" width="581" border="0"/></a> </p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/UmbracoContourisout_EE3B/image_4.png"><img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="348" alt="image" src="http://www.nibble.be/wlwimages/UmbracoContourisout_EE3B/image_thumb_4.png" width="580" border="0"/></a></p>]]></content:encoded>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>True Color Picker for Umbraco</title>
         <link>http://tech.kipusoep.nl/2009/11/13/true-color-picker-for-umbraco/</link>
         <description>This package will create a DataType called &amp;#8220;True Color Picker&amp;#8221;.
You may be wondering, what&amp;#8217;s &amp;#8220;True&amp;#8221; doing there?
Well I was looking for a color picker without the need to provide pre-defined colors.
I saw the built-in Color Picker, but that&amp;#8217;s not a color picker! It&amp;#8217;s an approved color picker.
So I create a TRUE color picker.
This package will [...]</description>
         <guid isPermaLink="false">http://tech.kipusoep.nl/?p=22</guid>
         <pubDate>Thu, 12 Nov 2009 15:13:43 -0800</pubDate>
         <content:encoded><![CDATA[<p>This package will create a DataType called &#8220;True Color Picker&#8221;.<br />
You may be wondering, what&#8217;s &#8220;True&#8221; doing there?<br />
Well I was looking for a color picker without the need to provide pre-defined colors.<br />
I saw the built-in Color Picker, but that&#8217;s not a color picker! It&#8217;s an approved color picker.<br />
So I create a TRUE color picker.</p>
<p>This package will create the following files / directories:</p>
<p>/umbraco/css<br /> colorpicker.css<br />
/umbraco/js/colorpicker<br /> colorpicker.js<br />
/umbraco/images/colorpicker<br /> *</p>
<p>Link: <a rel="nofollow" target="_blank" href="http://our.umbraco.org/projects/true-color-picker">http://our.umbraco.org/projects/true-color-picker</a> </p>
<p>Screenshot:</p>
<p><a rel="nofollow" target="_blank" href="http://our.umbraco.org/media/wiki/6320/633936666357056677_true-color-picker-screenshot.png"><img class="alignnone" title="True Color Picker" src="http://our.umbraco.org/media/wiki/6320/633936666357056677_true-color-picker-screenshot.png" alt="" width="340" height="240"/></a></p>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>SocialFront for Umbraco - Development Day One</title>
         <link>http://feedproxy.google.com/~r/WebGardenBlog/~3/F6XzFJCy-wI/socialfront-for-umbraco---development-day-one.aspx</link>
         <description>Certified Umbraco Developer | David Conlisk | Web Garden | blog entry</description>
         <guid isPermaLink="false">http://web-garden.co.uk//2009/11/9/socialfront-for-umbraco---development-day-one.aspx</guid>
         <pubDate>Mon, 09 Nov 2009 11:40:30 -0800</pubDate>
         <content:encoded><![CDATA[<p>So you and your mate decide to spend the day programming your
new pet project. As you do. You agree a time and place. You turn up
ready to go. But you're not ready to go. Why? Because you haven't
thought about the practicalities. You've been too busy with your
day job.</p> <p>Well, maybe you'd do better, but <a rel="nofollow" target="_blank" href="http://www.itsux.com/"
>Jon</a> and I made the most basic of errors. But
despite this we had a great day - productive and enjoyable. So I
thought I'd share a report on the day that you might find amusing,
but also might help you if you decide to do something similar. It's
basic as hell - but it's the little things that get ya!</p> <p>1. Bring the power supply for your laptop (this one's mine -
still can't believe I did this!). Thankfully there was another Dell
laptop at the office that I could steal for the day. Schoolboy
error number one.</p> <p>2. Ensure that the power works in the room you'll be working
in.</p> <p>3. If there is a codebase in a repository somewhere already,
then make sure each team member has logged in and has downloaded
the latest codebase in preparation to hit the ground running. I'd
logged in and changed my avatar - but hadn't changed my password,
so I was locked out. Schoolboy error number two. Also, there is a
difference between being able to log in and being able to download
the code, depending on the granularity of the security settings of
the system you're using.</p> <p>4. Have plenty of refreshments on hand, and know how everyone
takes their tea. A very important one this, and thankfully Jon was
on it, plenty of tea flowing all day. (I know, real developers
drink coffee, but we're just pretending to be geeks).</p> <p>5. Ensure your codebase builds and is stable - no last-minute
changes! The last thing you want is to be tweaking it while the
other members of the team twiddle their thumbs while you fix your
mistakes. Bring new code by all means, but don't commit until
you're sure it's going to work - at least then you won't stop
others from getting on with it. Basic SVN best practices.</p> <p>6. Make sure you're using the database you think you are, and
have the latest version online on your server (if you are running a
demo site like we were). Messing about downloading database
publishing wizards and the like is just more time wasted.</p> <p>7. Have all of the tools you're going to need installed and
working on your laptop. Make sure you have enough disk space free
for the tools you'll need too (schoolboy error number three).</p> <p>8. Have your usernames/passwords/connection strings/etc
somewhere central that everyone can access them. Using a forgotten
password link while everyone sits around waiting for the email to
arrive is not very productive.</p> <p>9. Factor in time for excited tweeting.</p> <h3>Timeline</h3> <p>09.30 - 10.00 Fun with power cables and SVN - WASTE.</p> <p>10.00 - 11.00 Architecture chat.</p> <p>11.00 - 12.00 Database issues, getting latest database onto the
server, installing database publishing wizard and worrying about
twindling disk space - WASTE.</p> <p>12.00 - 13.00 Let the real work begin! Creating Umbraco document
types, getting existing code onto server, getting site finally
finally working. Started on user controls.</p> <p>13.00 - 14.00 Excellent slap-up lunch. We deserve it.</p> <p>14.00 - 16.30 Awesome burst of creation. Site grows and grows.
Not much said, lots of tea drank.</p> <p>16:30 User signup live and tested on live site! Can browse to
members, their blogs and galleries, etc.</p> <p>16:30 - 17:30 Testing, more development and wrap-up.</p> <h3>Completed</h3> <p>Member sign up, sign in.</p> <p>Browse your blogs and image galleries.</p> <p>Upload images.</p> <p>Create blog entries.</p> <p>Add comments to all content.</p> <h3>Summary</h3> <p>So we've created the bare bones of a social networking platform
based on Umbraco in a matter of hours. This is a testament to
Umbraco's ease of use rather than our programming prowess that's
for sure. It shows you how much is possible with Umbraco in a short
time - imagine if we'd actually been organised! We have a second
day of SocialFront development planned for later in the month and
hopefully we'll be releasing the lot before the end of the year. As
I said in the <a rel="nofollow"

>Introduction to SocialFront</a> we are hoping to
provide the foundation for Umbraco developers to build on, and
we're hoping that folk will get involved. Having both worked on a
number of large social networking sites, and with Jon's extensive
experience with the existing systems out there, and knowing what
the Umbraco community is like, we are confident that we are
starting the development of a system to rival the best of the
paid-for social networking platforms out there. We have plenty of
ideas for future development, but first step is to get the code out
the door so people can see it and use it and get involved. Watch
this space!</p>
<img src="http://feeds.feedburner.com/~r/WebGardenBlog/~4/F6XzFJCy-wI" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>SocialFront for Umbraco - Introduction</title>
         <link>http://feedproxy.google.com/~r/WebGardenBlog/~3/-agjNwCBkkg/socialfront-for-umbraco---introduction.aspx</link>
         <description>Certified Umbraco Developer | David Conlisk | Web Garden | blog entry</description>
         <guid isPermaLink="false">http://web-garden.co.uk//2009/11/9/socialfront-for-umbraco---introduction.aspx</guid>
         <pubDate>Mon, 09 Nov 2009 10:57:48 -0800</pubDate>
         <content:encoded><![CDATA[<p>For the past six months or so I've been chatting with my good
friend <a rel="nofollow" target="_blank" href="http://www.itsux.com/">Jon
Carlos</a> (<a rel="nofollow" target="_blank" href="http://twitter.com/billywizz"
>@billywizz on twitter</a>) (see <a rel="nofollow"
 target="_blank" href="http://www.itsux.com/">his blog</a> for some
more preamble to the project) about coming together and developing
an open-source social networking platform. We've worked together in
the past and we share a pretty similar outlook as web developers.
Most importantly we get on and we know that we work well together
(luckily having a similar taste in music is not so important. Next
code camp I'll be getting back to my grunge roots, that's all I'm
saying.). Some of the ideas that we like, to give you an idea,
are:</p> <p><a rel="nofollow" target="_blank" href="http://www.joelonsoftware.com/items/2009/09/23.html"
>The Duct Tape Programmer</a> (may as well get the
controversial ones in there first!)</p> <p><a rel="nofollow"
 target="_blank" href="http://girldeveloper.com/waxing-dev/how-to-contribute-to-open-source-when-you-re-not-exactly-scott-hanselman/">How to Contribute to Open Source (When You're Not
Exactly Scott Hanselman)</a></p> <p><a rel="nofollow"
 target="_blank" href="http://code.google.com/events/io/2009/sessions/MythGeniusProgrammer.html">The Myth of the Genius Programmer</a></p> <p><a rel="nofollow"
 target="_blank" href="http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html">The Humble Programmer</a></p> <p>So you might get the impression that we are not hot-shot
programmers - and you'd be right. We certainly aren't. But we have
a good idea, and we're willing to give it a shot, and we're even
willing to let the uber-programmers in the community see our
"work". We are all about making a start, a foundation, for the work
to continue from. We hope that people will like what we produce and
find it interesting and useful enough that they will make use of it
and perhaps even contribute to it themselves.</p> <p>Initially we thought about developing the site in a number of
different ways. We got bogged down in the latest and greatest
technologies and even talked about IOC for a while. We both wanted
to play with and learn to use this trendy new MVC stuff, and maybe
we could use LINQ as well just to be cool. We got nowhere. We read
a lot, learned a lot, be we developed squat. So the project kind of
died a death for a while. Then we thought about what we were doing
and realised that what we really needed to do was Keep It Simple.
We also didn't really want to reinvent the wheel. And we both had
plenty of good experience with Umbraco. I think you can see what
happened next.</p> <p>Anyway to get to the point Jon and I agreed to commit to two
full days of coding with Umbraco to see what kind of magic we could
come up with in that admittedly short timescale. And last Saturday
was day 1.We learnt a lot, made plenty of mistakes, made plenty of
progress, and had a lot of fun. (Non-geeks: fun is a relative
term). We aren't about to release anything just yet, as we have a
second day to do towards the end of this month, with a view to
releasing an alpha (pre-alpha?) version by Christmas. Right Jon?
But I thought I'd blog about it and share our experiences with the
community over the next few blog posts, as a kind of teaser and
lead-up to the release of the package itself. I don't want to big
it up too much - but it's going to be AWESOME.</p>
<img src="http://feeds.feedburner.com/~r/WebGardenBlog/~4/-agjNwCBkkg" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco Contour RC1 is out</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/6g2XaIvnw08/28861</link>
         <description>&lt;p&gt;Thanks to our fantastic team of beta testers, we have crossed
off a huge amounts of bug-fixes and enhancements on the Umbraco
Contour todo list.&amp;nbsp;&lt;/p&gt; &lt;p&gt;So today we're releasing the first RC of Umbraco Contour (the
software formerly known as Umbraco Forms)&amp;nbsp;&lt;/p&gt; &lt;p&gt;The RC will have same availability as the betas: only people in
the Contour Beta Program and Pro Subscribers can get a valid beta
license.&lt;/p&gt; &lt;p&gt;The list of changes can be found &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://nightly.umbraco.org/Umbraco%20Contour/changes.txt&quot;&gt;here&lt;/a&gt;
as well as a list of &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://nightly.umbraco.org/Umbraco%20Contour/&quot;&gt;nightly
builds&lt;/a&gt;&lt;/p&gt; &lt;p&gt;To update you current Contour installation, you can use this &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://nightly.umbraco.org/Umbraco%20Contour/UmbracoContour_1.0_633931169860752500_update.zip&quot;&gt;
zip file&lt;/a&gt; which should just be unzipped to the root of your
website (it is not a package)&amp;nbsp;&lt;/p&gt; &lt;p&gt;And to start from scratch download the &lt;a rel=&quot;nofollow&quot;
&gt;Umbraco Contour RC1 package
here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You still need a license key to try this out, all Pro
subscribers can get a key instantly by contacting us.&lt;/p&gt; &lt;p&gt;Again, thank you all for the bug-reports and feature
suggestions&lt;/p&gt; &lt;p&gt;Tim, Niels and Per&lt;/p&gt; &lt;p&gt;&lt;strong&gt;edit:&lt;/strong&gt;&amp;nbsp;typos and clearifying
availability&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=6g2XaIvnw08:G04J5TW-SyU:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=6g2XaIvnw08:G04J5TW-SyU:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=6g2XaIvnw08:G04J5TW-SyU:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/6g2XaIvnw08&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Per Ploug Hansen</author>
         <guid isPermaLink="false">http://umbraco.org/28861</guid>
         <pubDate>Fri, 06 Nov 2009 12:43:01 -0800</pubDate>
      </item>
      <item>
         <title>Ajax Control Toolkit 30390 for Umbraco</title>
         <link>http://tech.kipusoep.nl/2009/11/05/ajax-control-toolkit-30390-for-umbraco/</link>
         <description>I modified the Ajax Control Toolkit version 30390 so it can be used next to Umbraco&amp;#8217;s ACT version.
Look at http://our.umbraco.org/projects/ajaxcontroltoolkit-30930-for-umbraco</description>
         <guid isPermaLink="false">http://tech.kipusoep.nl/?p=18</guid>
         <pubDate>Thu, 05 Nov 2009 08:52:13 -0800</pubDate>
         <content:encoded><![CDATA[<p>I modified the Ajax Control Toolkit version 30390 so it can be used next to Umbraco&#8217;s ACT version.</p>
<p>Look at <a rel="nofollow" target="_blank" href="http://our.umbraco.org/projects/ajaxcontroltoolkit-30930-for-umbraco">http://our.umbraco.org/projects/ajaxcontroltoolkit-30930-for-umbraco</a></p>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Why I'm not a fan of XSLT</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/9F0EsQcfnkE/why-i'm-not-a-fan-of-xslt.aspx</link>
         <description>&lt;p&gt;When I first joined the Umbraco team with the goal of bringing
LINQ to Umbraco to the core framework there was some excitement and
quite a bit of the early excitement was from Umbraco MVP &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.creativewebspecialist.co.uk/&quot;
&gt;Warren Buckley&lt;/a&gt;.&lt;br /&gt; And with the recent beta release the focus has come back onto LINQ
to Umbraco, myself and XSLT.&lt;/p&gt; &lt;p&gt;While preparing to write this post I was tossing up with the
name. Although I've entitled it &quot;Why I'm not a fan of XSLT&quot; it
would have been just as apt to name it &quot;Why write LINQ to
Umbraco?&quot;.&lt;/p&gt; &lt;p&gt;As you read through this post I was you to keep in mind that I'm
not someone who is really that good at XPath and XSLT. In fact, my
dislike for XSLT is why I wrote LINQ to Umbraco!&lt;/p&gt; &lt;p&gt;But why, being an Umbraco user, don't i like XSLT? After all,
it's a fairly core part of Umbraco!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Compile time checking&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;That's right, I'm very much a developer, and very much a
compiler-driven developer. Runtime errors really are the worst to
try and debug, and that's what you really get with XPath. XPath is
evaluated at runtime (yes, that's a bit generalized :P), so if you
have something wrong in your syntax you wont find it
immediately.&lt;/p&gt; &lt;p&gt;Compare that to .NET code, it's very hard to write .NET code
which wont compile. True that you can still get runtime errors, but
they are a lot harder to achieve in the scenario's we're looking at
for LINQ to Umbraco vs XSLT.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Strong typing&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Again, another example of me being very much a developer, I
would much rather look at an object with properties which knows of
the type of the data.&lt;/p&gt; &lt;p&gt;If you're not careful you can mistake the type and then you,
again, have a runtime error :P.&lt;br /&gt; The .NET compiler wont let you assign a string to an int.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Readability&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This one will cause a bit of a stir, but I simply don't find
XPath &amp;amp; XSLT readable. Take these two examples:&lt;/p&gt; &lt;pre class=&quot;brush: xml&quot;&gt;
//node[nodeTypeAlias='home_page']/node[nodeTypeAlias='contact_us' nodeName='Contact Aaron']
&lt;/pre&gt; &lt;pre class=&quot;brush: csharp&quot;&gt;
ctx.HomePages.ContactUs.Where(c =&amp;gt; c.Name == &quot;Contact Aaron&quot;);
&lt;/pre&gt; &lt;p&gt;My example is very basic, but if you look into a more complex
XSLT file (such as many which exists in Warrens CWS package). In
fact, in the unit tests for LINQ to Umbraco there is a replication
of a few of them (have a look in the source on Codeplex if you want
to see them).&lt;/p&gt; &lt;p&gt;A very important component of code for me is readability. When
debugging, especially if the code isn't yours to begin with,
readability is a vital component. You don't want to have to waste
time trying to understand what's going on in the code before trying
to solve it.&lt;br /&gt; And if you can't work out the code properly then there's a chance
you'll just make the problem worse.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;API Design&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Again I'll probably cause a stir with this one again but it's
another thing that is very dear to my heart. I am a strong believer
in proper API design, and if it's done &lt;em&gt;wrong&lt;/em&gt; then it can
make your life hell in the future.&lt;/p&gt; &lt;p&gt;I also like abstractions. LINQ to Umbraco is an example of
that... provider model! Here at The FARM we've got a great level of
abstraction which we use, we don't pass classes around, only
interfaces, which means that your UI is dumb, really really
dumb.&lt;br /&gt; There isn't any business logic contained there, and there's
nothing more complex than a method call.&lt;/p&gt; &lt;p&gt;But too often when I see an XSLT it's containing more than just
UI code. And this isn't really a fault of XSLT, but of how it's
perceived. When you look at an ASPX/ ASCX people have a different
mindset, you don't put anything really in the front-end file other
than the markup as there is a CS file associated which you think to
put the other &lt;em&gt;complex&lt;/em&gt; code into.&lt;br /&gt; But with an XSLT there isn't another file, so everything ends up
there.&lt;/p&gt; &lt;p&gt;Then it becomes too complex to try and achieve with XSLT *cough
variable incrementing cough* so an XSLT extension is written. And
I've seen some really scary XSLT extensions, which allow you to do
things which just make me want to cringe.&lt;/p&gt; &lt;p&gt;XSLT should only be concerned with formatting data to output
markup...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;XSLT's produce better markup&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Anyone who says that is ill-informed. If you don't think you can
write valid, XHTML markup with ASP.NET Web Forms then you're not
doing it right!&lt;/p&gt; &lt;p&gt;Control Adapters, Repeaters, List View, inline script blocks,
etc can all be used to produce what ever markup you so
desire.&lt;br /&gt; And it doesn't take much effort to produce good markup with
ASP.NET. In fact, with Visual Studio 2008 it's really hard to use
the standard editor to produce crappy markup.&lt;/p&gt; &lt;p&gt;The biggest problem is ID's of elements, but you only have that
problem if the element is:&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;Inside a naming container&lt;/li&gt; &lt;li&gt;Set to runat=&quot;server&quot;&lt;/li&gt;
&lt;/ul&gt; &lt;p&gt;And you should only be setting runat=&quot;server&quot; on elements you
need server-side access to, but that's a topic for another
night.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;So this brings me to the end of another post. Hopefully it's
been enlightening and I haven't upset too many people :P&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Wed, 04 Nov 2009 20:05:01 -0800</pubDate>
      </item>
      <item>
         <title>Convert HTML to Plain Text in C# using Markdown</title>
         <link>http://www.prolificnotion.co.uk/index.php/2009/11/04/convert-html-to-plain-text-in-c-using-markdown/</link>
         <description>Creating a plain-text version of HTML that is suitable to be sent out as the text part of a multi-part email. Using C# and XSLT I have developed a working solution to the problem with help from a third party markdown XSLT file. No related posts. Related posts brought to you by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.</description>
         <guid isPermaLink="false">http://www.prolificnotion.co.uk/?p=262</guid>
         <pubDate>Wed, 04 Nov 2009 05:41:12 -0800</pubDate>
         <content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right;margin-left:10px;"><a rel="nofollow" target="_blank" href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.prolificnotion.co.uk%2Findex.php%2F2009%2F11%2F04%2Fconvert-html-to-plain-text-in-c-using-markdown%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.prolificnotion.co.uk%2Findex.php%2F2009%2F11%2F04%2Fconvert-html-to-plain-text-in-c-using-markdown%2F" height="61" width="51"/></a></div><p>While working on my customisations to <a rel="nofollow" style="outline-style:none;outline-color:initial;color:#33707e;text-decoration:underline;padding:0px;margin:0px;border:0px initial initial;" target="_blank" href="http://www.nibble.be/">Tim Geyssens</a> <a rel="nofollow" style="outline-style:none;outline-color:initial;color:#33707e;text-decoration:underline;padding:0px;margin:0px;border:0px initial initial;" target="_blank" href="http://www.nibble.be/?p=63">MailEngine</a> I was looking for an accurate method of automatically creating a plain-text version of the HTML emails that were being sent out by the site. Further reading brought my attention to something called <a rel="nofollow" title="Read more about Markdown here" target="_blank" href="http://en.wikipedia.org/wiki/Markdown">Markdown</a>. After some hunting around with a little help from my friend Google I managed to find a markdown XSLT file. Using the XSLT I could transform my HTML email to plain-text with relative ease and accuracy. Of course in order to do this I would need a valid XML document and as my pages were already valid XHTML I had no problems there.</p>
<p>Here is my method for doing the conversion, all it requires is that you pass it the HTML you want to convert which must be valid XML:</p>
<pre>/// &lt;summary&gt;
/// Converts to HTML to plain-text.
/// &lt;/summary&gt;
/// &lt;param name="HTML"&gt;The HTML.&lt;/param&gt;
/// &lt;returns&gt;The plain text representation of the HTML&lt;/returns&gt;
private static string ConvertToText(string HTML)
{ string text = string.Empty; XmlDocument xmlDoc = new XmlDocument(); XmlDocument xsl = new XmlDocument(); xmlDoc.LoadXml(HTML); xsl.CreateEntityReference("nbsp"); xsl.Load(System.Web.HttpContext.Current.Server.MapPath("/xslt/Markdown.xslt")); //creating xslt XslTransform xslt = new XslTransform(); xslt.Load(xsl, null, null); //creating stringwriter StringWriter writer = new System.IO.StringWriter(); //Transform the xml. xslt.Transform(xmlDoc, null, writer, null); //return string text = writer.ToString(); writer.Close(); return text;
}</pre>
<p>Download the XSLT file I used from here:</p>
<p><a rel="nofollow" target="_blank" href="http://symphony-cms.com/downloads/xslt/file/20573/">http://symphony-cms.com/downloads/xslt/file/20573/</a></p>
<p>I would love to hear from anyone that does this differently or if you can find any problems with the method I have chosen to implement for this solution.</p> <p>No related posts.</p>
<p>Related posts brought to you by <a rel="nofollow" target="_blank" href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
      </item>
      <item>
         <title>Fraternising with the enemy</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/ivI0C2f11Ro/fraternising-with-the-enemy.aspx</link>
         <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Disclaimer:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;I am not a Sitecore developer, nor have I even used
Sitecore. I did use to work with &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://adeneys.wordpress.com/&quot;&gt;Al Denyes&lt;/a&gt;
(&lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://adeneys.wordpress.com/2009/01/06/its-official-welcome-the-mvps/&quot;&gt;the Australian Sitecore MVP&lt;/a&gt;) and &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://cjgiddings.wordpress.com/&quot;&gt;Chris
Giddings&lt;/a&gt; (who has done a bunch of freaky stuff with
Sitecore).&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;This is from the experience of someone who despite
having not used Sitecore I've heard plenty of spiels about it and
worked with quite a number of other CMS's.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;I'll do my best not to be bias ;)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;So last Wednesday (28th October) I headed down to the 2nd
Sitecore Australia user group. Having attended the first one in
Melbourne a few months back (which didn't go so well due to it
being held in a pub where you couldn't hear anything) I was
interested to see how this went, and to see what was new in
Sitecore land.&lt;/p&gt; &lt;p&gt;Sitecore 6.2 was the release focus of the night and it has a
couple of new features I want to talk about, from the point of view
of a non-Sitecore developer.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Microsoft Word Editing&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Anyone who was at the UG will have seen me cringe when they
started talking about this feature, particularly when it was stated
that the MSO tags are kept.&lt;/p&gt; &lt;p&gt;From a technological standpoint I think this is a fascinating
feature, but from a web developer I think it's a very scary
feature. As &lt;em&gt;someone&lt;/em&gt; said to me on the night, &quot;It'd be
great for intranets&quot;.&lt;/p&gt; &lt;p&gt;But the feature did make me wonder as to why, if people are
preferring to work with Microsoft Word than the Sitecore editor
(which is the Telerik Rad controls I believe) does that mean the
standard editor has deficiencies?&amp;nbsp;&lt;br /&gt; I've never been a huge fan of Sitecores UI recreation of the
Windows UI, but that's another topic on its own.&lt;/p&gt; &lt;p&gt;Basically I see this as a great feature to demo, but the
practicalities of it aren't there.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Improvements to the Forms Module&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;A lot of what was talked about here was over my
head as I'm not familiar with the campaign manager in Sitecore.&lt;/p&gt; &lt;p&gt;But there is a new feature that caused a bit of a stir, and that
is that the forms can be configured to capture the data &lt;em&gt;as a
user enters it&lt;/em&gt;. Now I can see the goal of this, so you can
monitor drop-out rates of your form, but there's a much bigger
problem... Privacy.&lt;/p&gt; &lt;p&gt;Take this scenario - I start filling out a form, put in my
details (name, phone number, etc) and then get to the privacy
policy and decide that I don't agree with their decision to sell it
on to anyone who wants it. I decide to exit out of the form.&lt;br /&gt; Little do I know is that the data was already captured. This is
rather concerning, I didn't consent to them having it, but they
still got it.&lt;br /&gt; And if the company is a bit naughty they may still on-sell my
data. All without my agreeing to do so.&lt;/p&gt; &lt;p&gt;I get the point of the feature, monitoring drop-out rates and at
what point but I think you may walk into a legal mind field.&lt;br /&gt; Please note though - I'm not a lawyer, but one of the other people
at the UG did put the question to a lawyer and said it is a
dangerous place to go.&lt;/p&gt; &lt;p&gt;Thankfully you can turn the auto-capturing feature off. Or host
your site in like Sweden :P&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Drag-and-drop Media uploading&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The SharePoint implementation is a crap load better :P&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;That's pretty much my highlights of the night (other than the
fact that I scored a bunch of free Sitecore mouse mats... Anyone
want a Sitecore mouse mat? :P). I didn't quite share in Tim's
enthusiasm&amp;nbsp;for the LED keyboard which they are giving away,
it's not a new product Tim, and it would also be rather unpleasant
to use I think...&lt;br /&gt; It also doesn't look like I'll be able to keep my 100% track
record up with attendance, since the new UG is in Brisbane next
year some time :P&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Mon, 02 Nov 2009 13:33:17 -0800</pubDate>
      </item>
      <item>
         <title>SmtpClient does not gracefully close the underlying TCP/IP connection</title>
         <link>http://www.prolificnotion.co.uk/index.php/2009/11/02/smtpclient-does-not-gracefully-close-the-underlying-tcpip-connection/</link>
         <description>Some months back Tim Geyssens was kind enough to send me the source for his MailEngine addition to Umbraco before he released it on his blog. I made some customisations to the source to allow users to select templates and changed the filtering options slightly but other than that it worked jut fine for what [...] No related posts. Related posts brought to you by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.</description>
         <guid isPermaLink="false">http://www.prolificnotion.co.uk/?p=246</guid>
         <pubDate>Mon, 02 Nov 2009 02:43:17 -0800</pubDate>
         <content:encoded><![CDATA[<div class="tweetmeme_button" style="float:right;margin-left:10px;"><a rel="nofollow" target="_blank" href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.prolificnotion.co.uk%2Findex.php%2F2009%2F11%2F02%2Fsmtpclient-does-not-gracefully-close-the-underlying-tcpip-connection%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.prolificnotion.co.uk%2Findex.php%2F2009%2F11%2F02%2Fsmtpclient-does-not-gracefully-close-the-underlying-tcpip-connection%2F" height="61" width="51"/></a></div><p>Some months back <a rel="nofollow" target="_blank" href="http://www.nibble.be/">Tim Geyssens</a> was kind enough to send me the source for his <a rel="nofollow" target="_blank" href="http://www.nibble.be/?p=63">MailEngine</a> addition to Umbraco before he released it on his blog. I made some customisations to the source to allow users to select templates and changed the filtering options slightly but other than that it worked jut fine for what I needed.</p>
<p>There was however one problem that became apparent when this was used in production. Sometimes, and apparently randomly the sending of mail would freeze when going to more than say 150 recipients. After a long time trying to track down the reason I stumbled across a post linking to the &#8216;<a rel="nofollow" target="_blank" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=146711&amp;wa=wsignin1.0">SmtpClient does not gracefully close the underlying TCP/IP connection</a>&#8216; issue on the Microsoft Connect website. I guessed it couldn&#8217;t do any harm to set the MaxTimeout property of the SmtpClient to 1 so I tried it and it seemed to work &#8211; so far so good however you should note the recent comment from someone with regards to using this method on IIS7.</p> <p>No related posts.</p>
<p>Related posts brought to you by <a rel="nofollow" target="_blank" href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
      </item>
      <item>
         <title>Survey about Umbraco Repositories</title>
         <link>http://blog.vizioz.com/2009/11/survey-about-umbraco-repositories.html</link>
         <description>I am currently thinking about developing a hosted repository service for Umbraco Packages, this will allow free, private and commercial repositories to be available within the Umbraco interface for immediate installation.&lt;br /&gt;&lt;br /&gt;I would be really interested to hear your views and opinions on this sort of service:&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://spreadsheets.google.com/viewform?formkey=dFhHSm1sUWVpMXpFbGRrSTkxZE5sTXc6MA&quot;&gt;Please answer this survey!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Everyone who answers the survey and leaves their email address will be sent an invitation to beta test the service when it launches in the near future :)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8614620678187102145-5040968962952404023?l=blog.vizioz.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Chris)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8614620678187102145.post-5040968962952404023</guid>
         <pubDate>Sun, 01 Nov 2009 15:50:00 -0800</pubDate>
      </item>
      <item>
         <title>Spambusting with Umbraco and Akismet</title>
         <link>http://www.rickybeard.com/blog/2009/10/29/spambusting-with-umbraco-and-akismet.aspx</link>
         <description>&lt;p&gt;When I started this blog, I really didn't think&amp;nbsp;I would
need any comment spam prevention. I have also never liked the idea
of having to moderate/approve comments manually (smells like
work).&lt;/p&gt; &lt;p&gt;However, after about three days on the interwebs,&amp;nbsp;I decided
otherwise. Bring on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://akismet.com/&quot;
 title=&quot;Akismet&quot;&gt;Akismet&lt;/a&gt;&amp;nbsp;from &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://automattic.com/&quot; title=&quot;Automattic&quot;&gt;Automattic&lt;/a&gt;.
From their website, &quot;Automattic Kismet (Akismet for short) is a
collaborative effort to make comment and trackback spam a non-issue
and restore innocence to blogging, so you &lt;strong&gt;never have to
worry about spam again&lt;/strong&gt;.&quot;&lt;/p&gt; &lt;p&gt;Sounds good to me, let's get started!&lt;/p&gt; &lt;p&gt;First, you will need a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wordpress.com/signup/&quot;
 title=&quot;Get a Wordpress account.&quot;&gt;Wordpress account&lt;/a&gt;.&amp;nbsp;You
can then find your API key by clicking on Profile.&lt;/p&gt; &lt;p&gt;Next, you will need to &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.codeplex.com/wikipage?ProjectName=AkismetApi&quot;
 title=&quot;Akismet for .Net 2.0&quot;&gt;download Akismet for .Net 2.0 from
Codeplex&lt;/a&gt;&amp;nbsp;and drop the included assembly into your bin
directory. Now, time for some code.&lt;/p&gt; &lt;p&gt;I like the idea of saving every comment, but only publishing
those that pass the spam check. So, my
&lt;strong&gt;btnSubmit_Click&lt;/strong&gt; event looks something like this
(sorry for all the wraps):&lt;/p&gt; &lt;pre&gt; protected void btnSubmit_Click(object sender, EventArgs e) { Akismet api = new Akismet(ConfigurationManager.AppSettings[&quot;wordpressKey&quot;], &quot;&quot;, &quot;Test/1.0&quot;); if (!api.VerifyKey()) throw new Exception(&quot;Key could not be verified&quot;); AkismetComment comment = new AkismetComment(); comment.Blog = &quot;&quot;; comment.UserIp = Request.UserAgent.ToString(); comment.UserAgent = Request.UserAgent.ToString(); comment.CommentContent = Server.HtmlEncode(txtComment.Text); comment.CommentType = &quot;comment&quot;; comment.CommentAuthor = Server.HtmlEncode(txtName.Text); comment.CommentAuthorEmail = Server.HtmlEncode(txtEmail.Text); comment.CommentAuthorUrl = Server.HtmlEncode(txtWebsite.Text); DocumentType commentDt = DocumentType.GetByAlias(&quot;BlogPostComment&quot;); Document newComment = Document.MakeNew(txtName.Text, commentDt, new umbraco.BusinessLogic.User(0), Node.GetCurrent().Id); newComment.getProperty(&quot;name&quot;).Value = Server.HtmlEncode(txtName.Text); newComment.getProperty(&quot;email&quot;).Value = Server.HtmlEncode(txtEmail.Text); newComment.getProperty(&quot;website&quot;).Value = Server.HtmlEncode(txtWebsite.Text); newComment.getProperty(&quot;comment&quot;).Value = Server.HtmlEncode(txtComment.Text); newComment.Save(); if (!api.CommentCheck(comment)) { newComment.Publish(new umbraco.BusinessLogic.User(0)); umbraco.library.UpdateDocumentCache(newComment.Id); Response.Redirect(umbraco.library.NiceUrl(Node.GetCurrent().Id) + &quot;#comment-&quot; + newComment.Id.ToString()); } else { customError.IsValid = false; customError.ErrorMessage = &quot;Your comment has been detected as spam.&quot;; } }
&lt;/pre&gt; &lt;p&gt;I have also thought about creating a new button datatype to
enable me to submit unblocked spam and&amp;nbsp;Ham (false
positives)&amp;nbsp;back to Akismet to help improve the algorithm, but
have not gotten around to it and really haven't needed to. Akismet
really does a great job for lazy folks like me. Their claim of 93%
accuracy is looking pretty solid.&lt;/p&gt; &lt;p&gt;Now all I need is for Umbraco to implement a &quot;&lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.codeplex.com/umbraco/WorkItem/View.aspx?WorkItemId=14215&quot; title=&quot;Codeplex Issue&quot;&gt;Delete at&lt;/a&gt;&quot; feature for documents so
that I can set an expiration date&amp;nbsp;for all of&amp;nbsp;the
unpublished spam nodes that I have in my content tree.&lt;/p&gt;</description>
         <author>Ricky Beard</author>
         <guid isPermaLink="false">http://www.rickybeard.com/blog/2009/10/29/spambusting-with-umbraco-and-akismet.aspx</guid>
         <pubDate>Thu, 29 Oct 2009 01:30:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>When I started this blog, I really didn't think&nbsp;I would
need any comment spam prevention. I have also never liked the idea
of having to moderate/approve comments manually (smells like
work).</p> <p>However, after about three days on the interwebs,&nbsp;I decided
otherwise. Bring on <a rel="nofollow" target="_blank" href="http://akismet.com/"
 title="Akismet">Akismet</a>&nbsp;from <a rel="nofollow"
 target="_blank" href="http://automattic.com/" title="Automattic">Automattic</a>.
From their website, "Automattic Kismet (Akismet for short) is a
collaborative effort to make comment and trackback spam a non-issue
and restore innocence to blogging, so you <strong>never have to
worry about spam again</strong>."</p> <p>Sounds good to me, let's get started!</p> <p>First, you will need a <a rel="nofollow" target="_blank" href="http://en.wordpress.com/signup/"
 title="Get a Wordpress account.">Wordpress account</a>.&nbsp;You
can then find your API key by clicking on Profile.</p> <p>Next, you will need to <a rel="nofollow"
 target="_blank" href="http://www.codeplex.com/wikipage?ProjectName=AkismetApi"
 title="Akismet for .Net 2.0">download Akismet for .Net 2.0 from
Codeplex</a>&nbsp;and drop the included assembly into your bin
directory. Now, time for some code.</p> <p>I like the idea of saving every comment, but only publishing
those that pass the spam check. So, my
<strong>btnSubmit_Click</strong> event looks something like this
(sorry for all the wraps):</p> <pre> protected void btnSubmit_Click(object sender, EventArgs e) { Akismet api = new Akismet(ConfigurationManager.AppSettings["wordpressKey"], "", "Test/1.0"); if (!api.VerifyKey()) throw new Exception("Key could not be verified"); AkismetComment comment = new AkismetComment(); comment.Blog = ""; comment.UserIp = Request.UserAgent.ToString(); comment.UserAgent = Request.UserAgent.ToString(); comment.CommentContent = Server.HtmlEncode(txtComment.Text); comment.CommentType = "comment"; comment.CommentAuthor = Server.HtmlEncode(txtName.Text); comment.CommentAuthorEmail = Server.HtmlEncode(txtEmail.Text); comment.CommentAuthorUrl = Server.HtmlEncode(txtWebsite.Text); DocumentType commentDt = DocumentType.GetByAlias("BlogPostComment"); Document newComment = Document.MakeNew(txtName.Text, commentDt, new umbraco.BusinessLogic.User(0), Node.GetCurrent().Id); newComment.getProperty("name").Value = Server.HtmlEncode(txtName.Text); newComment.getProperty("email").Value = Server.HtmlEncode(txtEmail.Text); newComment.getProperty("website").Value = Server.HtmlEncode(txtWebsite.Text); newComment.getProperty("comment").Value = Server.HtmlEncode(txtComment.Text); newComment.Save(); if (!api.CommentCheck(comment)) { newComment.Publish(new umbraco.BusinessLogic.User(0)); umbraco.library.UpdateDocumentCache(newComment.Id); Response.Redirect(umbraco.library.NiceUrl(Node.GetCurrent().Id) + "#comment-" + newComment.Id.ToString()); } else { customError.IsValid = false; customError.ErrorMessage = "Your comment has been detected as spam."; } }
</pre> <p>I have also thought about creating a new button datatype to
enable me to submit unblocked spam and&nbsp;Ham (false
positives)&nbsp;back to Akismet to help improve the algorithm, but
have not gotten around to it and really haven't needed to. Akismet
really does a great job for lazy folks like me. Their claim of 93%
accuracy is looking pretty solid.</p> <p>Now all I need is for Umbraco to implement a "<a rel="nofollow"
 target="_blank" href="http://www.codeplex.com/umbraco/WorkItem/View.aspx?WorkItemId=14215" title="Codeplex Issue">Delete at</a>" feature for documents so
that I can set an expiration date&nbsp;for all of&nbsp;the
unpublished spam nodes that I have in my content tree.</p>]]></content:encoded>
      </item>
      <item>
         <title>Fix Object reference not set error after adding or deleting a document property</title>
         <link>http://www.richardsoeteman.net/2009/10/27/FixObjectReferenceNotSetErrorAfterAddingOrDeletingADocumentProperty.aspx</link>
         <description>&lt;p&gt;
A few weeks back I had this&amp;#160; issue when deploying a site. I needed to modify
a documenttype to add a few properties and after a few minutes an error was raised
and the only thing I could see when I deleted the property and saved the documenttype
again, or opened a document based on that document type was the following error message
(thanks Dan for the picture).&amp;#160; &lt;/p&gt;
&lt;p&gt;
&lt;img title=&quot;error-delete (3)&quot; style=&quot;border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;&quot; height=&quot;345&quot; alt=&quot;error-delete (3)&quot; src=&quot;http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/ObjectReferenceNotSetafteraddingordeleti_A407/error-delete%20(3)_2c661d11-e7ab-4a49-adc1-ab3776eb221a.jpg&quot; width=&quot;640&quot; border=&quot;0&quot;/&gt;
&lt;/p&gt;
&lt;p&gt;
Did I make a backup? ehh no, so I needed to fix this. Okay let’s look at&amp;#160; the
error message again. An Object reference not set error is thrown while deleting the
property. Love that &lt;a rel=&quot;nofollow&quot; title=&quot;Umbraco&quot; target=&quot;_blank&quot; href=&quot;http://www.umbraco.org.&quot;&gt;Umbraco&lt;/a&gt; is
open source and I can have a look at the source code. Below you see the method that
is responsible for deleting the property from the documenttype.
&lt;/p&gt;
&lt;div class=&quot;csharpcode&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 1: &lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; delete()&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 2: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 3: &lt;/span&gt; &lt;span class=&quot;rem&quot;&gt;// flush cache&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 4: &lt;/span&gt; FlushCache();&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 5: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 6: &lt;/span&gt; &lt;span class=&quot;rem&quot;&gt;// Delete all properties of
propertytype&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 7: &lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt;(Content c &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; Content.getContentOfContentType(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ContentType(_contenttypeid)))&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 8: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 9: &lt;/span&gt; c.getProperty(&lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;).delete();&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 10: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 11: &lt;/span&gt; &lt;span class=&quot;rem&quot;&gt;// Delete PropertyType ..&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 12: &lt;/span&gt; SqlHelper.ExecuteNonQuery(&lt;span class=&quot;str&quot;&gt;&quot;Delete
from cmsPropertyType where id = &quot;&lt;/span&gt; + &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.Id);&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 13: &lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.InvalidateCache();&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 14: &lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type=&quot;text/css&quot;&gt;.csharpcode, .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;Courier New&quot;, courier, monospace;background-color:#ffffff;}
.csharpcode pre {margin:0em;}
.csharpcode .rem {color:#008000;}
.csharpcode .kwrd {color:#0000ff;}
.csharpcode .str {color:#006080;}
.csharpcode .op {color:#0000c0;}
.csharpcode .preproc {color:#cc6633;}
.csharpcode .asp {background-color:#ffff00;}
.csharpcode .html {color:#800000;}
.csharpcode .attr {color:#ff0000;}
.csharpcode .alt {background-color:#f4f4f4;width:100%;margin:0em;}
.csharpcode .lnum {color:#606060;}&lt;/style&gt;
&lt;p&gt;
As you might have seen there is no check for null values on the 9 (c.getProperty(&lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;).delete();).
This is what caused the error while deleting the property. I assume it's sort of the
same issue when opening a document. Now that I know this I can work on a solution.
As I mentioned earlier, I needed to add properties to the document type. Below you
find the code I’ve used to do that. &lt;/p&gt;
&lt;div class=&quot;csharpcode&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 1: &lt;/span&gt; ContentType ct = ContentType.GetByAlias(&lt;span class=&quot;str&quot;&gt;&quot;_advertiser&quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 2: &lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt; (PropertyType
i &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; ct.PropertyTypes)&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 3: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 4: &lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (i.Alias == &lt;span class=&quot;str&quot;&gt;&quot;linkToSpecial&quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 5: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 6: &lt;/span&gt; &lt;span class=&quot;rem&quot;&gt;// Delete all properties of
propertytype&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 7: &lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt; (umbraco.cms.businesslogic.Content
c &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; umbraco.cms.businesslogic.Content.getContentOfContentType(ct))&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 8: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 9: &lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (c.getProperty(&lt;span class=&quot;str&quot;&gt;&quot;linkToSpecial&quot;&lt;/span&gt;)
== &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 10: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 11: &lt;/span&gt; c.addProperty(i, c.Version);&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 12: &lt;/span&gt; c.Save();&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 13: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 14: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 15: &lt;/span&gt; &lt;span class=&quot;rem&quot;&gt;//Remove comment to delete
the property from the doctype&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 16: &lt;/span&gt; &lt;span class=&quot;rem&quot;&gt;//i.delete();&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 17: &lt;/span&gt; &lt;span class=&quot;rem&quot;&gt;//ct.Save();&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 18: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt; 19: &lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type=&quot;text/css&quot;&gt;.csharpcode, .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;Courier New&quot;, courier, monospace;background-color:#ffffff;}
.csharpcode pre {margin:0em;}
.csharpcode .rem {color:#008000;}
.csharpcode .kwrd {color:#0000ff;}
.csharpcode .str {color:#006080;}
.csharpcode .op {color:#0000c0;}
.csharpcode .preproc {color:#cc6633;}
.csharpcode .asp {background-color:#ffff00;}
.csharpcode .html {color:#800000;}
.csharpcode .attr {color:#ff0000;}
.csharpcode .alt {background-color:#f4f4f4;width:100%;margin:0em;}
.csharpcode .lnum {color:#606060;}&lt;/style&gt;
&lt;p&gt;
As you can see, I’ve used a&amp;#160; few hard coded values. &lt;strong&gt;_advertiser&lt;/strong&gt; is
the alias of the document type and &lt;strong&gt;linkToSpecial&lt;/strong&gt; is the alias of
the property that I wanted to add on the Document type. If you want to delete the
property&amp;#160; remove&amp;#160; lines 9-13 and remove the comment on line 16 and 17. You
can use this code in a usercontrol and use that usercontrol as a dashboard control. &lt;strong&gt;Needless
to say, this code comes without a warranty.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;
I’ve added &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=24871&quot;&gt;the
issue to codeplex&lt;/a&gt;, please vote for it!. Hope this post is a nice work around for
the issue.
&lt;/p&gt;
&lt;img width=&quot;0&quot; height=&quot;0&quot; src=&quot;http://www.richardsoeteman.net/aggbug.ashx?id=bdc34020-7c06-49ca-ae62-9c1b4cbbacbd&quot;/&gt;</description>
         <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,bdc34020-7c06-49ca-ae62-9c1b4cbbacbd.aspx</guid>
         <pubDate>Tue, 27 Oct 2009 13:06:12 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>A Developers Guide to LINQ to Umbraco - Session 6 - Outputting XML</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/X-UBXz0786w/a-developers-guide-to-linq-to-umbraco---session-6---outputting-xml.aspx</link>
         <description>&lt;p&gt;&lt;em&gt;This post is part of a series, for all the posts in the
series see the following table of contents:&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 0 - Overview&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 1 - Getting Started&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 2 - Working with LINQ to Umbraco Entities&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 3 - Delving into the UmbracoDataContext&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 4 - Performance and Caching&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 5 - Paging and control-less forms&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 6 - Outputting XML&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;div&gt;&lt;strong&gt;Outputting XML&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;In this session I'll be looking at how you can transform the
LINQ to Umbraco entities and generate an XML response, for
something such as a RSS feed.&lt;/div&gt; &lt;div&gt;&lt;em&gt;Runtime -&lt;/em&gt; 12:36&lt;/div&gt; &lt;div&gt;&lt;em&gt;Download&lt;/em&gt; -&amp;nbsp;&lt;a rel=&quot;nofollow&quot;
&gt;FLV&lt;/a&gt; (10mb),&amp;nbsp;&amp;nbsp; &lt;a rel=&quot;nofollow&quot;
&gt;
MOV&lt;/a&gt; (76mb)&lt;/div&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Sat, 24 Oct 2009 21:30:34 -0700</pubDate>
      </item>
      <item>
         <title>A Developers Guide to LINQ to Umbraco - Session 5 - Paging and control-less forms</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/PDZgP_5iPFg/a-developers-guide-to-linq-to-umbraco---session-5---paging-and-control-less-forms.aspx</link>
         <description>&lt;p&gt;&lt;em&gt;This post is part of a series, for all the posts in the
series see the following table of contents:&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 0 - Overview&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 1 - Getting Started&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 2 - Working with LINQ to Umbraco Entities&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 3 - Delving into the UmbracoDataContext&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 4 - Performance and Caching&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 5 - Paging and control-less forms&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 6 - Outputting XML&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;div&gt;&lt;strong&gt;Paging and control-less forms&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;In this session I'll be looking at how easy it is to do paging
with LINQ to Umbraco entities. Also with MVC being such a hot topic
I'll show you how you can make a form which renders LINQ to Umbraco
with no ASP.NET server controls.&lt;/div&gt; &lt;div&gt;&lt;em&gt;Runtime -&lt;/em&gt; 15:16&lt;/div&gt; &lt;div&gt;&lt;em&gt;Download&lt;/em&gt; -&amp;nbsp;&lt;a rel=&quot;nofollow&quot;
&gt;FLV&lt;/a&gt; (23mb),&amp;nbsp; &lt;a rel=&quot;nofollow&quot;
&gt;
MOV&lt;/a&gt; (117mb)&lt;/div&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Sat, 24 Oct 2009 21:26:52 -0700</pubDate>
      </item>
      <item>
         <title>A Developers Guide to LINQ to Umbraco - Session 4 - Performance and Caching</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/LQbHwDZE4WQ/a-developers-guide-to-linq-to-umbraco---session-4---performance-and-caching.aspx</link>
         <description>&lt;p&gt;&lt;em&gt;This post is part of a series, for all the posts in the
series see the following table of contents:&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 0 - Overview&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 1 - Getting Started&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 2 - Working with LINQ to Umbraco Entities&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 3 - Delving into the UmbracoDataContext&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 4 - Performance and Caching&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 5 - Paging and control-less forms&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 6 - Outputting XML&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;div&gt;&lt;strong&gt;Performance and Caching&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;In this session I'll be looking at how to make the most of the
built-in caching of LINQ to Umbraco, ensuring your performance is
the best.&lt;/div&gt; &lt;div&gt;&lt;em&gt;Runtime -&lt;/em&gt; 16:39&lt;/div&gt; &lt;div&gt;&lt;em&gt;Download&lt;/em&gt; -&amp;nbsp;&lt;a rel=&quot;nofollow&quot;
&gt;FLV&lt;/a&gt; (23mb),&amp;nbsp; &lt;a rel=&quot;nofollow&quot;
&gt;
MOV&lt;/a&gt; (114mb)&lt;/div&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Sat, 24 Oct 2009 21:22:46 -0700</pubDate>
      </item>
      <item>
         <title>A Developers Guide to LINQ to Umbraco - Session 3 - Delving into the UmbracoDataContext</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/ijr_AAW9Cio/a-developers-guide-to-linq-to-umbraco---session-3---delving-into-the-umbracodatacontext.aspx</link>
         <description>&lt;p&gt;&lt;em&gt;This post is part of a series, for all the posts in the
series see the following table of contents:&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 0 - Overview&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 1 - Getting Started&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 2 - Working with LINQ to Umbraco Entities&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 3 - Delving into the UmbracoDataContext&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 4 - Performance and Caching&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 5 - Paging and control-less forms&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 6 - Outputting XML&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;div&gt;&lt;strong&gt;Delving into the UmbracoDataContext&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;In this session I'll be looking at the heart of LINQ to
Umbraco, the UmbracoDataContext. We'll look at what it's role is,
and how it can be used in extensibility.&lt;/div&gt; &lt;div&gt;&lt;em&gt;Runtime -&lt;/em&gt; 16:08&lt;/div&gt; &lt;div&gt;&lt;em&gt;Download&lt;/em&gt; -&amp;nbsp;&lt;a rel=&quot;nofollow&quot;
&gt;FLV&lt;/a&gt; (32mb),&amp;nbsp; &lt;a rel=&quot;nofollow&quot;
&gt;
MOV&lt;/a&gt; (235mb)&lt;/div&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Sat, 24 Oct 2009 21:17:24 -0700</pubDate>
      </item>
      <item>
         <title>A Developers Guide to LINQ to Umbraco - Session 2 - Working with LINQ to Umbraco Entities</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/zf1djxUbbmU/a-developers-guide-to-linq-to-umbraco---session-2---working-with-linq-to-umbraco-entities.aspx</link>
         <description>&lt;p&gt;&lt;em&gt;This post is part of a series, for all the posts in the
series see the following table of contents:&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 0 - Overview&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 1 - Getting Started&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 2 - Working with LINQ to Umbraco Entities&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 3 - Delving into the UmbracoDataContext&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 4 - Performance and Caching&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 5 - Paging and control-less forms&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 6 - Outputting XML&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;div&gt;&lt;strong&gt;Working with LINQ to Umbraco Entities&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;In this session I'll be looking at the code which was
generated from the first session and how we can do some basic
interactions. We'll also create our first control using LINQ to
Umbraco.&lt;/div&gt; &lt;div&gt;&lt;em&gt;Runtime -&lt;/em&gt; 18:54&lt;/div&gt; &lt;div&gt;&lt;em&gt;Download&lt;/em&gt; -&amp;nbsp;&lt;a rel=&quot;nofollow&quot;
&gt;FLV&lt;/a&gt; (37mb),&amp;nbsp; &lt;a rel=&quot;nofollow&quot;
&gt;
MOV&lt;/a&gt; (92mb)&lt;/div&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Sat, 24 Oct 2009 21:12:53 -0700</pubDate>
      </item>
      <item>
         <title>A Developers Guide to LINQ to Umbraco - Session 1 - Getting Started</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/Mu8HsSCc25s/a-developers-guide-to-linq-to-umbraco---session-1---getting-started.aspx</link>
         <description>&lt;p&gt;&lt;em&gt;This post is part of a series, for all the posts in the
series see the following table of contents:&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
Session 0 - Overview&lt;/a&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 1 - Getting Started&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 2 - Working with LINQ to Umbraco Entities&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 3 - Delving into the UmbracoDataContext&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 4 - Performance and Caching&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 5 - Paging and control-less forms&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 6 - Outputting XML&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;div&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;In this session I'll be looking at the basics of what is
required for LINQ to Umbraco.&lt;/div&gt; &lt;div&gt;We'll look at how to generate the classes and some suggestions
on how to get the best generated class names.&lt;/div&gt; &lt;div&gt;&lt;em&gt;Runtime -&lt;/em&gt; 06:43&lt;/div&gt; &lt;div&gt;&lt;em&gt;Download&lt;/em&gt; - &lt;a rel=&quot;nofollow&quot;
&gt;FLV&lt;/a&gt; (14mb), &lt;a rel=&quot;nofollow&quot;
&gt;
MOV&lt;/a&gt; (24mb)&lt;/div&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Sat, 24 Oct 2009 21:03:56 -0700</pubDate>
      </item>
      <item>
         <title>A Developers Guide to LINQ to Umbraco - part 0</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/4BoYeuBQTCg/a-developers-guide-to-linq-to-umbraco---part-0.aspx</link>
         <description>&lt;p&gt;&lt;em&gt;This post is part of a series, for all the posts in the
series see the following table of contents:&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;&lt;em&gt;Session 0 - Overview&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 1 - Getting Started&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 2 - Working with LINQ to Umbraco Entities&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 3 - Delving into the UmbracoDataContext&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 4 - Performance and Caching&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 5 - Paging and control-less forms&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Session 6 - Outputting XML&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Over the last month or so leading up to the Umbraco v4.1 beta
release I decided to work on a series of screencasts which are
aimed to give people a starting point when it comes to LINQ to
Umbraco.&lt;/p&gt; &lt;p&gt;I'm aware that not everyone who uses Umbraco is a developer, and
that's partially why the XSLT engine is so popular.&lt;br /&gt; But I've never been a fan of XSLT and XPath, in fact I was so not
a fan I wrote a &lt;em&gt;better&lt;/em&gt; API which to use :P.&lt;/p&gt; &lt;p&gt;This series documents my journey to rebuild the blogging engine
of my website on top of LINQ to Umbraco. Previously I was using the
Umbraco Interaction Layer, my previous &lt;em&gt;implementation&lt;/em&gt; of
LINQ to Umbraco, but it was database reliant.&lt;br /&gt; Now my website works directly off the XML cache and should also
hopefully be faster than it use to be.&lt;/p&gt; &lt;p&gt;All screencasts are available as both FLV and MOV formatted
files (I use a Mac kids, you're stuck with MOV's :P). The FLV's are
well, FLV quality, but the MOV's are much higher quality, but that
also means they are much larger in size.&lt;/p&gt; &lt;p&gt;But without further stalling I suggest you get started playing
with LINQ to Umbraco. Please ensure than any bugs/ feedback gets
logged onto &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.com/WorkItem/List.aspx&quot;
&gt;Codeplex&lt;/a&gt; so I can make it more awesome for the
final release ;). (Oh, FYI, I've already found a bug running LINQ
to Umbraco on a machine with Visual Studio installed, it's logged
&lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=25082&quot;&gt;here&lt;/a&gt; and I'll be working on it for the next
release)&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Sat, 24 Oct 2009 20:44:18 -0700</pubDate>
      </item>
      <item>
         <title>Simple Umbraco Footer Navigation</title>
         <link>http://www.blogfodder.co.uk/post/Simple-Umbraco-Footer-Navigation.aspx</link>
         <description>&lt;p&gt;From building other sites, something which has become quite popular / important are having a footer navigations.&amp;#160; Whether it be for architecture, SEO or usability from my experience its something that clients/users want on the site, and the ability to choose which pages appear there.&amp;#160; &lt;/p&gt; &lt;p&gt;Here’s a very simple little bit of XSLT which will let you do just that, all you need to do is add the following property to your DocType you want users to be able to put in the footer.&amp;#160; &lt;/p&gt; &lt;p&gt;For example I have CWS2 installed, and for the Textpage &amp;amp; Textpage (Two Col) DocType’s set with this property&lt;/p&gt; &lt;p&gt;&lt;img style=&quot;border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;&quot; title=&quot;footer-property&quot; border=&quot;0&quot; alt=&quot;footer-property&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=footer-property.jpg&quot; width=&quot;467&quot; height=&quot;345&quot;/&gt; &lt;/p&gt; &lt;p&gt;Now you have added the ‘ShowInFooter’ property to the DocTypes, we just need to create the XSLT file (With matching Macro) called ‘FooterNav’ and choose clean&lt;/p&gt; &lt;p&gt;&lt;img style=&quot;border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;&quot; title=&quot;macro&quot; border=&quot;0&quot; alt=&quot;macro&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=macro.jpg&quot; width=&quot;466&quot; height=&quot;345&quot;/&gt; &lt;/p&gt; &lt;p&gt;Simply delete all the XSLT and replace it with the XSLT in the below and save it&lt;/p&gt; &lt;div style=&quot;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;&quot; id=&quot;scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:957e6187-ec7e-424c-8cf9-f0d5f78a696f&quot; class=&quot;wlWriterEditableSmartContent&quot;&gt;&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE xsl:stylesheet [ &amp;lt;!ENTITY nbsp &quot;&amp;amp;#x00A0;&quot;&amp;gt; ]&amp;gt;
&amp;lt;xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; xmlns:msxml=&quot;urn:schemas-microsoft-com:xslt&quot; xmlns:umbraco.library=&quot;urn:umbraco.library&quot; xmlns:Exslt.ExsltCommon=&quot;urn:Exslt.ExsltCommon&quot; xmlns:Exslt.ExsltDatesAndTimes=&quot;urn:Exslt.ExsltDatesAndTimes&quot; xmlns:Exslt.ExsltMath=&quot;urn:Exslt.ExsltMath&quot; xmlns:Exslt.ExsltRegularExpressions=&quot;urn:Exslt.ExsltRegularExpressions&quot; xmlns:Exslt.ExsltStrings=&quot;urn:Exslt.ExsltStrings&quot; xmlns:Exslt.ExsltSets=&quot;urn:Exslt.ExsltSets&quot; exclude-result-prefixes=&quot;msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets &quot;&amp;gt; &amp;lt;xsl:output method=&quot;xml&quot; omit-xml-declaration=&quot;yes&quot;/&amp;gt; &amp;lt;xsl:param name=&quot;currentPage&quot;/&amp;gt; &amp;lt;xsl:template match=&quot;/&quot;&amp;gt;
&amp;lt;ul&amp;gt; &amp;lt;xsl:for-each select=&quot;$currentPage/ancestor-or-self::node/descendant-or-self::node/node [string(data[@alias='ShowInFooter']) = '1']&quot;&amp;gt; &amp;lt;li&amp;gt; &amp;lt;a href=&quot;{umbraco.library:NiceUrl(@id)}&quot;&amp;gt; &amp;lt;xsl:value-of select=&quot;@nodeName&quot; /&amp;gt; &amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt; &amp;lt;/xsl:for-each&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/xsl:template&amp;gt; &amp;lt;/xsl:stylesheet&amp;gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;Add your footer macro in your HTML where you need the footer nav to appear&lt;/p&gt; &lt;p&gt;&lt;img style=&quot;border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;&quot; title=&quot;inline-code&quot; border=&quot;0&quot; alt=&quot;inline-code&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=inline-code.jpg&quot; width=&quot;514&quot; height=&quot;66&quot;/&gt; &lt;/p&gt; &lt;p&gt;All you need to do now is ‘tick’ the box if you want the page to appear in the footer, or leave it unchecked – That's it!&lt;/p&gt; &lt;p&gt;&lt;img style=&quot;border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;&quot; title=&quot;lastbit&quot; border=&quot;0&quot; alt=&quot;lastbit&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=lastbit.jpg&quot; width=&quot;345&quot; height=&quot;220&quot;/&gt;&lt;/p&gt;</description>
         <author>leen3o</author>
         <guid isPermaLink="false">http://www.blogfodder.co.uk/post.aspx?id=d013cca0-7cec-49d2-94d0-b4435ac9ffb4</guid>
         <pubDate>Wed, 21 Oct 2009 10:09:04 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Umbraco Permissions Script - Secure Version</title>
         <link>http://blog.vizioz.com/2009/10/umbraco-permissions-script-secure.html</link>
         <description>Back in May I blogged about how to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.vizioz.com/2009/05/umbraco-directory-permissions.html&quot;&gt;set Permissions for Umbraco&lt;/a&gt; using SetACL to set the appropriate directory permissions based on the installation recommendations.&lt;br /&gt;&lt;br /&gt;Recently I have been working on a site for a client who wanted every security item to be locked down as tightly as possible. And so I modified the script based on the Umbraco security best practices, I thought I'd share it with everyone, if I have missed anything, or if anyone has any suggestions on how to improve this, please let me know :)&lt;br /&gt;&lt;br /&gt;Please refer to my previous post regarding the SetAcl command line application that you will need.&lt;br /&gt;&lt;br /&gt;I suggest you save the following into a batch file called: umbPermSecure.bat&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;echo off&lt;br /&gt;REM Script to setup the Security Permissions for an Umbraco site&lt;br /&gt;REM This script will give your machine Network Service the minimum rights required&lt;br /&gt;REM for Umbraco to work&lt;br /&gt;&lt;br /&gt;REM I suggest you update this script to also remove any users who do not need &lt;br /&gt;REM access to the web folders&lt;br /&gt;&lt;br /&gt;REM **** Pre-requisites ****&lt;br /&gt;REM You will need to download -&amp;gt; http://setacl.sourceforge.net/&lt;br /&gt;REM It is assumed that you have stored SetACL in a directory called, C:&amp;#92;SetACL if&lt;br /&gt;REM not, you will need to modify the script.&lt;br /&gt;&lt;br /&gt;REM **** Usage ****&lt;br /&gt;REM You need to pass in the path for the root of your Umbraco directory&lt;br /&gt;REM E.g. umbPermSecure.bat C:&amp;#92;inetpub&amp;#92;umbracoroot&lt;br /&gt;&lt;br /&gt;@echo umbPermSecure.bat - Script to set Umbraco File and Directory Permissions&lt;br /&gt;@echo based on the Umbraco Security Best Practices Document (13th March 2009)&lt;br /&gt;@echo Published by Chris Houston - 19th October 2009&lt;br /&gt;@echo http://blog.vizioz.com&lt;br /&gt;&lt;br /&gt;@echo Adding READ only access &lt;br /&gt;&lt;br /&gt;SetACL.exe -on &quot;%1&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;web.config&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;bin&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;umbraco&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;&lt;br /&gt;@echo Adding READ and EXECUTE access &lt;br /&gt;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;app_code&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read_ex&quot; &lt;br /&gt;-actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;usercontrols&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read_ex&quot; &lt;br /&gt;-actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;&lt;br /&gt;@echo Adding READ, WRITE and MODIFY access &lt;br /&gt;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;config&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:change&quot; -actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;css&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:change&quot; -actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;data&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:change&quot; -actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;masterpages&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:change&quot; -actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;media&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:change&quot; -actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;python&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:change&quot; -actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;scripts&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:change&quot; -actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;br /&gt;SetACL.exe -on &quot;%1&amp;#92;xslt&quot; -ot file -actn ace -ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:read&quot; &lt;br /&gt;-ace &quot;n:%computername%&amp;#92;NETWORK SERVICE;p:change&quot; -actn clear -clr &quot;dacl,sacl&quot; -log &quot;c:&amp;#92;setacl&amp;#92;log.txt&quot;&lt;/pre&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8614620678187102145-1234462460898854812?l=blog.vizioz.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Chris)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8614620678187102145.post-1234462460898854812</guid>
         <pubDate>Tue, 20 Oct 2009 11:09:00 -0700</pubDate>
      </item>
      <item>
         <title>localLinks</title>
         <link>http://www.bysquirrels.com/2009/10/20/locallinks.aspx</link>
         <guid isPermaLink="false">http://www.bysquirrels.com/2009/10/20/locallinks.aspx</guid>
         <pubDate>Tue, 20 Oct 2009 09:57:16 -0700</pubDate>
         <content:encoded><![CDATA[<h3>{localLinks}</h3> <h4>Overview</h4> <p>On a recent project we stumbled into an interesting problem. We
had been asked to build a very simple website, however we wanted to
allow the site to grow and develop so making it as flexible as
possible was paramount. The site would have monthly publications
which could contain 'assets'. It was likely the 'assets' would be
used in future publications so we wanted to store these in their
own folder.</p> <p>The publication would show a preview of the asset &amp; when it
was clicked the asset would play at the top of the publication.
This was done by passing the nodeID of the asset into the
querystring of the publication page. The publication also showed a
teaser which was associated to the asset.</p> <p>This gave our client a very flexible solution. However our
clients wanted to be able to link to other assets within the teaser
(contentTeaser) field.</p> <p>This presented us with a problem, the content editor could link
to other assets. But when this link was parsed it would link to the
other document. This was not the behavior we wanted, we wanted to
access the nodeID and pass this in the query string to keep
behavior uniform.</p> <p>-</p> <p>To do this we needed to interupt how Umbraco parsed the XML by
Encoding the 'contentTeaser', accessing the link information,
replacing it, and then decoding the data so it would be suitable
for front-end render again.</p> <p>We did this using XSLT, eXSLT, Regex and some C#.</p> <h4>References</h4> <p><a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/wiki/reference/xslt/extend-your-xslt-with-custom-functions" title="Our Umbraco is the first stop for Umbraco information. This link contains information on creating a custom XSLT Function">
our.Umbraco.org - Extend your XSLT with Custom Functions</a><br /> <a rel="nofollow"
 target="_blank" href="http://www.exslt.org/regexp/functions/replace/regexp.replace.html" title="the home of eXSLT - information on Regex Replace">eXSLT.org
- Regex Replace</a><br /> <a rel="nofollow" target="_blank" href="http://www.exslt.org/regexp/functions/match/index.html"
 title="eXSLT - Match Examples">eXSLT.org - Regex Match</a> (more
useful examples)<br /> <a rel="nofollow" target="_blank" href="http://our.umbraco.org/wiki/reference/umbracolibrary"
 title="Reference on the Umbraco Library functions.">our.Umbraco.org
- Umbraco Library</a></p> <p>&nbsp;</p> <h4>The Code</h4> <p>This document has been broken down into six sections, at the
bottom of this page is a link to download the XSLT.</p> <ol>
<li>Custom XSLT Function</li> <li>Get the $currentPage URL</li> <li>Get the $currentPage Content and Encode (variable)</li> <li>Set the Regex String Replacement</li> <li>Run Regex Replace</li> <li>Get the Replace Output, Decode &amp; Display.</li>
</ol> <p>&nbsp;</p> <p>&nbsp;</p> <p><strong>1. Custom XSLT</strong></p> <p>This code has been referenced from the Umbraco Wiki you can find
it <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/wiki/reference/xslt/extend-your-xslt-with-custom-functions" title="Umbraco XSLT Extend">here.</a></p> <p style="padding-left:30px;">&lt;msxml:script
implements-prefix="htmlDecode" language="C#"&gt;<br /> &lt;msxml:assembly name="System.Web"/&gt;<br /> &lt;msxml:using namespace="System.Web"/&gt;<br />
<br /> &lt;![CDATA[ public string convertText(string text) { string
decodedStr = HttpUtility.HtmlDecode(text); return decodedStr; }
]]&gt;<br />
<br /> &lt;/msxml:script&gt;</p> <p>&nbsp;</p> <p><strong>2. Get the $currentPage URL</strong></p> <p>We need the URL for the page we want to make the links reference
too.<br /> Using the 'umbraco.library:NiceURL(string)' function.</p> <p>This URL is assigned the variable '$niceURL'.</p> <p style="padding-left:30px;">&lt;xsl:variable
name="niceURL"&gt;<br /> &lt;xsl:value-of
select="umbraco.library:NiceUrl($currentPage/@id)"/&gt;<br /> &lt;/xsl:variable&gt;</p> <p><br /> <strong>3.&nbsp;Get the $currentPage Content and Encode
(variable)</strong></p> <p>Next we grab the content which contains our links. In this case
the datatype was a richtext editor. To be able to process this with
the eXSLT:Regex extension we needed to encode the characters in the
HTML.</p> <p>This is really easy to do using the
'umbraco:library:HtmlEncode(string)' function.</p> <p style="padding-left:30px;">&lt;xsl:variable
name="assetTeaser"&gt;<br /> &lt;xsl:value-of select="umbraco.library:HtmlEncode(data [@alias =
'assetTeaser'])"/&gt; &lt;/xsl:variable&gt;</p> <p><br /> <strong>4.&nbsp;Set the Regex String Replacemen</strong>t</p> <p>For some reason I couldn't write the whole replacement string in
the regex replace function. So I pull in the string I wanted by
setting it as a variable. In anyone knows how to fix this please
let me know!</p> <p style="padding-left:30px;">&lt;xsl:variable
name="niceURLregex"&gt;<br /> ..&lt;xsl:value-of select="$niceURL"/&gt;<br /> ?clip=$1<br /> &lt;/xsl:variable&gt;</p> <p><br /> <strong>5. Run Regex Replace</strong></p> <p>Using a eXSLT function called replace would can feed in our
content, find the {localLinks} and then replace these with the
variable we set earlier.</p> <p>in this case, we are looking for localLink and a 4 digit number.
Its worth noting the number could be longer than four digits if
your site has many nodes. We also inform the processor that it is
dealing with a multiline input (m), a ungreedy pattern (U) and to
treat each string as a single line (s); giving us 'mUs'.</p> <p>We now need to feed the function the replacement information. As
noted above I could not find a way to write what is stored in the
variable directly. Because of this we simply pull the variable
in.</p> <p>&nbsp;</p> <p>This string tells is to;</p> <ul>
<li>.. - move to the root.</li> <li>$niceURL - get the niceURL variable, defined in the top of the
document. This is just the URL for the current page.</li> <li>?clip= - add some static text</li> <li>$1 - add the string, e.g "1234" in /{localLink:(1234)}</li>
</ul> <p>&lt;xsl:variable name="assetTeaserReplace"&gt;<br /> &lt;xsl:value-of
select="Exslt.ExsltRegularExpressions:replace($assetTeaser,
'/{localLink:([0-9][0-9][0-9][0-9])}', 'mUs', $niceURLregex )"
disable-output-escaping="no" /&gt; &lt;/xsl:variable&gt;</p> <p><br /> <strong>6. Get Replace Output, Decode and Display</strong></p> <p>Okay so we've taken $assetTeaser, and using some regex we've
updated the links. Now we need to Decode it. (we encoded it to
start with).&nbsp;Its at this point we run the custom function we
set at the top of the document which gives us the capability to
decodeHTML.</p> <p>&lt;xsl:value-of
select="htmlDecode:convertText(string($assetTeaserReplace))"
disable-output-escaping="yes" /&gt;</p> <p>-</p> <p><a rel="nofollow" title="Download XSLT">You
can download the XSLT for this here.</a></p>]]></content:encoded>
      </item>
      <item>
         <title>Behind the scenes of the 4.1 beta release</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/D1LHjL4CvfE/behind-the-scenes-of-the-41-beta-release.aspx</link>
         <description>&lt;p&gt;Early this morning (well, my time :P) we released &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org/blog/2009/10/19/umbraco-41-beta-1&quot;&gt;Umbraco v4.1 Beta 1&lt;/a&gt; to the masses, but I thought it would be a bit of fun to have a look behind the scenes of the release.&lt;/p&gt;
&lt;p&gt;I'm going to tell you a worthy tail. There will be highs and there will be lows, but ultimately there was cause for celebration.&lt;/p&gt;
&lt;p&gt;Our story begins last night 8pm AEDST (Australia Eastern Daylight-Savings Time) on Monday 19th October 2009...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8pm&lt;/strong&gt;&amp;nbsp;- I have just rolled in from work &amp;amp; an hour of fitness with a trainer. I've gone and pulled a muscle in my stomach and it's really quite painful. Niels pings me on MSN with a question that will come back to haunt me... &quot;How long are you planning to be up?&quot;. I respond with the fact I'd like to be in bed by 12.30am. This is something that will come back to bite me.&lt;br /&gt;I tell Niels I haven't eaten or showered, which is good cuz that gives him a chance to get the build ready.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8.45pm&lt;/strong&gt;&amp;nbsp;- I'm just finishing up dinner and Niels is onto me already, we've got a problem on the build server. one of the projects wont compile. Oh well, it's not one that's used, so we just remove it from the build and continue on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9.20pm&lt;/strong&gt;&amp;nbsp;- First build is done, Niels is loving listening to so much Ole Erling, I'm chatting to him while he does the first test install.&lt;br /&gt;Things aren't going to plan, there's a problem with the web.config. I did some changes to how we handled the web.config for everyone's development, but it looks like things didn't get migrated into the primary one properly.&lt;br /&gt;Crap.&lt;br /&gt;Niels fixes the web.config problem and does a new build.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9.50pm&lt;/strong&gt;&amp;nbsp;- New build has been produced and I download and install. This time the installer goes off without a problem, in fact it was very smooth. I install CWS and get ready for some testing.&lt;br /&gt;Niels is starting to sound worried though, he doesn't like the way a feature of the new tree is looking.&lt;br /&gt;I start doing more testing and I can see the problem, the tree is having some real issues. I reluctantly pull Shannon into help fix it.&lt;br /&gt;We also find another IE8 bug when there is a Content Picker data type on the document type.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10.40pm&lt;/strong&gt;&amp;nbsp;-&amp;nbsp;&amp;nbsp;Niels is freaking right out, the tree is playing up since the upgrade to 0.99a, editContent.aspx doesn't work in IE8 and there's a critical bug when installing packages.&lt;br /&gt;He wants to call it off, there's tears, and low blood sugar.&lt;br /&gt;Niels goes off to find some food while Shan and I get cracking at fixing the bugs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11.30pm &lt;/strong&gt;- I've found the cause of the editContent.aspx bug, but as soon as I fix it I get more IE8 bugs, now we're getting illegal DOM manipulation. IE8 doesn't tell me where it's happening though and because each browser treats DOM manipulation differently IE is the only one to show this problem.&lt;br /&gt;Now I'm starting to get flustered, there's help cries flying out on Twitter, cursing and swearing around the apartment.&lt;br /&gt;Niels seems to have calmed down though, he's found the cause of his assigned problem and is just about finished the fix.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12.10am&lt;/strong&gt;&amp;nbsp;- SUCCESS! I have solved the DOM manipulation bug. I've implemented a little hack and it's all working. I'm dancing around the room and checking in code.&lt;br /&gt;Looks like a build may make it out.&lt;br /&gt;But then I realise that my hack wasn't going to work, I quickly abort the pending build and get cracking on a better fix which takes me &amp;lt;5 minutes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12.30am&lt;/strong&gt;&amp;nbsp;- Shannon has fixed the tree bug, Niels has fixed his bug, I have fix my bug. FULL STEAM AHEAD! WE'RE BUILDING!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12.40am&lt;/strong&gt;&amp;nbsp;- New build ready, we're all doing clean installs.&lt;br /&gt;CWS installs without a hitch.&lt;br /&gt;Runway installs without a hitch.&lt;br /&gt;editContent.aspx works as it should.&lt;br /&gt;The tree is working as it should.&lt;br /&gt;I can't believe this, we've made it!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1am&lt;/strong&gt;&amp;nbsp;- I put together a blog post announcing the release, Niels is uploading the release to Codeplex.&lt;br /&gt;Shannon is sorting out his washing to be packed as he's about to go on holidays.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.20am&lt;/strong&gt;&amp;nbsp;- I'm exhausted, but the release is done, it's been blogged and I can finally get some sleep.&lt;br /&gt;But we've made it, it's still Monday &lt;em&gt;somewhere&lt;/em&gt;&amp;nbsp;in the world, and the goal was a Monday 19th October release. Deadline has been reached.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So there you have it folks, the story of the Umbraco 4.1 Beta release. You can't say that we're not a dedicated bunch of people, striving to bring you a release, regardless the cost :) :P&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Tue, 20 Oct 2009 08:26:04 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Richtext editor datatype and related stylesheets</title>
         <link>http://www.nibble.be/?p=74</link>
         <description>You can relate stylesheets to the richttext editor datatype in umbraco, sometimes this will cause an unwanted effect. Like a background color that you don&amp;#8217;t want, &amp;#8230;
But this can easily be changed.
You can target the richttext editor with the class
.mceContentBody
So by appending this to the related stylesheet, you have more control over the styling in [...]</description>
         <guid isPermaLink="false">http://www.nibble.be/?p=74</guid>
         <pubDate>Tue, 20 Oct 2009 02:51:16 -0700</pubDate>
         <content:encoded><![CDATA[<p>You can relate stylesheets to the richttext editor datatype in umbraco, sometimes this will cause an unwanted effect. Like a background color that you don&#8217;t want, &#8230;</p>
<p>But this can easily be changed.</p>
<p>You can target the richttext editor with the class</p>
<p>.mceContentBody</p>
<p>So by appending this to the related stylesheet, you have more control over the styling in the richttext editor datatype.</p>
<p>(make sure to clear your browser cache, to view the result)</p>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco 4.1 Beta 1</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/V4gUH84OXVg/28588</link>
         <description>&lt;p&gt;Well a few months ago the core team had a discussion, and we
decided to set ourselves a deadline for the Umbraco 4.1 Beta 1
release.&lt;br /&gt; There was a lot riding on this release, Niels was going to have to
listen to Ole Erling if the commitments weren't made.&lt;/p&gt; &lt;p&gt;But more importantly it would have been another delayed release,
something which we didn't want.&lt;/p&gt; &lt;p&gt;So with some hard last minute work I'm proud to announce that &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=31736&quot; title=&quot;Umbraco 4.1 Beta 1 Download&quot;&gt;Umbraco 4.1
Beta 1 is available for download and testing&lt;/a&gt;.&lt;br /&gt; *pauses for dramatic effect*&lt;/p&gt; &lt;p&gt;Grab a copy and get your testing on! (Usual disclaimer about
don't use on a production site applies)&lt;/p&gt; &lt;p&gt;If you haven't been following our twitter feeds and are unsure
what to expect from this release I've compiled a list of new
features/ imporved features which are available in this
release:&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;.NET 3.5 SP1 Framework required&lt;/li&gt; &lt;li&gt;Umbraco tree replaced with jsTree 0.99a&lt;/li&gt; &lt;li&gt;Umbraco tree state remembered across applications&lt;/li&gt; &lt;li&gt;New client &amp;amp; server API for interaction with Umbraco and
the tree&lt;/li&gt; &lt;li&gt;Client Dependency for JS and CSS&lt;/li&gt; &lt;li&gt;Umbraco Examine as the default back of office search provider,
using Lucene as the indexer&lt;/li&gt; &lt;li&gt;Syntax highlighting editor for CSS, JS, Templates, Python and
XSLT&lt;/li&gt; &lt;li&gt;Improved data layer with child node interaction&lt;/li&gt; &lt;li&gt;Removal of a lot of legacy items (classes, old data types,
unused pages)&lt;/li&gt; &lt;li&gt;LINQ to Umbraco with NodeDataProvider&lt;/li&gt; &lt;li&gt;Improved Media Picker data type&lt;/li&gt; &lt;li&gt;Image Cropper data type&lt;/li&gt; &lt;li&gt;Media recycling bin&lt;/li&gt; &lt;li&gt;New event fired before a document is created (Newing
event)&lt;/li&gt; &lt;li&gt;Improved Document API with an OptimisedMode constrictor (new
Document(bool optimisedMode, int id);) which allows for the Save
method to cancel a save before database writing occurs (not
implemented on the editContent.aspx page though)&lt;/li&gt; &lt;li&gt;Documents can now be interacted with via named arguments (eg:
myDoc[&quot;property_alias&quot;])&lt;/li&gt; &lt;li&gt;Dynamic Tree proxy for dynamically creating Umbraco
Applications&lt;/li&gt; &lt;li&gt;Macro Container Data Type&lt;/li&gt; &lt;li&gt;Umbraco now launches from /umbraco/&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;p&gt;&lt;span&gt;We are all very excited about this release, there's some
awesome new features in it and some existing features have been
drastically improved.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span&gt;When you're testing if you find any questions ask them on
the Umbraco Forum in the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/forum/core/41-feedback&quot;
 title=&quot;4.1 forum&quot;&gt;4.1 section&lt;/a&gt; and if you find anything that is
an out-right bug feel free to post it straight to the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.org/&quot;
 title=&quot;Umbraco Codeplex&quot;&gt;Umbraco codeplex site&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span&gt;Happy testing :)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span&gt;&lt;strong&gt;Update&lt;/strong&gt; - Forgot one feature,
&lt;strong&gt;TinyMCE now has a spellchecker.&lt;/strong&gt; This is now part
of the core not a package like it use to be.&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=V4gUH84OXVg:1MBL1_ULtOU:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=V4gUH84OXVg:1MBL1_ULtOU:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=V4gUH84OXVg:1MBL1_ULtOU:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/V4gUH84OXVg&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false">http://umbraco.org/28588</guid>
         <pubDate>Mon, 19 Oct 2009 15:09:04 -0700</pubDate>
      </item>
      <item>
         <title>Adding A PayPal Buy Now / Donate Button In Umbraco</title>
         <link>http://www.blogfodder.co.uk/post/Adding-A-PayPal-Buy-Now-Donate-Button-In-Umbraco.aspx</link>
         <description>&lt;p&gt;Something that should be so simple… *SIGH*… I had a moment earlier, trying to add a donate button to an Umbraco site I have just finished.&amp;#160; I just grabbed the code from the PayPal site&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; title=&quot;https://www.paypal.com/cgi-bin/webscr?cmd=_pdn_xclick_techview_outside&quot; target=&quot;_blank&quot; href=&quot;https://www.paypal.com/cgi-bin/webscr?cmd=_pdn_xclick_techview_outside&quot;&gt;https://www.paypal.com/cgi-bin/webscr?cmd=_pdn_xclick_techview_outside&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Changed the values to what I needed (&lt;strong&gt;TIP: If you leave out the ‘amount’ value it will prompt people to add in a value and perfect for a donation button&lt;/strong&gt;) and put it in my site, published the page and it didn’t work – Even weirder it had stripped out my form tag just leaving the values.&amp;#160; I then realised I was nesting a &amp;lt;form&amp;gt; tag inside another form tag the .NET runat=server &amp;lt;form&amp;gt; tag that Umbraco was using, and it stumped me for a while I have to say!&amp;#160; I read other people saying you can add another ‘dummy’ form tag above it, and it will strip out the first tag and leave the second – I don’t like this idea of bloating my page with extra redundant code, so I came up with the following.&amp;#160; You can use the hidden values as QueryString values and it works exactly the same – So the following as taken from the PayPal site: &lt;/p&gt; &lt;div style=&quot;padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;&quot; id=&quot;scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:7d0a6915-8349-4611-bc46-69aad52d31a3&quot; class=&quot;wlWriterEditableSmartContent&quot;&gt;&lt;pre class=&quot;brush: html&quot;&gt;&amp;lt;form name=&quot;_xclick&quot; action=&quot;https://www.paypal.com/cgi-bin/webscr&quot; method=&quot;post&quot;&amp;gt;
&amp;lt;input type=&quot;hidden&quot; name=&quot;cmd&quot; value=&quot;_xclick&quot;&amp;gt;
&amp;lt;input type=&quot;hidden&quot; name=&quot;business&quot; value=&quot;me@mybusiness.com&quot;&amp;gt;
&amp;lt;input type=&quot;hidden&quot; name=&quot;currency_code&quot; value=&quot;USD&quot;&amp;gt;
&amp;lt;input type=&quot;hidden&quot; name=&quot;item_name&quot; value=&quot;Teddy Bear&quot;&amp;gt;
&amp;lt;input type=&quot;hidden&quot; name=&quot;amount&quot; value=&quot;12.99&quot;&amp;gt;
&amp;lt;input type=&quot;image&quot; src=&quot;http://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif&quot; border=&quot;0&quot; name=&quot;submit&quot; alt=&quot;Make payments with PayPal - it's fast, free and secure!&quot;&amp;gt;
&amp;lt;/form&amp;gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;Would become&lt;/p&gt; &lt;p&gt;&amp;lt;a href=”&lt;strong&gt;https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;amp;business=me@mybusiness.com&amp;amp;currency_code=USD&amp;amp;item_name=teddy bear&amp;amp;amount=12.99&lt;/strong&gt;”&amp;gt;Donate Via PayPal&amp;lt;/a&amp;gt;&lt;/p&gt; &lt;p&gt;Hope this helps other people going through the wasted time I had of trying to figure out what I had done wrong.&lt;/p&gt;</description>
         <author>leen3o</author>
         <guid isPermaLink="false">http://www.blogfodder.co.uk/post.aspx?id=89c9462b-ee68-43a1-aca2-d4be4775f8a8</guid>
         <pubDate>Mon, 19 Oct 2009 09:32:43 -0700</pubDate>
      </item>
      <item>
         <title>How To Get doc2form For Umbraco</title>
         <link>http://www.blogfodder.co.uk/post/How-To-Get-doc2form-For-Umbraco.aspx</link>
         <description>&lt;p&gt;This post might seem a bit pointless to most seasoned Umbracian’s, but I have to say it took me more than a couple of Googles to actually find out where doc2form was and then a few hours to find out what the heck it was/how I used it.&amp;#160; so here’s some laymen's stuff for &lt;strike&gt;dumb&lt;/strike&gt; newbie people like me :)&lt;/p&gt; &lt;h2&gt;What Is Doc2Form For Umbraco&lt;/h2&gt; &lt;p&gt;From my very brief play with doc2form, I have found that it’s a package that allows you to create a docType with properties than you can use as a form on a page (Hence doc … To … Form… lol).&amp;#160; As I’ll show below, you can simple create a basic docType with a couple of ‘text string’ properties and doc2Form will automatically turn those ‘text string’ properties into textboxes on the web page.&amp;#160; It then allows you to either email you the details, save the details as a node and I think a few other things I haven’t had chance to play with.&lt;/p&gt; &lt;h2&gt;Where Do I Download Doc2Form&lt;/h2&gt; &lt;p&gt;You download doc2Form from CodePlex here&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; title=&quot;http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=umbracoext&amp;amp;ReleaseId=5251&quot; target=&quot;_blank&quot; href=&quot;http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=umbracoext&amp;amp;ReleaseId=5251&quot;&gt;http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=umbracoext&amp;amp;ReleaseId=5251&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And you can download the documentation here&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; title=&quot;http://umbracoext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=5251#DownloadId=25159&quot; target=&quot;_blank&quot; href=&quot;http://umbracoext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=5251#DownloadId=25159&quot;&gt;http://umbracoext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=5251#DownloadId=25159&lt;/a&gt; &lt;/p&gt; &lt;h2&gt;What Are All The Properties / Options In Doc2Form?&lt;/h2&gt; &lt;p&gt;The list below is taken from the documentation above, but I thought I would put it here so it gets indexed via the search engines to help with people googling problems / doc2form settings.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;DocumentType &lt;br /&gt;&lt;/strong&gt;Specifies the umbraco Document Type to be rendered in the form.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Template&lt;/strong&gt; &lt;br /&gt;Specifies the template id or alias to be set when creating a new node.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TabName &lt;br /&gt;&lt;/strong&gt;Specifies which tabs are to be shown from the Document Type. This is a comma separated list of tab names in lowercase format.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;PageTabs &lt;/strong&gt; &lt;br /&gt;Specifies if the form is to generate in Wizard Mode with Next/Previous buttons.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;HideTabNames &lt;/strong&gt; &lt;br /&gt;Specifies if the Tab names are to be displayed as the legend for the fieldset element. Each Tab is generated into separate fieldsets elements.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ChooseWhereToStore &lt;/strong&gt; &lt;br /&gt;Specifies the node to which we want to store the form results under. If EditMode is set to True, then this setting is the node for which we are to edit and save. If this field is left blank, results will not be saved in the content tree.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;EditMode &lt;/strong&gt; &lt;br /&gt;Specifies if the form is to edit an existing node (specified in the ChooseWhereToStore setting).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ShowTitle &lt;/strong&gt; &lt;br /&gt;Specifies if the field to set the nodeName (or pageName) property is to be displayed.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TitleName &lt;/strong&gt; &lt;br /&gt;Specifies the label for the Title field. Only relevant if the ShowTitle setting is set to True. This field is Dictionary enabled.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;SaveMemberAlias &lt;/strong&gt; &lt;br /&gt;Specifies the field alias in which the current member id is to be saved. Member must be logged in for this to be relevant.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ShowDescriptions &lt;/strong&gt; &lt;br /&gt;Specifies if Document Type Property description text is to be displayed. The Description field is Dictionary enabled for usage in D2F.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;SubmitButtonText &lt;/strong&gt; &lt;br /&gt;Specifies the text for the Submit Button. This field is Dictionary enabled.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;NextButtonText &lt;/strong&gt; &lt;br /&gt;Specifies the text for the Next Button. This field is Dictionary enabled. Only relevant if the PageTabs setting is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;PreviousButtonText &lt;br /&gt;&lt;/strong&gt;Specifies the text for the Previous Button. This field is Dictionary enabled. Only relevant if the PageTabs setting is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;RequiredText &lt;/strong&gt; &lt;br /&gt;Specifies the text to display at the top of the form for labeling items that are mandatory. This field is Dictionary enabled.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TextOnSubmit &lt;/strong&gt; &lt;br /&gt;Specifies the text to display upon successful submission of the Form. This field is Dictionary enabled. Only relevant if the RefreshToParent or RedirectoToNode settings are not set.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;PublishOnSubmit &lt;/strong&gt; &lt;br /&gt;Specifies if the saved form results are to be published and visible on the website. Only relevant if the ChooseWhereToStore setting is specified.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;RefreshToParent &lt;/strong&gt; &lt;br /&gt;Specifies that the page will redirect to the node (ChooseWhereToStore setting) upon successful submission of the form. Only relevant if the RedirectToNode is not set.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;RedirectToNode &lt;br /&gt;&lt;/strong&gt;Specifies that the page will redirect to the node specified upon successful submission of the Form. If the value is set to -1, it will redirect to the ChooseWhereToStore setting, if set to -2, it will redirect to the created node.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;PublishWithUserId &lt;/strong&gt; &lt;br /&gt;Specifies the User Id to publish the content with. Default is 0, or the administrator account.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;StorePropertiesInCookies &lt;/strong&gt; &lt;br /&gt;Specifies the Document Type Properties which will be stored in Cookies for quick population of standard fields by frequent visitors.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;SendEmailResponse &lt;/strong&gt; &lt;br /&gt;Specifies if the control will send an email response to the submitter upon successful submission of the Form. Only relevant if ResponseEmailFieldAlias and FormFromEmailAddress settings are set and the user has specified an email address in the field specified in the ResponseEmailFieldAlias.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ResponseSubject &lt;/strong&gt; &lt;br /&gt;Specifies the Subject for the email response to the submitter. This field is Dictionary and Template enabled. Only relevant if the SendEmailResponse setting is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ResponseMessage &lt;/strong&gt; &lt;br /&gt;Specifies the Message for the email response to the submitter. This field is Dictionary and Template enabled. Only relevant if the SendEmailResponse setting is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ResponseCopyTo &lt;/strong&gt; &lt;br /&gt;Specifies the Email Address to which a copy of the Response is sent to. This field is Dictionary enabled. Only relevant if the SendEmailResponse setting is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ResponseEmailFieldAlias &lt;/strong&gt; &lt;br /&gt;Specifies the Document Type Property alias that the submitter will use to enter their email address. Only relevant if the SendEmailResponse is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;EmailForm &lt;/strong&gt; &lt;br /&gt;Specifies if the control will send the results of the Form upon successful submission. Only relevant if the FormToEmailAddress and FormFromEmailAddress settings are specified.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;FormToEmailAddress &lt;/strong&gt; &lt;br /&gt;Specifies the Email Address to which the Form Message will be sent. This field is Dictionary enabled. Only relevant if the EmailForm setting is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;FormFromEmailAddress &lt;/strong&gt; &lt;br /&gt;Specifies the Email Address from which the Form Message and Response Message will be sent. This field is Dictionary enabled.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;FormSubject &lt;br /&gt;&lt;/strong&gt;Specifies the subject of the email message to be sent to the form recipient specified in the FormToEmailAddress. This field is Dictionary and Template enabled. Only relevant if the EmailForm setting is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;FormMessage &lt;/strong&gt; &lt;br /&gt;Specifies a custom message structure of the email to be sent to the form recipients specified in the FormToEmailAddress. This field is Dictionary and Template enabled. Only relevant if the EmailForm setting is set to True.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;DictRequired &lt;/strong&gt; &lt;br /&gt;Specifies the Dictionary key for Required item text. Field Name place holder is specified with “{0}”. Field Names are Dictionary Enabled in the Document Type Property by using a Dictionary key with a leading “#”. See Validation Error Messages below.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;DictInvalid &lt;/strong&gt; &lt;br /&gt;Specifies the Dictionary key for Invalid item text. Field Name place holder is specified with “{0}”. Field Names are Dictionary Enabled in the Document Type Property by using a Dictionary key with a leading “#”. See Validation Error Messages below.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;UseAjax &lt;/strong&gt; &lt;br /&gt;Specifies if the control is to use AJAX style transfers where the form does not create complete page reloads. This feature is reliant upon ASP.NET Ajax capabilities and JavaScript. If the form disables the client script manager, the form will render in standard mode.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;DefaultValueNode &lt;/strong&gt; &lt;br /&gt;Specifies the node from which the default values are pulled. Nodes do not have to be of the same Document Type, however, the Property Alias must be the same.&lt;/p&gt; &lt;h2&gt;How Do I Actually Use Doc2Form?&lt;/h2&gt; &lt;p&gt;Now I don’t consider myself dumb, but… I have to admit, recently I have just got so used to Googling a package or application and watching a screencast or reading a step by step – finding none of these for Doc2Form threw me, and I found myself feeling a little frustrated (Funny how we just expect to be given things on a platter in this day and age isn’t it!).&lt;/p&gt; &lt;p&gt;So after some forum reading, and trial and error I thought I would create my first simple contact form with doc2form and &amp;gt;TRY&amp;lt; to create an easy first look/newbies guide to using the package (Notice the emphasis on try).&lt;/p&gt; &lt;p&gt;So I have started with a blank Umbraco install, and just added Warrens ‘Creative Website Starter Kit’ and then downloaded Doc2Form from the link above and installed it.&amp;#160; I know its installed properly as if I go to my developer section, under Macro’s I can see the 4 doc2form Macros as shown in the image below.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-1.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-1&quot; border=&quot;0&quot; alt=&quot;step-1&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-1_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Now I have doc2form installed, I need to create a docType with properties I choose that doc2Form will use.&amp;#160; So I’ll create a docType called ‘My Doc2Form Test’ and a matching template … Creative name hey ;)&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-2.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-2&quot; border=&quot;0&quot; alt=&quot;step-2&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-2_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now I have my ‘My Doc2Form Test’ docType saved, I’ll create a new tab called ‘contact’ and save it as I’ll be passing the tab along with the properties I create in it to doc2Form.&amp;#160; &lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-3.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-3&quot; border=&quot;0&quot; alt=&quot;step-3&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-3_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now I’ll add my basic properties shown in the image below, and I’ll make them all MANDATORY as its a form I want people to fill out all fields and I want to see how doc2form handles it.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-4.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-4&quot; border=&quot;0&quot; alt=&quot;step-4&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-4_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Once done, save the docType and jump over to the home docType (Which is part of Warrens CWS) and make sure your new docType is allowed as a child node&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-4a.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-4a&quot; border=&quot;0&quot; alt=&quot;step-4a&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-4a_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;At this point I’ll say what I’m doing is not ideal and just doing it to save time for this little walk through, as further down you’ll see I create my contact form replies (The nodes that doc2form creates) directly under my home node – Which is stupid, as in a real world scenario I’d want to maybe group them under the contact page?&amp;#160; Or somewhere useful where you could loop through and display them.. &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Now lets open up out template that was generated when I created my docType, and put in the CWS placeholders and mark on the page where I want doc2form to do its magic.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-5.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-5&quot; border=&quot;0&quot; alt=&quot;step-5&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-5_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;If I now click the Macro button and scroll down I can see the 4 macros doc2form adds in, I only played with ‘complete’ as I’m curious and wanted to see what all the options were – So select ‘Doc2Form – Complete’ from the list of Macros and click ok&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-6.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-6&quot; border=&quot;0&quot; alt=&quot;step-6&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-6_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;As you’ll see there ARE LOADS of options and fields and checkboxes… If I’m honest, at this moment in time I don’t know what they all do – But its great seeing all the stuff you have to play with in the coming few weeks .. lol .. ;)&amp;#160;&amp;#160; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;For now just select our docType ‘My Doc2Form Test’ from the first drop down and click on ok – This will add the Macro code to your template.&amp;#160; There are a couple of settings we need to change and I have added my macro code below.&amp;#160; I have bolded the only ones I have changed, basically ChooseWhereToStore is the ID of the home page – As I mentioned for times sake, we’ll just save everything under the home page.&amp;#160; Everything else should make sense (Setting AJAX to 1 instead of 0 just means use AJAX for the postback).&lt;/p&gt; &lt;p&gt;You could just as easily set the below data in the big form, but this is easier for me to show you in this tutorial – I actually DID use the form to set the values.&lt;/p&gt; &lt;p&gt;&amp;lt;umbraco:Macro DocumentType=&quot;1108&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Template=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; TabName=&quot;contact&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; PageTabs=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; HideTabNames=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;ChooseWhereToStore=&quot;1080&quot;&lt;/strong&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; EditMode=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ShowTitle=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; TitleName=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SaveMemberAlias=&quot;, &quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ShowDescriptions=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;SubmitButtonText=&quot;Send Message&quot;&lt;/strong&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; PreviousButtonText=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; NextButtonText=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; RequiredText=&quot;&quot; &lt;br /&gt;&amp;#160; &lt;strong&gt;&amp;#160; TextOnSubmit=&quot;Thank You, we will respond as soon as possible&quot;&lt;/strong&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; PublishOnSubmit=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; RefreshToParent=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; RedirectToNode=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; PublishWithUserId=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;StorePropertiesInCookies=&quot;bodyText, myName, myPhone&quot;&lt;/strong&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SendEmailResponse=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ResponseSubject=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ResponseMessage=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ResponseEmailFieldAlias=&quot;, &quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ResponseCopyTo=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; EmailForm=&quot;0&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FormSubject=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FormMessage=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FormToEmailAddress=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FormFromEmailAddress=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;UseAjax=&quot;1&quot;&lt;/strong&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DefaultValueNode=&quot;&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Alias=&quot;Doc2FormComplete&quot; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; runat=&quot;server&quot;&amp;gt; &lt;br /&gt;&amp;lt;/umbraco:Macro&amp;gt;&amp;#160; &lt;/p&gt; &lt;p&gt;Hopefully your macro looks like the above now, so all that's left is to save the template.&amp;#160; Once saved we need to go and create our website page that generates the form – So go to the content section, right click on the home node and create a new page using our docType (As show below)&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-7.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-7&quot; border=&quot;0&quot; alt=&quot;step-7&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-7_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I named mine ‘Please Work’ … Yes the normal thing most people tell themselves when playing with something new (You can name yours what ever you wish).&amp;#160; Once created just SAVE &amp;amp; PUBLISH the page so its live on the site, then browse to the actual site and see what the page looks like!&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-8.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-8&quot; border=&quot;0&quot; alt=&quot;step-8&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-8_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;You should end up with a form like the above (I hope)!&amp;#160; As you can see out 3 properties we set on the content tab are showing as they should, now we just need to check all our fields are mandatory as thats what we set in when we created the properties.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-9.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-9&quot; border=&quot;0&quot; alt=&quot;step-9&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-9_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Awesome :) … How cool is that, form validation just from setting a property to mandatory.&amp;#160; So nothing left to do apart from test the form, lets put in some dummy data.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-10.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-10&quot; border=&quot;0&quot; alt=&quot;step-10&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-10_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And click the send button&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-11.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-11&quot; border=&quot;0&quot; alt=&quot;step-11&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-11_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Voila!&amp;#160; Our message we set in the doc2form macro is now showing (TextOnSubmit=&quot;Thank You, we will respond as soon as possible&quot;) – And now all that’s left to do is check our message has appeared somewhere under the home page node as that's what we also set in the macro (ChooseWhereToStore=&quot;1080&quot;)&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-12.png&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;step-12&quot; border=&quot;0&quot; alt=&quot;step-12&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=step-12_thumb.png&quot; width=&quot;448&quot; height=&quot;282&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Well would you believe it!! There we have a freshly created, unpublished (Because we didn’t tell it to publish) node with my data I entered – Pretty cool huh?!&lt;/p&gt; &lt;p&gt;Now I literally have never used doc2form before today and actually wrote this / took the screen shots as I did it, so if I can use it anyone can.&amp;#160; But what's most exciting is all the other setting and ‘stuff’ it does, and now I have some groundwork done I’m going to play with the other setting and see what it does!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Obviously I’m jumping on the bandwagon a bit late, especially with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org/products/umbraco-forms&quot;&gt;Umbraco Forms&lt;/a&gt; coming out and I suspect will be super snazzy/easy to use – But for newbies starting out, and before you &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org/products/umbraco-pro&quot;&gt;buy your pro license&lt;/a&gt; this ‘should’ help you along a bit.&lt;/p&gt; &lt;p&gt;Any seasoned Umbracians please feel free to pick me up if I have said anything incorrect, or show me/us cool implantations of using doc2form&lt;/p&gt; &lt;p&gt;Pease out, thank you please… :) &lt;/p&gt;</description>
         <author>leen3o</author>
         <guid isPermaLink="false">http://www.blogfodder.co.uk/post.aspx?id=5b6128a6-adae-40cd-a88a-3cd2aa1314fd</guid>
         <pubDate>Fri, 16 Oct 2009 09:13:33 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Another day at the office</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/PWeJDBCstJE/28481</link>
         <description>&lt;p&gt;I love getting feedback, but why bother spending time getting in
touch when being anonymous. It's like the person sending this
almost knew that (s)he was asking a little too much ;-)&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
&lt;img
 style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;&quot; title=&quot;Picture 49&quot; border=&quot;0&quot; alt=&quot;Picture 49&quot;
 width=&quot;482&quot; height=&quot;172&quot;/&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The irony however was that the person &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://twitter.com/umbraco/status/4780135105&quot;&gt;missed the opportunity of getting free umbraco.tv forever with just twenty
minutes&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;If you'd like to get some free &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbraco.tv&quot;&gt;umbraco.tv&lt;/a&gt; content, there's always the
videos on &lt;a rel=&quot;nofollow&quot;
&gt;
Document Type basics&lt;/a&gt; or &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbraco.tv/documentation/videos/for-developers/foundation/using-net-user-controls&quot;&gt;
User Control basics&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=PWeJDBCstJE:6XotHb3M268:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=PWeJDBCstJE:6XotHb3M268:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=PWeJDBCstJE:6XotHb3M268:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/PWeJDBCstJE&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Chris Houston</author>
         <guid isPermaLink="false">http://umbraco.org/28481</guid>
         <pubDate>Fri, 16 Oct 2009 07:41:27 -0700</pubDate>
      </item>
      <item>
         <title>FamFamFam Icon Package in Umbraco!</title>
         <link>http://farmcode.org/post/2009/10/13/FamFamFam-Icon-Package-in-Umbraco!.aspx</link>
         <description>&lt;p&gt;The FARM has just released an exciting icon package for Umbraco. FamFamFam icons have to be one of the most (if not the most) popular icon package on the net. So big thanks to Mark James for his great &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.famfamfam.com/lab/icons/silk/&quot;&gt;icons&lt;/a&gt;!!! And now, you can have them all in your content tree :)&lt;/p&gt; &lt;p&gt;It’s amazing how happy your clients can be with some really nice icons!&lt;/p&gt; &lt;p&gt;You can download the package from our.umbraco.org:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/famfamfam-icons&quot;&gt;our.umbraco.org package&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://farmcode.org/image.axd?picture=WindowsLiveWriter/FamFamFamIconPackageinUmbraco/4E91A504/image.png&quot;&gt;&lt;img style=&quot;border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://farmcode.org/image.axd?picture=WindowsLiveWriter/FamFamFamIconPackageinUmbraco/31F988EC/image_thumb.png&quot; width=&quot;600&quot; height=&quot;565&quot;/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;&lt;em&gt;FamFamFam icons are licensed under the Create Commons Attribution 2.5 license.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;This version is not using Css sprites so you may notice performance issues if you have your browser cache disabled, but you'll have loads of cool icons to choose from. The next version will use CSS sprites so stay tuned.&lt;/em&gt;&lt;/p&gt;</description>
         <author>tech.nospam@nospam.thefarmdigital.com.au (ShannonDeminick)</author>
         <guid isPermaLink="false">http://farmcode.org/post.aspx?id=ac245686-2615-411b-9949-73db0d454a92</guid>
         <pubDate>Mon, 12 Oct 2009 15:58:00 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Simple Loop Images In Media Folder</title>
         <link>http://www.blogfodder.co.uk/post/Simple-Loop-Images-In-Media-Folder.aspx</link>
         <description>&lt;p&gt;This simple package creates a macro which allows you to loop through all Images in a media folder. You just pass in a media node ID and it finds all ‘Images’ and outputs them in an unordered list. You also have the option of adding a class or ID to the &lt;strong&gt;&amp;lt;UL&amp;gt;&lt;/strong&gt; so you can easily use it with the JQuery plugins like JCarousel etc… &lt;/p&gt; &lt;p&gt;&lt;img style=&quot;border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;&quot; title=&quot;loop-media-images&quot; border=&quot;0&quot; alt=&quot;loop-media-images&quot; src=&quot;http://www.blogfodder.co.uk/image.axd?picture=loop-media-images.jpg&quot; width=&quot;348&quot; height=&quot;404&quot;/&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Options:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;MediaFolderID – The ID of the meda folder to find the images &lt;/li&gt; &lt;li&gt;ListClass – Optional class to add to the list &lt;/li&gt; &lt;li&gt;ListID – Optional ID to add to the list &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/downloads/LoopImagesInMediaFolder_1.zip&quot;&gt;Download Here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Project On Umbraco: &lt;a rel=&quot;nofollow&quot; title=&quot;http://our.umbraco.org/projects/loop-images-in-media-folder&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/loop-images-in-media-folder&quot;&gt;http://our.umbraco.org/projects/loop-images-in-media-folder&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Its packaged with FULL source code and not compiled so you can see what’s going on and edit what you need.&lt;/p&gt;</description>
         <author>leen3o</author>
         <guid isPermaLink="false">http://www.blogfodder.co.uk/post.aspx?id=f3e121ec-32d3-401c-ae72-7ce5f4b0df8c</guid>
         <pubDate>Mon, 12 Oct 2009 12:16:20 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>An update with the multiple environment Umbraco data sync</title>
         <link>http://farmcode.org/post/2009/10/09/An-update-with-the-multiple-environment-Umbraco-data-sync.aspx</link>
         <description>&lt;p&gt;A month ago I wrote a post on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.farmcode.org/post/2009/09/09/How-to-sync-data-across-multiple-Umbraco-environments.aspx&quot;&gt;how to sync data across multiple Umbraco environments&lt;/a&gt;, and I thought that I would do an update post on how it is tracking.&lt;/p&gt; &lt;p&gt;Well the short answer is that it is going really quite well. We’ve quite successfully migrated content from the clients content entry environment into their production environment with next to no issues.&lt;/p&gt; &lt;p&gt;The only &lt;em&gt;problem&lt;/em&gt; we’ve had is when the same document has been edited on both environments. When this happens you need to work out which is the correct version to maintain, and if it’s published you need to ensure that you’re using the correct version in the cmsContentXml table. &lt;/p&gt; &lt;p&gt;Only thing that needs to be kept in mind is that once the data is merged you need to ensure that the primary key seed is still higher on the content entry environment so that when you next do the synchronization the ID’s don’t clash between environments.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;The only other thing that you need to be mindful of is Media, you will need to ensure there is something synchronizing that, either a tool such as SyncToy or you manually manage the Media folder synchronization.&lt;/p&gt;</description>
         <author>tech.nospam@nospam.thefarmdigital.com.au (AaronPowell)</author>
         <guid isPermaLink="false">http://farmcode.org/post.aspx?id=b5b6cae9-b99a-4069-aca8-441f34b4b3cb</guid>
         <pubDate>Thu, 08 Oct 2009 22:08:26 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Awesome guide for Umbraco newbies</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/Uy-ccFcgCsU/28379</link>
         <description>&lt;p&gt;I love when people act. It's not the easiest thing in the world.
In fact it seems like the current trend these days is not even
bother to tell someone that you're unsatisfied but rather just
tweet &quot;xxxxx sucks bigtime&quot;. Which is kind of odd as - I like to
think that - most people don't do things to annoy you. So when
something isn't right, there's a big chance that being constructive
and friendly will get you much further than an angry tweet.&lt;/p&gt; &lt;p&gt;So when I opened up my laptop this evening and saw a ton of
retweets of &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://twitter.com/leemessenger/status/4637466888&quot;&gt;Lee
Messenger's announcement&lt;/a&gt; about of &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/post/A-Complete-Newbies-Guide-To-Umbraco-CMS.aspx&quot;&gt;
&lt;strong&gt;a newbie guide to Umbraco&lt;/strong&gt;&lt;/a&gt; I got really
excited. When I followed the link and read his work it made me
really happy. What a great resource and what a wonderful,
constructive way of helping others. I'm sure that already by the
time you read this, the effort made by Lee has helped people save
more hours than it took collecting and sharing the information.
Even though it's a lot.&lt;/p&gt; &lt;p&gt;Imagine what could happen if we all took the time &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.blogfodder.co.uk/post/A-Complete-Newbies-Guide-To-Umbraco-CMS.aspx&quot;&gt;
to follow Lees example&lt;/a&gt;. If we wrote the tutorial we missed a
couple of months back, if we &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.com/WorkItem/Create.aspx&quot;&gt;submitted a
great bug report&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects&quot;&gt;shared a cool project&lt;/a&gt; or
took the time to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/forum&quot;&gt;help others
in the forums&lt;/a&gt; the way we got help last year. Of course we'd
disappoint the number of people who still like to say that Umbraco
has a steep learning curve and that there's no documentation - even
more than the disappointment they'd feel if they read Lees
post.&lt;/p&gt; &lt;p&gt;But that's a tradeoff I can live with. Let's get to work - &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/people&quot;&gt;there's karma waiting&lt;/a&gt;!&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=Uy-ccFcgCsU:FJWQPvGWN4A:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=Uy-ccFcgCsU:FJWQPvGWN4A:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=Uy-ccFcgCsU:FJWQPvGWN4A:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/Uy-ccFcgCsU&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Chris Houston</author>
         <guid isPermaLink="false">http://umbraco.org/28379</guid>
         <pubDate>Tue, 06 Oct 2009 09:18:17 -0700</pubDate>
      </item>
      <item>
         <title>2 Click ASP.NET Web Application Deployment with MSBuild</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/4twvj3_ht5E/2-click-aspnet-web-application-deployment-with-msbuild.aspx</link>
         <description>&lt;p&gt;I've just put a new post up on the FarmCode.Org blog on how to use &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.farmcode.org/post/2009/10/02/2-Click-ASPNET-Web-Application-Deployment-with-MSBuild.aspx&quot;&gt;MSBuild for 2 click deployments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a rule I try not to blog just to link somewhere else, but I really don't see the point in migrating all the content across to here as well :P.&lt;/p&gt;
&lt;p&gt;I strongly recommend you check it out if you're trying to deal with automatic deployments.&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Fri, 02 Oct 2009 12:17:39 -0700</pubDate>
      </item>
      <item>
         <title>2 Click ASP.NET Web Application Deployment with MSBuild</title>
         <link>http://farmcode.org/post/2009/10/02/2-Click-ASPNET-Web-Application-Deployment-with-MSBuild.aspx</link>
         <description>&lt;p&gt;A couple of months ago Shannon wrote a post on how we do &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.farmcode.org/post/2009/07/10/2-Click-ASPNet-Web-Application-Deployment.aspx&quot;&gt;2 Click Deployments&lt;/a&gt; at The Farm (if you haven’t read this post I suggest you read it first as I make the assumption it’s been read and skip over a few sections that it covers). I’ve been working with him to try and improve our process of deployment, and one of those tasks has been moving away from using NAnt as the build runner to using MSBuild.&lt;/p&gt; &lt;p&gt;Why the shift? Well MSBuild has actually come a long way recently and despite common belief it’s not just for building .NET applications. In fact it can be used the same way that NAnt can be used, to execute arbitrary operations. &lt;br /&gt;As mentioned in the original post we’ve used an internal tool for modifying the web.config (and other configuration files) but it had a bit a limitation as it meant that the files were always full of settings for all environments. It also wasn’t designed to update a single property of an XML node, you’d need to replicate the whole XML structure, even if it was just 1 attribute changing.&lt;/p&gt; &lt;p&gt;So I suggested that we migrate to a XSLT based config management, which is what I’d used previously. A former colleague of mine has a good post on how to set that up, it can be found &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://adeneys.wordpress.com/2009/04/17/multi-environment-config/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Moving to MSBuild also brought in another advantage, it would simplify our deployment process. Currently we’re using CruiseControl.NET to execute a NAnt script which in turn executed MSBuild.&lt;/p&gt; &lt;p&gt;Another goal was to allow us to deploy from the branch in source control, rather than from the trunk, this way you can deploy different branches if you want to test different functionality based on a branch without overriding the trunk. So we’ve updated our source control structure to look like this:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;trunk &lt;/li&gt; &lt;li&gt;branch &lt;ul&gt; &lt;li&gt;v1.1 &lt;/li&gt; &lt;li&gt;… &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;strong&gt;build&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The new addition is the &lt;strong&gt;build&lt;/strong&gt; folder, this folder will generally only hold a single file, and that’s the master build information, which we’ll call &lt;strong&gt;cc.build&lt;/strong&gt;. This build file is the one that CruiseControl.NET will look for and check out. It then contains the instructions to which branch to check out, and then handle the rest of the execution of the build. A sample looks like this:&lt;/p&gt; &lt;pre&gt;&amp;lt;Project ToolsVersion=&quot;3.5&quot; DefaultTargets=&quot;CheckoutAndBuild&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&amp;gt; &amp;lt;Import Project=&quot;$(MSBuildExtensionsPath)&amp;#92;MSBuildCommunityTasks&amp;#92;MSBuild.Community.Tasks.Targets&quot;/&amp;gt; &amp;lt;PropertyGroup&amp;gt; &amp;lt;BranchVersion&amp;gt;v1.1_net&amp;lt;/BranchVersion&amp;gt; &amp;lt;BuildType&amp;gt;_net&amp;lt;/BuildType&amp;gt; &amp;lt;BranchFolder&amp;gt;$(BaseFolder)&amp;#92;$(BuildType)&amp;lt;/BranchFolder&amp;gt; &amp;lt;RepoPath&amp;gt;file:///&amp;#92;svn/Client/branches/$(BranchVersion)&amp;lt;/RepoPath&amp;gt; &amp;lt;/PropertyGroup&amp;gt; &amp;lt;Target Name=&quot;CheckoutAndBuild&quot;&amp;gt; &amp;lt;RemoveDir Directories=&quot;$(BranchFolder)&quot; /&amp;gt; &amp;lt;SvnCheckout RepositoryPath=&quot;$(RepoPath)&quot; LocalPath=&quot;$(BranchFolder)&quot; ToolPath=&quot;C:&amp;#92;Program Files&amp;#92;CollabNet Subversion&quot;&amp;gt; &amp;lt;Output TaskParameter=&quot;Revision&quot; PropertyName=&quot;Revision&quot; /&amp;gt; &amp;lt;/SvnCheckout&amp;gt; &amp;lt;Message Text=&quot;Revision: $(Revision)&quot;/&amp;gt; &amp;lt;Time Format=&quot;yyyyMMddtt&quot;&amp;gt; &amp;lt;Output TaskParameter=&quot;FormattedTime&quot; PropertyName=&quot;buildDate&quot; /&amp;gt; &amp;lt;/Time&amp;gt; &amp;lt;MSBuild Projects=&quot;$(BranchFolder)&amp;#92;cc.msbuild&quot; Properties=&quot;CCNetWorkingDirectory=$(BaseFolder);BuildDate=$(BuildDate);DeployType=Dev;DeployLocation=$(BaseFolder)..&amp;#92;Deployment&amp;#92;Dev;BuildConfiguration=Debug;ShowMessages=True;IncludeSymbols=True&quot; /&amp;gt; &amp;lt;/Target&amp;gt; &amp;lt;/Project&amp;gt;&lt;/pre&gt; &lt;p&gt;So lets have a look at the break down of this file. First off, we’re using the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://msbuildtasks.tigris.org/&quot;&gt;MSBuild Community Tasks&lt;/a&gt; for tasks such as the SVN checkout, and a few other aspects which we’ll cover later. &lt;br /&gt;&lt;/p&gt; &lt;p&gt;When we call this MSBuild file from CruiseControl.NET and pass in a parameter, &lt;strong&gt;BaseFolder&lt;/strong&gt;, which is the Working folder (see the Folder Structure section of the original post). &lt;br /&gt;There’s some parameters combined so we get a path to where we’ll be checking out the branch, etc.&lt;/p&gt; &lt;p&gt;First thing is to remove any existing checkout folder, and then have SVN checkout the latest copy of the branch. &lt;br /&gt;As Shannon mentioned in the original post we timestamp each sip package, so for this we’re using the Community Task date formatter to generate our timestamp.&lt;/p&gt; &lt;p&gt;Then it gets a bit tricky, because this file is a dumb file and doesn’t know what’s going to be done by the branch deployment file so we need to have a way in which we can actually do a build. This is done by using the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/en-us/library/z7f65y0d.aspx&quot;&gt;MSBuild task&lt;/a&gt; which allows you to execute any specified MSBuild file(s). This is done by passing the file to execute into the Projects attribute. Since we’re going to execute the one within the branch we tell it to look there. &lt;br /&gt;Then it’s just a matter of passing any properties you require into the MSBuild file, here we’ve got a bunch of different parameters which the target file can consume.&lt;/p&gt; &lt;p&gt;The MSBuild task is then replicated as many times for each different environment/ location which you want to build for.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Each branch maintains its own msbuild file, which is also called &lt;strong&gt;cc.msbuild&lt;/strong&gt; so that we can keep the naming consistent across all locations. This file is the one which is responsible for:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Compiling the project &lt;/li&gt; &lt;li&gt;Modifying the config files &lt;/li&gt; &lt;li&gt;Zipping the release &lt;/li&gt;
&lt;/ul&gt; &lt;p&gt;But this can easily be expanded upon, depending how the branch needs to be handled, there’s nothing that says it couldn’t also do the copying to the appropriate server, etc. Lets take a look inside this file.&lt;/p&gt; &lt;pre&gt;&amp;lt;Project ToolsVersion=&quot;3.5&quot; DefaultTargets=&quot;ZipFiles&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&amp;gt; &amp;lt;Import Project=&quot;$(MSBuildExtensionsPath)&amp;#92;MSBuildCommunityTasks&amp;#92;MSBuild.Community.Tasks.Targets&quot;/&amp;gt; &amp;lt;PropertyGroup&amp;gt; &amp;lt;LocationWorkingWeb&amp;gt;$(CCNetWorkingDirectory)&amp;#92;_net&amp;#92;Client.Web&amp;lt;/LocationWorkingWeb&amp;gt; &amp;lt;ProjectWeb&amp;gt;$(LocationWorkingWeb)&amp;#92;Client.Web.csproj&amp;lt;/ProjectWeb&amp;gt; &amp;lt;BuildFolder&amp;gt;$(DeployLocation)&amp;#92;$(BuildDate)&amp;#92;&amp;lt;/BuildFolder&amp;gt; &amp;lt;/PropertyGroup&amp;gt; &amp;lt;Target Name=&quot;ZipFiles&quot; DependsOnTargets=&quot;FormatFiles&quot;&amp;gt; &amp;lt;ItemGroup&amp;gt; &amp;lt;ZipFiles Include=&quot;$(BuildFolder)**&amp;#92;*.*&quot; Condition=&quot;$(IncludeSymbols) == 'True'&quot; /&amp;gt; &amp;lt;ZipFiles Include=&quot;$(BuildFolder)**&amp;#92;*.*&quot; Exclude=&quot;$(BuildFolder)**&amp;#92;*.pdb&quot; Condition=&quot;$(IncludeSymbols) == 'False'&quot; /&amp;gt; &amp;lt;/ItemGroup&amp;gt; &amp;lt;Zip Files=&quot;@(ZipFiles)&quot; ZipFileName=&quot;$(DeployLocation)&amp;#92;$(BuildDate).zip&quot; WorkingDirectory=&quot;$(BuildFolder)&quot;/&amp;gt; &amp;lt;RemoveDir Directories=&quot;$(BuildFolder)&quot; /&amp;gt; &amp;lt;/Target&amp;gt; &amp;lt;Target Name=&quot;FormatFiles&quot; DependsOnTargets=&quot;BuildWebProject&quot;&amp;gt; &amp;lt;MSBuild Projects=&quot;transformers.msbuild&quot; Properties=&quot;XslFile=$(CCNetWorkingDirectory)&amp;#92;_net&amp;#92;CruiseControl&amp;#92;Web.config.xslt;OutputFile=$(BuildFolder)Web.config;InputFile=$(LocationWorkingWeb)&amp;#92;Web.config;Environment=$(DeployType)&quot; /&amp;gt; &amp;lt;/Target&amp;gt; &amp;lt;Target Name=&quot;BuildWebProject&quot;&amp;gt; &amp;lt;MSBuild Projects=&quot;$(ProjectWeb)&quot; Properties=&quot;Configuration=$(BuildConfiguration);OutDir=$(BuildFolder)bin&amp;#92;;WebProjectOutputDir=$(BuildFolder)&quot; Targets=&quot;Clean;Build;ResolveReferences;_CopyWebApplication&quot;/&amp;gt; &amp;lt;/Target&amp;gt;
&amp;lt;/Project&amp;gt;&lt;/pre&gt; &lt;p&gt;This file, again uses the MSBuild Community Tasks, but its also a whole lot smarter about what’s happening for this particular build. I’ve specified that the &lt;strong&gt;DefaultTargets&lt;/strong&gt; of the file is the &lt;em&gt;ZipFiles&lt;/em&gt; which is really the final task which I want to execute. &lt;br /&gt;One really nice thing about MSBuild is that you can specify a &lt;strong&gt;DependsOnTargets&lt;/strong&gt; attribute for a target, which states that the particular target(s) must have executed &lt;em&gt;before&lt;/em&gt; the called one will execute. So by looking at how the dependency is configured the project will have been compiled and the files formatted will both have been done. Makes it so much simpler to execute something, rather than having a ‘runner’ target which is just responsible for calling a bunch of targets in order we can just have them done in order of dependency.&lt;/p&gt; &lt;p&gt;So we’ve got a &lt;strong&gt;BuildWebProject&lt;/strong&gt; target which will again call an external MSBuild file, in this case our &lt;strong&gt;csproj&lt;/strong&gt; file, passing in some of the information which was given to us from the ‘master’ file, in a manner in which Visual Studio itself would have done.&lt;/p&gt; &lt;p&gt;Next we format the files. This goes off to an external MSBuild file, so we can use the same operations for every single file we want to format. The contents of &lt;strong&gt;transformers.msbuild&lt;/strong&gt; is as follows:&lt;/p&gt; &lt;pre&gt;&amp;lt;!-- ROBOTS IN DISGUISE --&amp;gt;
&amp;lt;Project ToolsVersion=&quot;3.5&quot; DefaultTargets=&quot;Xslt&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&amp;gt; &amp;lt;Import Project=&quot;$(MSBuildExtensionsPath)&amp;#92;MSBuildCommunityTasks&amp;#92;MSBuild.Community.Tasks.Targets&quot;/&amp;gt; &amp;lt;ItemGroup&amp;gt; &amp;lt;XslFileWithParams Include=&quot;$(XslFile)&quot;&amp;gt; &amp;lt;environment&amp;gt;$(Environment)&amp;lt;/environment&amp;gt; &amp;lt;/XslFileWithParams&amp;gt; &amp;lt;/ItemGroup&amp;gt; &amp;lt;Target Name=&quot;Xslt&quot;&amp;gt; &amp;lt;Xslt RootTag=&quot;&quot; Inputs=&quot;$(InputFile)&quot; Output=&quot;$(OutputFile)&quot; Xsl=&quot;@(XslFileWithParams)&quot; /&amp;gt; &amp;lt;/Target&amp;gt;
&amp;lt;/Project&amp;gt;&lt;/pre&gt; &lt;p&gt;This is a basic task file which adds a parameter (named &lt;strong&gt;envrionments) &lt;/strong&gt;to our XSLT and then uses the MSBuild Community Tasks to do the transformation. &lt;br /&gt;&lt;em&gt;Note – this is a slight deviation from Alistair’s blog post, we don’t have a different XSLT per machine, we have a single XSLT which we use the parameter to determine what to do. This makes it easier to see all the options we want to change per environment.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Lastly the dependencies hierarchy throws us back to the ZipFiles target, where we gather all the files together that we want (and there’s an option to exclude the &lt;strong&gt;pdb&lt;/strong&gt; files, after all &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.aaron-powell.com/blog/december-2008/pdb-!=-product-deployable-bits.aspx&quot;&gt;PDB != Product Deployable Bits&lt;/a&gt; ;) ), call the Zip task (make sure you specify a working folder otherwise you’ll end up with a crazy hierarchy in the Zip!) and then we delete the folder which we built to.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;MSBuild is a good tool which can be used for doing operations other than just compiling a .NET project, as you can see here we’re using it to pull files down out of SVN or transform a file via XSLT. This doesn’t have anything to do with compilation, or .NET for that matter.&lt;/p&gt; &lt;p&gt;It make take a bit of work to get set up, there was quit a bit of frustration vented during this process but now that it’s working there’s no looking back.&lt;/p&gt;</description>
         <author>tech.nospam@nospam.thefarmdigital.com.au (AaronPowell)</author>
         <guid isPermaLink="false">http://farmcode.org/post.aspx?id=572fbdb5-0467-4b01-bd6e-a50387087bc7</guid>
         <pubDate>Thu, 01 Oct 2009 18:12:54 -0700</pubDate>
      </item>
      <item>
         <title>Repeatable Custom Content v2 Beta Released</title>
         <link>http://umbraco.masoodafzal.com/post/2009/09/29/Repeatable-Custom-Content-v2-Beta-Released.aspx</link>
         <description>&lt;h2&gt;Repeatable Custom Content Datatype v2 Beta Released&lt;/h2&gt;
&lt;p&gt;I have uploaded a new Beta release on our umbraco, you can get it here: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/repeatable-custom-content&quot;&gt;http://our.umbraco.org/projects/repeatable-custom-content&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;XSLT samle&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/file.axd?file=2009%2f9%2fRepeatableCustomContents+v2.xslt&quot;&gt;RepeatableCustomContents v2.xslt (1.97 kb)&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Repeatable Custom Content v2 Beta - Umbraco Package&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/file.axd?file=2009%2f9%2fRepeatable_Custom_Content_v2_2.0.zip&quot;&gt;Repeatable_Custom_Content_v2_2.0.zip (18.10 kb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/file.axd?file=2009%2f10%2fRepeatable_Custom_Content_v2_Fixed_2.0.zip&quot;&gt;Repeatable_Custom_Content_v2_Fixed_2.0.zip (18.21 kb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Configurable number of properties, each property contains following options: &lt;/strong&gt;Name, Alias, Type, Mandatory, Validation, Description, &lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Maximum Repeatable Items&lt;/strong&gt; (0 for no limit)&lt;strong&gt;&lt;br /&gt;- Mandatory&lt;/strong&gt; (Yes/No)&lt;strong&gt;&lt;br /&gt;- Validation&lt;/strong&gt; (Email, Url, Integer, Double)&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Supports most of umbraco datatypes including&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Checkbox list&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dropdown list&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Radiobutton List&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date/Time&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Content Picker&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Media Picker&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Media Picker with Preview&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Textbox&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Textbox multiple&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Simple Editor&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Repeatable Custom Content Richtext Editor&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; True/False&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tags&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Color Picker&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;- Requirements&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .NET 3.5 (web extensions)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Xml/Data:&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;br /&gt;&amp;lt;items&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data alias=&quot;alias1&quot;&amp;gt;value 1&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data alias=&quot;alias2&quot;&amp;gt;value 2&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data alias=&quot;alias1&quot;&amp;gt;value 3&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data alias=&quot;alias2&quot;&amp;gt;value 4&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data alias=&quot;alias1&quot;&amp;gt;value 5&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data alias=&quot;alias2&quot;&amp;gt;value 6&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data alias=&quot;alias1&quot;&amp;gt;value 7&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;data alias=&quot;alias2&quot;&amp;gt;value 8&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;&amp;lt;/items&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://umbraco.masoodafzal.com/image.axd?picture=2009%2f9%2f2.+Contents+small.JPG&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://umbraco.masoodafzal.com/image.axd?picture=2009%2f9%2f3.+Content+Edit+small.JPG&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://umbraco.masoodafzal.com/image.axd?picture=2009%2f9%2f4.+xslt+small.JPG&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://umbraco.masoodafzal.com/image.axd?picture=2009%2f9%2f5.+data.JPG&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://umbraco.masoodafzal.com/image.axd?picture=2009%2f9%2f1.+Developer+small.JPG&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://umbraco.masoodafzal.com/image.axd?picture=2009%2f9%2f6.+config+small.JPG&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;</description>
         <author>Masood</author>
         <guid isPermaLink="false">http://umbraco.masoodafzal.com/post.aspx?id=9d3f168c-3dc2-4b52-8406-c865ab66ecae</guid>
         <pubDate>Tue, 29 Sep 2009 16:23:00 -0700</pubDate>
      </item>
      <item>
         <title>Easy File Protection in Umbraco</title>
         <link>http://www.rickybeard.com/blog/2009/9/29/easy-file-protection-in-umbraco.aspx</link>
         <description>&lt;p&gt;File protection is a common requirement when building Umbraco
applications (or any ASP.NET app for that matter). In fact &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.netaddicts.be/&quot; title=&quot;NetAddicts&quot;&gt;Dirk De
Grave&lt;/a&gt; is currently working on a project called &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/protected-media&quot;
 title=&quot;Protected Media Project&quot;&gt;Protected Media&lt;/a&gt; that could
eventually provide this functionality in a package.&lt;/p&gt; &lt;p&gt;While building &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.nceexam.com&quot;
 title=&quot;NCEExam.com&quot;&gt;NCEExam.com&lt;/a&gt;, I used a different approach to
solve this problem. While I am not sure this is the best way to
accomplish file protection, it is very flexible and requires
no&amp;nbsp;configuration&amp;nbsp;in IIS. If you have ever worked with
DotNetNuke (first off, I'm sorry) you may recognize this.&lt;/p&gt; &lt;p&gt;First, simply add the file extension .resources to the end of
any file you wish to protect. You can do this manually before
uploading the file, or create a custom upload datatype to handle
this for you. The .resources file extension is already mapped to
the .NET runtime in IIS and, unlike .aspx, it is never served to
the client.&lt;/p&gt; &lt;p&gt;Next, create a document type and add a generic property to
it&amp;nbsp;using the&amp;nbsp;Upload datatype. You can leave the template
empty. Now, use this document type to upload files anywhere in your
content section.&lt;/p&gt; &lt;p&gt;You will need a user control&amp;nbsp;to handle the file download. I
have the following method in my user control to handle this:&lt;/p&gt; &lt;pre&gt;
private void ServeFile(string FileName)
{ string strFileName = Server.MapPath(FileName); string strFileId = strFileName.ToString().Replace(&quot;.resources&quot;, &quot;&quot;); string strFileExtension = Path.GetExtension(strFileId); FileInfo fInfo = new FileInfo(strFileName); Response.AddHeader(&quot;Content-Length&quot;, fInfo.Length.ToString()); switch (strFileExtension) { case &quot;.pdf&quot;: Response.ContentType = &quot;application/pdf&quot;; break; case &quot;.zip&quot;: Response.ContentType = &quot;application/zip&quot;; break; } Response.AppendHeader(&quot;Content-Disposition&quot;, &quot;attachment; filename=&quot; + Path.GetFileName(strFileId)); Response.Clear(); Response.TransmitFile(strFileName); Response.Flush(); Response.End();
}
&lt;/pre&gt; &lt;p&gt;Gather the file url&amp;nbsp;from the generic property you created
earlier&amp;nbsp;and pass it&amp;nbsp;to the ServeFile method (FileName).
Next, strip off&amp;nbsp;the .resources extension. Then, just set the
content length and content type and transmit the file using
Response.TransmitFile. You could easily extend the switch statement
to handle any number of content types or even add a new generic
property to your document type&amp;nbsp;to store it.&lt;/p&gt; &lt;p&gt;Lastly, create a macro to serve this user control and slap it on
the empty template you created earlier. Then, simply use the
url&amp;nbsp;of the document in the Content section&amp;nbsp;(via Content
Picker or manually)&amp;nbsp;to serve the file. You could even add
protection to the&amp;nbsp;document for added security, but it is not
required.&lt;/p&gt; &lt;p&gt;One drawback to this method is that every file you upload will
have a document in the Content section. This is not a big deal, but
something worth noting.&lt;/p&gt;</description>
         <author>Ricky Beard</author>
         <guid isPermaLink="false">http://www.rickybeard.com/blog/2009/9/29/easy-file-protection-in-umbraco.aspx</guid>
         <pubDate>Tue, 29 Sep 2009 09:41:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>File protection is a common requirement when building Umbraco
applications (or any ASP.NET app for that matter). In fact <a rel="nofollow"
 target="_blank" href="http://www.netaddicts.be/" title="NetAddicts">Dirk De
Grave</a> is currently working on a project called <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects/protected-media"
 title="Protected Media Project">Protected Media</a> that could
eventually provide this functionality in a package.</p> <p>While building <a rel="nofollow" target="_blank" href="http://www.nceexam.com"
 title="NCEExam.com">NCEExam.com</a>, I used a different approach to
solve this problem. While I am not sure this is the best way to
accomplish file protection, it is very flexible and requires
no&nbsp;configuration&nbsp;in IIS. If you have ever worked with
DotNetNuke (first off, I'm sorry) you may recognize this.</p> <p>First, simply add the file extension .resources to the end of
any file you wish to protect. You can do this manually before
uploading the file, or create a custom upload datatype to handle
this for you. The .resources file extension is already mapped to
the .NET runtime in IIS and, unlike .aspx, it is never served to
the client.</p> <p>Next, create a document type and add a generic property to
it&nbsp;using the&nbsp;Upload datatype. You can leave the template
empty. Now, use this document type to upload files anywhere in your
content section.</p> <p>You will need a user control&nbsp;to handle the file download. I
have the following method in my user control to handle this:</p> <pre>
private void ServeFile(string FileName)
{ string strFileName = Server.MapPath(FileName); string strFileId = strFileName.ToString().Replace(".resources", ""); string strFileExtension = Path.GetExtension(strFileId); FileInfo fInfo = new FileInfo(strFileName); Response.AddHeader("Content-Length", fInfo.Length.ToString()); switch (strFileExtension) { case ".pdf": Response.ContentType = "application/pdf"; break; case ".zip": Response.ContentType = "application/zip"; break; } Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(strFileId)); Response.Clear(); Response.TransmitFile(strFileName); Response.Flush(); Response.End();
}
</pre> <p>Gather the file url&nbsp;from the generic property you created
earlier&nbsp;and pass it&nbsp;to the ServeFile method (FileName).
Next, strip off&nbsp;the .resources extension. Then, just set the
content length and content type and transmit the file using
Response.TransmitFile. You could easily extend the switch statement
to handle any number of content types or even add a new generic
property to your document type&nbsp;to store it.</p> <p>Lastly, create a macro to serve this user control and slap it on
the empty template you created earlier. Then, simply use the
url&nbsp;of the document in the Content section&nbsp;(via Content
Picker or manually)&nbsp;to serve the file. You could even add
protection to the&nbsp;document for added security, but it is not
required.</p> <p>One drawback to this method is that every file you upload will
have a document in the Content section. This is not a big deal, but
something worth noting.</p>]]></content:encoded>
      </item>
      <item>
         <title>Putting your ASP.NET Web Application in Maintenance Mode (using ISAPI_Rewrite)</title>
         <link>http://blog.leekelleher.com/2009/09/29/putting-your-asp-net-web-application-in-maintenance-mode-using-isapi_rewrite/</link>
         <description>Prompted by @slace&amp;#8217;s tweet: i wish there was a way to use app_offline but still view from certain ip&amp;#8217;s
I replied with a suggestion that we&amp;#8217;ve used in the past. Aaron said I should blog about it&amp;#8230; so here I am (again)!
A while ago we needed to do an Umbraco upgrade (from v3 to v4) on [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&amp;blog=2580820&amp;post=177&amp;subd=leekelleher&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://blog.leekelleher.com/?p=177</guid>
         <pubDate>Tue, 29 Sep 2009 06:22:14 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Prompted by <a rel="nofollow" target="_blank" href="http://twitter.com/slace/status/4466099083">@slace&#8217;s tweet</a>:</p>
<blockquote><p><a rel="nofollow" target="_blank" href="http://twitter.com/slace/"><img src="http://a1.twimg.com/profile_images/304684998/me_bigger.png" alt="Aaron Powell" width="32" height="32" align="absmiddle" border="0"/></a> i wish there was a way to use app_offline but still view from certain ip&#8217;s</p></blockquote>
<p>I <a rel="nofollow" target="_blank" href="http://twitter.com/leekelleher/status/4466197573">replied</a> with a suggestion that we&#8217;ve used in the past. <a rel="nofollow" target="_blank" href="http://twitter.com/slace/status/4466254905">Aaron said I should blog about it&#8230;</a> so here I am (again)!</p>
<p>A while ago we needed to do an Umbraco upgrade (from v3 to v4) on a production server &#8211; in my opinion it was a pretty major upgrade on a live site, we had done a couple of test upgrades on dev and staging, all was successful. But since there was various parts of the site that we need to regression test, I felt it best to take the entire site offline whilst we upgraded.</p>
<p>Usually creating an &#8220;<a rel="nofollow" target="_blank" href="http://weblogs.asp.net/scottgu/archive/2005/10/06/426755.aspx">App_Offline.htm</a>&#8221; page in the root of your web app is enough to take it offline. However that was no good for testing&#8230; so what to do?</p>
<p>This is where <a rel="nofollow" target="_blank" href="http://www.helicontech.com/isapi_rewrite/">ISAPI_Rewrite</a> is your best friend, (or <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Htaccess">.htaccess</a> to be precise). We needed to configure the site to allow access for us and redirect everyone else to a &#8220;Site under maintenance&#8221; page. I found a few examples across the web, but to save you all that hassle, here are the .htaccess rules that we use:</p>
<pre># BEGIN Maintanence Mode
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !/offline.html$
RewriteCond %{REMOTE_ADDR} !^82&#92;.13&#92;.23&#92;.230$
RewriteRule ^(.*)$ /offline.html [R=302,L]
&lt;/IfModule&gt;
# END Maintanence Mode</pre>
<p>What does it do? The first &#8220;RewriteCond&#8221; rule checks that you are not requesting the &#8220;offline.html&#8221; page (otherwise you would end up in a constant loop!) The second &#8220;RewriteCond&#8221; checks the IP address of the visitor &#8211; in my case it was &#8220;82.13.23.230&#8243; (remember to escape the dots). If those two rules aren&#8217;t satisfied, then the &#8220;RewriteRule&#8221; is used, redirecting the visitor to the &#8220;offline.html&#8221; page.</p>
<p>As always, I am open to any suggestions or improvements!</p> Tagged: App_Offline, ASP.NET, htaccess, ISAPI_Rewrite, Maintenance, Offline, Redirect, Umbraco, web-application <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/leekelleher.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leekelleher.wordpress.com/177/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/leekelleher.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leekelleher.wordpress.com/177/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/leekelleher.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leekelleher.wordpress.com/177/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/leekelleher.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leekelleher.wordpress.com/177/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/leekelleher.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leekelleher.wordpress.com/177/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&blog=2580820&post=177&subd=leekelleher&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6a8e6348aa8c014a012bde96c9b04270?s=96&amp;amp;d=monsterid&amp;amp;r=G" medium="image">
            <media:title>vertino</media:title>
         </media:content>
         <media:content url="http://a1.twimg.com/profile_images/304684998/me_bigger.png" medium="image">
            <media:title>Aaron Powell</media:title>
         </media:content>
      </item>
      <item>
         <title>Client Dependency Framework Beta Released</title>
         <link>http://farmcode.org/post/2009/09/29/Client-Dependency-Framework-Beta-Released.aspx</link>
         <description>&lt;p&gt;I’ve posted a new Beta release on CodePlex, you can get it here: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://clientdependency.codeplex.com/Release/ProjectReleases.aspx&quot;&gt;http://clientdependency.codeplex.com/Release/ProjectReleases.aspx&lt;/a&gt;. On the releases tab includes a sample web site that has most of the functionality that you can do so please download it for a documentation reference.&lt;/p&gt; &lt;h2&gt;Newest changes &amp;amp; additions&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;Namespace and codebase changes/steamlining&lt;/li&gt; &lt;li&gt;Proper versioning added&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Versioning is done on a global basis in the config&lt;/li&gt; &lt;li&gt;Old versions are retained and can still be accessed from the Client Dependency URL that was previously used (if necessary) &lt;/li&gt; &lt;li&gt;Versioned composite files names are prefixed with the version number (i.e. version 2 files will be prefixed with '2_') so it's easy to figure out which files are old &lt;/li&gt; &lt;li&gt;The composite file map also reflects which composite file sets are under a specific version&lt;/li&gt; &lt;/ul&gt; &lt;li&gt;Provider model extended to support 2 types of providers: &lt;/li&gt; &lt;ul&gt; &lt;li&gt;File Registration Providers &lt;ul&gt; &lt;li&gt;Still comes with 2 providers: page header provider and a lazy loading JavaScript client based provider&lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;Composite File Providers: &lt;/li&gt; &lt;ul&gt; &lt;li&gt;Comes with the standard provider: CompositeFileProcessor &lt;/li&gt; &lt;li&gt;You can implement your own provider to customize the way that files are combined, compressed, minified, etc... if the standard provider isn't exactly what you are after&lt;/li&gt; &lt;/ul&gt; &lt;/ul&gt; &lt;li&gt;Forced providers! You can now force a dependency to use a particular provider. This can be useful if you want to ensure that a particular script or stylesheet is rendered on to the page differently. For example, you may want to ensure that a script is lazy loaded (using the lazy load provider) but the rest are rendered in the page header. &lt;/li&gt; &lt;li&gt;Utility methods added to the ClientDependencyLoader for more dynamic implementations &lt;/li&gt; &lt;li&gt;A test website is included in the release which doubles as documentation, it includes: &lt;ul&gt; &lt;li&gt;Standard page header provider example &lt;/li&gt; &lt;li&gt;Forced providers example &lt;/li&gt; &lt;li&gt;Lazy load provider example &lt;/li&gt; &lt;li&gt;Dynamically registering dependencies in your code behind &lt;/li&gt; &lt;li&gt;Registering dependencies with attributes and via aspx controls&lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;Things //TODO:&lt;/h2&gt; &lt;p&gt;I’ve finished off versioning so at least i can cross that off from the previous list. But there’s still more to do:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Implement functionality for jQuery CDN&lt;/li&gt; &lt;ul&gt; &lt;li&gt;This will be a new control/attribute to easily include jQuery in your project&lt;/li&gt; &lt;li&gt;You will have the option to select which CDN you want to use (Microsoft or Google), or you can supply an address (like your own CDN/web server)&lt;/li&gt; &lt;li&gt;Though this framework will be included in Umbraco 4.1, we’ll be leaving this functionality out of the Umbraco build as we realize that there are quite a few installs that operate behind a firewall that won’t have access to the CDN.&lt;/li&gt; &lt;/ul&gt; &lt;li&gt;Implement skeleton for Microsoft AJAX 4 CDN&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Again, this will be another new control/attribute to easily include Microsoft’s new brand of AJAX with their CDN solution&lt;/li&gt; &lt;/ul&gt; &lt;li&gt;Add support for MVC&lt;/li&gt; &lt;li&gt;Support for JS/CSS Minification with options to disable per dependency&lt;/li&gt; &lt;ul&gt; &lt;li&gt;The reason this hasn’t been implemented yet is that I’ve found a lot of scripts/stylesheets break with minification so we need to be able to turn this on/off on a per file basis&lt;/li&gt; &lt;/ul&gt; &lt;li&gt;Some more documentation/examples in the example web application&lt;/li&gt; &lt;/ul&gt;</description>
         <author>tech.nospam@nospam.thefarmdigital.com.au (ShannonDeminick)</author>
         <guid isPermaLink="false">http://farmcode.org/post.aspx?id=0b1d9e53-6961-4675-902b-f22f2eb524bd</guid>
         <pubDate>Mon, 28 Sep 2009 19:06:20 -0700</pubDate>
      </item>
      <item>
         <title>The Umbraco Membership APIs</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/oKj0dOfZDD0/the-umbraco-membership-apis.aspx</link>
         <description>&lt;p&gt;Something I've been noticing a bit around the Umbraco forums is how people are working with the Umbraco Membership system.&lt;/p&gt;
&lt;p&gt;Umbraco has had Membership in it for quite a while now (I don't recall what version it came in with) but it's evolved quite a bit.&lt;/p&gt;
&lt;p&gt;I worked with Membership in v3 and I wrote a wrapper on how to make it easier to interact with v3 members (see this &lt;a rel=&quot;nofollow&quot; title=&quot;Extending Umbraco Members&quot;&gt;post&lt;/a&gt;). Members in v3 (and still the underlying API in v4) was built on the concept of Content in Umbraco. So a member was as extensible as a Document&amp;nbsp; Type, Media Type, etc.&lt;br /&gt;This was really neat as it made it very easy to add information to your members profile.&lt;/p&gt;
&lt;p&gt;But like with any custom writen membership system it has some problems. The Session storage wasn't great (see this &lt;a rel=&quot;nofollow&quot; title=&quot;Umbraco Membership Trap&quot;&gt;post&lt;/a&gt;) and logging in/ logging out didn't have native API methods, there was a few things you would need to do for it to work.&lt;br /&gt;It was also rather problematic when you wanted to integrate with ASP.NET Membership.&lt;/p&gt;
&lt;p&gt;When v4 came out for Umbraco there was a change, Umbraco Membership now was fronted with the ASP.NET Membership providers. This was a big move as it then meant that it was possible to swap out the Umbraco Membership provider with something else, such as the SQL or Active Directory providers.&lt;br /&gt;It also made for easier integration between multiple sites from a single login.&amp;nbsp;&lt;br /&gt;And it also brought a &lt;em&gt;new&lt;/em&gt;&amp;nbsp;API (it's not really new, it's been in ASP.NET since v2.0).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So this brings us to the crux of the post, which API should you use, Members or ASP.NET Membership?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There are some good reasons for using the Umbraco API, to integrate Members in XSLT, but when using .NET there isn't really many reasons as to why you would use the Umbraco API over the top of the .NET API.&lt;/p&gt;
&lt;p&gt;But why is that? Well first off if you're going to do the ASP.NET Membership it's much easier to port your knowledge to a non-Umbraco build (and self education is a great idea!).&lt;/p&gt;
&lt;p&gt;More importantly the ASP.NET Membership API is what is going to be the future of Umbraco. In 4.1 there are some more methods within the Umbraco Membership API which are flagged as obsolete, pointing you in the direction of the appropriate ASP.NET Membership.&lt;/p&gt;
&lt;p&gt;Many of common Membership operations can be found on the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/wiki/how-tos/membership-providers&quot;&gt;Umbraco wiki&lt;/a&gt; so that you can get started.&amp;nbsp;&lt;br /&gt;So if you haven't already looked into it, get cracking with the ASP.NET Membership operations!&amp;nbsp;&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Mon, 28 Sep 2009 18:57:34 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Repeatable Custom Content v2 for Umbraco</title>
         <link>http://umbraco.masoodafzal.com/post/2009/09/23/Repeatable-Custom-Content-v2-for-Umbraco.aspx</link>
         <description>&lt;p&gt;A new version of 'Repeatable Custom Content' to be released in next few days.&lt;/p&gt;
&lt;p&gt;This will include following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for most of umbraco datatypes&lt;/li&gt;
&lt;li&gt;Configurable number of fields/properties&lt;/li&gt;
&lt;li&gt;Validation&lt;/li&gt;
&lt;li&gt;Data saved as &amp;lt;data alias=&quot;propertyAlias&quot;&amp;gt;propertyValue&amp;lt;/data&amp;gt;&lt;/li&gt;
&lt;li&gt;Ability to Edit items&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Any suggestions are welcome.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
         <author>Masood</author>
         <guid isPermaLink="false">http://umbraco.masoodafzal.com/post.aspx?id=bbb4e9a4-388f-48c9-8df6-07ec8b52f532</guid>
         <pubDate>Wed, 23 Sep 2009 13:00:00 -0700</pubDate>
      </item>
      <item>
         <title>Shortcut to Implement Abstract Class or Interface in Visual Studio</title>
         <link>http://www.prolificnotion.co.uk/index.php/2009/09/23/shortcut-to-implement-abstract-class-or-interface-in-visual-studio/</link>
         <description>A great time saving shortcut in Visual Studio to implement an Abstract Class or Interface in Visual Studio. Using the shortcut will populate all of the abstract class method signatures for you. Related posts:&lt;ol&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/08/15/converting-a-visual-studio-class-library-project-to-a-web-application-project/' title='Permanent Link: Converting a Visual Studio Class Library Project to a Web Application Project'&gt;Converting a Visual Studio Class Library Project to a Web Application Project&lt;/a&gt; &lt;small&gt;I started working on a new Umbraco package a while...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/01/18/recreate-designer-files-in-visual-studio-2008/' title='Permanent Link: Recreate .designer files in Visual Studio 2008'&gt;Recreate .designer files in Visual Studio 2008&lt;/a&gt; &lt;small&gt;For some reason or another I ended up with a...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt; Related posts brought to you by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.</description>
         <guid isPermaLink="false">http://www.prolificnotion.co.uk/?p=231</guid>
         <pubDate>Wed, 23 Sep 2009 03:33:55 -0700</pubDate>
         <content:encoded><![CDATA[<p>For me every day is a school day and every day I learn something new. Today the light shined brightly for me when I discovered a great time saving shortcut in Visual Studio to implement an Abstract Class or Interface in Visual Studio. Using the shortcut will populate all of the abstract class method signatures for you.</p>
<p><strong>CTRL + &gt;</strong> or you can use <strong>SHIFT + ALT + F10</strong></p>
<p>Here is an example of a new custom Application tree I was implementing for the <a rel="nofollow" title="Umbraco : The Friendly CMS" target="_blank" href="http://umbraco.org">Umbraco CMS</a>:</p>
<p>namespace ProlificNotion.Umbraco</p>
<p>{</p>
<p>public class MyNewTree : umbraco.cms.presentation.Trees.BaseTree<br />
{</p>
<p>}<br />
}</p>
<p>With your cursor at the end of the class signature you can then press <strong>CTRL + &gt;</strong> or <strong>SHIFT + ALT + F10</strong> and you will get a smart tag offering to implement the abstract class or interface, hit enter and the result is as follows:</p>
<p>namespace ProlificNotion.Umbraco<br />
{<br />
public class MyNewTree : umbraco.cms.presentation.Trees.BaseTree<br />
{</p>
<p>protected override void CreateRootNode(ref umbraco.cms.presentation.Trees.XmlTreeNode rootNode)<br />
{<br />
throw new System.NotImplementedException();<br />
}</p>
<p>public override void Render(ref umbraco.cms.presentation.Trees.XmlTree tree)<br />
{<br />
throw new System.NotImplementedException();<br />
}</p>
<p>public override void RenderJS(ref System.Text.StringBuilder Javascript)<br />
{<br />
throw new System.NotImplementedException();<br />
}<br />
}<br />
}</p>
<p>A simple example of something that can be a huge time saver particularly when the inherited class or interface has a large number of methods to implement!</p> <p>Related posts:<ol><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/08/15/converting-a-visual-studio-class-library-project-to-a-web-application-project/' title='Permanent Link: Converting a Visual Studio Class Library Project to a Web Application Project'>Converting a Visual Studio Class Library Project to a Web Application Project</a> <small>I started working on a new Umbraco package a while...</small></li><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/01/18/recreate-designer-files-in-visual-studio-2008/' title='Permanent Link: Recreate .designer files in Visual Studio 2008'>Recreate .designer files in Visual Studio 2008</a> <small>For some reason or another I ended up with a...</small></li></ol></p>
<p>Related posts brought to you by <a rel="nofollow" target="_blank" href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
      </item>
      <item>
         <title>Exception thrown when using XSLT extensions</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/6OmqDFtWvFo/exception-thrown-when-using-xslt-extensions.aspx</link>
         <description>&lt;p&gt;This is a question I was asked today but it's also something which I have come across myself when creating XSLT extensions.&lt;/p&gt;
&lt;p&gt;Have you ever had this exception thrown?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;System.MissingMethodException&lt;/strong&gt;: No parameterless constructor defined for this object.&lt;/p&gt;
&lt;p&gt;at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean&amp;amp; canBeCached, RuntimeMethodHandle&amp;amp; ctor, Boolean&amp;amp; bNeedSecurityCheck)&lt;br /&gt;at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)&lt;br /&gt;at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)&lt;br /&gt;at System.Activator.CreateInstance(Type type, Boolean nonPublic)&lt;br /&gt;at umbraco.macro.GetXsltExtensions()&lt;br /&gt;at umbraco.macro.AddMacroXsltExtensions()&lt;br /&gt;at umbraco.presentation.webservices.codeEditorSave.SaveXslt(String fileName, String oldName, String fileContents, Boolean ignoreDebugging)&lt;/p&gt;
&lt;p&gt;(The complete stack trace may be different, it's the thrown exception that should be of note)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So what causes this? Well Umbraco loads its XSLT extensions (from xsltExtensions.config) using Reflection, and it looks for a &lt;em&gt;public&amp;nbsp;&lt;/em&gt;&lt;em&gt;default constructor&lt;/em&gt;, which is the constructor which takes no arguments.&lt;/p&gt;
&lt;p&gt;Basically if you're writing a constructor for your XSLT extensions class you &lt;strong&gt;must&lt;/strong&gt;&amp;nbsp;make sure you have a default one too, so your extensions class must look like this at lease:&lt;/p&gt;
&lt;pre class=&quot;brush: csharp&quot;&gt;public class MyXsltExtensions { public MyXsltExtensions() { } ...
}&lt;/pre&gt;
&lt;p&gt;If you're not defining your own constructor though this isn't a problem.&lt;/p&gt;
&lt;p&gt;I only came across this bug when I was trying to define the default constructor as &lt;strong&gt;private&lt;/strong&gt;, attempting to do a very tight API design (not exposing constructors where I didn't want them).&lt;br /&gt;Whoops!&amp;nbsp;&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Mon, 21 Sep 2009 19:45:56 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Media Sorter for Umbraco</title>
         <link>http://www.prolificnotion.co.uk/index.php/2009/09/21/media-sorter-for-umbraco/</link>
         <description>The package essentially adds a new context menu item to the Umbraco CMS dashboard to allow media items to be sorted alphanumerically. The Media Sorter is something I originally developed to save myself and my clients time when working with large media repositories in Umbraco. Related posts:&lt;ol&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/08/23/update-application-tree-package-action-for-umbraco/' title='Permanent Link: Update Application Tree Package Action for Umbraco'&gt;Update Application Tree Package Action for Umbraco&lt;/a&gt; &lt;small&gt;I have recently been working on another package for the...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/09/07/error-creating-control-for-nodetype-media/' title='Permanent Link: ERROR CREATING CONTROL FOR NODETYPE: Media'&gt;ERROR CREATING CONTROL FOR NODETYPE: Media&lt;/a&gt; &lt;small&gt;I have just finished another upgrade from umbraco 3.06 to...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt; Related posts brought to you by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.</description>
         <guid isPermaLink="false">http://www.prolificnotion.co.uk/?p=223</guid>
         <pubDate>Mon, 21 Sep 2009 09:37:23 -0700</pubDate>
         <content:encoded><![CDATA[<p>A few weeks back I released my second package for the <a rel="nofollow" title="Umbraco - The Friendly CMS" target="_blank" href="http://umbraco.org">Umbraco CMS</a> imaginatively called <a rel="nofollow" title="Media Sorter for Umbraco" target="_blank" href="http://our.umbraco.org/projects/media-sorter">Media Sorter for Umbraco</a> (does what it says on the tin!).</p>
<p>The package essentially adds a new context menu item to the Umbraco CMS dashboard to allow media items to be sorted alphanumerically. The Media Sorter is something I originally developed to save myself and my clients time when working with large media repositories in Umbraco. It helps keep things organised and makes media items quicker and easier to locate if they are kept in some sort of order.</p>
<p>I enjoy(ed) working on this project because I learnt a bit more about <a rel="nofollow" title="Read more about Umbraco Package Actions" target="_blank" href="http://umbraco.org/documentation/books/package-actions-reference">Umbraco Package Actions</a> and found <a rel="nofollow" title="Read more about the problems I encountered" target="_blank" href="http://www.prolificnotion.co.uk/index.php/2009/08/23/update-application-tree-package-action-for-umbraco/">some limitations</a> with the currently available Package Actions. As a result of the limitations I developed my own package action &#8216;<a rel="nofollow" title="Read more about my package action and why it was needed">Update Application Tree Package Action for Umbraco</a>&#8216; to fulfil the requirements of my package.</p>
<p>I have released the <a rel="nofollow" title="Finf the source under the Prolific Notion node" target="_blank" href="http://umbracoext.codeplex.com/SourceControl/BrowseLatest">source for this package</a> on CodePlex under the <a rel="nofollow" target="_blank" href="http://umbracoext.codeplex.com/">Umbraco Extensions</a> project.</p>
<p>Many thanks to <a rel="nofollow" title="Kim Andersen &#x002013; Design Creative" target="_blank" href="http://www.designcreative.dk/blog/">Kim Andersen</a> for his patience while I ironed out some issues he was having with the initial releases on .net 2.0.</p> <p>Related posts:<ol><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/08/23/update-application-tree-package-action-for-umbraco/' title='Permanent Link: Update Application Tree Package Action for Umbraco'>Update Application Tree Package Action for Umbraco</a> <small>I have recently been working on another package for the...</small></li><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/09/07/error-creating-control-for-nodetype-media/' title='Permanent Link: ERROR CREATING CONTROL FOR NODETYPE: Media'>ERROR CREATING CONTROL FOR NODETYPE: Media</a> <small>I have just finished another upgrade from umbraco 3.06 to...</small></li></ol></p>
<p>Related posts brought to you by <a rel="nofollow" target="_blank" href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Advanced XSLT with .NET Namespaces</title>
         <link>http://blog.percipientstudios.com/2009/9/21/advanced-xslt-with-net-namespaces.aspx</link>
         <description>&lt;p&gt;Extending your umbraco XSLT macros to access .NET namespaces is
very simple and will help you make the most of your macros. An
example of file-level access from an XSLT macro is provided.&lt;/p&gt;</description>
         <author>info@percipientstudios.com (Douglas Robar)</author>
         <guid isPermaLink="false">http://blog.percipientstudios.com/2009/9/21/advanced-xslt-with-net-namespaces.aspx</guid>
         <pubDate>Mon, 21 Sep 2009 05:54:33 -0700</pubDate>
         <content:encoded><![CDATA[<p>I prefer to use XSLT macros whenever possible, resorting to C#
only when I absolutely have to.</p> <p>Until recently I have created .net macros for even simple
functionality that I would have preferred to put in an
easily-maintained XSLT macro. Why? Because I couldn't access a
needed namespace from within XSLT.</p> <h2>An example: file level operations</h2> <p>A recent site I worked on needed to display the size of a file.
If the file were in umbraco's Media section this would be easy with
the built-in <strong>umbracoBytes</strong> property. But in this
case, the file was uploaded rather than placed in umbraco's Media
section. Thus, the usual umbraco metadata was not available.</p> <p>Various solutions presented themselves:</p> <ul>
<li>Add an <strong>'umbracoBytes' property</strong> (of type label
or static text) to my document type. Umbraco will auto-populate this
property when a file is uploaded (this is VERY cool and a great tip
to remember!). In my case, however, I had four upload fields in
the docType and whatever file was uploaded last would have its
filesize placed in the 'umbracoBytes' field. I needed a solution
that would work for all the files uploaded.</li> <li>Create an <strong>event handler</strong> setting a unique
uploadFile1_umbracoBytes, uploadFile2_umbracoBytes, etc. property
when uploading the file. This seemed like too much effort and I
would be sure to forget to update the event handler should a fifth
upload field be added to the docType later on.</li> <li>Create a <strong>custom XSLT extension</strong> to get the
filesize information. This is a good solution but a whole extension
seemed rather over-kill for a few lines of C# code.</li>
</ul> <p>The C# function I wanted to use was very simple, taking the path
to a file and returning the filesize in kilobytes. This could
certainly be done as an XSLT extension:</p> <pre>
public String uploadFileSize(String filePath) { if ((filePath != null) &amp;&amp; (filePath.Length != 0)) { String localFile = HttpContext.Current.Server.MapPath(filePath); if (File.Exists(localFile)) { FileInfo fileinfo = new FileInfo(localFile); return String.Format("{0:#,###,###.##}", (fileinfo.Length / 1024)); } } return null;
}
</pre> <h2>Using .NET namespaces in your XSLT macros</h2> <p>What I really wanted to do was augment my XSLT macro with that
bit of C# code to get the file size from within the XSLT file
itself, without needing to create a .NET control, some app_code, an
event handler, or custom XSLT extension.</p> <p>Unfortunately, file level access and many other fun capabilities
are not allowed in your umbraco XSLT macros. Not by default, that
is. But it's really simple to add that ability with in-line C# (a
topic we'll cover in another post) in your XSLT macro.</p> <pre>
&lt;msxml:script language="CSharp" implements-prefix="ps"&gt; &lt;msxml:using namespace="System.IO" /&gt; &lt;msxml:assembly name="System.Web" /&gt; &lt;msxml:using namespace="System.Web" /&gt; &lt;![CDATA[ public String uploadFileSize(String filePath) { if ((filePath != null) &amp;&amp; (filePath.Length != 0)) { String localFile = HttpContext.Current.Server.MapPath(filePath); if (File.Exists(localFile)) { FileInfo fileinfo = new FileInfo(localFile); return String.Format("{0:#,###,###.##}", (fileinfo.Length / 1024)); } } return null; } ]]&gt;
&lt;/msxml:script&gt;
</pre> <p><br />
The <strong>msxml:using</strong> and
<strong>msxml:assembly</strong> statements are the important bits. The msxml:assembly loads the assembly like adding a reference in a .NET project. The msxml:using makes using the functions shorter with no prefix required, just as <strong>using
System.IO;</strong> and <strong>using System.Web;</strong> in your
C# code would do.</p>
<p>I found System.IO was already available so I didn't need to add the assembly statement for it. System.Web was not available so I added it with the msxml:assembly statement.</p> <h2>Completed XSLT macro with in-line .NET code</h2> <p>Here is a complete (and very simple, rather hard-coded) XSLT
file. Your macros would probably have more logic in the main
template, possibly set the uploadedFile variable with a macro
parameter (using a propertyPicker data type), and include
additional checks for errors.&nbsp;</p> <pre>
&lt;!DOCTYPE xsl:stylesheet [ &lt;!ENTITY nbsp "&amp;#x00A0;"&gt;
]&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:ps="urn:schemas-percipient-studios" xmlns:umbraco.library="urn:umbraco.library" exclude-result-prefixes="msxml ps umbraco.library" &gt; &lt;xsl:output method="xml" omit-xml-declaration="yes" /&gt; &lt;xsl:param name="currentPage"/&gt; &lt;!-- =========================================================== --&gt; &lt;xsl:template match="/"&gt; &lt;xsl:variable name="uploadedFile" select="$currentPage/data[@alias='uploadedFile']" /&gt; &lt;xsl:if test="string($uploadedFile) != ''"&gt; &lt;p&gt; The size of the uploaded file is: &lt;xsl:value-of select="ps:uploadFileSize($uploadedFile)" /&gt; kb &lt;/p&gt; &lt;/xsl:if&gt; &lt;/xsl:template&gt; &lt;!-- =========================================================== --&gt; &lt;msxml:script language="CSharp" implements-prefix="ps"&gt; &lt;msxml:using namespace="System.IO" /&gt; &lt;msxml:assembly name="System.Web" /&gt; &lt;msxml:using namespace="System.Web" /&gt; &lt;![CDATA[ public String uploadFileSize(String filePath) { if ((filePath != null) &amp;&amp; (filePath.Length != 0)) { String localFile = HttpContext.Current.Server.MapPath(filePath); if (File.Exists(localFile)) { FileInfo fileinfo = new FileInfo(localFile); return String.Format("{0:#,###,###.##}", (fileinfo.Length / 1024)); } } return null; } ]]&gt; &lt;/msxml:script&gt; &lt;!-- =========================================================== --&gt; &lt;/xsl:stylesheet&gt;
</pre> <h2>Conclusion</h2> <p>As you can see, extending your XSLT macros with a bit of .NET
functionality is very simple and will help you make the most of
your macros. And because XSLT macros are compiled, performance is
not a problem, though I also cached this macro heavily as well just to be on the safe side.</p>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco poll package sourcecode</title>
         <link>http://www.nibble.be/?p=73</link>
         <description>The last couple of weeks I&amp;#8217;ve gotten lots of request for the poll package sourcecode.
So I&amp;#8217;ve added the sourcecode to the poll project page on our.umbraco.org (attached files).
Enjoy!</description>
         <guid isPermaLink="false">http://www.nibble.be/?p=73</guid>
         <pubDate>Sat, 19 Sep 2009 09:13:24 -0700</pubDate>
         <content:encoded><![CDATA[<p>The last couple of weeks I&#8217;ve gotten lots of request for the <a rel="nofollow" target="_blank" href="http://our.umbraco.org/projects/poll">poll package</a> sourcecode.</p>
<p>So I&#8217;ve added the sourcecode to the poll project page on <a rel="nofollow" target="_blank" href="http://our.umbraco.org/projects/poll">our.umbraco.org</a> (attached files).</p>
<p>Enjoy!</p>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Umbraco Force Redirect</title>
         <link>http://cjgiddings.wordpress.com/2009/09/16/umbraco-force-redirect/</link>
         <description>In Umbraco I had a need to force the user to be redirected to another page, the easiest way is to create a asp.net control (macro) and put it on the template and there you go. But why this is expensive as it has to go all the way through the umbraco context which uses [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=cjgiddings.wordpress.com&amp;blog=6270985&amp;post=70&amp;subd=cjgiddings&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://cjgiddings.wordpress.com/?p=70</guid>
         <pubDate>Tue, 15 Sep 2009 21:00:58 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>In Umbraco I had a need to force the user to be redirected to another page, the easiest way is to create a asp.net control (macro) and put it on the template and there you go. But why this is expensive as it has to go all the way through the umbraco context which uses additional resources. So how do I get around this&#8230;.</p>
<p><span id="more-70"></span><strong>Research</strong><br />
First i did a bit of research and found a redirect package but this just wasn&#8217;t what i wanted, so the next thing i did was look at the HttpModules that are found for Umbraco well what i found is that these modules do very little of the processing, and all the processing is actually handled on the page, to me this just seems like a silly idea but i guess the it&#8217;s got it&#8217;s reasons for this. I then used reflector to have a look at how the page is determined, security, etc.</p>
<p>What i found is that i can actually do most of this manually in a HttpModule but it also showed that what it could also do is allow a Pipeline of such for the HttpRequest to be created just like Sitecore (i have used Sitecore for a very very long time since 2002) and this approach is so easy for developers to tap into.</p>
<p><strong>Visual Studio</strong><br />
So how did I go about implementing this solution well firstly I opened up visual studio and my solution.</p>
<ol>
<li>Created a new class which i called &#8220;ForceRedirectModule&#8221;.</li>
<li>Register this class to the &#8220;IHttpModule&#8221; interface.
<ol>
<li>Make sure you implement the interface which will give you &#8220;Dispose&#8221; and &#8220;Int&#8221; methods for the class.</li>
</ol>
</li>
<li>In the &#8220;Init&#8221; method we want to register to the &#8220;HttpApplication&#8221; &#8220;AuthenticateRequest&#8221; event handler, and for this example I&#8217;ve used &#8220;ForceRedirect_AuthenticateRequest&#8221;.</li>
</ol>
<p>So once you&#8217;ve done that you class should look something like below:</p>
<div id="_mcePaste" style="width:1px;height:1px;">public class ForceRedirectModule : IHttpModule</div>
<div id="_mcePaste" style="width:1px;height:1px;">{</div>
<div id="_mcePaste" style="width:1px;height:1px;">#region IHttpModule Members</div>
<div id="_mcePaste" style="width:1px;height:1px;">public void Dispose()</div>
<div id="_mcePaste" style="width:1px;height:1px;">{</div>
<div id="_mcePaste" style="width:1px;height:1px;">//throw new NotImplementedException();</div>
<div id="_mcePaste" style="width:1px;height:1px;">}</div>
<div id="_mcePaste" style="width:1px;height:1px;">public void Init(HttpApplication context)</div>
<div id="_mcePaste" style="width:1px;height:1px;">{</div>
<div id="_mcePaste" style="width:1px;height:1px;">// we use AuthenticateRequest so we have access to the user</div>
<div id="_mcePaste" style="width:1px;height:1px;">context.AuthenticateRequest += new EventHandler(ForceRedirect_AuthenticateRequest);</div>
<div id="_mcePaste" style="width:1px;height:1px;">}</div>
<div id="_mcePaste" style="width:1px;height:1px;">#endregion</div>
<div id="_mcePaste" style="width:1px;height:1px;">void ForceRedirect_AuthenticateRequest(object sender, EventArgs e)</div>
<div id="_mcePaste" style="width:1px;height:1px;">{</div>
<div id="_mcePaste" style="width:1px;height:1px;">}</div>
<div id="_mcePaste" style="width:1px;height:1px;">}</div>
<p>public class ForceRedirectModule : IHttpModule<br />
{<br /> #region IHttpModule Members<br /> public void Dispose()<br /> {<br /> //throw new NotImplementedException();<br /> }</p>
<p> public void Init(HttpApplication context)<br /> {<br /> // we use AuthenticateRequest so we have access to the user<br /> context.AuthenticateRequest += new EventHandler(ForceRedirect_AuthenticateRequest);<br /> }<br /> #endregion</p>
<p> void ForceRedirect_AuthenticateRequest(object sender, EventArgs e)<br /> {<br /> //throw new NotImplementedException();<br /> }<br />
}</p>
<p>The reason why we have to register to the &#8220;AuthenicateRequest&#8221; instead of &#8220;BeginRequest&#8221; is that by the time BeginRequest fires the system has worked out if the user is valid or not, i personally don&#8217;t like this but it&#8217;s the only way to do this at the moment without re-writing the full front end (cough cough i might have already started doing).</p>
<p>Next what we&#8217;ll do is setup some local variables which we will use a bit later on:<br />
private HttpApplication httpApp;<br />
private const string ForceRedirect = &#8220;forceredirect&#8221;;<br />
private const string MemberForceRedirect = &#8220;memberforceredirect&#8221;;</p>
<p>We want to modify out Init code to be the following:<br />
public void Init(HttpApplication context)<br />
{<br /> // we use AuthenticateRequest so we have access to the user<br /> context.AuthenticateRequest += new EventHandler(ForceRedirect_AuthenticateRequest);<br /> httpApp = context;<br />
}</p>
<p>What we are doing is just registring the context so we can use it later on for ease.</p>
<p>Next we want to create a private method called IsUrlValid which will be used to help filter out pages we don&#8217;t want to redirect on, this is crude but it work:<br />
private bool IsUrlValid(HttpContext context)<br />
{<br /> string url = context.Request.Url.AbsoluteUri;</p>
<p> // make sure it only uses if required<br /> if ((url.IndexOf(&#8220;.aspx&#8221;) &gt; -1) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/umbraco/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/bin/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/umbraco_client/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/usercontrols/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/xslt/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/scripts/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/masterpages/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/install/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/umbraco_client/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/data/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/config/&#8221;)<br /> )<br /> {<br /> return true;<br /> }</p>
<p> return false;<br />
}</p>
<p>Next we need to start adding some code to out ForceRedirect_AuthenticateRequest handler:<br />
void ForceRedirect_AuthenticateRequest(object sender, EventArgs e)<br />
{<br /> HttpContext context = httpApp.Context;</p>
<p> if (IsUrlValid(context))<br /> {<br /> string[] paths = context.Request.Url.AbsolutePath.Replace(&#8220;.aspx&#8221;, &#8220;&#8221;).Split(&#8216;/&#8217;);</p>
<p> // make sure we have data<br /> if (paths.Length &gt; 0)<br /> {<br /> // build the dynamic path from the root<br /> System.Text.StringBuilder sb = new System.Text.StringBuilder();</p>
<p> // process the nodes<br /> for (int i = 0; i &lt; paths.Length; i++)<br /> {<br /> if (!paths[i].Equals(string.Empty))<br /> {<br /> // make sure we have the first instance so it works correctly<br /> if (sb.Length == 0)<br /> {<br /> sb.Append(&#8220;.&#8221;);<br /> }</p>
<p> sb.AppendFormat(&#8220;/node[@urlName='{0}']&#8220;, paths[i]);<br /> }<br /> }</p>
<p> if (sb.Length &gt; 0)<br /> {<br /> string domainName = context.Request.ServerVariables["SERVER_NAME"];</p>
<p> if (umbraco.cms.businesslogic.web.Domain.Exists(domainName))<br /> {<br /> System.Xml.XmlElement domain = umbraco.content.Instance.XmlContent.GetElementById(umbraco.cms.businesslogic.web.Domain.GetRootFromDomain(domainName).ToString());</p>
<p> if (domain != null)<br /> {<br /> //string currentId = node.Attributes.GetNamedItem(&#8220;id&#8221;).Value;<br /> System.Xml.XmlNode currentNode = domain.SelectSingleNode(sb.ToString());</p>
<p> if (currentNode != null)<br /> {<br /> string redirectUrl = ForceRedirectCheck(currentNode, 0);</p>
<p> if (!redirectUrl.Equals(string.Empty))<br /> {<br /> httpApp.Context.Response.Redirect(redirectUrl);<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br />
}</p>
<p>Now what does this do, it&#8217;s quite simple it gets the current page and finds the node for this, it then doesn&#8217;t some checks to see if everything is fine, the bulk of the additional processing is done in the ForceRedirectCheck method.<br />
The ForceRedirectCheck method makes sure that the page firstly has the fields required, if not it does nothing, but if they are found and not empty then it starts processing the calling page to try and see if that page requires a redirect, this will continue until it finds a page which doesn&#8217;t redirect, yes it means you could put this into a circular dependency, but you know what that would be your own stupid fault.<br />
Below is the code for the ForceRedirectCheck:<br />
private string ForceRedirectCheck(System.Xml.XmlNode currentNode, int loop)<br />
{<br /> System.Xml.XmlNode forceRedirect = null;<br /> string returnData = &#8220;&#8221;;</p>
<p> // try member force redirect first<br /> if (httpApp.Context.User != null &amp;&amp; httpApp.Context.User.Identity.IsAuthenticated)<br /> {<br /> forceRedirect = currentNode.SelectSingleNode(&#8220;./data [@alias = '" + MemberForceRedirect + "']&#8220;);<br /> }</p>
<p> if (forceRedirect == null || forceRedirect.ChildNodes.Count &lt;= 0)<br /> {<br /> forceRedirect = currentNode.SelectSingleNode(&#8220;./data [@alias = '" + ForceRedirect + "']&#8220;);<br /> }</p>
<p> if (forceRedirect != null &amp;&amp; forceRedirect.ChildNodes.Count &gt; 0)<br /> {<br /> int redirectId = 0;<br /> if (int.TryParse(forceRedirect.ChildNodes[0].Value, out redirectId))<br /> {<br /> returnData = ForceRedirectCheck(umbraco.content.Instance.XmlContent.GetElementById(redirectId.ToString()), loop + 1);<br /> }<br /> }</p>
<p> if (returnData.Equals(string.Empty) &amp;&amp; loop &gt; 0)<br /> {<br /> returnData = umbraco.library.NiceUrl(Convert.ToInt32(currentNode.Attributes["id"].Value));<br /> }</p>
<p> return returnData;<br />
}</p>
<p>That&#8217;s all the code, so here is what you should have:</p>
<p>using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Web;</p>
<p>namespace TestProject<br />
{<br /> public class ForceRedirectModule : IHttpModule<br /> {<br /> private HttpApplication httpApp;<br /> private const string ForceRedirect = &#8220;forceredirect&#8221;;<br /> private const string MemberForceRedirect = &#8220;memberforceredirect&#8221;;</p>
<p> #region IHttpModule Members</p>
<p> public void Dispose()<br /> {<br /> //throw new NotImplementedException();<br /> }</p>
<p> public void Init(HttpApplication context)<br /> {<br /> // we use AuthenticateRequest so we have access to the user<br /> context.AuthenticateRequest += new EventHandler(ForceRedirect_AuthenticateRequest);<br /> httpApp = context;<br /> }</p>
<p> #region IsUrlValid<br /> private bool IsUrlValid(HttpContext context)<br /> {<br /> string url = context.Request.Url.AbsoluteUri;</p>
<p> // make sure it only uses if required<br /> if ((url.IndexOf(&#8220;.aspx&#8221;) &gt; -1) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/umbraco/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/bin/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/umbraco_client/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/usercontrols/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/xslt/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/scripts/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/masterpages/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/install/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/umbraco_client/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/data/&#8221;) &amp;&amp;<br /> !context.Request.Url.AbsolutePath.StartsWith(&#8220;/config/&#8221;)<br /> )<br /> {<br /> return true;<br /> }</p>
<p> return false;<br /> }<br /> #endregion</p>
<p> void ForceRedirect_AuthenticateRequest(object sender, EventArgs e)<br /> {<br /> HttpContext context = httpApp.Context;<br /> <br /> if (IsUrlValid(context))<br /> {<br /> string[] paths = context.Request.Url.AbsolutePath.Replace(&#8220;.aspx&#8221;, &#8220;&#8221;).Split(&#8216;/&#8217;);</p>
<p> // make sure we have data<br /> if (paths.Length &gt; 0)<br /> {<br /> // build the dynamic path from the root<br /> System.Text.StringBuilder sb = new System.Text.StringBuilder();</p>
<p> // process the nodes<br /> for (int i = 0; i &lt; paths.Length; i++)<br /> {<br /> if (!paths[i].Equals(string.Empty))<br /> {<br /> // make sure we have the first instance so it works correctly<br /> if (sb.Length == 0)<br /> {<br /> sb.Append(&#8220;.&#8221;);<br /> }</p>
<p> sb.AppendFormat(&#8220;/node[@urlName='{0}']&#8220;, paths[i]);<br /> }<br /> }</p>
<p> if (sb.Length &gt; 0)<br /> {<br /> string domainName = context.Request.ServerVariables["SERVER_NAME"];</p>
<p> if (umbraco.cms.businesslogic.web.Domain.Exists(domainName))<br /> {<br /> System.Xml.XmlElement domain = umbraco.content.Instance.XmlContent.GetElementById(umbraco.cms.businesslogic.web.Domain.GetRootFromDomain(domainName).ToString());</p>
<p> if (domain != null)<br /> {<br /> //string currentId = node.Attributes.GetNamedItem(&#8220;id&#8221;).Value;<br /> System.Xml.XmlNode currentNode = domain.SelectSingleNode(sb.ToString());</p>
<p> if (currentNode != null)<br /> {<br /> string redirectUrl = ForceRedirectCheck(currentNode, 0);</p>
<p> if (!redirectUrl.Equals(string.Empty))<br /> {<br /> httpApp.Context.Response.Redirect(redirectUrl);<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }</p>
<p> #endregion</p>
<p> #region ForceRedirectCheck<br /> private string ForceRedirectCheck(System.Xml.XmlNode currentNode, int loop)<br /> {<br /> System.Xml.XmlNode forceRedirect = null;<br /> string returnData = &#8220;&#8221;;</p>
<p> // try member force redirect first<br /> if (httpApp.Context.User != null &amp;&amp; httpApp.Context.User.Identity.IsAuthenticated)<br /> {<br /> forceRedirect = currentNode.SelectSingleNode(&#8220;./data [@alias = '" + MemberForceRedirect + "']&#8220;);<br /> }</p>
<p> if (forceRedirect == null || forceRedirect.ChildNodes.Count &lt;= 0)<br /> {<br /> forceRedirect = currentNode.SelectSingleNode(&#8220;./data [@alias = '" + ForceRedirect + "']&#8220;);<br /> }</p>
<p> if (forceRedirect != null &amp;&amp; forceRedirect.ChildNodes.Count &gt; 0)<br /> {<br /> int redirectId = 0;<br /> if (int.TryParse(forceRedirect.ChildNodes[0].Value, out redirectId))<br /> {<br /> returnData = ForceRedirectCheck(umbraco.content.Instance.XmlContent.GetElementById(redirectId.ToString()), loop + 1);<br /> }<br /> }</p>
<p> if (returnData.Equals(string.Empty) &amp;&amp; loop &gt; 0)<br /> {<br /> returnData = umbraco.library.NiceUrl(Convert.ToInt32(currentNode.Attributes["id"].Value));<br /> }</p>
<p> return returnData;<br /> }<br /> #endregion<br /> }<br />
}</p>
<p>Web.Config<br />
The code has been done and compiled fine, to use this you have to place the http module in the correct location.<br />
Open up the web.config file and drill down to the httpModule section and add this in the following location:</p>
<p>&lt;httpModules&gt;<br /> &lt;!&#8211; URL REWRTIER &#8211;&gt;<br /> &lt;add name=&#8221;UrlRewriteModule&#8221; type=&#8221;UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter&#8221; /&gt;<br /> &lt;add name=&#8221;umbracoRequestModule&#8221; type=&#8221;umbraco.presentation.requestModule&#8221; /&gt;<br /> &lt;!&#8211; UMBRACO &#8211;&gt;<br /> &lt;add name=&#8221;viewstateMoverModule&#8221; type=&#8221;umbraco.presentation.viewstateMoverModule&#8221; /&gt;<br /> &lt;add name=&#8221;umbracoBaseRequestModule&#8221; type=&#8221;umbraco.presentation.umbracobase.requestModule&#8221; /&gt;<br />
<strong> &lt;!&#8211; FORCE REDIRECT &#8211;&gt;<br /> &lt;add name=&#8221;forceRedirectModule&#8221; type=&#8221;TestProject.ForceRedirectModule, TestProject&#8221; /&gt;</strong><br /> &lt;!&#8211; ASPNETAJAX &#8211;&gt;<br /> &lt;add name=&#8221;ScriptModule&#8221; type=&#8221;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&#8243;/&gt;<br />
&lt;/httpModules&gt;</p>
<p><strong>Umbraco</strong><br />
Now that the code has been finished we have to update umbraco so we can use it, simply go to the required document type and add the following fields:</p>
<ul>
<li>&#8220;forceredirect&#8221;: link</li>
<li>&#8220;memberforceredirect&#8221;: link</li>
</ul>
<p>That&#8217;s it just save the doc type and update the required node and publish.<br />
Now when your a public user and you hit the page you will be redirected to where ever, and if your a member and hit the page you can also be redirected to a different locaiton agian.</p>
<p><strong>Conclusion<br />
</strong>As you can see it wasn&#8217;t to difficult to create a http module but in the end it should of been a lot easier, but now it saves the resources that would be handled by the page and the redirecting occurs with out any hassels.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/cjgiddings.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjgiddings.wordpress.com/70/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/cjgiddings.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjgiddings.wordpress.com/70/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/cjgiddings.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjgiddings.wordpress.com/70/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/cjgiddings.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjgiddings.wordpress.com/70/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/cjgiddings.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjgiddings.wordpress.com/70/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjgiddings.wordpress.com&blog=6270985&post=70&subd=cjgiddings&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5cc3e72de2b12b439700daccf56f1a4a?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>cjgiddings</media:title>
         </media:content>
      </item>
      <item>
         <title>ASP.Net Client Dependency Framework Released</title>
         <link>http://farmcode.org/post/2009/09/15/ASPNet-Client-Dependency-Framework-Released.aspx</link>
         <description>&lt;h2&gt;Repository/Download&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;CodePlex Home: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://clientdependency.codeplex.com&quot;&gt;http://clientdependency.codeplex.com&lt;/a&gt; &lt;/li&gt; &lt;li&gt;The repository has the latest new version, the alpha release version is OLD so best to get the latest codebase from the Source Control tab! &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;History&lt;/h2&gt; &lt;p&gt;I’ve been busy in the Umbraco core putting in place a new Client Dependency framework for version 4.1. I thought since this could benefit many other people/projects that I’d take it out of the Umbraco core and make it its own standalone project. Currently in Umbraco v4, there’s already a Client Dependency framework that you may have come across if you’ve decided to go deep within the core code. It was developed for Umbraco Canvas (live editing) by Ruben (and Niels I think) to be able to tag controls as being dependent on CSS/JavaScript files to be lazy loaded into the client’s browser to enable live editing of the page. I thought the idea was great and wanted to combine it with a bunch of work that we had done in the office already to make a library that everyone can use. So what does it do???&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h2&gt;Features&lt;/h2&gt; &lt;p&gt;Most of the features can be enabled/disabled in the configuration section. By default, they’re all enabled.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Make your controls dependent on client files by: &lt;ul&gt; &lt;li&gt;Attributing your controls &lt;/li&gt; &lt;li&gt;Using the JSInclude or CSSInclude web controls &lt;/li&gt; &lt;li&gt;Dynamically registering them in code &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;Provider Model so you can choose how you would like your JS and CSS files rendered &lt;ul&gt; &lt;li&gt;Comes with 2 providers: page header provider and a lazy loading JavaScript client based provider (the original lazy loader by Ruben… nice work!… slightly modified though) &lt;/li&gt; &lt;li&gt;You can explicitly tell the engine which provider you would like a particular script/stylesheet to be rendered out by if you require this. An example could be that you want one script in particular to be rendered in the page header, but another script to be lazy loaded. &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;Combining and compressing JavaScript and CSS files &lt;/li&gt; &lt;li&gt;Resolving the correct URL paths in CSS files while they are being combined so you don't have to worry about this &lt;/li&gt; &lt;li&gt;Combining external JS and CSS files &lt;/li&gt; &lt;li&gt;OutputCaching of the combined/compressed composite files &lt;/li&gt; &lt;li&gt;Saving of the combined/compressed composite files for increased performance when applications restart or when the Cache expires (persistent compression/combination) &lt;/li&gt; &lt;li&gt;Creation of an XML file map to tell you which saved composite files are for which real files &lt;/li&gt; &lt;li&gt;Easily clearing the cache &lt;/li&gt; &lt;li&gt;Tagging client files with priorites &lt;/li&gt; &lt;li&gt;Tagging client files with path names so you don't have to worry about moving files around in your project, worrying about absolute vs. relative paths, or running your application in a virtual folder &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;This library isn’t the answer to all of your compression needs, but it is a good start or addition to something your already using. Most other compression libraries out there are module based which can do page compression, script/css compression/combination, etc… and are all a really good idea. The compression/combination part of this library is just a really good bonus on top of what it is actually made for which is making your controls dependent on client files without worrying about duplication and having full control over how you want them rendered in your page (i.e. Provider model)&lt;/p&gt; &lt;h2&gt;Umbraco Usage&lt;/h2&gt; &lt;p&gt;Because there are so many controls in Umbraco and so many client files, its very difficult to keep track of what has already been included in pages, other controls, etc… This library is now part of Umbraco 4.1 codebase and all controls are now using it. There was a lot of hard coding paths to either /umbraco_client or /umbraco folders which is one of the reasons Umbraco won’t run in a virtual folder in IIS. This library solves the hard coded path issue.&lt;/p&gt; &lt;p&gt;What this means for package developers is that they don’t have to worry about whether or not jquery, or other JS/CSS files have been included in the page, they can simply add a client dependency to their controls.&lt;/p&gt; &lt;h2&gt;Easier Team Development&lt;/h2&gt; &lt;p&gt;If you’re working in a team locally in your office or one that spans between different office, this implementation makes things a whole lot easier for developing controls.&lt;/p&gt; &lt;h2&gt;Things //TODO:&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;Need to add versioning &lt;ul&gt; &lt;li&gt;This will remove old versioned persistent files saved under any older version &lt;/li&gt; &lt;li&gt;Easier to deploy since right now you would need to remove the persisted files to remove the cache &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;Add support for MVC &lt;ul&gt; &lt;li&gt;This should be pretty darn easy i think &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;Adding some more providers (i.e. ScriptManager provider, etc…) &lt;/li&gt; &lt;li&gt;Documentation &lt;/li&gt; &lt;/ul&gt; &lt;a rel=&quot;nofollow&quot; name=&quot;Docs&quot;&gt;&lt;/a&gt; &lt;h3&gt;Config&lt;/h3&gt; &lt;pre&gt;&amp;lt;clientDependency isDebugMode=&quot;false&quot;&amp;gt; &amp;lt;fileRegistration defaultProvider=&quot;PageHeaderProvider&quot; fileDependencyExtensions=&quot;js,css&quot; enableCompositeFiles=&quot;true&quot;&amp;gt; &amp;lt;providers&amp;gt; &amp;lt;add name=&quot;PageHeaderProvider&quot; type=&quot;ClientDependency.Core.FileRegistration.Providers.PageHeaderProvider, ClientDependency.Core&quot; /&amp;gt; &amp;lt;add name=&quot;LazyLoadProvider&quot; type=&quot;ClientDependency.Core.FileRegistration.Providers.LazyLoadProvider, ClientDependency.Core&quot; /&amp;gt; &amp;lt;/providers&amp;gt; &amp;lt;/fileRegistration&amp;gt; &amp;lt;compositeFiles defaultProvider=&quot;CompositeFileProcessor&quot; compositeFilePath=&quot;~/App_Data/ClientDependency&quot; compositeFileHandlerPath=&quot;DependencyHandler.axd&quot;&amp;gt; &amp;lt;providers&amp;gt; &amp;lt;add name=&quot;CompositeFileProcessor&quot; type=&quot;ClientDependency.Core.CompositeFiles.Providers.CompositeFileProcessingProvider, ClientDependency.Core&quot; /&amp;gt; &amp;lt;/providers&amp;gt; &amp;lt;/compositeFiles&amp;gt;
&amp;lt;/clientDependency&amp;gt;&lt;/pre&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;Includes/Usage&lt;/h3&gt; &lt;p&gt;Implementation is pretty simple… &lt;/p&gt; &lt;ul&gt; &lt;li&gt;You need a ClientDependencyLoader to do the loading, only one of these can exist on the request (just like the ScriptManager in ASP.Net) &lt;/li&gt; &lt;li&gt;You can use CssInclude and JsInclude controls in your User Controls/Pages, etc… to declare that a CSS or JS file is required &lt;strong&gt;OR&lt;/strong&gt; &lt;/li&gt; &lt;li&gt;You can use the ClientDependencyAttribute to attribute your composite control classes &lt;strong&gt;OR&lt;/strong&gt; &lt;/li&gt; &lt;li&gt;You can programmatically add a dependency by using the ClientDependencyLoader’s methods (there’s a few of these overloaded methods): &lt;ul&gt; &lt;li&gt; &lt;pre&gt;ClientDependencyLoader.Instance.RegisterDependency(&quot;Content.css&quot;, &quot;Styles&quot;, ClientDependencyType.Css);&lt;/pre&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt;
&lt;/ul&gt;</description>
         <author>tech.nospam@nospam.thefarmdigital.com.au (ShannonDeminick)</author>
         <guid isPermaLink="false">http://farmcode.org/post.aspx?id=50d284e0-837f-4e98-ad3c-518b55e0e624</guid>
         <pubDate>Tue, 15 Sep 2009 00:35:12 -0700</pubDate>
      </item>
      <item>
         <title>Umbraco at DNUG Karlsruhe</title>
         <link>http://blog.thoehler.com/2009/09/14/umbraco-at-dnug-karlsruhe</link>
         <description>&lt;p&gt;Ralf Schoch will present &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org&quot;
&gt;Umbraco&lt;/a&gt; on the DNUG Meeting in Karlsruhe on
next Thursday (09/17/08). As I talked to Ralf I will join the
meeting to support him if needed.&lt;/p&gt; &lt;p&gt;If you are interested just view his &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://blog.codeso.eu/2009/09/12/UmbracoVortragBeiDerNETUserGroupKarlsruhe.aspx&quot;&gt;blog post&lt;/a&gt; or &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;https://www.xing.com/events/net-user-group-karlsruhe-umbraco-freundliche-cms-394894&quot;&gt;check in&lt;/a&gt;.&lt;/p&gt;</description>
         <author>th@thoehler.com (Thomas Höhler)</author>
         <guid isPermaLink="false">http:///2009/09/14/umbraco-at-dnug-karlsruhe</guid>
         <pubDate>Mon, 14 Sep 2009 14:52:26 -0700</pubDate>
      </item>
      <item>
         <title>Example for adding a PDF generator to your umbraco site</title>
         <link>http://www.nibble.be/?p=72</link>
         <description>Some time ago I created a solution for generating pdf documents from your umbraco content (and from the outputted html). I always wanted to make a package out of this but since the project relies on the commercial pdf generating library ABCpdf this isn&amp;#8217;t possible. The main reason for using ABCpdf is that it&amp;#8217;s html [...]</description>
         <guid isPermaLink="false">http://www.nibble.be/?p=72</guid>
         <pubDate>Sun, 13 Sep 2009 10:22:13 -0700</pubDate>
         <content:encoded><![CDATA[<p>Some time ago I created a solution for generating pdf documents from your umbraco content (and from the outputted html). I always wanted to make a package out of this but since the project relies on the commercial pdf generating library <a rel="nofollow" target="_blank" href="http://www.websupergoo.com/products.htm">ABCpdf</a> this isn&#8217;t possible. The main reason for using ABCpdf is that it&#8217;s html to pdf options are pretty decent. </p>
<p>So instead of releasing a package I&#8217;ll share the sourcecode and I&#8217;ll give an overview of how to use it.</p>
<div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:ebc26863-da96-4db8-8424-2d951cec1b99" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;">
<p>Download: <a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/ExampleforaddingaPDFgeneratortoyourumbra_10FFC/Nibble.PDFGen.zip">PDFGen sourcecode</a></p>
</div>
<h2>Installation</h2>
<p>Once you have <a rel="nofollow" target="_blank" href="http://www.websupergoo.com/abcpdf-1.htm">ABCpdf</a> installed (it&#8217;s possible to download a trail and you can also apply for a free license) the installation is just a mather of dropping some files in your umbraco instance.</p>
<ul>
<li>Drop PDFGen.dll in the /bin folder </li>
<li>Drop PDFGen.aspx in the /umbraco</li>
<li> Drop PDFGen.config in the /config folder</li>
</ul>
<h2>Setup</h2>
<p>First you&#8217;ll need to define a pdf template, this can be done in the PDFGen.config file which should<br />be in the /config folder.<br />Lets look at an example config file:
<div class="csharpcode">
<pre class="alt"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">=&#8221;1.0&#8243;</span> <span class="attr">encoding</span><span class="kwrd">=&#8221;utf-8&#8243;</span> ?<span class="kwrd">&gt;</span></pre>
<pre><span class="kwrd">&lt;</span><span class="html">PDFGen</span> <span class="attr">PermitPrint</span><span class="kwrd">=&#8221;False&#8221;</span> <span class="attr">PermitExtractContent</span><span class="kwrd">=&#8221;False&#8221;</span><span class="kwrd">&gt;</span></pre>
<pre class="alt"><span class="rem">&lt;!&#8211; Header&#8211;&gt;</span></pre>
<pre><span class="kwrd">&lt;</span><span class="html">Text</span> <span class="attr">FontName</span><span class="kwrd">=&#8221;Arial&#8221;</span> <span class="attr">FontSize</span><span class="kwrd">=&#8221;12&#8243;</span> <span class="attr">FontColor</span><span class="kwrd">=&#8221;0,0,0&#8243;</span> <span class="attr">X1</span><span class="kwrd">=&#8221;20&#8243;</span> <span class="attr">Y1</span><span class="kwrd">=&#8221;40&#8243;</span> <span class="attr">X2</span><span class="kwrd">=&#8221;500&#8243;</span> <span class="attr">Y2</span><span class="kwrd">=&#8221;700&#8243;</span></pre>
<pre class="alt"><span class="attr">IsRecurring</span><span class="kwrd">=&#8221;true&#8221;</span><span class="kwrd">&gt;</span>my header text<span class="kwrd">&lt;/</span><span class="html">Text</span><span class="kwrd">&gt;</span></pre>
<pre><span class="kwrd">&lt;</span><span class="html">Image</span> <span class="attr">File</span><span class="kwrd">=&#8221;/media/950/joblistpdfhead.jpg&#8221;</span> <span class="attr">X</span><span class="kwrd">=&#8221;20&#8243;</span> <span class="attr">Y</span><span class="kwrd">=&#8221;670&#8243;</span> <span class="attr">Width</span><span class="kwrd">=&#8221;570&#8243;</span> <span class="attr">Height</span><span class="kwrd">=&#8221;100&#8243;</span> <span class="attr">IsRecurring</span><span class="kwrd">=&#8221;true&#8221;</span><span class="kwrd">/&gt;</span></pre>
<pre class="alt"><span class="rem">&lt;!&#8211; Content &#8211;&gt;</span></pre>
<pre><span class="kwrd">&lt;</span><span class="html">Property</span> <span class="attr">RequestParam</span><span class="kwrd">=&#8221;test&#8221;</span> <span class="attr">PropertyAlias</span><span class="kwrd">=&#8221;title;@createDate&#8221;</span> <span class="attr">FontName</span><span class="kwrd">=&#8221;Arial&#8221;</span> <span class="attr">FontSize</span><span class="kwrd">=&#8221;18&#8243;</span></pre>
<pre class="alt"><span class="attr">FontColor</span><span class="kwrd">=&#8221;0,0,0&#8243;</span> <span class="attr">X1</span><span class="kwrd">=&#8221;25&#8243;</span> <span class="attr">Y1</span><span class="kwrd">=&#8221;620&#8243;</span> <span class="attr">X2</span><span class="kwrd">=&#8221;500&#8243;</span> <span class="attr">Y2</span><span class="kwrd">=&#8221;650&#8243;</span> <span class="attr">IsRecurring</span><span class="kwrd">=&#8221;false&#8221;</span><span class="kwrd">&gt;</span>{0} - {1}<span class="kwrd">&lt;/</span><span class="html">Property</span><span class="kwrd">&gt;</span></pre>
<pre><span class="kwrd">&lt;</span><span class="html">Property</span> <span class="attr">RequestParam</span><span class="kwrd">=&#8221;"</span> <span class="attr">PropertyAlias</span><span class="kwrd">=&#8221;info&#8221;</span> <span class="attr">FontName</span><span class="kwrd">=&#8221;Arial&#8221;</span> <span class="attr">FontSize</span><span class="kwrd">=&#8221;11&#8243;</span> <span class="attr">FontColor</span><span class="kwrd">=&#8221;0,0,0&#8243;</span> <span class="attr">X1</span><span class="kwrd">=&#8221;25&#8243;</span></pre>
<pre class="alt"><span class="attr">Y1</span><span class="kwrd">=&#8221;180&#8243;</span> <span class="attr">X2</span><span class="kwrd">=&#8221;530&#8243;</span> <span class="attr">Y2</span><span class="kwrd">=&#8221;630&#8243;</span> <span class="attr">IsRecurring</span><span class="kwrd">=&#8221;false&#8221;</span><span class="kwrd">&gt;&lt;/</span><span class="html">Property</span><span class="kwrd">&gt;</span></pre>
<pre><span class="kwrd">&lt;</span><span class="html">Property</span> <span class="attr">RequestParam</span><span class="kwrd">=&#8221;"</span> <span class="attr">PropertyAlias</span><span class="kwrd">=&#8221;linkURL&#8221;</span> <span class="attr">FontName</span><span class="kwrd">=&#8221;Arial&#8221;</span> <span class="attr">FontSize</span><span class="kwrd">=&#8221;11&#8243;</span> <span class="attr">FontColor</span><span class="kwrd">=&#8221;0,0,0&#8243;</span></pre>
<pre class="alt"><span class="attr">X1</span><span class="kwrd">=&#8221;40&#8243;</span> <span class="attr">Y1</span><span class="kwrd">=&#8221;715&#8243;</span> <span class="attr">X2</span><span class="kwrd">=&#8221;520&#8243;</span> <span class="attr">Y2</span><span class="kwrd">=&#8221;740&#8243;</span> <span class="attr">IsRecurring</span><span class="kwrd">=&#8221;false&#8221;</span><span class="kwrd">&gt;&lt;/</span><span class="html">Property</span><span class="kwrd">&gt;</span></pre>
<pre><span class="rem">&lt;!&#8211; Footer &#8211;&gt;</span></pre>
<pre class="alt"><span class="kwrd">&lt;</span><span class="html">Text</span> <span class="attr">FontName</span><span class="kwrd">=&#8221;Arial&#8221;</span> <span class="attr">FontSize</span><span class="kwrd">=&#8221;6&#8243;</span> <span class="attr">FontColor</span><span class="kwrd">=&#8221;0,0,0&#8243;</span> <span class="attr">X1</span><span class="kwrd">=&#8221;25&#8243;</span> <span class="attr">Y1</span><span class="kwrd">=&#8221;20&#8243;</span> <span class="attr">X2</span><span class="kwrd">=&#8221;500&#8243;</span> <span class="attr">Y2</span><span class="kwrd">=&#8221;30&#8243;</span></pre>
<pre><span class="attr">IsRecurring</span><span class="kwrd">=&#8221;true&#8221;</span><span class="kwrd">&gt;</span>Copyright mysite 2009 &#8212; All Rights Reserved.<span class="kwrd">&lt;/</span><span class="html">Text</span><span class="kwrd">&gt;</span></pre>
<pre class="alt"><span class="kwrd">&lt;/</span><span class="html">PDFGen</span><span class="kwrd">&gt;</span></pre>
</div>
<p><style type="text/css">.csharpcode, .csharpcode pre
{font-size:small;color:black;font-family:consolas, "Courier New", courier, monospace;background-color:#ffffff;}
.csharpcode pre {margin:0em;}
.csharpcode .rem {color:#008000;}
.csharpcode .kwrd {color:#0000ff;}
.csharpcode .str {color:#006080;}
.csharpcode .op {color:#0000c0;}
.csharpcode .preproc {color:#cc6633;}
.csharpcode .asp {background-color:#ffff00;}
.csharpcode .html {color:#800000;}
.csharpcode .attr {color:#ff0000;}
.csharpcode .alt {background-color:#f4f4f4;width:100%;margin:0em;}
.csharpcode .lnum {color:#606060;}
</style>
</p>
<p>After the xml declaration (yes the config file is an xml file) you have the PDFGen root node.<br />On this node you can set wether the generated pdf files are printable and if it is possible to extract<br />content (copy,paste).
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">PDFGen</span> <span class="attr">PermitPrint</span><span class="kwrd">=&#8221;False&#8221;</span> <span class="attr">PermitExtractContent</span><span class="kwrd">=&#8221;False&#8221;</span><span class="kwrd">&gt;</span></pre>
<p><style type="text/css">.csharpcode, .csharpcode pre
{font-size:small;color:black;font-family:consolas, "Courier New", courier, monospace;background-color:#ffffff;}
.csharpcode pre {margin:0em;}
.csharpcode .rem {color:#008000;}
.csharpcode .kwrd {color:#0000ff;}
.csharpcode .str {color:#006080;}
.csharpcode .op {color:#0000c0;}
.csharpcode .preproc {color:#cc6633;}
.csharpcode .asp {background-color:#ffff00;}
.csharpcode .html {color:#800000;}
.csharpcode .attr {color:#ff0000;}
.csharpcode .alt {background-color:#f4f4f4;width:100%;margin:0em;}
.csharpcode .lnum {color:#606060;}
</style>
</p>
<p>The child nodes of the root PDFGen node will be used to define the pdf. There are a couple of<br />possibilities:</p>
<ul>
<li>Text</li>
<li>Image</li>
<li>Property</li>
<li>RenderedOutput</li>
</ul>
<h2>Text nodes</h2>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">&lt;</span><span class="html">Text</span> <span class="attr">FontName</span><span class="kwrd">=&#8221;Arial&#8221;</span> <span class="attr">FontSize</span><span class="kwrd">=&#8221;12&#8243;</span> <span class="attr">FontColor</span><span class="kwrd">=&#8221;0,0,0&#8243;</span> <span class="attr">X1</span><span class="kwrd">=&#8221;20&#8243;</span> <span class="attr">Y1</span><span class="kwrd">=&#8221;40&#8243;</span> <span class="attr">X2</span><span class="kwrd">=&#8221;500&#8243;</span> <span class="attr">Y2</span><span class="kwrd">=&#8221;700&#8243;</span></pre>
<pre><span class="attr">IsRecurring</span><span class="kwrd">=&#8221;true&#8221;</span><span class="kwrd">&gt;</span>my header text<span class="kwrd">&lt;/</span><span class="html">Text</span><span class="kwrd">&gt;</span></pre>
</div>
<p>A text node is used to add some static text on the pdf document it has several attributes</p>
<ul>
<li>FontName: name of the font family that will be used</li>
<li>FontSize: size of the font</li>
<li>FontColor: color of the font</li>
<li>X1,Y1,X2,Y2: these are the coordinated used to define a box where the text will be placed</li>
<li>IsRecurring: if this is set to true the text will appear on each page (used for headers and<br />footers)</li>
<li>The inner text is the static text that will be placed on the pdf (it is possible to add html).</li>
</ul>
<h2>Image nodes</h2>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">&lt;</span><span class="html">Image</span> <span class="attr">File</span><span class="kwrd">=&#8221;/media/950/joblistpdfhead.jpg&#8221;</span> <span class="attr">X</span><span class="kwrd">=&#8221;20&#8243;</span> <span class="attr">Y</span><span class="kwrd">=&#8221;670&#8243;</span> <span class="attr">Width</span><span class="kwrd">=&#8221;570&#8243;</span> <span class="attr">Height</span><span class="kwrd">=&#8221;100&#8243;</span> <span class="attr">IsRecurring</span><span class="kwrd">=&#8221;true&#8221;</span><span class="kwrd">/&gt;</span></pre>
</div>
<p>An image node is used to add an image to the pdf document.</p>
<p>An overview of it&#8217;s attributes:</p>
<ul>
<li>File: path to the image</li>
<li>X,Y: coordinated of the image</li>
<li>Width: width of the image</li>
<li>Height: height of the image</li>
<li>IsRecurring: if this is set to true the image will appear on each page (used for headers and<br />footers)</li>
</ul>
<h2>Property nodes</h2>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">&lt;</span><span class="html">Property</span> <span class="attr">RequestParam</span><span class="kwrd">=&#8221;test&#8221;</span> <span class="attr">PropertyAlias</span><span class="kwrd">=&#8221;title;@createDate&#8221;</span> <span class="attr">FontName</span><span class="kwrd">=&#8221;Arial&#8221;</span> <span class="attr">FontSize</span><span class="kwrd">=&#8221;18&#8243;</span></pre>
<pre><span class="attr">FontColor</span><span class="kwrd">=&#8221;0,0,0&#8243;</span> <span class="attr">X1</span><span class="kwrd">=&#8221;25&#8243;</span> <span class="attr">Y1</span><span class="kwrd">=&#8221;620&#8243;</span> <span class="attr">X2</span><span class="kwrd">=&#8221;500&#8243;</span> <span class="attr">Y2</span><span class="kwrd">=&#8221;650&#8243;</span> <span class="attr">IsRecurring</span><span class="kwrd">=&#8221;false&#8221;</span><span class="kwrd">&gt;</span>{0} – {1}<span class="kwrd">&lt;/</span><span class="html">Property</span><span class="kwrd">&gt;</span></pre>
</div>
<p>A property node is used to add umbraco content node property data to the pdf document.</p>
<p>An overview of it&#8217;s attributes:</p>
<ul>
<li>RequestParam: if this is empty the default request param id will be used, if you want to use<br />another one define it here</li>
<li>PropertyAlias: alias of the property (possible to add multiple separated by semicolon)</li>
<li>FontName: name of the font family that will be used</li>
<li>FontSize: size of the font</li>
<li>FontColor: color of the font</li>
<li>X1,Y1,X2,Y2 :these are the coordinated used to define a box where the text will be placed</li>
<li>IsRecurring :if this is set to true the text will appear on each page (used for headers and<br />footers)</li>
</ul>
<p>The innertext can be used to add some static text around the property or if you have multiple<br />propertyaliases you must define how they will be placed (simular to string.format).</p>
<p>&nbsp;</p>
<h2>RenderedOutput nodes</h2>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">&lt;</span><span class="html">RenderedOutput</span> <span class="attr">RequestParam</span><span class="kwrd">=&#8221;"</span> <span class="attr">Template</span><span class="kwrd">=&#8221;"</span> <span class="attr">X1</span><span class="kwrd">=&#8221;25&#8243;</span> <span class="attr">Y1</span><span class="kwrd">=&#8221;620&#8243;</span> <span class="attr">X2</span><span class="kwrd">=&#8221;500&#8243;</span> <span class="attr">Y2</span><span class="kwrd">=&#8221;650&#8243;</span> <span class="attr">IsRecurring</span><span class="kwrd">=&#8221;false&#8221;</span> <span class="kwrd">/&gt;</span></pre>
</div>
<p>This will fetch the rendered output of a page, if no requestparam is used it will use the id one and if no template alias is defined it will use that default template of that page.</p>
<p>An overview of it&#8217;s attributes:</p>
<ul>
<li>RequestParam: if this is empty the default request param id will be used, if you want to use<br />another one define it here</li>
<li>Template: template alias to use, if this is empty the default template of the document will be used </li>
<li>X1,Y1,X2,Y2 :these are the coordinated used to define a box where the text will be placed</li>
<li>IsRecurring :if this is set to true the text will appear on each page (used for headers and<br />footers)</li>
</ul>
<h2>Usage</h2>
<p>Once installed and if you have a working config file. You can use pdfgen by calling /umbraco/pdfgen.aspx?id=1234 (the id is the id of the umbraco document).</p>
<p>If you have defined other RequestParams in your config file (like headerid) you just need to do:<br />/umbraco/pdfgen.aspx?id=1234&amp;headerid=2345</p>
<p>It&#8217;s also possible to have multiple config files (just copy the pdfgen.config) if you want to use anohter config file you can do it like this:</p>
<p>/umbraco/pdfgen.aspx?id=1234&amp;pdfconfig=pdfconfigcopy.config</p>
<p>pdfconfigcopy.config is the filename of the configfile (must be in the /config dir)</p>]]></content:encoded>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>Umbraco tip of the week: Adding reCAPTCHA to your forms</title>
         <link>http://feedproxy.google.com/~r/cultiv/~3/GsOCm_gGZhs/umbraco-tip-of-the-week-adding-recaptcha-to-your-forms</link>
         <author>Sebastiaan Janssen</author>
         <guid isPermaLink="false">http://www.cultiv.nl/blog/2009/9/12/umbraco-tip-of-the-week-adding-recaptcha-to-your-forms</guid>
         <pubDate>Sat, 12 Sep 2009 15:41:06 -0700</pubDate>
         <content:encoded><![CDATA[<p>This site has been the target of comment spam attacks for a
while now. I tried to stop the spammers by using the "Honeypot
Captcha" technique <a rel="nofollow"
 target="_blank" href="http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx">as
described</a> by Phil Haack. Unfortunately, the spammers apparently
already have pre-existing knowledge about the comment forms and
were not fooled by the hidden textbox.</p> <p>So today I was ready to waste a few hours on getting a proper
captcha system implemented. I have always really liked <a rel="nofollow"
 target="_blank" href="http://www.recaptcha.net">reCAPTCHA</a> because it's not only
fighting spam, everybody filling one out is also helping to <a rel="nofollow"
 target="_blank" href="http://recaptcha.net/learnmore.html">digitize books</a>,
cool.</p> <p>I wish there was some complicated problems that I could explain
here, but once you sign up for reCAPTCHA, you can go to the <a rel="nofollow"
 target="_blank" href="http://recaptcha.net/plugins/aspnet/">asp.net plugin page</a>
and follow the instructions. I was finished in a matter of minutes
and now have an evil, but necessary captcha widget on my comment
forms.</p>
<div class="feedflare">
<a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/cultiv?a=GsOCm_gGZhs:oUuyksAZBwQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/cultiv?d=yIl2AUoC8zA" border="0"></a> <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/cultiv?a=GsOCm_gGZhs:oUuyksAZBwQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/cultiv?i=GsOCm_gGZhs:oUuyksAZBwQ:F7zBnMyn0Lo" border="0"></a>
</div><img src="http://feeds.feedburner.com/~r/cultiv/~4/GsOCm_gGZhs" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Sitemap Generator</title>
         <link>http://www.eyecatch.no/blog/sitemap-generator.aspx</link>
         <description>&lt;p&gt;I have made an Umbraco package of the sitemap script I use on
this site.&lt;br /&gt;
The package has also been uploaded to &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/umbox&quot;
 title=&quot;our.umbraco.org/projects/umbox&quot;&gt;our.umbraco.org&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;You can &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://sitemapgenerator.eyecatch.no&quot;
 title=&quot;Sitemap Generator Demo&quot;&gt;watch a demonstration here&lt;/a&gt;.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.eyecatch.no/blog/sitemap-generator.aspx</guid>
         <pubDate>Fri, 11 Sep 2009 05:35:43 -0700</pubDate>
         <content:encoded><![CDATA[<p>I have made an Umbraco package of the sitemap script I use on
this site.<br />
The package has also been uploaded to <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects/umbox"
 title="our.umbraco.org/projects/umbox">our.umbraco.org</a>.</p> <p>You can <a rel="nofollow" target="_blank" href="http://sitemapgenerator.eyecatch.no"
 title="Sitemap Generator Demo">watch a demonstration here</a>.</p>]]></content:encoded>
      </item>
      <item>
         <title>UmBox v1.2</title>
         <link>http://www.eyecatch.no/blog/umbox-v12.aspx</link>
         <description>&lt;p&gt;I have created an Umbraco package of the &lt;a rel=&quot;nofollow&quot;
 title=&quot;UmBox&quot;&gt;UmBox script&lt;/a&gt;.&lt;br /&gt;
The package has also been uploaded to &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/umbox&quot;
 title=&quot;our.umbraco.org/projects/umbox&quot;&gt;our.umbraco.org&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This update also fixes an import reference in the XSLT.&lt;/p&gt; &lt;p&gt;You can see a demonstration of the package &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbox.eyecatch.no&quot; title=&quot;[UmBox] Demo Gallery&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.eyecatch.no/blog/umbox-v12.aspx</guid>
         <pubDate>Fri, 11 Sep 2009 05:32:53 -0700</pubDate>
         <content:encoded><![CDATA[<p>I have created an Umbraco package of the <a rel="nofollow"
 title="UmBox">UmBox script</a>.<br />
The package has also been uploaded to <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects/umbox"
 title="our.umbraco.org/projects/umbox">our.umbraco.org</a>.</p> <p>This update also fixes an import reference in the XSLT.</p> <p>You can see a demonstration of the package <a rel="nofollow"
 target="_blank" href="http://umbox.eyecatch.no" title="[UmBox] Demo Gallery">here</a>.</p>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco Concierge 2.0 Released</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/7nsX5o-HumU/28103</link>
         <description>&lt;p&gt;Today we're releasing the new version of one of the tools in the
Umbraco Pro bundle: Concierge. This is a major upgrade to the tool
helping you keep track of your website.&lt;/p&gt; &lt;p&gt;Get an overview of what it does on &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://umbraco.tv/documentation/videos/umbraco-pro/concierge/umbraco-concierge-20&quot;&gt;
umbraco.tv&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;&lt;span style=&quot;font-size:13pt;&quot;&gt;Tracking changes and
dependencies&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;Concierge is a tool for keeping track of the different
components in your website. It helps you keep track of which
components are currently not in use and can be safely deleted. It
spots the connections between components and helps you determine if
a change might break an existing page and see what areas needs
testing after a change is made.&lt;/p&gt; &lt;h3&gt;&lt;span style=&quot;font-size:13pt;&quot;&gt;Reporting and logging&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;Concierge helps you digest the statistics and data surrounding
your website. Search the application log for details on the health
of the website. Or use the reporting capabilities to build a view
of specific data about your website.&lt;/p&gt; &lt;h3&gt;&lt;span style=&quot;font-size:13pt;&quot;&gt;Check-in and Check-out&lt;/span&gt;&lt;/h3&gt; &lt;h2&gt;&lt;/h2&gt; &lt;p&gt;Concierge can help your editors workflow, by enabling locking of
content and media items. Any editor can lock a document for
exclusive editing and ensure that ongoing work isn't edited or
deleted. Concierge also provides a central overview of all
components currently locked for easy administration&lt;/p&gt; &lt;h3&gt;&lt;span style=&quot;font-size:13pt;&quot;&gt;Make it your own&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;Both the documentation section and the reports can be extended
to include your own data. Concierge 2.0 comes with an API for
adding any source of data to your documentation or as a report.&lt;/p&gt; &lt;h3&gt;&lt;span style=&quot;font-size:13pt;&quot;&gt;Available today&lt;/span&gt;&lt;/h3&gt; &lt;h2&gt;&lt;/h2&gt; &lt;p&gt;Our pro customers can download Concierge 2.0 on their profile
today along with API documentation. It is a free upgrade to all
existing Pro subscribers.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=7nsX5o-HumU:NEBROLE4HWc:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=7nsX5o-HumU:NEBROLE4HWc:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=7nsX5o-HumU:NEBROLE4HWc:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/7nsX5o-HumU&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Chris Houston</author>
         <guid isPermaLink="false">http://umbraco.org/28103</guid>
         <pubDate>Fri, 11 Sep 2009 02:05:35 -0700</pubDate>
      </item>
      <item>
         <title>Repeatable Custom Content Datatype for Umbraco</title>
         <link>http://umbraco.masoodafzal.com/post/2009/09/10/Repeatable-Custom-Content-Datatype-for-Umbraco.aspx</link>
         <description>&lt;h2&gt;Repeatable Custom Content Datatype&lt;/h2&gt;
&lt;p&gt;A datatype which allows adding repeatable custom contents to a document type or page.&lt;/p&gt;
&lt;p&gt;N.B. A new datatype is available at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/post/2009/09/29/Repeatable-Custom-Content-v2-Beta-Released.aspx&quot;&gt;/post/2009/09/29/Repeatable-Custom-Content-v2-Beta-Released.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is specially useful for creating 'Featured Panels' , 'Featured Clients' or any other repeatable custom contents &lt;br /&gt; &lt;br /&gt; 'Repeatable Custom Content' datatype currently supports upto 7 custom fields for each item. Allowed field types are: &lt;br /&gt; &lt;br /&gt; * YesNo (Checkbox) &lt;br /&gt; * TextBox (TextString) &lt;br /&gt; * TextArea (TextString Multiple) &lt;br /&gt; * tinyMCE3RichText (RichTextEditor) &lt;br /&gt; * PagePicker (pagePicker) &lt;br /&gt; * MediaChooser (mediaChooser) &lt;br /&gt; * DatePicker (datePicker) &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;For example, you can create a repeatable custom content dadatype for 'Featured Clients': &lt;br /&gt; &lt;br /&gt;Field Name Field Type &lt;br /&gt;Client Logo (MediaChooser) &lt;br /&gt;Client Name (TextBox) &lt;br /&gt;Services provided (TextArea) &lt;br /&gt;Client Since (DatePicker) &lt;br /&gt;Link to Client Page (PagePicker) &lt;br /&gt;Featured Client (YesNo)&lt;/p&gt;
&lt;h2&gt;Download Umbraco Package for Repeatable Custom Content&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/file.axd?file=2009%2f9%2fRepeatable_Custom_Content_1.0.zip&quot;&gt;Repeatable_Custom_Content_1.0.zip (11.57 kb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Data is stored in following format:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;items&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item field1=&quot;&quot; field2=&quot;&quot; field3=&quot;&quot; field4=&quot;&quot; field5=&quot;&quot; field6=&quot;&quot; field7=&quot;&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item field1=&quot;&quot; field2=&quot;&quot; field3=&quot;&quot; field4=&quot;&quot; field5=&quot;&quot; field6=&quot;&quot; field7=&quot;&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item field1=&quot;&quot; field2=&quot;&quot; field3=&quot;&quot; field4=&quot;&quot; field5=&quot;&quot; field6=&quot;&quot; field7=&quot;&quot; /&amp;gt;&lt;br /&gt;&amp;lt;/items&amp;gt;&lt;/p&gt;
&lt;h2&gt;Download XSLT Sample&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/file.axd?file=2009%2f9%2fRepeatableCustomContents.xslt&quot;&gt;RepeatableCustomContents.xslt (2.18 kb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://umbraco.masoodafzal.com/image.axd?picture=2009%2f9%2fRepeatableCustomContentDeveloperSmall.JPG&quot; alt=&quot;&quot;/&gt; &lt;img src=&quot;http://umbraco.masoodafzal.com/image.axd?picture=2009%2f9%2fRepeatableCustomContentSmall.JPG&quot; alt=&quot;&quot;/&gt;&lt;/p&gt;
&lt;h2&gt;Download Umbraco Package for Repeatable Custom Content&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/file.axd?file=2009%2f9%2fRepeatable_Custom_Content_1.0.zip&quot;&gt;Repeatable_Custom_Content_1.0.zip (11.57 kb)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Download XSLT Sample&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/file.axd?file=2009%2f9%2fRepeatableCustomContents.xslt&quot;&gt;RepeatableCustomContents.xslt (2.18 kb)&lt;/a&gt;&lt;/p&gt;</description>
         <author>Admin</author>
         <guid isPermaLink="false">http://umbraco.masoodafzal.com/post.aspx?id=378f92da-3069-46f3-8071-fc5283d63193</guid>
         <pubDate>Thu, 10 Sep 2009 15:30:00 -0700</pubDate>
      </item>
      <item>
         <title>How to sync data across multiple Umbraco environments</title>
         <link>http://farmcode.org/post/2009/09/09/How-to-sync-data-across-multiple-Umbraco-environments.aspx</link>
         <description>&lt;p&gt;Recently we had a client who wanted to be able to preview content before they were publishing it live with Umbraco. Because we’d made some major modifications to the way the content was rendered we were unable to use the standard Umbraco preview since we weren’t using any of the &amp;lt;umbraco:item /&amp;gt; tags. So this posed a problem, how were we going to have the preview working?&lt;/p&gt; &lt;p&gt;We decided that we were going to have to have a content entry server, from here they could enter their content, publish it and view it, but how were we then to get it to the live site? The logical answer is that have a periodic push of the content entry servers database across to live, but that’s not ideal and it is a pretty nasty idea.&lt;/p&gt; &lt;p&gt;To add another level of complexity on top of the system the site has user generated content, this content would obviously be entered by site visitors and it would only be on the live site, not the staging site.&lt;/p&gt; &lt;p&gt;Hmm…&lt;/p&gt; &lt;p&gt;Then Shannon reminded me of a conversation which we had when we were in Denmark at CodeGarden 09, someone had suggested that you could use Red Gate’s SQL Data Compare to push the data across. &lt;br /&gt;So I sat down with two copies of the database, and decided to work out what would be needed to achieve this. Essentially you need to reseed Umbraco so that when you do changes on one environment it can easily be spotted and resolved by Red Gate.&lt;/p&gt; &lt;p&gt;The following is the list of tables which you need to reseed:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;cmsContent&lt;/li&gt; &lt;li&gt;cmsContentVersion&lt;/li&gt; &lt;li&gt;cmsPropertyData&lt;/li&gt; &lt;li&gt;umbracoNode&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Microsoft SQL Management Studio will be able to generate reseed scripts for these tables which will handle the data migration and everything.&lt;/p&gt; &lt;p&gt;With this set up it opens an interesting idea which we plan to trial, having every environment seeded differently from dev onwards and using Red Gate to migrate from one to the next.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Things to keep in mind:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If it’s likely that there will be content created/ edited on both environments make sure that you put the primary key seed to be greatly spaced. For this site we reseeded the content entry environment with a start identity of 500,000. This left a good sized buffer in the cmsPropertyData table which is the table that expands the most.&lt;/p&gt; &lt;p&gt;If you wanted to be able to sync across multiple environments you could do:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Dev – primary key index starting at 1&lt;/li&gt; &lt;li&gt;Content Entry – primary key index starting at 500,000&lt;/li&gt; &lt;li&gt;Live – primary key index starting at 1,000,000&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;If you want to sync more than just content (eg – Macros, Document Types, etc) you’ll have to reseed their appropriate tables too.&lt;/p&gt; &lt;p&gt;You still need to manually copy the Media folder across environments still, as those files aren’t stored in the database.&lt;/p&gt;</description>
         <author>tech.nospam@nospam.thefarmdigital.com.au (AaronPowell)</author>
         <guid isPermaLink="false">http://farmcode.org/post.aspx?id=fb9f2a2f-3d9e-43d2-b84f-20f9a9e5285a</guid>
         <pubDate>Tue, 08 Sep 2009 22:14:10 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Umbraco: Ultimate Picker XSLT Example</title>
         <link>http://blog.leekelleher.com/2009/09/08/umbraco-ultimate-picker-xslt-example/</link>
         <description>Chatting with Dan (my partner-in-code at Bodenko) about the Ultimate Picker data-type in Umbraco, we realised that we couldn&amp;#8217;t find any examples of how to use the data in XSLT. So obviously needing an excuse to write-up a new blog post, here we go.
If you need a quick overview about the Ultimate Picker data-type, [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&amp;blog=2580820&amp;post=157&amp;subd=leekelleher&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://blog.leekelleher.com/?p=157</guid>
         <pubDate>Tue, 08 Sep 2009 15:38:14 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Chatting with Dan (my partner-in-code at <a rel="nofollow" target="_blank" href="http://bodenko.com/">Bodenko</a>) about the Ultimate Picker data-type in Umbraco, we realised that we couldn&#8217;t find any examples of how to use the data in XSLT. So obviously needing an excuse to write-up a new blog post, here we go.</p>
<p>If you need a quick overview about the Ultimate Picker data-type, see <a rel="nofollow" target="_blank" href="http://www.nibble.be/?p=38">Tim Geyssens&#8217; blog post</a>.</p>
<p>For my example, using a default Umbraco install (with Runway), we will create a new data-type using the Ultimate Picker, (let&#8217;s call it &#8220;<em>Runway Textpage Picker</em>&#8220;), we select the &#8216;<strong>Database datatype</strong>&#8216; to be &#8220;Nvarchar&#8221;; the &#8216;<strong>Type</strong>&#8216; as a &#8220;List Box&#8221;; The &#8216;<strong>Parent nodeid</strong>&#8216; is &#8220;1048&#8243; and the &#8216;<strong>Document Alias</strong>&#8216; filter is &#8220;RunwayTextpage&#8221; &#8211; we also tick the &#8216;<strong>Show grandchildren</strong>&#8216; checkbox.</p>
<div id="attachment_158" class="wp-caption aligncenter" style="width:160px;"><a rel="nofollow" target="_blank" href="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-datatype.png"><img class="size-thumbnail wp-image-158 " title="UltimatePicker-DataType" src="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-datatype.png?w=150&#038;h=112" alt="Ultimate Picker Data Type settings" width="150" height="112"/></a><p class="wp-caption-text">Ultimate Picker Data Type settings</p></div>
<p>Next, we will assign the new &#8220;<em>Runway Textpage Picker</em>&#8220; data-type to a property of the Runway Textpage, we will call it &#8220;<em>Related Content</em>&#8220;. For more information about working with document types, please refer to the our.umbraco.org wiki page, (<a rel="nofollow" target="_blank" href="http://our.umbraco.org/wiki/how-tos/working-with-document-types">Working with document types</a>).</p>
<div id="attachment_160" class="wp-caption aligncenter" style="width:160px;"><a rel="nofollow" target="_blank" href="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-doctype.png"><img class="size-thumbnail wp-image-160 " title="UltimatePicker-DocType" src="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-doctype.png?w=150&#038;h=112" alt="Adding Ultimate Picker to a Document Type" width="150" height="112"/></a><p class="wp-caption-text">Adding Ultimate Picker to a Document Type</p></div>
<p>Once the document-type is saved, we move on to the &#8216;<strong>Content</strong>&#8216; section. Select any of the Runway Textpages. You should now see the &#8216;<em>Related Content</em>&#8216; property panel, containing a list of all the other Runway Textpages. To select multiple items, hold-down the CTRL (or Command on the Mac) button. When you have finished, click the &#8217;<strong>Save and publish</strong>&#8216; button.</p>
<div id="attachment_162" class="wp-caption aligncenter" style="width:160px;"><a rel="nofollow" target="_blank" href="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-relatedcontent.png"><img class="size-thumbnail wp-image-162" title="UltimatePicker-RelatedContent" src="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-relatedcontent.png?w=150&#038;h=112" alt="Selecting related content" width="150" height="112"/></a><p class="wp-caption-text">Selecting related content</p></div>
<p>For the next part we get to the real meat of this blog post&#8230; the XSLT!</p>
<div id="attachment_163" class="wp-caption aligncenter" style="width:160px;"><a rel="nofollow" target="_blank" href="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-createmacro.png"><img class="size-thumbnail wp-image-163 " title="UltimatePicker-CreateMacro" src="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-createmacro.png?w=150&#038;h=112" alt="Create a new XSLT" width="150" height="112"/></a><p class="wp-caption-text">Create a new XSLT</p></div>
<p>Create a new XSLT called &#8220;<em>RelatedContent</em>&#8221; (without the .xslt extension), keep it &#8216;Clean&#8217; and tick the &#8216;<strong>Create Macro</strong>&#8216; checkbox. Next a quick short-cut for you; copy-n-paste the following XSLT into the main editor window.</p>
<div id="attachment_164" class="wp-caption aligncenter" style="width:160px;"><a rel="nofollow" target="_blank" href="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-xslt.png"><img class="size-thumbnail wp-image-164" title="UltimatePicker-XSLT" src="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-xslt.png?w=150&#038;h=112" alt="Copy-n-paste the XSLT" width="150" height="112"/></a><p class="wp-caption-text">Copy-n-paste the XSLT</p></div>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE xsl:stylesheet [ &lt;!ENTITY nbsp "&amp;#xA0;"&gt; ]&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:umbraco.library="urn:umbraco.library" exclude-result-prefixes="msxml umbraco.library"&gt; &lt;xsl:output method="xml" omit-xml-declaration="yes"/&gt; &lt;xsl:param name="currentPage"/&gt; &lt;xsl:template match="/"&gt; &lt;xsl:variable name="preNodes"&gt; &lt;xsl:variable name="relatedContent" select="$currentPage/data[@alias='RelatedContent']" /&gt; &lt;xsl:variable name="nodeIds" select="umbraco.library:Split($relatedContent, ',')" /&gt; &lt;xsl:for-each select="$nodeIds/value"&gt; &lt;xsl:copy-of select="umbraco.library:GetXmlNodeById(.)"/&gt; &lt;/xsl:for-each&gt; &lt;/xsl:variable&gt; &lt;xsl:variable name="nodes" select="msxml:node-set($preNodes)/node" /&gt; &lt;xsl:if test="count($nodes) &gt; 0"&gt;
&lt;div class="related-content"&gt;
&lt;h3&gt;Related Content&lt;/h3&gt;
&lt;ul&gt; &lt;xsl:for-each select="$nodes"&gt; &lt;li&gt; &lt;a href="{umbraco.library:NiceUrl(@id)}"&gt; &lt;xsl:value-of select="@nodeName" /&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/xsl:for-each&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;/xsl:if&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt;</pre>
<p>Here&#8217;s a quick explanation of what is happening in the XSLT. We are provided with a list of comma-separated nodeIds from the Ultimate Picker, which we need to parse/split &#8211; then pull back the XML node data, then we can transform it however we like!</p>
<p>The way we do this is 2-tiered, first we must loop through the comma-separated list, pulling back the XML node for each nodeId, adding it to an XSLT variable. Doing this will cause the XSLT variable to be a fragmented node-tree, which means that we need to convert the node-tree fragment into a node-set. (*Note: there are a gazillion ways to skin a cat &#8211; suggestions are welcome &#8211; this method works for me).</p>
<p>Once we have the complete XML node-set, we can transform into whatever HTML we like.</p>
<p>Now that we are done with the XSLT, we can edit our template in the &#8216;<strong>Settings</strong>&#8216; section. Select the &#8220;<em>Runway Textpage</em>&#8221; template. Somewhere after the &#8216;<em>bodyText</em>&#8216; property item, click on the &#8216;Insert Macro&#8217; button. From the &#8216;<strong>Choose a macro</strong>&#8216; drop-down, select the &#8216;<em>Related Content</em>&#8216; option &#8211; this will add the macro code to the template.</p>
<div id="attachment_167" class="wp-caption aligncenter" style="width:160px;"><a rel="nofollow" target="_blank" href="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-template.png"><img class="size-thumbnail wp-image-167" title="UltimatePicker-Template" src="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-template.png?w=150&#038;h=112" alt="Insert the macro into the template" width="150" height="112"/></a><p class="wp-caption-text">Insert the macro into the template</p></div>
<p>Save the template and view the front-end page. We can now see the <em>Related Content</em> pages. Tada!</p>
<div id="attachment_168" class="wp-caption aligncenter" style="width:310px;"><a rel="nofollow" target="_blank" href="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-frontend.png"><img class="size-medium wp-image-168" title="UltimatePicker-FrontEnd" src="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-frontend.png?w=300&#038;h=225" alt="The end result! Related Content" width="300" height="225"/></a><p class="wp-caption-text">The end result! Related Content</p></div> Tagged: Data Types, Template, Tutorial, Ultimate Picker, Umbraco, XSLT <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/leekelleher.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leekelleher.wordpress.com/157/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/leekelleher.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leekelleher.wordpress.com/157/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/leekelleher.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leekelleher.wordpress.com/157/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/leekelleher.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leekelleher.wordpress.com/157/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/leekelleher.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leekelleher.wordpress.com/157/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&blog=2580820&post=157&subd=leekelleher&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6a8e6348aa8c014a012bde96c9b04270?s=96&amp;amp;d=monsterid&amp;amp;r=G" medium="image">
            <media:title>vertino</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-datatype.png?w=150" medium="image">
            <media:title>UltimatePicker-DataType</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-doctype.png?w=150" medium="image">
            <media:title>UltimatePicker-DocType</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-relatedcontent.png?w=150" medium="image">
            <media:title>UltimatePicker-RelatedContent</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-createmacro.png?w=150" medium="image">
            <media:title>UltimatePicker-CreateMacro</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-xslt.png?w=150" medium="image">
            <media:title>UltimatePicker-XSLT</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-template.png?w=150" medium="image">
            <media:title>UltimatePicker-Template</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/09/ultimatepicker-frontend.png?w=300" medium="image">
            <media:title>UltimatePicker-FrontEnd</media:title>
         </media:content>
      </item>
      <item>
         <title>our.umbraco.org maintenance</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/Z-DB_1MF1c4/27677</link>
         <description>&lt;p&gt;
At around noon today, we will take &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org&quot;&gt;our.umbraco.org&lt;/a&gt; offline for a couple of hours to perform some maintenance upgrades and bug fixes, do not panic, we will be right back.
&lt;/p&gt; &lt;p&gt;
We know this is hard on some of our community members, so here is a list of suggested things to do instead of refreshing our.umbraco.org every 10 seconds:
&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Submit your work to the list of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org/tour/sites-running-umbraco&quot;&gt;sites running umbraco&lt;/a&gt;&lt;/li&gt; &lt;li&gt;View the new list of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org/solution-providers/find-solution-providers&quot;&gt;umbraco solution providers &lt;/a&gt;&lt;/li&gt; &lt;li&gt;Twitter &quot;Congratulations&quot; to Mr. Tim Geyssens, who started working fulltime at umbraco this monday.&lt;/li&gt; &lt;/ul&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=Z-DB_1MF1c4:4y42skubl_8:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=Z-DB_1MF1c4:4y42skubl_8:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=Z-DB_1MF1c4:4y42skubl_8:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/Z-DB_1MF1c4&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Chris Houston</author>
         <guid isPermaLink="false">http://umbraco.org/27677</guid>
         <pubDate>Tue, 08 Sep 2009 02:20:53 -0700</pubDate>
      </item>
      <item>
         <title>ERROR CREATING CONTROL FOR NODETYPE: Media</title>
         <link>http://www.prolificnotion.co.uk/index.php/2009/09/07/error-creating-control-for-nodetype-media/</link>
         <description>I have just finished another upgrade from umbraco 3.06 to v4.0.2.1 and hit a snag whereby whenever a user attempted to add a new media item after the upgrade they were presented with the exception: &quot;ERROR CREATING CONTROL FOR NODETYPE: Media&quot; Related posts:&lt;ol&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/09/21/media-sorter-for-umbraco/' title='Permanent Link: Media Sorter for Umbraco'&gt;Media Sorter for Umbraco&lt;/a&gt; &lt;small&gt;The package essentially adds a new context menu item to...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/02/09/umbraco-v4-upgrade-problem-with-plesk-hosting/' title='Permanent Link: Umbraco v4 Upgrade Problem with Plesk Hosting'&gt;Umbraco v4 Upgrade Problem with Plesk Hosting&lt;/a&gt; &lt;small&gt;A project I am working on currently is hosted on...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/03/15/drupal-fatal-error-allowed-memory-size-of-x-bytes-exhausted/' title='Permanent Link: Drupal : Fatal error: Allowed memory size of X bytes exhausted'&gt;Drupal : Fatal error: Allowed memory size of X bytes exhausted&lt;/a&gt; &lt;small&gt;A project I am currently working on needs the facility...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt; Related posts brought to you by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.</description>
         <guid isPermaLink="false">http://www.prolificnotion.co.uk/?p=197</guid>
         <pubDate>Mon, 07 Sep 2009 02:38:42 -0700</pubDate>
         <content:encoded><![CDATA[<p>I have just finished another upgrade from umbraco 3.06 to v4.0.2.1 and hit a snag whereby whenever a user attempted to add a new media item after the upgrade they were presented with the following exception:</p>
<p><span> </span></p>
<h2><em>ERROR CREATING CONTROL FOR NODETYPE: Media</em></h2>
<p><span style="font-family:Arial, Helvetica, Geneva, sans-serif;"><strong>Description: </strong>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.</span></p>
<p><strong>Exception Details: </strong>System.ArgumentException: ERROR CREATING CONTROL FOR NODETYPE: Media</p>
<p><strong>Source Error:</strong></p>
<table border="0" width="100%" bgcolor="#ffffcc">
<tbody>
<tr>
<td><code>An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.</code></td>
</tr>
</tbody>
</table>
<p><span style="font-family:Arial, Helvetica, Geneva, sans-serif;"><br />
<strong>Stack Trace:</strong></span></p>
<table border="0" width="100%" bgcolor="#ffffcc">
<tbody>
<tr>
<td><code>
<pre>[ArgumentException: ERROR CREATING CONTROL FOR NODETYPE: Media] umbraco.cms.presentation.Create.Page_Load(Object sender, EventArgs e) +415 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33 System.Web.UI.Control.OnLoad(EventArgs e) +99 umbraco.BasePages.BasePage.OnLoad(EventArgs e) +12 System.Web.UI.Control.LoadRecursive() +47 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436</pre>
<p></code></td>
</tr>
</tbody>
</table>
<p>After a bit of digging I discovered the following <a rel="nofollow" title="Media: Error creating control for nodetype" target="_blank" href="http://www.codeplex.com/umbraco/WorkItem/View.aspx?WorkItemId=20341">Work Item on CodePlex</a> and the following comment from <a rel="nofollow" title="View the CodePlex profile for jvisch" target="_blank" href="http://www.codeplex.com/site/users/view/jvisch">jvisch</a> which provided me with the solution:</p>
<ol>
<li>Open the UI.xml file located in <strong>/umbraco/config/create</strong></li>
<li>Search for the node with the alias &#8216;<strong>media</strong>&#8216;</li>
<li>Change the alias to &#8216;Media&#8217; with a capital <strong>M</strong></li>
<li><strong><span style="font-weight:normal;">Save the file</span></strong></li>
<li><strong><span style="font-weight:normal;">Restart the website by making a slight change to the web.config file and saving it</span></strong></li>
</ol> <p>Related posts:<ol><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/09/21/media-sorter-for-umbraco/' title='Permanent Link: Media Sorter for Umbraco'>Media Sorter for Umbraco</a> <small>The package essentially adds a new context menu item to...</small></li><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/02/09/umbraco-v4-upgrade-problem-with-plesk-hosting/' title='Permanent Link: Umbraco v4 Upgrade Problem with Plesk Hosting'>Umbraco v4 Upgrade Problem with Plesk Hosting</a> <small>A project I am working on currently is hosted on...</small></li><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/03/15/drupal-fatal-error-allowed-memory-size-of-x-bytes-exhausted/' title='Permanent Link: Drupal : Fatal error: Allowed memory size of X bytes exhausted'>Drupal : Fatal error: Allowed memory size of X bytes exhausted</a> <small>A project I am currently working on needs the facility...</small></li></ol></p>
<p>Related posts brought to you by <a rel="nofollow" target="_blank" href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Scotland's first Umbraco Certified Solution Provider</title>
         <link>http://www.geckonewmedia.com/blog/2009/9/7/scotland's-first-umbraco-certified-solution-provider</link>
         <guid isPermaLink="false">http://www.geckonewmedia.com/blog/2009/9/7/scotland's-first-umbraco-certified-solution-provider</guid>
         <pubDate>Sun, 06 Sep 2009 20:20:05 -0700</pubDate>
         <content:encoded><![CDATA[Some great news : We've just been informed that we're the first Umbraco Certified Solution provider in Scotland.]]></content:encoded>
      </item>
      <item>
         <title>Umbraco tip of the week: &quot;Folder&quot; is not a good name for a documentType</title>
         <link>http://feedproxy.google.com/~r/cultiv/~3/BRc4jRP07DU/umbraco-tip-of-the-week-folder-is-not-a-good-name-for-a-documenttype</link>
         <author>Sebastiaan Janssen</author>
         <guid isPermaLink="false">http://www.cultiv.nl/blog/2009/9/6/umbraco-tip-of-the-week-folder-is-not-a-good-name-for-a-documenttype</guid>
         <pubDate>Sun, 06 Sep 2009 07:33:16 -0700</pubDate>
         <content:encoded><![CDATA[<p>This is a really short tip: Don't create a new documentType with
the alias "Folder". This alias has already been used by folders in
the media section.</p> <p>In normal day-to-day use this is not a problem, but it becomes
one when you try to programatically access the documentType by
alias (DocumentType.GetByAlias("Folder")). I ran into this problem
the other day and couldn't figure out why I was getting unexpected
results until I had a look at what the ID actually represented, a
media folder.</p>
<div class="feedflare">
<a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/cultiv?a=BRc4jRP07DU:Meuc_sljgX8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/cultiv?d=yIl2AUoC8zA" border="0"></a> <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/cultiv?a=BRc4jRP07DU:Meuc_sljgX8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/cultiv?i=BRc4jRP07DU:Meuc_sljgX8:F7zBnMyn0Lo" border="0"></a>
</div><img src="http://feeds.feedburner.com/~r/cultiv/~4/BRc4jRP07DU" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Be careful naming images for Umbraco media</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/pBG6g3RnCSw/be-careful-naming-images-for-umbraco-media.aspx</link>
         <description>&lt;p&gt;Well it's my first week at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.thefarmdigital.com.au/&quot;&gt;The FARM&lt;/a&gt; (who is now an &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org/solution-providers/find-solution-providers/the-farm&quot;&gt;Umbraco Solution Provider&lt;/a&gt;, we're the first in Australia!) I got to look at a bug which has been floating around for a while and no one could consistently replicate it or work out the problem.&lt;/p&gt;
&lt;p&gt;To summarize the bug, some of the images which the client was uploading into the Umbraco Media section, then linking into the Umbraco WYSIWYG editor were being shown as broken images.&lt;br /&gt;But only some images this was happening for, and we weren't quite sure which images were causing the problem and when we'd test with images they'd be fine.&lt;/p&gt;
&lt;p&gt;So we had the client show us how to do it, in front of us and then we could dig into it a bit more, and while doing so I found something unexpected.&lt;br /&gt;The problem was being caused by the image havine a file name like: &lt;strong&gt;MyImage_100x50.png&lt;/strong&gt;, but the WYSIWYG editor would show &lt;strong&gt;MyImage.png&lt;/strong&gt; as the URL. This obviously isn't right, so something was changing the image.&lt;/p&gt;
&lt;p&gt;While digging into the TinyMCE code I found out that when it displays images it does a check for the image width &amp;amp; height in the image name, and removes it.&lt;/p&gt;
&lt;p&gt;What... the... hell?! I'm looking at this code and I'm confused as anything about what's going on, I mean, why is it re-writing my image URL?&lt;br /&gt;Oddly enough though, the image worked correctly on the published site so it was even more confusing!&lt;/p&gt;
&lt;p&gt;After a quick email to the Umbraco core team I got a response from Niels stating that this code &lt;em&gt;is&lt;/em&gt; meant to be there, and doing exactly what it was doing.&lt;br /&gt;It turns out that when you go about resizing an image within TinyMCE itself Umbraco will then postfix the new dimensions into the URL in &lt;strong&gt;Width&lt;/strong&gt;x&lt;strong&gt;Height. &lt;/strong&gt;But since this isn't the &lt;em&gt;real&lt;/em&gt; image URL it has to later strip it out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So remember kids, don't put the image dimensions into the filename in Umbraco!&lt;/strong&gt;&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Thu, 03 Sep 2009 17:10:33 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Be careful naming images for Umbraco media</title>
         <link>http://farmcode.org/post/2009/09/03/Be-careful-naming-images-for-Umbraco-media.aspx</link>
         <description>&lt;p&gt;Well it's my first week at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.thefarmdigital.com.au/&quot;&gt;The FARM&lt;/a&gt; (who is now an &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org/solution-providers/find-solution-providers/the-farm&quot;&gt;Umbraco Solution Provider&lt;/a&gt;, we're the first in Australia!) I got to look at a bug which has been floating around for a while and no one could consistently replicate it or work out the problem.&lt;/p&gt;&lt;p&gt;To summarize the bug, some of the images which the client was uploading into the Umbraco Media section, then linking into the Umbraco WYSIWYG editor were being shown as broken images.&lt;br /&gt;But only some images this was happening for, and we weren't quite sure which images were causing the problem and when we'd test with images they'd be fine.&lt;/p&gt;&lt;p&gt;So we had the client show us how to do it, in front of us and then we could dig into it a bit more, and while doing so I found something unexpected.&lt;br /&gt;The problem was being caused by the image havine a file name like: &lt;strong&gt;MyImage_100x50.png&lt;/strong&gt;, but the WYSIWYG editor would show &lt;strong&gt;MyImage.png&lt;/strong&gt; as the URL. This obviously isn't right, so something was changing the image.&lt;/p&gt;&lt;p&gt;While digging into the TinyMCE code I found out that when it displays images it does a check for the image width &amp;amp; height in the image name, and removes it.&lt;/p&gt;&lt;p&gt;What... the... hell?! I'm looking at this code and I'm confused as anything about what's going on, I mean, why is it re-writing my image URL?&lt;br /&gt;Oddly enough though, the image worked correctly on the published site so it was even more confusing!&lt;/p&gt;&lt;p&gt;After a quick email to the Umbraco core team I got a response from Niels stating that this code &lt;em&gt;is&lt;/em&gt; meant to be there, and doing exactly what it was doing.&lt;br /&gt;It turns out that when you go about resizing an image within TinyMCE itself Umbraco will then postfix the new dimensions into the URL in &lt;strong&gt;Width&lt;/strong&gt;x&lt;strong&gt;Height. &lt;/strong&gt;But since this isn't the &lt;em&gt;real&lt;/em&gt; image URL it has to later strip it out.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;So remember kids, don't put the image dimensions into the filename in Umbraco!&lt;/strong&gt;&lt;/p&gt;</description>
         <author>tech.nospam@nospam.thefarmdigital.com.au (AaronPowell)</author>
         <guid isPermaLink="false">http://farmcode.org/post.aspx?id=8dab0d84-f578-46f5-9f95-7a2d40d4d080</guid>
         <pubDate>Wed, 02 Sep 2009 23:22:00 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Search Engine Sitemap for Umbraco (sitemap.xml)</title>
         <link>http://umbraco.masoodafzal.com/post/2009/09/02/Search-Engine-Sitemap-for-Umbraco-(sitemapxml).aspx</link>
         <description>&lt;p&gt;
Outputs an xml file (e.g. http://www.yourdomain.com/sitemap.xml) - Outputs an xml sitemap that can be submitted to Google and other search engines. - Compliant with the sitemap XML specification on http://www.sitemaps.org/protocol.php &lt;/p&gt; &lt;h2&gt;Adding Update Frequency and/or Priority (Optional)&lt;/h2&gt;
&lt;p&gt;
This package outputs the Url and the modified date&lt;br /&gt;
Add the update frequency and importance by adding these properties to your document types:
&lt;br /&gt;seSitemapChangeFreq
&lt;br /&gt;seSitemapPriority
&lt;br /&gt;
Valid values for change frequency: (always, hourly, daily, weekly, monthly, yearly, never)
&lt;br /&gt;
Valid values for priority: (0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0)
&lt;/p&gt; &lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;
(a). Add the following httpHandler to your web.config httpHandlers section
&lt;br /&gt;- configuration
&lt;br /&gt;-- system.web
&lt;br /&gt;--- httpHandlers
&lt;br /&gt;
&lt;br /&gt;&amp;lt;add verb=&quot;*&quot; path=&quot;sitemap.xml&quot;
type=&quot;MA.Umbraco.Web.SiteMapGenerator.SiteMapHttpHandler, MA.Umbraco.SiteMapGenerator&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;(b). In the IIS site for your site, do the following steps:
&lt;br /&gt; 1. Open Properties
&lt;br /&gt; 2. In the Virtual Directory or web site equivalent tab, select Configuration at the bottom of the panel.
&lt;br /&gt; 3. In the Mappings tab, click Add
&lt;br /&gt; 4. Add the following into the Executable field &quot;c:&amp;#92;windows&amp;#92;microsoft.net&amp;#92;framework&amp;#92;v2.0.50727&amp;#92;aspnet_isapi.dll&quot;
&lt;br /&gt; 5. Add &quot;.xml&quot; into the extension field
&lt;br /&gt; 6. Choose &quot;All Verbs&quot;
&lt;br /&gt; 7. Check &quot;Script Engine&quot; and uncheck &quot;Check that file exists&quot;
&lt;br /&gt; 8. Save by clicking OK
&lt;br /&gt;
&lt;br /&gt;(c). Test the sitemap e.g. http://www.yourdomain.com/sitemap.xml
&lt;/p&gt;
&lt;h2&gt;Download Umbraco Package for Sitemap&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.masoodafzal.com/file.axd?file=2009%2f9%2fSitemap.xml_1.0.zip&quot;&gt;Sitemap.xml_1.0.zip (5.28 kb)&lt;/a&gt;&lt;/p&gt;</description>
         <author>Masood</author>
         <guid isPermaLink="false">http://umbraco.masoodafzal.com/post.aspx?id=a3e21a08-9922-4da3-a507-3257d755a9cd</guid>
         <pubDate>Wed, 02 Sep 2009 16:01:00 -0700</pubDate>
      </item>
      <item>
         <title>Package repo updated with the best from our.umbraco.org</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/aSWBrruIUQA/27826</link>
         <description>&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects&quot;&gt;project page&lt;/a&gt; at our.umbraco.org is rapidly being filled with some excellent packages (even looks like we'll need to split them in categories, since the projects list is getting crowded).&lt;/p&gt; &lt;p&gt;Since we now have a clear overview of the projects and their value for the community (don't forget to hit the 'thumbs up' if you like a project) we'll be updating the package repository more often.&lt;/p&gt; &lt;p&gt;For our first update we've added 5 of the best rated (and stable) projects.&lt;/p&gt;
&lt;ul&gt; &lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/image-cropper&quot;&gt;Image Cropper&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/google-maps-datatype&quot;&gt;Google maps datatype&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/umbimport&quot;&gt;UmbImport&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/media-picker-with-preview&quot;&gt;Media Picker with Preview&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/config-tree&quot;&gt;Config Tree&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;p&gt;You can now download and install these directly from the integrated package repository.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=aSWBrruIUQA:LptoUo2MbhU:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=aSWBrruIUQA:LptoUo2MbhU:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=aSWBrruIUQA:LptoUo2MbhU:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/aSWBrruIUQA&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Chris Houston</author>
         <guid isPermaLink="false">http://umbraco.org/27826</guid>
         <pubDate>Wed, 02 Sep 2009 11:39:21 -0700</pubDate>
      </item>
      <item>
         <title>Umbraco Powered</title>
         <link>http://www.rickybeard.com/blog/2009/8/28/umbraco-powered.aspx</link>
         <description>&lt;p&gt;I recently finished a couple of projects that are powered by &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.umbraco.org/&quot;
 title=&quot;Umbraco CMS&quot;&gt;Umbraco&lt;/a&gt;&amp;nbsp;and I thought I would share
some details.&lt;/p&gt; &lt;p&gt;The first project is&amp;nbsp;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.nceexam.com&quot;
 title=&quot;NCEExam.com&quot;&gt;NCEExam.com&lt;/a&gt;, an online study and testing
system for the National Counselor Exam. This is version 3 of the
system and is the first version&amp;nbsp;to run on Umbraco (V4). There
were a lot of&amp;nbsp;unique challenges in this project such as
securing FLV videos and downloadable content, as well as a custom
shopping cart and e-commerce interface.&lt;/p&gt; &lt;p&gt;We will probably convert&amp;nbsp;our shopping cart to&amp;nbsp;&lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.codeplex.com/commerce4umbraco&quot;
 title=&quot;Commerce4Umbraco&quot;&gt;Commerce4Umbraco&lt;/a&gt; eventually. However,
it had not even reached the&amp;nbsp;alpha stage&amp;nbsp;when this site
launched.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.nceexam.com&quot; title=&quot;NCEExam.com&quot;
 class=&quot;screenshot&quot;&gt;http://www.nceexam.com&lt;img width=&quot;480&quot; height=&quot;334&quot; alt=&quot;NCEExam Screenshot&quot;/&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The second project is &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.tuttdaggs.com&quot;
 title=&quot;Tutt &amp;amp; Daggs&quot;&gt;Tutt &amp;amp; Daggs&lt;/a&gt;, a company
specializing in&amp;nbsp;workplace training and motivation for
educational institutions, large corporations and non-profit
organizations.&lt;/p&gt; &lt;p&gt;A couple of neat features were incorporated into this project. I
utilized a JQuery slider on the bios page along with a Light Box
gallery for promotional photos. Thanks to Umbraco, the client has
no trouble maintaining this site on their own.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.tuttdaggs.com&quot; title=&quot;Tutt &amp;amp; Daggs&quot;
 class=&quot;screenshot&quot;&gt;http://www.tuttdaggs.com&lt;img width=&quot;480&quot; height=&quot;334&quot; alt=&quot;TuttDaggs Screenshot&quot;/&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;It is always interesting to see how others are using &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.umbraco.org/&quot; title=&quot;Umbraco CMS&quot;&gt;Umbraco&lt;/a&gt; in
creative or innovative ways. If you have any projects you would
like to share, please pass them along.&lt;/p&gt;</description>
         <author>Ricky Beard</author>
         <guid isPermaLink="false">http://www.rickybeard.com/blog/2009/8/28/umbraco-powered.aspx</guid>
         <pubDate>Fri, 28 Aug 2009 08:56:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>I recently finished a couple of projects that are powered by <a rel="nofollow"
 target="_blank" href="http://www.umbraco.org/"
 title="Umbraco CMS">Umbraco</a>&nbsp;and I thought I would share
some details.</p> <p>The first project is&nbsp;<a rel="nofollow" target="_blank" href="http://www.nceexam.com"
 title="NCEExam.com">NCEExam.com</a>, an online study and testing
system for the National Counselor Exam. This is version 3 of the
system and is the first version&nbsp;to run on Umbraco (V4). There
were a lot of&nbsp;unique challenges in this project such as
securing FLV videos and downloadable content, as well as a custom
shopping cart and e-commerce interface.</p> <p>We will probably convert&nbsp;our shopping cart to&nbsp;<a rel="nofollow"
 target="_blank" href="http://www.codeplex.com/commerce4umbraco"
 title="Commerce4Umbraco">Commerce4Umbraco</a> eventually. However,
it had not even reached the&nbsp;alpha stage&nbsp;when this site
launched.</p> <p><a rel="nofollow" target="_blank" href="http://www.nceexam.com" title="NCEExam.com"
 class="screenshot">http://www.nceexam.com<img width="480" height="334" alt="NCEExam Screenshot"/></a></p> <p>The second project is <a rel="nofollow" target="_blank" href="http://www.tuttdaggs.com"
 title="Tutt &amp; Daggs">Tutt &amp; Daggs</a>, a company
specializing in&nbsp;workplace training and motivation for
educational institutions, large corporations and non-profit
organizations.</p> <p>A couple of neat features were incorporated into this project. I
utilized a JQuery slider on the bios page along with a Light Box
gallery for promotional photos. Thanks to Umbraco, the client has
no trouble maintaining this site on their own.</p> <p><a rel="nofollow" target="_blank" href="http://www.tuttdaggs.com" title="Tutt &amp; Daggs"
 class="screenshot">http://www.tuttdaggs.com<img width="480" height="334" alt="TuttDaggs Screenshot"/></a></p> <p>It is always interesting to see how others are using <a rel="nofollow"
 target="_blank" href="http://www.umbraco.org/" title="Umbraco CMS">Umbraco</a> in
creative or innovative ways. If you have any projects you would
like to share, please pass them along.</p>]]></content:encoded>
         <category>umbraco</category>
      </item>
      <item>
         <title>Simple Search 4 Umbraco v0.3 published</title>
         <link>http://blog.thoehler.com/2009/08/28/simple-search-4-umbraco-v03-published</link>
         <description>&lt;p&gt;I have published the version 0.3 of my Simple Search for
Umbraco.&lt;/p&gt; &lt;p&gt;This includes only two additional functions which gives you the
possibillity to add your own Search definition on runtime.&lt;/p&gt; &lt;p&gt;e.g.:&lt;/p&gt; &lt;pre&gt;
var sd = new SearchDefinition { IsDefault = true, IterationType = IterationType.IterateAll, Name = &quot;MySearchDefinition&quot; };
var dt = new DocumentType { Alias = &quot;blog.com.Post&quot;, Category = &quot;Blog Post&quot;, TestNodeName = true, IncludeChildNodes = false };
sd.DocumentTypes.Add(dt);
dt.Properties.Add(new Property { Alias = &quot;bodyText&quot;, ComparisonType = ComparisonType.String, Comparison = Comparison.Contains });
dt.Properties.Add(new Property { Alias = &quot;umbracoTags&quot;, ComparisonType = ComparisonType.String, Comparison = Comparison.Contains });
var searcher = new Searcher();
searcher.Search(sd, &quot;PHRASE TO SEARCH&quot;, null);
&lt;/pre&gt; &lt;p&gt;Download it from &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://simplesearch4umbraco.codeplex.com&quot;
&gt;Codeplex&lt;/a&gt; or from &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/simple-search-for-umbraco&quot;
&gt;our.umbraco.org&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Feedback is welcome,&lt;/p&gt; &lt;p&gt;Thomas&lt;/p&gt;</description>
         <author>th@thoehler.com (Thomas Höhler)</author>
         <guid isPermaLink="false">http:///2009/08/28/simple-search-4-umbraco-v03-published</guid>
         <pubDate>Fri, 28 Aug 2009 04:02:01 -0700</pubDate>
      </item>
      <item>
         <title>Do you feel obligated to open source your Umbraco package?</title>
         <link>http://blog.sitereactor.dk/2009/08/27/do-you-feel-obligated-to-open-source-your-umbraco-package/</link>
         <description>I have been thinking about this subject for some time now, but todays tweets got me thinking and I thought I&amp;#8217;d write up a post to hopefully stir up some discussion.
Maybe I should start off by saying that i&amp;#8217;m not a money hungry developer, but I think that we can all agree that even though [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=blog.sitereactor.dk&amp;blog=4531466&amp;post=95&amp;subd=elpadrinodk&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://blog.sitereactor.dk/?p=95</guid>
         <pubDate>Thu, 27 Aug 2009 13:10:28 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>I have been thinking about this subject for some time now, but todays tweets got me thinking and I thought I&#8217;d write up a post to <strong>hopefully stir up some discussion</strong>.</p>
<p>Maybe I should start off by saying that i&#8217;m not a money hungry developer, but I think that we can all agree that even though we are working with an open source CMS, we have to make money some how some way. Of course we get paid when developing a customer solution, but it seems to me that things are a bit different when developing addons, plugins, packages, datatypes and everything else that has been developed by and for the Umbraco community.</p>
<p>Currently there are two packages available for purchase in the Umbraco store, and I counted 68 packages on our.umbraco.org today.<br />
Don&#8217;t get me wrong, I love the fact that so many people are contributing with a lot of great stuff that is free to install and use. I personally used <strong>Warren</strong>&#8217;s <strong>CWS</strong> package to get up to speed on Umbraco v.4 after not having used Umbraco since v.3.0.3. I think it is a great resource, but I probably wouldn&#8217;t have bought it if it was only available for purchase in the Umbraco store. No offense Warren <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley'/> </p>
<p>I myself started a pretty big project (at least for a spare time project) by developing Google Analytics for Umbraco, which is open sourced and thus free for all <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley'/> I thought about different models for getting a bit of return on creating a fairly large project, but ultimately decided that it should be open sourced. Partly because Google Analytics is already free to use, so it seem to be the best incentive to make the Umbraco package free as well &#8211; even though it might have greater value for some. Another part of the decision has to do with installbase and getting the package out there &#8211; won&#8217;t go into details, but sometimes its just nice to share your shit.<br />
<a rel="nofollow" title="Axendo website" target="_blank" href="http://www.axendo.nl">Axendo</a>, who have also created an Analytics plugin for Umbraco, have chosen to make a limited free version and a paid version, which I think is a cleaver thing to do. I hope the good guys at <strong>Axendo</strong> are not pissed of by me making my package open source and free, but hopefully they&#8217;ll still be able to sell their package, and they could actually use my source in their product should they want to do so in the future.<br />
I would personally find it cool if someone would want to adopt my Google Analytics for Umbraco package, and I would encourage all Solution Providers and Developers to make some money on implementing the Google Analytics section in customer solutions. In my latest offer to a new client I included a couple of packages from our.umbraco.org, which I think will be a win win situation for all: the client will get some very useful tools (free) and we (the solution provider) got some extra hours in on implementation.</p>
<p>Making a package free, open source or paid is ultimately up to the developer. One might think that because the CMS is free so should the addons. Well, not necessarily! Take a great addon like <strong>uCommerce</strong> which will definatly not be free, this product has a clear incentive for customers to buy it. I won&#8217;t go into details about uCommerce but I would love to hear <strong>Søren</strong>&#8217;s thoughts on selling an addon for an open source CMS <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley'/> </p>
<p>Over the next six month I will be developing a couple of addons for Umbraco (got the ideas, just need the time), which will all be open source and made in my spare time. The main reason for these addons being open source is that the counter part or the part that will be integrated with Umbraco is also open source. I&#8217;m also hoping that the fact that the addons are free to install will help them spread and thus create a greater installbase. This could of course also be done with a limited free version and a paid full version, but I&#8217;m somehow not entirely sure that would work for the addons in question.<br />
So how do I get paid for spending a lot of spare time creating great addons? Should I get paid? Isn&#8217;t the gift of giving enough? <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley'/><br />
Well, a sponsor-an-umbraco-dev program would be great but I don&#8217;t know who would actually sponsor my work, so maybe selling support/upgrades/feature request implementations would be a better solution?</p>
<p>I personally think that when the good guys at Umbraco start selling the Forms module, it will make it easier for other developers to sell their packages, addons, plugins or whatever. Would also love to hear <strong>Niels</strong>&#8216; thoughts on this &#8211; do you think that <strong>Umbraco Corp.</strong> in a sense will lead the pack and in some way encourage customers/users to pay for addons?<br />
When a customer sees what great stuff he can get for a reasonable amount of money he probably won&#8217;t have a problem paying for it even though he &#8220;bought&#8221; an open source CMS in the first place, right?</p>
<p>So what do you think? Do you feel obligated to open source your Umbraco package or simply make it available for free? Are all the packages on our.umbraco.org not worth paying for? Are you hoping that all packages for Umbraco will always be free to install and use?</p>
<p>Please share your thoughts, as I would love to hear what others think about this subject.</p>
<p><strong>Darren Ferguson</strong>, you are one of the few people with packages in the store. What are your thoughts?</p>
<p><strong>Tommy Poulsen</strong>, you are making a great addon with the PDF creator. Do you intend to sell this addon or contribute it as a free to use package on our.umbraco.org and why?</p>
<p>Other package developers: Do you ultimately feel it depends on the content/usability of the package whether it should be free or paid?</p>
<p>I hope I didn&#8217;t make this post too much about money, but rather what makes developers or solution providers choose to make an Umbraco package free, paid or open source and how they get compensated for their work (via implementation for example?).</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/elpadrinodk.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elpadrinodk.wordpress.com/95/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/elpadrinodk.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elpadrinodk.wordpress.com/95/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/elpadrinodk.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elpadrinodk.wordpress.com/95/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/elpadrinodk.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elpadrinodk.wordpress.com/95/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/elpadrinodk.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elpadrinodk.wordpress.com/95/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.sitereactor.dk&blog=4531466&post=95&subd=elpadrinodk&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f305913988b266785d5fc76dda14ff62?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>Morten Christensen</media:title>
         </media:content>
      </item>
      <item>
         <title>Umbraco 4.1 Alpha release</title>
         <link>http://feedproxy.google.com/~r/LinqToAaronPowell/~3/Naw6_H21t_8/umbraco-41-alpha-release.aspx</link>
         <description>&lt;p&gt;If you're not following Niels on Twitter you may have missed that Umbraco 4.1 Alpha was released on the 17th of August, which you can download &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=21100#DownloadId=79495&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Keep in mind that this is just an &lt;strong&gt;Alpha&lt;/strong&gt;&amp;nbsp;release, so there's quite possibly bugs. What we want is people to test this, and log bugs. If you do find a bug please log it on Codeplex &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.com/WorkItem/Create.aspx&quot;&gt;here&lt;/a&gt;&amp;nbsp;(make sure you select 4.1 Alpha as the release too).&lt;/p&gt;
&lt;p&gt;If you have any generalized feedback or things you'd like looked at which are not really bugs drop us a line on the forum, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/forum/core/41-feedback&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;But what's new in the 4.1 alpha? Well here's the list of new features and changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Upgrade of the project to require .NET 3.5 SP1&lt;/li&gt;
&lt;li&gt;TinyMCE spellchecker using Google as the spelling source&lt;/li&gt;
&lt;li&gt;New backend tree which uses jTree and maintains state between applications&lt;/li&gt;
&lt;li&gt;LINQ to Umbraco&lt;/li&gt;
&lt;li&gt;Client Dependancy framework (see:&amp;nbsp;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://clientdependency.codeplex.com/&quot;&gt;http://clientdependency.codeplex.com/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Reduced size of Umbraco itself (there's quite a number of removed files, I'll post that info at the bottom)&lt;/li&gt;
&lt;li&gt;Extended UmbracContext, including an UmbracoRequest, UmbracoResponse and UmbracoServer&lt;/li&gt;
&lt;li&gt;Document.BeforeSave event fires... BEFORE SAVING :O&lt;/li&gt;
&lt;li&gt;New manner of accessing Document properties:
&lt;ul&gt;
&lt;li&gt;var prop = myDoc[&quot;property_alias&quot;];&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ability to delay saving of document properties until Save is called (using the ctor Document(bool OptimizedMode, int id))&lt;/li&gt;
&lt;li&gt;When using the packager and importing Macros or Stylesheets they are updated when aliases match, not just created&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That's all the features I can think of off the top of my head, if I've missed anything let me know and I'll update the list.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As I mentioned in the list there's a stack of removed files which we'd deemed were no longer being using within Umbraco or by the community. Shannon is in charge of that one, and all the removed components are being migrated into the project &lt;strong&gt;umbraco.legacy&lt;/strong&gt;, so if you find a missing component you may need that.&lt;/p&gt;
&lt;p&gt;But the list of what are quite likely to be breaking changed are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DataType 'editor' was removed (editor.cs)&lt;/li&gt;
&lt;li&gt;WysiwygDataType was removed&lt;/li&gt;
&lt;li&gt;CheckBoxTree.cs removed&lt;/li&gt;
&lt;li&gt;windowCloser.cs removed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There's a text file on codeplex in the 4.1 branch which has all the changes listed which Shannon is undertaking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Happy testing :D&lt;/strong&gt;&lt;/p&gt;</description>
         <author>Aaron Powell</author>
         <guid isPermaLink="false"></guid>
         <pubDate>Wed, 26 Aug 2009 18:34:15 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Hi, I'm Ricky. You Found Me!</title>
         <link>http://www.rickybeard.com/blog/2009/8/26/hi,-i'm-ricky-you-found-me!.aspx</link>
         <description>&lt;p&gt;Well, after several years of putting it off, I finally have a
blog up and running. My plan is to concentrate on the wonderful
language that is C# (and other .NET stuff from time to time) and
the last CMS you will ever need, Umbraco.&lt;/p&gt; &lt;p&gt;If you are a .NET developer and you have never heard of Umbraco,
you really should &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.umbraco.org&quot;
 title=&quot;Umbraco's Official Site&quot;&gt;check it out&lt;/a&gt;. In fact, this
entire site is built on Umbraco and a modified version of the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.nibble.be/?p=57&quot; title=&quot;Blog for Umbraco 4&quot;&gt;Blog
for Umbraco 4 package&lt;/a&gt; by Tim Geyssens.&lt;/p&gt; &lt;p&gt;If you are familiar with Umbraco and need to get a blog up and
running, I highly recommend starting with Blog for Umbraco 4. It
will save you a lot of time and energy. You can find it in the
Umbraco Package Repository.&lt;/p&gt; &lt;p&gt;I made some pretty major modifications to the Document Types,
Master Pages, CSS, JS and XSLT. I also created a new comment form
that better suited my needs. However, this was all extremely easy
thanks to the flexibility of Umbraco and Tim's rather open
architecture. Tim, if you ever read this, thanks a million for
sharing!&lt;/p&gt; &lt;p&gt;One modification I made that I would like to pass along is in
the XSLT for listing blog comments. Even though the current XSLT in
the package specifies a height and width for the gravatars, these
parameters are being ignored by the gravatar API because the XSLT
is generating double ampersands between them.&lt;/p&gt; &lt;p&gt;As you can see below, I wrote what I consider to be a pretty
ugly workaround.&lt;/p&gt; &lt;pre class=&quot;brush:xml&quot;&gt;
&amp;lt;xsl:text disable-output-escaping=&quot;yes&quot;&amp;gt; &amp;lt;![CDATA[&amp;lt;img class=&quot;gravatar&quot; src=&quot;]]&amp;gt;
&amp;lt;/xsl:text&amp;gt;
&amp;lt;xsl:value-of select=&quot;BlogLibrary:getGravatar(data [@alias = 'email'], 30, '{your default image}')&quot; disable-output-escaping=&quot;yes&quot;/&amp;gt;
&amp;lt;xsl:text disable-output-escaping=&quot;yes&quot;&amp;gt; &amp;lt;![CDATA[&quot; alt=&quot;Gravatar of ]]&amp;gt;&amp;lt;/xsl:text&amp;gt;
&amp;lt;xsl:value-of select=&quot;data [@alias = 'name']&quot; disable-output-escaping=&quot;yes&quot;/&amp;gt;
&amp;lt;xsl:text disable-output-escaping=&quot;yes&quot;&amp;gt; &amp;lt;![CDATA[&quot; /&amp;gt;]]&amp;gt;
&amp;lt;/xsl:text&amp;gt;
&lt;/pre&gt; &lt;p&gt;CDATA everywhere!&lt;/p&gt; &lt;p&gt;If anyone has a better solution, I am all ears!&lt;/p&gt;</description>
         <author>Ricky Beard</author>
         <guid isPermaLink="false">http://www.rickybeard.com/blog/2009/8/26/hi,-i'm-ricky-you-found-me!.aspx</guid>
         <pubDate>Wed, 26 Aug 2009 10:49:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>Well, after several years of putting it off, I finally have a
blog up and running. My plan is to concentrate on the wonderful
language that is C# (and other .NET stuff from time to time) and
the last CMS you will ever need, Umbraco.</p> <p>If you are a .NET developer and you have never heard of Umbraco,
you really should <a rel="nofollow" target="_blank" href="http://www.umbraco.org"
 title="Umbraco's Official Site">check it out</a>. In fact, this
entire site is built on Umbraco and a modified version of the <a rel="nofollow"
 target="_blank" href="http://www.nibble.be/?p=57" title="Blog for Umbraco 4">Blog
for Umbraco 4 package</a> by Tim Geyssens.</p> <p>If you are familiar with Umbraco and need to get a blog up and
running, I highly recommend starting with Blog for Umbraco 4. It
will save you a lot of time and energy. You can find it in the
Umbraco Package Repository.</p> <p>I made some pretty major modifications to the Document Types,
Master Pages, CSS, JS and XSLT. I also created a new comment form
that better suited my needs. However, this was all extremely easy
thanks to the flexibility of Umbraco and Tim's rather open
architecture. Tim, if you ever read this, thanks a million for
sharing!</p> <p>One modification I made that I would like to pass along is in
the XSLT for listing blog comments. Even though the current XSLT in
the package specifies a height and width for the gravatars, these
parameters are being ignored by the gravatar API because the XSLT
is generating double ampersands between them.</p> <p>As you can see below, I wrote what I consider to be a pretty
ugly workaround.</p> <pre class="brush:xml">
&lt;xsl:text disable-output-escaping="yes"&gt; &lt;![CDATA[&lt;img class="gravatar" src="]]&gt;
&lt;/xsl:text&gt;
&lt;xsl:value-of select="BlogLibrary:getGravatar(data [@alias = 'email'], 30, '{your default image}')" disable-output-escaping="yes"/&gt;
&lt;xsl:text disable-output-escaping="yes"&gt; &lt;![CDATA[" alt="Gravatar of ]]&gt;&lt;/xsl:text&gt;
&lt;xsl:value-of select="data [@alias = 'name']" disable-output-escaping="yes"/&gt;
&lt;xsl:text disable-output-escaping="yes"&gt; &lt;![CDATA[" /&gt;]]&gt;
&lt;/xsl:text&gt;
</pre> <p>CDATA everywhere!</p> <p>If anyone has a better solution, I am all ears!</p>]]></content:encoded>
      </item>
      <item>
         <title>Taming Tag URLs with UrlRewrite</title>
         <link>http://www.rickybeard.com/blog/2009/8/26/taming-tag-urls-with-urlrewrite.aspx</link>
         <description>&lt;p&gt;After installing the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.nibble.be/?p=57&quot;
 title=&quot;Blog for Umbraco 4&quot;&gt;Blog&amp;nbsp;for Umbraco 4&lt;/a&gt;&amp;nbsp;package
by Tim Geyssens, I noticed that the links generated in the tags
menu&amp;nbsp;were simply using query parameters instead of friendly
URLs.&amp;nbsp;I would prefer them&amp;nbsp;to look like this:
&lt;strong&gt;/blog/tag/tagname.aspx&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;The good news is that Umbraco already&amp;nbsp;uses &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.urlrewriting.net/149/en/home.html&quot;
 title=&quot;UrlRewritingNet.UrlRewrite&quot;&gt;UrlRewritingNet.UrlRewrite&lt;/a&gt;
to create friendly URLs, so everything we need to get this working
is already in place. After brushing up a bit on&amp;nbsp;regular
expressions I came up with the following two step solution.&lt;/p&gt; &lt;p&gt;First, I added the following filter to
&lt;strong&gt;/config/UrlRewriting.config&lt;/strong&gt;.&lt;/p&gt; &lt;pre&gt;
&amp;lt;add name=&quot;tagfilter&quot; virtualUrl=&quot;^~/blog/tag/(.*).aspx&quot; rewriteUrlParameter=&quot;ExcludeFromClientQueryString&quot; destinationUrl=&quot;~/blog.aspx?filterBy=$1&quot; ignoreCase=&quot;true&quot;
/&amp;gt;
&lt;/pre&gt; &lt;p&gt;Then I modified &lt;strong&gt;BlogTags.xslt&lt;/strong&gt; to generate the
correct URL for each tag.&lt;/p&gt; &lt;pre&gt;
&amp;lt;a href=&quot;{link}/blog/tag/{current()}.aspx&quot;&amp;gt;&amp;lt;xsl:value-of select=&quot;current()&quot;/&amp;gt;&amp;nbsp;(&amp;lt;xsl:value-of select=&quot;@nodesTagged&quot;/&amp;gt;)&amp;lt;/a&amp;gt;
&lt;/pre&gt; &lt;p&gt;There you have it.&amp;nbsp;Now my tag&amp;nbsp;URLs are all search
engine friendly and it only took about&amp;nbsp;two minutes!&lt;/p&gt;</description>
         <author>Ricky Beard</author>
         <guid isPermaLink="false">http://www.rickybeard.com/blog/2009/8/26/taming-tag-urls-with-urlrewrite.aspx</guid>
         <pubDate>Wed, 26 Aug 2009 10:49:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>After installing the <a rel="nofollow" target="_blank" href="http://www.nibble.be/?p=57"
 title="Blog for Umbraco 4">Blog&nbsp;for Umbraco 4</a>&nbsp;package
by Tim Geyssens, I noticed that the links generated in the tags
menu&nbsp;were simply using query parameters instead of friendly
URLs.&nbsp;I would prefer them&nbsp;to look like this:
<strong>/blog/tag/tagname.aspx</strong>.</p> <p>The good news is that Umbraco already&nbsp;uses <a rel="nofollow"
 target="_blank" href="http://www.urlrewriting.net/149/en/home.html"
 title="UrlRewritingNet.UrlRewrite">UrlRewritingNet.UrlRewrite</a>
to create friendly URLs, so everything we need to get this working
is already in place. After brushing up a bit on&nbsp;regular
expressions I came up with the following two step solution.</p> <p>First, I added the following filter to
<strong>/config/UrlRewriting.config</strong>.</p> <pre>
&lt;add name="tagfilter" virtualUrl="^~/blog/tag/(.*).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/blog.aspx?filterBy=$1" ignoreCase="true"
/&gt;
</pre> <p>Then I modified <strong>BlogTags.xslt</strong> to generate the
correct URL for each tag.</p> <pre>
&lt;a href="{link}/blog/tag/{current()}.aspx"&gt;&lt;xsl:value-of select="current()"/&gt;&nbsp;(&lt;xsl:value-of select="@nodesTagged"/&gt;)&lt;/a&gt;
</pre> <p>There you have it.&nbsp;Now my tag&nbsp;URLs are all search
engine friendly and it only took about&nbsp;two minutes!</p>]]></content:encoded>
      </item>
      <item>
         <title>Nunchuck Skills: Hack Your Head</title>
         <link>http://www.rickybeard.com/blog/2009/8/26/nunchuck-skills-hack-your-head.aspx</link>
         <description>&lt;p&gt;There are times when I need to use a particular script or style
sheet temporarily and only on a portion of&amp;nbsp;the site. This is
especially true with a blog.&lt;/p&gt; &lt;p&gt;For example, if you use &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://alexgorbatchev.com/wiki/SyntaxHighlighter&quot;
 title=&quot;SyntaxHighlighter&quot;&gt;SyntaxHighlighter&lt;/a&gt;, you could use up
to 21 brush scripts, plus the core script and theme style
sheet.&amp;nbsp;That makes for a lot of references in the head
tag.&amp;nbsp; That is why I almost always add the
following&amp;nbsp;inside the &lt;strong&gt;&amp;lt;head&amp;gt;&lt;/strong&gt; tag in my
top lever master page between the style sheet and script
references.&lt;/p&gt; &lt;pre&gt;
&amp;lt;asp:ContentPlaceHolder Id=&quot;head&quot; runat=&quot;server&quot;&amp;gt;
&amp;lt;!-- extra references load from child --&amp;gt;
&amp;lt;/asp:ContentPlaceHolder&amp;gt;
&lt;/pre&gt; &lt;p&gt;This allows me to specify any extra/temporary css or script
references in&amp;nbsp;the child template. In this example I even
passed in the javascript function to generate a lightbox.&lt;/p&gt; &lt;pre&gt;
&amp;lt;asp:Content ContentPlaceHolderID=&quot;head&quot; runat=&quot;server&quot;&amp;gt; &amp;lt;link href=&quot;/css/temp.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt; &amp;lt;script type=&quot;text/javascript&quot; src=&quot;/scripts/jquery.lightbox-0.5.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script type=&quot;text/javascript&quot;&amp;gt; $(function() { $('#gallery a').lightBox(); }); &amp;lt;/script&amp;gt;
&amp;lt;/asp:Content&amp;gt;
&lt;/pre&gt; &lt;p&gt;I&amp;nbsp;know this isn't groundbreaking, but it is a really great
tip for anyone just starting out with Umbraco or master pages.&lt;/p&gt;</description>
         <author>Ricky Beard</author>
         <guid isPermaLink="false">http://www.rickybeard.com/blog/2009/8/26/nunchuck-skills-hack-your-head.aspx</guid>
         <pubDate>Wed, 26 Aug 2009 10:49:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>There are times when I need to use a particular script or style
sheet temporarily and only on a portion of&nbsp;the site. This is
especially true with a blog.</p> <p>For example, if you use <a rel="nofollow"
 target="_blank" href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"
 title="SyntaxHighlighter">SyntaxHighlighter</a>, you could use up
to 21 brush scripts, plus the core script and theme style
sheet.&nbsp;That makes for a lot of references in the head
tag.&nbsp; That is why I almost always add the
following&nbsp;inside the <strong>&lt;head&gt;</strong> tag in my
top lever master page between the style sheet and script
references.</p> <pre>
&lt;asp:ContentPlaceHolder Id="head" runat="server"&gt;
&lt;!-- extra references load from child --&gt;
&lt;/asp:ContentPlaceHolder&gt;
</pre> <p>This allows me to specify any extra/temporary css or script
references in&nbsp;the child template. In this example I even
passed in the javascript function to generate a lightbox.</p> <pre>
&lt;asp:Content ContentPlaceHolderID="head" runat="server"&gt; &lt;link href="/css/temp.css" rel="stylesheet" type="text/css" /&gt; &lt;script type="text/javascript" src="/scripts/jquery.lightbox-0.5.min.js"&gt;&lt;/script&gt; &lt;script type="text/javascript"&gt; $(function() { $('#gallery a').lightBox(); }); &lt;/script&gt;
&lt;/asp:Content&gt;
</pre> <p>I&nbsp;know this isn't groundbreaking, but it is a really great
tip for anyone just starting out with Umbraco or master pages.</p>]]></content:encoded>
      </item>
      <item>
         <title>Update Application Tree Package Action for Umbraco</title>
         <link>http://www.prolificnotion.co.uk/index.php/2009/08/23/update-application-tree-package-action-for-umbraco/</link>
         <description>I have recently been working on another package for the Umbraco CMS. During the course of packaging the extension I hit a problem with the existing package actions that were available via the core and the PackageActionContrib project. Related posts:&lt;ol&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/09/21/media-sorter-for-umbraco/' title='Permanent Link: Media Sorter for Umbraco'&gt;Media Sorter for Umbraco&lt;/a&gt; &lt;small&gt;The package essentially adds a new context menu item to...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/02/09/umbraco-v4-upgrade-problem-with-plesk-hosting/' title='Permanent Link: Umbraco v4 Upgrade Problem with Plesk Hosting'&gt;Umbraco v4 Upgrade Problem with Plesk Hosting&lt;/a&gt; &lt;small&gt;A project I am working on currently is hosted on...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://www.prolificnotion.co.uk/index.php/2009/08/15/converting-a-visual-studio-class-library-project-to-a-web-application-project/' title='Permanent Link: Converting a Visual Studio Class Library Project to a Web Application Project'&gt;Converting a Visual Studio Class Library Project to a Web Application Project&lt;/a&gt; &lt;small&gt;I started working on a new Umbraco package a while...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt; Related posts brought to you by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.</description>
         <guid isPermaLink="false">http://blog.prolificnotion.co.uk/?p=156</guid>
         <pubDate>Sun, 23 Aug 2009 14:02:05 -0700</pubDate>
         <content:encoded><![CDATA[<p>I have recently been working on another package for the <a rel="nofollow" title="Find out more about the Umbraco CMS" target="_blank" href="http://umbraco.org/">Umbraco CMS</a>. During the course of packaging the extension <a rel="nofollow" title="View the forum post about the problem I encountered" target="_blank" href="http://our.umbraco.org/forum/developers/extending-umbraco/3530-Package-Action-ExecuteSql-on-Uninstall-not-working">I hit a problem with the existing package actions</a> that were available via the core and the <a rel="nofollow" title="Read more about the PackageActionsContrib project" target="_blank" href="http://packageactioncontrib.codeplex.com/">PackageActionContrib</a> project. You can easily <a rel="nofollow" title="MOre about the Add Application Tree package action" target="_blank" href="http://our.umbraco.org/wiki/reference/packaging/package-actions/add-application-tree">add an Application Tree</a> but none of them could successfully update an existing Application Tree during the uninstall process. As my package action modified an existing application tree in order to add a custom menu item I needed to write a new package action that could do this at install and then revert it during the uninstall process.</p>
<p>You can download the <a rel="nofollow" target="_blank" href="http://www.prolificnotion.co.uk/downloads/ProlificNotion.Umbraco.PackageActions.zip">Update Application Tree Package Action</a> and with a bit of luck this issue can be addressed at some point in the future or my package action can be submitted to the <a rel="nofollow" title="Read more about the PackageActionsContrib project" target="_blank" href="http://packageactioncontrib.codeplex.com/">PackageActionContrib</a> project for consideration. Make sure you drop the dll into your bin folder before you need to use the action.</p>
<p>Example package action usage:</p>
<pre>&lt;action runat="uninstall" undo="false" alias="UpdateAppTree" treeAlias="media" treeHandlerAssembly="umbraco" treeHandlerType="loadMedia" /&gt;</pre> <p>Related posts:<ol><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/09/21/media-sorter-for-umbraco/' title='Permanent Link: Media Sorter for Umbraco'>Media Sorter for Umbraco</a> <small>The package essentially adds a new context menu item to...</small></li><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/02/09/umbraco-v4-upgrade-problem-with-plesk-hosting/' title='Permanent Link: Umbraco v4 Upgrade Problem with Plesk Hosting'>Umbraco v4 Upgrade Problem with Plesk Hosting</a> <small>A project I am working on currently is hosted on...</small></li><li><a rel="nofollow" target="_blank" href='http://www.prolificnotion.co.uk/index.php/2009/08/15/converting-a-visual-studio-class-library-project-to-a-web-application-project/' title='Permanent Link: Converting a Visual Studio Class Library Project to a Web Application Project'>Converting a Visual Studio Class Library Project to a Web Application Project</a> <small>I started working on a new Umbraco package a while...</small></li></ol></p>
<p>Related posts brought to you by <a rel="nofollow" target="_blank" href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Umbraco Certified Developer - Level 2 - Chris Houston</title>
         <link>http://blog.vizioz.com/2009/08/umbraco-certified-developer-level-2.html</link>
         <description>I just thought I'd create a quick blog post to say that I have now been on the Umbraco Level 2 course (which I would recommend!) and although it turned out that I pretty much new 95% of what was taught, the extra 5% and a chance to have a trip to Copenhagen made it worth it :)&lt;br /&gt;&lt;br /&gt;I am now officially Umbraco level 2 certified :)&lt;br /&gt;&lt;br /&gt;Hopefully over the next month I will have some time to start adding a few more useful blog posts to my blog. I know I've been a little slack on the posting in the last month, it's just been a busy time for me!&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_BiEo2-1Gslc/SpAj0Xh6qQI/AAAAAAAAAEs/KKVxlS0EGRg/s1600-h/cert.jpg&quot;&gt;&lt;img style=&quot;float:left;margin:0 10px 10px 0;cursor:pointer;cursor:hand;width:98px;height:128px;&quot; src=&quot;http://2.bp.blogspot.com/_BiEo2-1Gslc/SpAj0Xh6qQI/AAAAAAAAAEs/KKVxlS0EGRg/s400/cert.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5372833738029443330&quot;/&gt;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8614620678187102145-6058254135696498323?l=blog.vizioz.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Chris)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8614620678187102145.post-6058254135696498323</guid>
         <pubDate>Sat, 22 Aug 2009 09:57:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_BiEo2-1Gslc/SpAj0Xh6qQI/AAAAAAAAAEs/KKVxlS0EGRg/s72-c/cert.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Write Yourself a Merry Little URL Re-writer</title>
         <link>http://www.borism.net/2009/08/21/write-yourself-a-merry-little-url-re-writer/</link>
         <description>A common web development concern is the www subdomain. Do you host at http://www.site.com or http://site.com? Which ever you choose you want to be sure that visitors who type in the other get re-directed properly. If you use IIS you can setup a new website to do such a permanent redirect, but that solution doesn&amp;#8217;t [...]</description>
         <guid isPermaLink="false">http://www.borism.net/?p=191</guid>
         <pubDate>Fri, 21 Aug 2009 11:35:31 -0700</pubDate>
         <content:encoded><![CDATA[<p>A common web development concern is the www subdomain. Do you host at http://www.site.com or http://site.com? Which ever you choose you want to be sure that visitors who type in the other get re-directed properly. </p>
<p>If you use IIS you can setup a new website to do such a permanent redirect, but that solution doesn&#8217;t scale well. For example, we run 42 websites using one install of <a rel="nofollow" target="_blank" href="http://www.umbraco.org">umbraco</a>, and consequently one IIS website. We&#8217;d need 42 new websites in IIS to use the built-in redirect feature.</p>
<p>One example site is <a rel="nofollow" target="_blank" href="http://en.culturalcare.com">http://en.culturalcare.com</a>, and I want to make sure that if someone types in <a rel="nofollow" target="_blank" href="http://www.en.culturalcare.com">http://www.en.culturalcare.com</a> they get redirected properly. The solution is to write a little generic URL re-writer yourself using the global.asax file.</p> <div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color:#008000;">&lt;</span> <span style="color:#008000;">%</span>@ Application Language<span style="color:#008000;">=</span><span style="color:#666666;">"C#"</span> <span style="color:#008000;">%&gt;</span>
<span style="color:#008000;">&lt;</span>script runat<span style="color:#008000;">=</span><span style="color:#666666;">"server"</span><span style="color:#008000;">&gt;</span>
<span style="color:#0600FF;">protected</span> <span style="color:#0600FF;">void</span> Application_BeginRequest<span style="color:#000000;">&#40;</span><span style="color:#FF0000;">Object</span> sender, EventArgs e<span style="color:#000000;">&#41;</span> <span style="color:#000000;">&#123;</span> <span style="color:#FF0000;">string</span> domainName <span style="color:#008000;">=</span> Request.<span style="color:#0000FF;">Url</span>.<span style="color:#0000FF;">Host</span>.<span style="color:#0000FF;">Replace</span><span style="color:#000000;">&#40;</span><span style="color:#666666;">"www."</span>, <span style="color:#666666;">""</span><span style="color:#000000;">&#41;</span>.<span style="color:#0000FF;">ToLower</span><span style="color:#000000;">&#40;</span><span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> <span style="color:#FF0000;">string</span> sOldPath <span style="color:#008000;">=</span> HttpContext.<span style="color:#0000FF;">Current</span>.<span style="color:#0000FF;">Request</span>.<span style="color:#0000FF;">Path</span>.<span style="color:#0000FF;">ToLower</span><span style="color:#000000;">&#40;</span><span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> <span style="color:#FF0000;">string</span> sPage <span style="color:#008000;">=</span> <span style="color:#666666;">"http://"</span> <span style="color:#008000;">+</span> domainName <span style="color:#008000;">+</span> sOldPath<span style="color:#008000;">;</span> Response.<span style="color:#0000FF;">Clear</span><span style="color:#000000;">&#40;</span><span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> Response.<span style="color:#0000FF;">Status</span> <span style="color:#008000;">=</span> <span style="color:#666666;">"301 Moved Permanently"</span><span style="color:#008000;">;</span> Response.<span style="color:#0000FF;">AddHeader</span><span style="color:#000000;">&#40;</span><span style="color:#666666;">"Location"</span>,sPage<span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> Response.<span style="color:#0000FF;">End</span><span style="color:#000000;">&#40;</span><span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> <span style="color:#000000;">&#125;</span>
<span style="color:#008000;">&lt;/</span>script<span style="color:#008000;">&gt;</span></pre></div></div> <p>As you can see the code removes &#8220;www.&#8221; from the url and 301 redirects to the non-www version. It also passes the full path. </p>
<p>You could modify the code slightly to add www&#8217;s instead of removing them if that&#8217;s the desired effect:</p> <div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color:#008000;">&lt;</span> <span style="color:#008000;">%</span>@ Application Language<span style="color:#008000;">=</span><span style="color:#666666;">"C#"</span> <span style="color:#008000;">%&gt;</span>
<span style="color:#008000;">&lt;</span>script runat<span style="color:#008000;">=</span><span style="color:#666666;">"server"</span><span style="color:#008000;">&gt;</span>
<span style="color:#0600FF;">protected</span> <span style="color:#0600FF;">void</span> Application_BeginRequest<span style="color:#000000;">&#40;</span><span style="color:#FF0000;">Object</span> sender, EventArgs e<span style="color:#000000;">&#41;</span> <span style="color:#000000;">&#123;</span> <span style="color:#FF0000;">string</span> domainName <span style="color:#008000;">=</span> Request.<span style="color:#0000FF;">Url</span>.<span style="color:#0000FF;">Host</span>.<span style="color:#0000FF;">ToLower</span><span style="color:#000000;">&#40;</span><span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> <span style="color:#FF0000;">string</span> sOldPath <span style="color:#008000;">=</span> HttpContext.<span style="color:#0000FF;">Current</span>.<span style="color:#0000FF;">Request</span>.<span style="color:#0000FF;">Path</span>.<span style="color:#0000FF;">ToLower</span><span style="color:#000000;">&#40;</span><span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> <span style="color:#FF0000;">string</span> sPage <span style="color:#008000;">=</span> <span style="color:#666666;">"http://www."</span> <span style="color:#008000;">+</span> domainName <span style="color:#008000;">+</span> sOldPath<span style="color:#008000;">;</span> Response.<span style="color:#0000FF;">Clear</span><span style="color:#000000;">&#40;</span><span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> Response.<span style="color:#0000FF;">Status</span> <span style="color:#008000;">=</span> <span style="color:#666666;">"301 Moved Permanently"</span><span style="color:#008000;">;</span> Response.<span style="color:#0000FF;">AddHeader</span><span style="color:#000000;">&#40;</span><span style="color:#666666;">"Location"</span>,sPage<span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> Response.<span style="color:#0000FF;">End</span><span style="color:#000000;">&#40;</span><span style="color:#000000;">&#41;</span><span style="color:#008000;">;</span> <span style="color:#000000;">&#125;</span>
<span style="color:#008000;">&lt;/</span>script<span style="color:#008000;">&gt;</span></pre></div></div> <p><a rel="nofollow" target="_blank" href='http://www.borism.net/wordpress/wp-content/uploads/2009/08/rewriter.zip'>Download a full example for use with IIS</a>.</p>
<p>To implement:</p>
<ul>
<li>create a new site in IIS and add host headers for all of the domains you would like to redirect</li>
<li>extract the zip above to the directory setup in IIS</li>
<li>setup wildcard application mapping in IIS to let the global.asax file handle all requests (not just ones that end in .aspx, etc). On windows server 2003 just go to Home Directory -&gt; Configuration and paste in the aspnet_isapi.dll location in the wildcard application maps section. By default the path is C:&#92;WINDOWS&#92;Microsoft.NET&#92;Framework&#92;v2.0.50727&#92;aspnet_isapi.dll (uncheck &#8220;Verify that file exists&#8221;)
</li>
</ul>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco Courses in Seattle – October 19-22 2009</title>
         <link>http://www.motusconnect.com/blog/2009/8/21/umbraco-courses-in-seattle-–-october-19-22-2009</link>
         <description>We are very excited to offer the the Umbraco master class Level 1 and Level 2 training courses in Seattle this October 19-22 2009.</description>
         <author>info@motusconnect.com (Paul Sterling)</author>
         <guid isPermaLink="false">http://www.motusconnect.com/blog/2009/8/21/umbraco-courses-in-seattle-–-october-19-22-2009</guid>
         <pubDate>Fri, 21 Aug 2009 09:01:49 -0700</pubDate>
         <content:encoded><![CDATA[<p>We are very excited to offer the the <a rel="nofollow"
 target="_blank" href="http://umbraco.org/training">Umbraco master
class</a> Level 1 and Level 2 training courses in Seattle this
October.&nbsp; The courses are open to any one who wishes to get a
better understanding of Umbraco and is interested in becoming <a rel="nofollow"
 target="_blank" href="http://umbraco.org/solution-providers"
>Umbraco certified</a>.&nbsp; We are coordinating
the course dates to coincide with courses being delivered in London
and Copenhagen so you can expect for exciting mash-ups to emerge as
Umbraco course attendees in different time zones interact.</p> <p>Seattle is a great place to visit in the Fall and we have
secured a great facility at the <a rel="nofollow"
 target="_blank" href="http://en.wikipedia.org/wiki/Seattle_Public_Library"
>Seattle Public Library</a> in central
Seattle.&nbsp; We've found flights from places such as Denver,
Chicago, and Houston for less that $200 round-trip and there are <a rel="nofollow"
 target="_blank" href="http://www.seattlesupersaver.com/SCVBBooking/index.aspx"
>lodging options</a> to fit every budget in
Seattle.&nbsp; Come a few days early (or stay on) and check out the
<a rel="nofollow"
 target="_blank" href="http://www.techflash.com/The_Geeks_Guide_to_Seattle_53810857.html">Geeks Guide to Seattle</a> or just enjoy our
'special' weather.</p> <p>The course specifics are ( register <a rel="nofollow"
 target="_blank" href="http://umbraco-us-course.eventbrite.com/"
>here</a> or send a message to us <a rel="nofollow"
>here</a> with "Umbraco Course" in the message
):</p> <h2>Level 1 - <a rel="nofollow" target="_blank" href="http://umbraco-us-course.eventbrite.com/"
 title="Umbraco Courses in the US - Level 1">Register Here</a><br />
</h2> <p><strong>Teacher</strong>: Paul Sterling<br /> <strong>Target Audience</strong>: Designers, Web Developers<br /> <strong>Language</strong>: English<br /> <strong>Date</strong>: October 19-20 2009 at 9.00 - 16.30<br /> <strong>Price</strong>: USD 1200 with certification (save USD 275
with this bundle)<br /> <strong>Location:</strong> Seattle Public Library ( <a rel="nofollow"
 target="_blank" href="http://www.spl.org/default.asp?pageID=branch_central_directions&amp;branchID=1">map</a> )<br /> <strong>Requirements:</strong> To get the most of out the course,
we recommend that <strong>you bring your own laptop</strong>. If
you can't let us know.</p> <p>Learn how to implement websites fast without compromising
designs. This two-day course will go through the basics of umbraco
from a designer/developer point of view. You'll learn best
practices on multi-lingual sites, creation of re-usable navigations
and lists, input via the AutoForm and even end up loving XSLT.
We'll also go through some of the popular packages and other
productivity tricks.</p> <p><strong>Agenda - updated to cover Umbraco 4
functionality:</strong></p> <ul>
<li>Understanding the umbraco basics -
<strong>Runway/Modules</strong>, Document Types, Templates and
Macros (<strong>including usage of the new Masterpages
functionality</strong>)</li> <li>Creating a simple website from scratch</li> <li>Understanding XSLT - creating a news "module"</li> <li>Creating multi-language websites including coverage of
Dictionary Items and Languages</li> <li>Advanced properties: Re-use of properties and recursive usage
of properties</li> <li>Two-way feedback using AutoForms and Notifications</li> <li><strong>Optimizing markup for Canvas Editing</strong></li> <li>Great Packages: Implementing full-text searching and mail
forms</li>
</ul> <p>In other word, after two hard days in the dojo, you'll be able
to create multi-lingual websites, blogs, news sites and even
two-way communication without any need for .NET skills</p> <p>This course covers everything you'll need to know to pass the
Umbraco Developer Level 1 Certification</p> <h2>Level 2 - <a rel="nofollow" target="_blank" href="http://umbraco-us-course.eventbrite.com/"
 title="Umbraco Courses in the US - Level 2">Register Here</a><br />
</h2> <p><strong>Teacher</strong>: Paul Sterling<br /> <strong>Target Audience</strong>: .NET Developers<br /> <strong>Language</strong>: English<br /> <strong>Date</strong>: October 21-22 2009 at 9.00 - 16.30
<strong><br /> Price</strong>: USD 1200 with certification (save USD 275 with
this bundle)<br /> <strong>Location:</strong> Seattle Public Library ( <a rel="nofollow"
 target="_blank" href="http://www.spl.org/default.asp?pageID=branch_central_directions&amp;branchID=1">map</a> )<br /> <strong>Requirements:</strong> To get the most of out the course,
we recommend that <strong>you bring your own laptop</strong>. If
you can't let us know.</p> <p>Learn how to integrate existing .NET applications into umbraco
and how to customize umbraco using Microsoft Visual Studio. This
two-day course will cover the usage of .NET controls in macros,
event-programming in umbraco through the new Event model and how to
integrate your own applications and logic directly in the umbraco
interface.</p> <p><strong>Agenda - updated to cover Umbraco 4
functionality:</strong></p> <ul>
<li>Usage of .NET User Controls with umbraco</li> <li><strong>Debugging XSLT and .NET Controls with umbraco and
Visual Studio</strong></li> <li>In-depth explanation of the umbraco object model and usage of
the umbraco presentation APIs</li> <li>Creating, importing and modifying content from .NET using the
API</li> <li>Usage of AJAX and umbraco</li> <li>Extending XSLT with custom .NET classes</li> <li>Custom event handling in umbraco using <strong>the brand new
event handlers in Umbraco 4</strong></li> <li><strong>How to integrate legacy authentication systems using
Membership and Role Providers</strong></li>
</ul> <p>In other word, after two sweating days with umbraco, you'll
learn that umbraco is a developer's best friend.</p> <p>This course covers everything you'll need to know to pass the
Umbraco Developer Level 2 Certification.</p> <h2>Questions</h2> <p>If you have any questions please contact <a rel="nofollow"
>Paul here</a>.</p>]]></content:encoded>
      </item>
      <item>
         <title>Google map geocoding for the UK</title>
         <link>http://ismailmayat.wordpress.com/2009/08/21/google-map-geocoding-for-the-uk/</link>
         <description>Those of you based in the UK who have created Googlemap mash ups in your umbraco sites or any other site for that matter, may have come across geo coding issues for UK post codes. In some instances they can be out by quite a bit. The actual google website is accurate however doing a [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ismailmayat.wordpress.com&amp;blog=7358174&amp;post=112&amp;subd=ismailmayat&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://ismailmayat.wordpress.com/?p=112</guid>
         <pubDate>Fri, 21 Aug 2009 08:23:19 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Those of you based in the UK who have created Googlemap mash ups in your umbraco sites or any other site for that matter, may have come across geo coding issues for UK post codes. In some instances they can be out by quite a bit. The actual google website is accurate however doing a look up via the api sometimes is not. Its all to do with Royal mail licensing. Anyhow there is a hack and it works see <a rel="nofollow" target="_blank" href="http://www.tomanthony.co.uk/blog/geocoding-uk-postcodes-with-google-map-api/">here</a>.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/ismailmayat.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ismailmayat.wordpress.com/112/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/ismailmayat.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ismailmayat.wordpress.com/112/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/ismailmayat.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ismailmayat.wordpress.com/112/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/ismailmayat.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ismailmayat.wordpress.com/112/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/ismailmayat.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ismailmayat.wordpress.com/112/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ismailmayat.wordpress.com&blog=7358174&post=112&subd=ismailmayat&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6495743815f2137983c9d19ad4746edb?s=96&amp;amp;d=&amp;amp;r=G" medium="image">
            <media:title>ismailmayat</media:title>
         </media:content>
      </item>
      <item>
         <title>Umbraco site upgraded to v4.0.2.1 and new twitter package installed</title>
         <link>http://feedproxy.google.com/~r/WebGardenBlog/~3/rvda9PcuIIM/umbraco-site-upgraded-to-v4021-and-new-twitter-package-installed.aspx</link>
         <description>Certified Umbraco Developer | David Conlisk | Web Garden | blog entry</description>
         <guid isPermaLink="false">http://web-garden.co.uk//2009/8/21/umbraco-site-upgraded-to-v4021-and-new-twitter-package-installed.aspx</guid>
         <pubDate>Fri, 21 Aug 2009 02:01:42 -0700</pubDate>
         <content:encoded><![CDATA[<p>If any of you have live sites running Umbraco v4 then you'll
probably have noticed the helpful little popup that lets you know
when there is a new version of Umbraco available. Or maybe you
don't think it's so helpful at all - when your customers ring you
up demanding an upgrade to the latest version!</p> <p>Everyone knows how upgrading a site can lead to problems, and
sometimes work like this is just more hassle than it's worth. If
this is your attitude, it's pretty simple to turn off the
notifications by updating the following entry in your
web.config:</p> <pre class="brush: xml">
&lt;add key="umbracoVersionCheckPeriod" value="7" /&gt;
</pre> <p>Set the value to zero to turn off the updates - the default
value is to check for a new version<br />
every 7 days. It's also worth noting that this popup only appears
to administrator-type users of the site.</p> <p>But in reality there's nothing to be afraid of, the upgrade
process is pretty straightforward, at least for a minor upgrade
such as the one I've just finished with the Web Garden site. You
can find the <a rel="nofollow" target="_blank" href="http://umbraco.codeplex.com"
>latest version of Umbraco for download here</a>
along with all the documentation you could possibly need to ensure
a smooth upgrade process. This includes install guides for a number
of server setups, and an upgrade guide which deals with the various
upgrade scenarios. Of course you should avoid upgrading your live
site directly; upgrade your local or dev version first, do your
testing, and then ftp the changes to the live server when you're
happy it's all ready to go.</p> <p>I've also installed Warren Buckley's <a rel="nofollow"
 target="_blank" href="http://twitter4umbraco.codeplex.com/"
>Twitter4Umbraco</a> package to display my latest
tweet on the website. Once again Ashleigh at <a rel="nofollow"
 target="_blank" href="http://www.ash-creative.com/">Ash
Creative</a> came up with the design in keeping with the look and
feel of the Web Garden site and I think it brightens everything up
a little. It's a great little package and very easy to use - a good
example of how easy it is to extend Umbraco with packages. For many
other excellent Umbraco packages, check out the <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects">Umbraco
project hub</a> which is filled with the latest code from the
community.</p>
<img src="http://feeds.feedburner.com/~r/WebGardenBlog/~4/rvda9PcuIIM" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Displaying multiple points on a google map using my Umbraco datatype</title>
         <link>http://feedproxy.google.com/~r/darrenjferguson/~3/X8zv7pC4r_U/displaying-multiple-points-on-a-google-map-using-my-umbraco-datatype.aspx</link>
         <description>&lt;p&gt;A while back I wrote about &lt;a rel=&quot;nofollow&quot;
&gt;
displaying maps on your Umbraco website&lt;/a&gt; using my &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/google-maps-datatype&quot;&gt;Google
maps datatype&lt;/a&gt; for Umbraco. Since then I've had a number of
requests to provide an example of how to display multiple points on
a map and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.dillorscroft.co.uk/&quot;&gt;Matt Perry&lt;/a&gt;
and I have finally come up with such an example.&lt;/p&gt; &lt;p&gt;The first step is to write a simple XSLT macro that will list
out all of the points that you want to show. I'm not going to give
that example here, but the output should look similar to the
following:&lt;/p&gt; &lt;pre
 style=&quot;border-right:black 1px solid;padding-right:7px;border-top:black 1px solid;padding-left:7px;padding-bottom:7px;border-left:black 1px solid;padding-top:7px;border-bottom:black 1px solid;background-color:#eeeeee;&quot;&gt; &amp;lt;h1&amp;gt;Service stations in Lancashire&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;The following data is a list of latitude and longtitude points and a description for service stations in Lancashire&amp;lt;/p&amp;gt;
&amp;lt;div id=&quot;map&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;!-- Rendered from a simply XSLT Extension --&amp;gt;
&amp;lt;div class=&quot;point&quot;&amp;gt;52.94341429133642,-2.1892619132995605,17,A34-STONE ROAD TITTENSOR N/B&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;point&quot;&amp;gt;53.029535856006525,-2.176837921142578,16,A50-POTTERIES WAY&amp;lt;/div&amp;gt;
&lt;/pre&gt; &lt;p&gt;Note: The empty map div is a placeholder for the Google map
itself.&lt;/p&gt; &lt;p&gt;Quite a few people have written to me asking how one would add
several points to a single instance of my datatype and the short
answer is you can't. You'll need to create an Umbraco node for
every point you want to display on your map, each node containing
an instance of my datatype.&lt;/p&gt; &lt;p&gt;In order to render the map you'll need some javascript similar
to the following:&lt;/p&gt; &lt;pre class=&quot;sh_javascript&quot;
 style=&quot;border-right:black 1px solid;padding-right:7px;border-top:black 1px solid;padding-left:7px;padding-bottom:7px;border-left:black 1px solid;padding-top:7px;border-bottom:black 1px solid;background-color:#eeeeee;&quot;&gt; var m= new GMap2(document.getElementById('map'));
m.setCenter(new GLatLng(0, 0), 0);
var bounds = new GLatLngBounds(); m.addControl(new GLargeMapControl());
m.addControl(new GMapTypeControl()); var arrayList = $(&quot;.point&quot;); // set of elements with class 'point' $.each(arrayList, function() { var value = $(this).html(); value = $.trim(value); var point = value.split(','); var lat = parseFloat(point[0]); var lon = parseFloat(point[1]); var desc = point[3]; var point = new GLatLng(lat, lon); bounds.extend(point); m.addOverlay(createMarker(point,desc));
}); // Creates a marker at the given point
// Clicking the marker will hide it function createMarker(latlng,desc) { var marker = new GMarker(latlng); marker.name = desc; GEvent.addListener(marker,&quot;click&quot;, function() { var myHtml = desc; m.openInfoWindowHtml(latlng, myHtml); }); return marker;
} m.setZoom(m.getBoundsZoomLevel(bounds));
m.setCenter(bounds.getCenter());
&lt;/pre&gt; &lt;p&gt;For the above to work, you'll need to include jQuery and the
Google Maps javascript API in your page. The resulting map should
zoom and centre according to the points that you have added.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Accessibility alert:&lt;/strong&gt; Please provide a header
and description paragraph before your map point data as I have in
my example in order to ensure that the data makes sense with
javascript disabled or to screen readers.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.darren-ferguson.com/2009/8/19/displaying-multiple-points-on-a-google-map-using-my-umbraco-datatype.aspx</guid>
         <pubDate>Wed, 19 Aug 2009 00:27:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>A while back I wrote about <a rel="nofollow"
>
displaying maps on your Umbraco website</a> using my <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects/google-maps-datatype">Google
maps datatype</a> for Umbraco. Since then I've had a number of
requests to provide an example of how to display multiple points on
a map and <a rel="nofollow" target="_blank" href="http://www.dillorscroft.co.uk/">Matt Perry</a>
and I have finally come up with such an example.</p> <p>The first step is to write a simple XSLT macro that will list
out all of the points that you want to show. I'm not going to give
that example here, but the output should look similar to the
following:</p> <pre
 style="border-right:black 1px solid;padding-right:7px;border-top:black 1px solid;padding-left:7px;padding-bottom:7px;border-left:black 1px solid;padding-top:7px;border-bottom:black 1px solid;background-color:#eeeeee;"> &lt;h1&gt;Service stations in Lancashire&lt;/h1&gt;
&lt;p&gt;The following data is a list of latitude and longtitude points and a description for service stations in Lancashire&lt;/p&gt;
&lt;div id="map"&gt;&lt;/div&gt;
&lt;!-- Rendered from a simply XSLT Extension --&gt;
&lt;div class="point"&gt;52.94341429133642,-2.1892619132995605,17,A34-STONE ROAD TITTENSOR N/B&lt;/div&gt;
&lt;div class="point"&gt;53.029535856006525,-2.176837921142578,16,A50-POTTERIES WAY&lt;/div&gt;
</pre> <p>Note: The empty map div is a placeholder for the Google map
itself.</p> <p>Quite a few people have written to me asking how one would add
several points to a single instance of my datatype and the short
answer is you can't. You'll need to create an Umbraco node for
every point you want to display on your map, each node containing
an instance of my datatype.</p> <p>In order to render the map you'll need some javascript similar
to the following:</p> <pre class="sh_javascript"
 style="border-right:black 1px solid;padding-right:7px;border-top:black 1px solid;padding-left:7px;padding-bottom:7px;border-left:black 1px solid;padding-top:7px;border-bottom:black 1px solid;background-color:#eeeeee;"> var m= new GMap2(document.getElementById('map'));
m.setCenter(new GLatLng(0, 0), 0);
var bounds = new GLatLngBounds(); m.addControl(new GLargeMapControl());
m.addControl(new GMapTypeControl()); var arrayList = $(".point"); // set of elements with class 'point' $.each(arrayList, function() { var value = $(this).html(); value = $.trim(value); var point = value.split(','); var lat = parseFloat(point[0]); var lon = parseFloat(point[1]); var desc = point[3]; var point = new GLatLng(lat, lon); bounds.extend(point); m.addOverlay(createMarker(point,desc));
}); // Creates a marker at the given point
// Clicking the marker will hide it function createMarker(latlng,desc) { var marker = new GMarker(latlng); marker.name = desc; GEvent.addListener(marker,"click", function() { var myHtml = desc; m.openInfoWindowHtml(latlng, myHtml); }); return marker;
} m.setZoom(m.getBoundsZoomLevel(bounds));
m.setCenter(bounds.getCenter());
</pre> <p>For the above to work, you'll need to include jQuery and the
Google Maps javascript API in your page. The resulting map should
zoom and centre according to the points that you have added.</p> <p><strong>Accessibility alert:</strong> Please provide a header
and description paragraph before your map point data as I have in
my example in order to ensure that the data makes sense with
javascript disabled or to screen readers.</p>
<img src="http://feeds.feedburner.com/~r/darrenjferguson/~4/X8zv7pC4r_U" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Thoughts on the Umbraco UK meetup</title>
         <link>http://feedproxy.google.com/~r/darrenjferguson/~3/labU4jr2nsQ/thoughts-on-the-umbraco-uk-meetup.aspx</link>
         <description>&lt;p&gt;&lt;a rel=&quot;nofollow&quot;
&gt;
&lt;img width=&quot;164&quot; height=&quot;244&quot; alt=&quot;Umbraco t-shirt&quot; style=&quot;border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;&quot;/&gt;&lt;/a&gt;&amp;nbsp; Last Thursday I attended the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.umbraco.org/&quot;&gt;Umbraco&lt;/a&gt; UK meetup at &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.lbi.com/en/London/&quot;&gt;LBi&lt;/a&gt; in London - which I
also helped to organise. It was a great day and as is usual for me
at these events the highlight was to be able to put names to the
faces of people who I've interacted with via email and &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://twitter.com/darrenferguson&quot;&gt;twitter&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I should have sat down and written my thoughts the day after but
I've lazily let time drift and everyone else has gone about writing
up the event in the meantime.&lt;/p&gt; &lt;p&gt;Paul Marden of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.orcare.com/&quot;&gt;Orcare&lt;/a&gt; has
done a great job of putting together &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.orcare.com/about/news/umbraco-open-source-net-community-grows-in-uk.aspx&quot;&gt;
a press release&lt;/a&gt; about the event. &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://jonontech.com/&quot;&gt;Jon Marks&lt;/a&gt; at LBi and &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://twitter.com/bijeshtank&quot;&gt;Bijesh Tank&lt;/a&gt; have also
written up some thoughts &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://jonontech.com/2009/08/14/umbraco-beer-and-frenemies/&quot;&gt;here&lt;/a&gt;
and &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.lbiq.net/technology/umbraco-day-lbi/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;As with any Umbraco event, &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.percipientstudios.com/&quot;&gt;Doug Robar's&lt;/a&gt; camera
was present and some great pictures are available to &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.flickr.com/search/?q=umbracouk&amp;amp;w=all&quot;&gt;view on
flickr&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://twitter.com/ashallcross01&quot;&gt;Adam Shallcross&lt;/a&gt;
and the guys at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thecogworks.co.uk/&quot;&gt;Cogworks&lt;/a&gt;
put together some great artwork for a one off Umbraco London
t-shirt (as pictured). This artwork has now been adapted to use as
&lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://thecogworks.co.uk/our-services/umbraco/umbraco-goodies&quot;&gt;
screensavers and desktop background&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://twitter.com/uniquelau&quot;&gt;Laurence Gillian&lt;/a&gt; and
the team at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.voodoodog.com/&quot;&gt;Vodoodog&lt;/a&gt; also
create some stunning &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbtop.voodoodog.com/&quot;&gt;desktop
backgrounds&lt;/a&gt; and made them available to download.&lt;/p&gt; &lt;p&gt;On the day we were also helped out by &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://twitter.com/mobragauk&quot;&gt;Mo Braga&lt;/a&gt; and Bijesh from
LBi, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://hartvig.com&quot;&gt;Niels&lt;/a&gt; who added some real
value to the day by coming and talking about Umbraco. &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://twitter.com/roekens&quot;&gt;Gregory Roekens&lt;/a&gt; CTO of &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.wunderman.com/&quot;&gt;Wunderman&lt;/a&gt; also joined Niels
and Doug to form our expert Umbraco panel for Q&amp;amp;A.&lt;/p&gt; &lt;p&gt;Adam Shallcross, &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://twitter.com/readingdancer&quot;&gt;Chris Houston&lt;/a&gt; and
Gregory Roekens were also kind enough to step up and present some
of their latest Umbraco innovations in an open demonstration
slot.&lt;/p&gt; &lt;p&gt;Finally we need to thank Jon Marks for picking up on my
speculative tweet looking for a venue and suggesting LBi as a
venue.&lt;/p&gt; &lt;p&gt;No thanks to the London weather for dumping down a months worth
of rain in the space of a few hours. But all in all a great day
out.&lt;/p&gt; &lt;p&gt;Oh and I almost forgot, I think I conquered my fear of public
speaking after dashing about in front of the crowd all day, so if
you want me to come and talk about Umbraco or anything else, do let
me know.&lt;/p&gt; &lt;p&gt;Finally, there was lots of talk along the lines of &quot;We should do
this more often&quot;, so I'm encouraging all of you who attended to
come along to the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.meetup.com/London-CMS/&quot;&gt;Last
Thursday CMS beers&lt;/a&gt; from time to time. I'm going to try and go
along for the first time myself this month.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.darren-ferguson.com/2009/8/17/thoughts-on-the-umbraco-uk-meetup.aspx</guid>
         <pubDate>Mon, 17 Aug 2009 01:19:00 -0700</pubDate>
         <content:encoded><![CDATA[<p><a rel="nofollow"
>
<img width="164" height="244" alt="Umbraco t-shirt" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;"/></a>&nbsp; Last Thursday I attended the <a rel="nofollow"
 target="_blank" href="http://www.umbraco.org/">Umbraco</a> UK meetup at <a rel="nofollow"
 target="_blank" href="http://www.lbi.com/en/London/">LBi</a> in London - which I
also helped to organise. It was a great day and as is usual for me
at these events the highlight was to be able to put names to the
faces of people who I've interacted with via email and <a rel="nofollow"
 target="_blank" href="http://twitter.com/darrenferguson">twitter</a>.</p> <p>I should have sat down and written my thoughts the day after but
I've lazily let time drift and everyone else has gone about writing
up the event in the meantime.</p> <p>Paul Marden of <a rel="nofollow" target="_blank" href="http://www.orcare.com/">Orcare</a> has
done a great job of putting together <a rel="nofollow"
 target="_blank" href="http://www.orcare.com/about/news/umbraco-open-source-net-community-grows-in-uk.aspx">
a press release</a> about the event. <a rel="nofollow"
 target="_blank" href="http://jonontech.com/">Jon Marks</a> at LBi and <a rel="nofollow"
 target="_blank" href="http://twitter.com/bijeshtank">Bijesh Tank</a> have also
written up some thoughts <a rel="nofollow"
 target="_blank" href="http://jonontech.com/2009/08/14/umbraco-beer-and-frenemies/">here</a>
and <a rel="nofollow"
 target="_blank" href="http://www.lbiq.net/technology/umbraco-day-lbi/">here</a>.</p> <p>As with any Umbraco event, <a rel="nofollow"
 target="_blank" href="http://www.percipientstudios.com/">Doug Robar's</a> camera
was present and some great pictures are available to <a rel="nofollow"
 target="_blank" href="http://www.flickr.com/search/?q=umbracouk&amp;w=all">view on
flickr</a>.</p> <p><a rel="nofollow" target="_blank" href="http://twitter.com/ashallcross01">Adam Shallcross</a>
and the guys at <a rel="nofollow" target="_blank" href="http://thecogworks.co.uk/">Cogworks</a>
put together some great artwork for a one off Umbraco London
t-shirt (as pictured). This artwork has now been adapted to use as
<a rel="nofollow"
 target="_blank" href="http://thecogworks.co.uk/our-services/umbraco/umbraco-goodies">
screensavers and desktop background</a>.</p> <p><a rel="nofollow" target="_blank" href="http://twitter.com/uniquelau">Laurence Gillian</a> and
the team at <a rel="nofollow" target="_blank" href="http://www.voodoodog.com/">Vodoodog</a> also
create some stunning <a rel="nofollow" target="_blank" href="http://umbtop.voodoodog.com/">desktop
backgrounds</a> and made them available to download.</p> <p>On the day we were also helped out by <a rel="nofollow"
 target="_blank" href="http://twitter.com/mobragauk">Mo Braga</a> and Bijesh from
LBi, <a rel="nofollow" target="_blank" href="http://hartvig.com">Niels</a> who added some real
value to the day by coming and talking about Umbraco. <a rel="nofollow"
 target="_blank" href="http://twitter.com/roekens">Gregory Roekens</a> CTO of <a rel="nofollow"
 target="_blank" href="http://www.wunderman.com/">Wunderman</a> also joined Niels
and Doug to form our expert Umbraco panel for Q&amp;A.</p> <p>Adam Shallcross, <a rel="nofollow"
 target="_blank" href="http://twitter.com/readingdancer">Chris Houston</a> and
Gregory Roekens were also kind enough to step up and present some
of their latest Umbraco innovations in an open demonstration
slot.</p> <p>Finally we need to thank Jon Marks for picking up on my
speculative tweet looking for a venue and suggesting LBi as a
venue.</p> <p>No thanks to the London weather for dumping down a months worth
of rain in the space of a few hours. But all in all a great day
out.</p> <p>Oh and I almost forgot, I think I conquered my fear of public
speaking after dashing about in front of the crowd all day, so if
you want me to come and talk about Umbraco or anything else, do let
me know.</p> <p>Finally, there was lots of talk along the lines of "We should do
this more often", so I'm encouraging all of you who attended to
come along to the <a rel="nofollow" target="_blank" href="http://www.meetup.com/London-CMS/">Last
Thursday CMS beers</a> from time to time. I'm going to try and go
along for the first time myself this month.</p>
<img src="http://feeds.feedburner.com/~r/darrenjferguson/~4/labU4jr2nsQ" height="1" width="1"/>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Empty site when using Umbraco v4.0.2.1 without runway</title>
         <link>http://www.richardsoeteman.net/2009/08/10/EmptySiteWhenUsingUmbracoV4021WithoutRunway.aspx</link>
         <description>&lt;p&gt;
Just a little quick tip. When you install Umbraco v4.0.2.1 (don't know about other
versions) without runway and you publish your site, you will see a blank screen. This
is because the data/umbraco.config file contains the runway site as you can see in
the sample xml below.&amp;nbsp; &lt;/p&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;DOCTYPE&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;umbraco&lt;/span&gt;[
&amp;amp;&lt;span class=&quot;attr&quot;&gt;lt&lt;/span&gt;;!&lt;span class=&quot;attr&quot;&gt;ELEMENT&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;ANY&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;ELEMENT&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;node&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;ANY&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;ATTLIST&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;node&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;ID&lt;/span&gt; #&lt;span class=&quot;attr&quot;&gt;REQUIRED&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; ]&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;-1&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;node&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1048&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;6f0d47e7-8cf1-43e5-a5ad-c687e0b78331&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;parentID&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;-1&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;writerID&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;0&quot;&lt;/span&gt; &lt;br&gt;
&lt;span class=&quot;attr&quot;&gt;creatorID&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;0&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;nodeType&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1045&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;template&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;1042&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;sortOrder&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;2&quot;&lt;/span&gt; &lt;br&gt;
&lt;span class=&quot;attr&quot;&gt;createDate&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;2008-05-02T09:52:36&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;updateDate&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;2009-02-18T10:19:26&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;nodeName&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Runway
Homepage&quot;&lt;/span&gt; &lt;br&gt;
&lt;span class=&quot;attr&quot;&gt;urlName&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;runway-homepage&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;writerName&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Administrator&quot;&lt;/span&gt; &lt;br&gt;
&lt;span class=&quot;attr&quot;&gt;creatorName&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;Administrator&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;nodeTypeAlias&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;RunwayHomepage&quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;-1,1048&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;data&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;alias&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;bodyText&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&amp;lt;!&lt;/span&gt;[CDATA[&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;Runway
gives you a bare-bones website that introduces you to a set of &lt;br&gt;
well-defined conventions for building an umbraco website.&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;The
Runway website is very simple in form and provided without any design or functionality. &lt;br&gt;
By installing Runway, you&lt;span class=&quot;attr&quot;&gt;&amp;amp;rsquo;&lt;br&gt;
&lt;/span&gt;ll begin with a minimal site built on best practices. You&lt;span class=&quot;attr&quot;&gt;&amp;amp;rsquo;&lt;/span&gt;ll
also enjoy the benefits of &lt;br&gt;
speaking the same &lt;span class=&quot;attr&quot;&gt;&amp;amp;ldquo;&lt;/span&gt;language&lt;span class=&quot;attr&quot;&gt;&amp;amp;rdquo;&lt;/span&gt; &lt;br&gt;
as the rest of the umbraco community by using common properties and naming conventions.&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;Now
that you know what Runway is, it is time to get started using Runway.&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;]]&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;data&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;alias&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;siteName&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;Runway&lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;data&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;alias&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;=&quot;siteDescription&quot;&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&amp;lt;!&lt;/span&gt;[CDATA[Off
to a great start]]&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; ..................... &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;node&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;html&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;span class=&quot;kwrd&quot;&gt;Work around for this issue is to republish the entire site first.
I've added this issue to codeplex. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=24176&quot;&gt;Please
vote here&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;style type=&quot;text/css&quot;&gt;.csharpcode, .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;Courier New&quot;, courier, monospace;background-color:#ffffff;}
.csharpcode pre {margin:0em;}
.csharpcode .rem {color:#008000;}
.csharpcode .kwrd {color:#0000ff;}
.csharpcode .str {color:#006080;}
.csharpcode .op {color:#0000c0;}
.csharpcode .preproc {color:#cc6633;}
.csharpcode .asp {background-color:#ffff00;}
.csharpcode .html {color:#800000;}
.csharpcode .attr {color:#ff0000;}
.csharpcode .alt {background-color:#f4f4f4;width:100%;margin:0em;}
.csharpcode .lnum {color:#606060;}&lt;/style&gt;
&lt;img width=&quot;0&quot; height=&quot;0&quot; src=&quot;http://www.richardsoeteman.net/aggbug.ashx?id=deef886b-bb23-4fa3-8efd-07bf9c7a4140&quot;/&gt;</description>
         <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,deef886b-bb23-4fa3-8efd-07bf9c7a4140.aspx</guid>
         <pubDate>Mon, 10 Aug 2009 11:18:04 -0700</pubDate>
         <category>Umbraco</category>
      </item>
      <item>
         <title>umbTop - Umbraco Desktops</title>
         <link>http://www.bysquirrels.com/2009/8/5/umbtop---umbraco-desktops.aspx</link>
         <guid isPermaLink="false">http://www.bysquirrels.com/2009/8/5/umbtop---umbraco-desktops.aspx</guid>
         <pubDate>Wed, 05 Aug 2009 05:19:13 -0700</pubDate>
         <content:encoded><![CDATA[<p>To mark the London Umbraco User Conference on August the 6th. We
have created a series of Umbraco backgrounds for your laptops!
:)</p> <p>Lau</p> <p><a rel="nofollow" target="_blank" href="http://umbTop.voodoodog.com/?blog"
 title="umbTop, Umbraco Desktops by VooDooDog."><strong>http://umbTop.voodoodog.com/</strong></a></p> <p><img width="450" height="360" alt="Umbraco Desktop"/></p>]]></content:encoded>
      </item>
      <item>
         <title>How to create a Custom Section in Umbraco 4</title>
         <link>http://www.geckonewmedia.com/blog/2009/8/3/how-to-create-a-custom-section-in-umbraco-4</link>
         <guid isPermaLink="false">http://www.geckonewmedia.com/blog/2009/8/3/how-to-create-a-custom-section-in-umbraco-4</guid>
         <pubDate>Sun, 02 Aug 2009 21:21:54 -0700</pubDate>
         <content:encoded><![CDATA[When creating an Umbraco based application, there is often the need to add extra functionality to the system, especially when we want to create ways to allow the management of business specific aspects or entities.
Instead of creating a separate application, the bespoke functionality should be integrated with Umbraco. Thanks to Umbraco’s flexibility, we can extend and adapt the platform in several different ways. Here is a one such integration]]></content:encoded>
      </item>
      <item>
         <title>Wikiplex for umbraco</title>
         <link>http://www.dijksterhuis.nu/blog/2009/8/2/wikiplex-for-umbraco.aspx</link>
         <guid isPermaLink="false">http://www.dijksterhuis.nu/blog/2009/8/2/wikiplex-for-umbraco.aspx</guid>
         <pubDate>Sun, 02 Aug 2009 03:11:10 -0700</pubDate>
         <content:encoded><![CDATA[<p>A while ago, Douglas sent out a tweet about WikiPlex. I thought
it was interesting and gave it a go. I hooked it into Umbraco and
got it working! (Well, at least the alpha-version is working).</p> <p>What's its purpose? It allows you to create a wiki. Users can
then edit the pages on the site itself using the wiki-markup.
There's no need for them to log in to the backend.</p> <p>See it in action <a rel="nofollow" target="_blank" href="http://wikiplex.dijksterhuis.nu/"
>here</a> (Don't spam too much please). Some people
where allready enthousiastic. Please leave a comment if you think I
need to take this further and release it as a package.</p>]]></content:encoded>
      </item>
      <item>
         <title>Simple Search for Umbraco v0.2 released</title>
         <link>http://blog.thoehler.com/2009/07/29/simple-search-for-umbraco-v02-released</link>
         <description>&lt;p&gt;I have added a new &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.umbraco.org&quot;
&gt;umbraco&lt;/a&gt; related project to &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org&quot;&gt;our.umbraco.org&lt;/a&gt;.
It is called &quot;Simple Search for Umbraco&quot; and provides a simple way
to let your site be searched. It is based on iterating through the
umbraco.presentation.nodeFactory objects and it is easy to install
and to use. This blog now uses this search via xslt output.&lt;/p&gt; &lt;p&gt;View&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/simple-search-for-umbraco&quot;
&gt;project homepage&lt;/a&gt;&lt;/li&gt; &lt;li&gt;add issues to the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://simplesearchforumbraco.codeplex.com&quot;
&gt;codeplex issue tracker&lt;/a&gt;&lt;/li&gt; &lt;li&gt;leave comments in the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/simple-search-for-umbraco/general&quot;&gt;forum&lt;/a&gt; or mail me&lt;/li&gt;
&lt;/ul&gt; &lt;p&gt;Just let me know what you think about it.&lt;/p&gt;</description>
         <author>th@thoehler.com (Thomas Höhler)</author>
         <guid isPermaLink="false">http:///2009/07/29/simple-search-for-umbraco-v02-released</guid>
         <pubDate>Wed, 29 Jul 2009 05:35:22 -0700</pubDate>
      </item>
      <item>
         <title>I’m coming for the UK Meetup next week</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/hH0-kEh6J9I/27597</link>
         <description>&lt;p&gt;I'm jumping a plane on Wednesday for London to &lt;strong&gt;join the
&lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/wiki/codegarden-2009/umbraco-uk-meetup&quot;&gt;
exciting Umbraco UK Meet up&lt;/a&gt;&lt;/strong&gt; arranged by &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.darren-ferguson.com/&quot;&gt;Darren Ferguson&lt;/a&gt; and
kindly hosted by &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.lbi.com/en/London/&quot;&gt;LBi&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I'll do a recap of the most important things announced at the
CodeGarden 09 conference as well as co-host a session with Darren
where we're going to build a little crazy app live in 30
minutes.&lt;/p&gt; &lt;p&gt;The meet up is next Thursday (the 6th) and is a great chance to
learn about Umbraco as well as experience the worlds friendliest
community crowd. &lt;strong&gt;Don't miss this and as LBi just made it
possible for us to be 55 instead of 35 people, there's room
available again&lt;/strong&gt;!&lt;/p&gt; &lt;p&gt;So what are you waiting for - &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/wiki/codegarden-2009/umbraco-uk-meetup&quot;&gt;
sign up (it's free!) and let's talk next week&lt;/a&gt;! There'll be beer
and prizes too!&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=hH0-kEh6J9I:n89uvIVLbU4:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=hH0-kEh6J9I:n89uvIVLbU4:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=hH0-kEh6J9I:n89uvIVLbU4:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/hH0-kEh6J9I&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Niels Hartvig</author>
         <guid isPermaLink="false">http://umbraco.org/27597</guid>
         <pubDate>Wed, 29 Jul 2009 03:09:55 -0700</pubDate>
      </item>
      <item>
         <title>CodeGarden 09 Open Space Minutes - Space 1: How to sell Umbraco</title>
         <link>http://blogs.thesitedoctor.co.uk/tim/2009/07/27/CodeGarden+09+Open+Space+Minutes+Space+1+How+To+Sell+Umbraco.aspx</link>
         <description>&lt;p&gt;
It's taken some time to get here and there's still more to add as I think this is
a pretty big topic but I thought I'd get started. I wanted to keep the session more
focused on the selling points of Umbraco and how people pitch Umbraco to the clients
than selling techniques which on the whole we managed to do.
&lt;/p&gt;
&lt;p&gt;
The first thing I stressed was that I wasn't going to teach you how to sell or selling
techniques as I've never found that hard selling works -though I'm not saying it doesn't,
I just prefer to educate the client into the most suitable solution (even if that
isn't us).
&lt;/p&gt;
&lt;p&gt;
There were a number of questions that were raised and I'll answer what I can here,
if you were at the session and I've missed something, please let me know and I'll
get it added:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
What are the key selling points of Umbraco &lt;/li&gt;
&lt;li&gt;
How do you pitch Umbraco &lt;/li&gt;
&lt;li&gt;
Do you tell clients it's open source (or use that as a sales point)? &lt;/li&gt;
&lt;li&gt;
How do you price Umbraco &lt;/li&gt;
&lt;li&gt;
Once you've won, what do you ask your client &lt;/li&gt;
&lt;li&gt;
How do you support Umbraco &lt;/li&gt;
&lt;li&gt;
How do you get around the question of &quot;What happens if you get hit by a bus?&quot; &lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;What are the key selling points of Umbraco
&lt;/h2&gt;
&lt;p&gt;
A couple of the attendees came up with better 30second sales pitches so I'm sure they'll
post those up shortly but here's a few I remember:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
It's easy to use -you don't need any previous computer experience &lt;/li&gt;
&lt;li&gt;
You can edit any page's content yourself at any time &lt;/li&gt;
&lt;li&gt;
It's highly flexible and lightweight &lt;/li&gt;
&lt;li&gt;
It's search engine friendly &lt;/li&gt;
&lt;li&gt;
It's open source (this really can be a selling point at the right time) &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Do you tell clients it's open source (or use that as a sales point)?
&lt;/h2&gt;
&lt;p&gt;
We do and we don't. Again it really comes down to who you're pitching Umbraco to.
Where the client has had issues with developers not releasing source etc then it's
clearly a selling point. &lt;/p&gt;
&lt;p&gt;
Generally we do tend to explain to clients that we will base their website on an open
source project that we then build on and customise further to suit their needs and
that by using best practice methodologies, any developer can in theory pick up the
system and continue to develop it (even if they have no experience of Umbraco).
&lt;/p&gt;
&lt;h2&gt;How do you price Umbraco
&lt;/h2&gt;
&lt;p&gt;
This question was asked in a couple of different ways throughout the session and it's
a topic in itself (see the article I wrote a while ago about pricing your work).
&lt;/p&gt;
&lt;p&gt;
If you look at Umbraco in the right way you'll see that it's actually rather easy
to price as there are a few components that you can sell either individually or together:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Installation and configuration &lt;/li&gt;
&lt;li&gt;
Customisation &lt;/li&gt;
&lt;li&gt;
Hosting &lt;/li&gt;
&lt;li&gt;
Support &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
All you need to do is work out a minimum cost for each component and then that will
give you a core system cost. &lt;/p&gt;
&lt;p&gt;
Once you have your core Umbraco costs (don't forget to factor in your license costs)
you can then alter the costs accordingly for your client -and this has to be on a
case-by-case basis.&amp;#160; &lt;/p&gt;
&lt;h2&gt;How do you pitch Umbraco
&lt;/h2&gt;
&lt;p&gt;
This is easy, there are so many selling points to Umbraco that regardless of what
the client is looking for, as long as it's CMS based, Umbraco will have some benefit
you can overview to the client.
&lt;/p&gt;
&lt;p&gt;
When pitching Umbraco, we have found educating the user as to the benefits and what
the client should be looking for in other systems. If you do this, then the majority
of the time, the rest of the competition falls by the wayside.
&lt;/p&gt;
&lt;p&gt;
If the client is a large corporate it's always worth mentioning that it offers much
of the functionality that SharePoint does but with little of the cost (or setup pain!).
&lt;/p&gt;
&lt;h2&gt;Once you've won the contract, what do you ask your client
&lt;/h2&gt;
&lt;p&gt;
The first thing to do is to get all the information you need to complete your contract
(or at least tell your client what you'll need and when). You should know what you'll
need already but we tend to ask for:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Design inspiration (websites the client does and doesn't like -and why) &lt;/li&gt;
&lt;li&gt;
Logos and other source imagery &lt;/li&gt;
&lt;li&gt;
Text for the website (you'd be best to load the initial content during training but
get the client to think about it while you're developing or you'll never get there!) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Next, you'll need to make sure your paperwork is in order. Once you have agreed the
general premise of your contract, it's important that you confirm all deliverables
(what you'll be doing for the client) in a work order with the client. This avoids
an ambiguity on what you'll be delivering and when. This doesn't need to be pages
of text (though sometimes it needs to be) but avoids disagreements later.
&lt;/p&gt;
&lt;p&gt;
You should &lt;strong&gt;always&lt;/strong&gt; request signed work order and deposit (we request
a minimum of 20% regardless of project spend) at a minimum before starting any work.
&lt;/p&gt;
&lt;p&gt;
Once you have the signed work order (you sign one for the client to keep and keep
one yourself), you can start thinking about the project. If it'll take longer than
a week to deliver, I recommend you provide the client with rough timescales, this
will have the added benefit of helping you focus your mind.
&lt;/p&gt;
&lt;h2&gt;How do you support Umbraco
&lt;/h2&gt;
&lt;p&gt;
This is something that Paul Sterling addressed through another session and if he doesn't
write up his notes I'll make a few notes in another post.
&lt;/p&gt;
&lt;h2&gt;How do you get around the question of &quot;What happens if you get hit by a bus?&quot;
&lt;/h2&gt;
&lt;p&gt;
Although this was asked a couple of times throughout the session, I avoided answering
it a little due to a conflict of interest. For the past few months we've been working
hard on a new system called &lt;a rel=&quot;nofollow&quot; title=&quot;Crisis Cover - Protecting your business against the unforeseen&quot; target=&quot;_blank&quot; href=&quot;http://www.crisiscover.co.uk/&quot;&gt;Crisis
Cover&lt;/a&gt; which has been designed to help you with this exact question.
&lt;/p&gt;
&lt;p&gt;
&lt;a rel=&quot;nofollow&quot; title=&quot;Crisis Cover - Protecting your business against the unforeseen&quot; target=&quot;_blank&quot; href=&quot;http://www.crisiscover.co.uk/&quot;&gt;&lt;img style=&quot;border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;&quot; title=&quot;apple-touch-icon[1]&quot; border=&quot;0&quot; alt=&quot;apple-touch-icon[1]&quot; align=&quot;left&quot; src=&quot;http://blogs.thesitedoctor.co.uk/tim/content/binary/WindowsLiveWriter/CodeGarden09OpenSpaceMinutesSpace1Howtos_130B7/apple-touch-icon%5B1%5D_c94f9aed-e4e5-4f09-b0d5-b691d2e1c62d.png&quot; width=&quot;61&quot; height=&quot;61&quot;/&gt; Crisis
Cover&lt;/a&gt; monitors you to ensure that you're still around and if you don't respond
to a number of alerts, it will contact your clients informing there's something wrong. &lt;/p&gt;
&lt;p&gt;
I'll post more information about &lt;a rel=&quot;nofollow&quot; title=&quot;Crisis Cover - Protecting your business against the unforeseen&quot; target=&quot;_blank&quot; href=&quot;http://www.crisiscover.co.uk/&quot;&gt;Crisis
Cover&lt;/a&gt;, but if you're interested in getting involved with the beta, leave me your
email and I'll get one sent out.
&lt;/p&gt;
&lt;h2&gt;In Closing
&lt;/h2&gt;
&lt;p&gt;
There is a lot of information about selling and business in general in my previous
post &quot;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blogs.thesitedoctor.co.uk/tim/2007/01/29/Business+Startup+Advice.aspx&quot;&gt;Business
start-up advice&lt;/a&gt;&quot; which if you're starting out, I really recommend you reading
as it should give you a really good start (and includes example Service Level Agreements,
Contracts and other useful documents).
&lt;/p&gt;
&lt;img width=&quot;0&quot; height=&quot;0&quot; src=&quot;http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=409b9297-7d3e-4698-83cd-376d34bc553b&quot;/&gt;</description>
         <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,409b9297-7d3e-4698-83cd-376d34bc553b.aspx</guid>
         <pubDate>Mon, 27 Jul 2009 14:53:28 -0700</pubDate>
      </item>
      <item>
         <title>Adding a new/custom section to umbraco, sample project</title>
         <link>http://www.nibble.be/?p=71</link>
         <description>Simon Justesen, has a great post describing how to add new sections and trees inside umbraco (part 1, part 2).
To make it easier to get started, I thought I would provide some starter sourcecode for a demo custom section. You can download the sourcecode here Steps to get this running on your umbraco installation:
- Copy the assembly [...]</description>
         <guid isPermaLink="false">http://www.nibble.be/?p=71</guid>
         <pubDate>Mon, 27 Jul 2009 06:55:32 -0700</pubDate>
         <content:encoded><![CDATA[<p><a rel="nofollow" target="_blank" href="http://www.simm.dk/about.aspx">Simon Justesen</a>, has a great post describing how to add new sections and trees inside umbraco (<a rel="nofollow" target="_blank" href="http://www.simm.dk/umbraco-corner/articles/making-custom-sections-and-trees-inside-umbraco---part-i.aspx">part 1</a>, <a rel="nofollow" target="_blank" href="http://www.simm.dk/umbraco-corner/articles/making-custom-sections-and-trees-inside-umbraco---part-ii.aspx">part 2</a>).</p>
<p>To make it easier to get started, I thought I would provide some starter sourcecode for a demo custom section.</p>
<div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:7b6d08c7-d8ee-4e00-89e0-970b7e486a50" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;">
<p>You can download the <a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/Addinganewcustomsectiontoumbracodemoproj_D4AE/CustomUmbracoSection.zip">sourcecode here</a></p>
</div>
<p>Steps to get this running on your umbraco installation:</p>
<p>- Copy the assembly (CustomUmbracoSection.dll) to the &#92;bin directory</p>
<p>- Copy the file custom.gif to &#92;umbraco&#92;images&#92;tray&#92; directory</p>
<p>- Make a &#8216;custom&#8217; directory in &#92;umbraco and copy the editCustom.aspx page to &#92;umbraco&#92;custom directory</p>
<p>- Insert a new row in the umbracoApp table</p>
<div class="csharpcode">
<pre class="alt">INSERT <span class="kwrd">INTO</span> [umbracoApp]</pre>
<pre> ([sortOrder]</pre>
<pre class="alt"> ,[appAlias]</pre>
<pre> ,[appIcon]</pre>
<pre class="alt"> ,[appName])</pre>
<pre> <span class="kwrd">VALUES</span></pre>
<pre class="alt"> (9</pre>
<pre> ,<span class="str">&#8216;custom&#8217;</span></pre>
<pre class="alt"> ,<span class="str">&#8216;custom.gif&#8217;</span></pre>
<pre> ,<span class="str">&#8216;custom&#8217;</span>)</pre>
</div>
<style type="text/css">.csharpcode, .csharpcode pre
{font-size:small;color:black;font-family:consolas, "Courier New", courier, monospace;background-color:#ffffff;}
.csharpcode pre {margin:0em;}
.csharpcode .rem {color:#008000;}
.csharpcode .kwrd {color:#0000ff;}
.csharpcode .str {color:#006080;}
.csharpcode .op {color:#0000c0;}
.csharpcode .preproc {color:#cc6633;}
.csharpcode .asp {background-color:#ffff00;}
.csharpcode .html {color:#800000;}
.csharpcode .attr {color:#ff0000;}
.csharpcode .alt {background-color:#f4f4f4;width:100%;margin:0em;}
.csharpcode .lnum {color:#606060;}
</style>
<p>- Insert a new row in to umbracoAppTree table</p>
<div class="csharpcode">
<pre class="alt">INSERT <span class="kwrd">INTO</span> [umbracoAppTree]</pre>
<pre> ([treeSilent]</pre>
<pre class="alt"> ,[treeInitialize]</pre>
<pre> ,[treeSortOrder]</pre>
<pre class="alt"> ,[appAlias]</pre>
<pre> ,[treeAlias]</pre>
<pre class="alt"> ,[treeTitle]</pre>
<pre> ,[treeIconClosed]</pre>
<pre class="alt"> ,[treeIconOpen]</pre>
<pre> ,[treeHandlerAssembly]</pre>
<pre class="alt"> ,[treeHandlerType])</pre>
<pre> <span class="kwrd">VALUES</span></pre>
<pre class="alt"> (0</pre>
<pre> ,1</pre>
<pre class="alt"> ,0</pre>
<pre> ,<span class="str">&#8216;custom&#8217;</span></pre>
<pre class="alt"> ,<span class="str">&#8216;custom&#8217;</span></pre>
<pre> ,<span class="str">&#8216;custom&#8217;</span></pre>
<pre class="alt"> ,<span class="str">&#8216;.sprTreeFolder&#8217;</span></pre>
<pre> ,<span class="str">&#8216;.sprTreeFolder_o&#8217;</span></pre>
<pre class="alt"> ,<span class="str">&#8216;CustomUmbracoSection&#8217;</span></pre>
<pre> ,<span class="str">&#8216;Trees.LoadCustomTree&#8217;</span>)</pre>
</div>
<style type="text/css">.csharpcode, .csharpcode pre
{font-size:small;color:black;font-family:consolas, "Courier New", courier, monospace;background-color:#ffffff;}
.csharpcode pre {margin:0em;}
.csharpcode .rem {color:#008000;}
.csharpcode .kwrd {color:#0000ff;}
.csharpcode .str {color:#006080;}
.csharpcode .op {color:#0000c0;}
.csharpcode .preproc {color:#cc6633;}
.csharpcode .asp {background-color:#ffff00;}
.csharpcode .html {color:#800000;}
.csharpcode .attr {color:#ff0000;}
.csharpcode .alt {background-color:#f4f4f4;width:100%;margin:0em;}
.csharpcode .lnum {color:#606060;}
</style>
<p>- Update the &#92;umbraco&#92;config&#92;create&#92;UI.xml file, add:</p>
<div class="csharpcode">
<pre class="alt"> <span class="kwrd">&lt;</span><span class="html">nodeType</span> <span class="attr">alias</span><span class="kwrd">=&#8221;initcustom&#8221;</span><span class="kwrd">&gt;</span></pre>
<pre> <span class="kwrd">&lt;</span><span class="html">header</span><span class="kwrd">&gt;</span>Custom<span class="kwrd">&lt;/</span><span class="html">header</span><span class="kwrd">&gt;</span></pre>
<pre class="alt"> <span class="kwrd">&lt;</span><span class="html">usercontrol</span><span class="kwrd">&gt;</span>/create/simple.ascx<span class="kwrd">&lt;/</span><span class="html">usercontrol</span><span class="kwrd">&gt;</span></pre>
<pre> <span class="kwrd">&lt;</span><span class="html">tasks</span><span class="kwrd">&gt;</span></pre>
<pre class="alt"> <span class="kwrd">&lt;</span><span class="html">create</span> <span class="attr">assembly</span><span class="kwrd">=&#8221;CustomUmbracoSection&#8221;</span> <span class="attr">type</span><span class="kwrd">=&#8221;Tasks.CustomTasks&#8221;</span> <span class="kwrd">/&gt;</span></pre>
<pre> <span class="kwrd">&lt;</span><span class="html">delete</span> <span class="attr">assembly</span><span class="kwrd">=&#8221;CustomUmbracoSection&#8221;</span> <span class="attr">type</span><span class="kwrd">=&#8221;Tasks.CustomTasks&#8221;</span> <span class="kwrd">/&gt;</span></pre>
<pre class="alt"> <span class="kwrd">&lt;/</span><span class="html">tasks</span><span class="kwrd">&gt;</span></pre>
<pre> <span class="kwrd">&lt;/</span><span class="html">nodeType</span><span class="kwrd">&gt;</span></pre>
</div>
<style type="text/css">.csharpcode, .csharpcode pre
{font-size:small;color:black;font-family:consolas, "Courier New", courier, monospace;background-color:#ffffff;}
.csharpcode pre {margin:0em;}
.csharpcode .rem {color:#008000;}
.csharpcode .kwrd {color:#0000ff;}
.csharpcode .str {color:#006080;}
.csharpcode .op {color:#0000c0;}
.csharpcode .preproc {color:#cc6633;}
.csharpcode .asp {background-color:#ffff00;}
.csharpcode .html {color:#800000;}
.csharpcode .attr {color:#ff0000;}
.csharpcode .alt {background-color:#f4f4f4;width:100%;margin:0em;}
.csharpcode .lnum {color:#606060;}
</style>
<p>After these steps are completed you will have to enable the new section for your user.</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/Addinganewcustomsectiontoumbracodemoproj_D4AE/image.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="199" alt="image" src="http://www.nibble.be/wlwimages/Addinganewcustomsectiontoumbracodemoproj_D4AE/image_thumb.png" width="291" border="0"></a> </p>
<p>Then it should show up as the last icon in the sections (called custom, with a <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/HAL_9000">HAL&#8217;s</a> camera eye icon).</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/Addinganewcustomsectiontoumbracodemoproj_D4AE/image_3.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="104" alt="image" src="http://www.nibble.be/wlwimages/Addinganewcustomsectiontoumbracodemoproj_D4AE/image_thumb_3.png" width="332" border="0"></a> </p>
<p>In the custom section you&#8217;ll find this:</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/Addinganewcustomsectiontoumbracodemoproj_D4AE/image_4.png"><img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="357" alt="image" src="http://www.nibble.be/wlwimages/Addinganewcustomsectiontoumbracodemoproj_D4AE/image_thumb_4.png" width="545" border="0"></a> </p>
<p>So just a sample node that will open a demo edit page.</p>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco Dashboard RSS package available to download</title>
         <link>http://feedproxy.google.com/~r/darrenjferguson/~3/zhoQ8MKhuLU/umbraco-dashboard-rss-package-available-to-download.aspx</link>
         <description>&lt;p&gt;I've released a package allows you to display RSS feeds on your
Umbraco dashboard. The package is available to dowload from &lt;a rel=&quot;nofollow&quot;
&gt;my Umbraco packages page&lt;/a&gt; or the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/dashboard-rss&quot;&gt;our.umbraco
project page&lt;/a&gt;. Features of this package include:&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;Full PDF documentation&lt;/li&gt; &lt;li&gt;Source code available&lt;/li&gt; &lt;li&gt;Refreshes feeds using AJAX on a configurable interval&lt;/li&gt; &lt;li&gt;Fully customisable CSS&lt;/li&gt; &lt;li&gt;Use your own XSLT to transform feeds&lt;/li&gt; &lt;li&gt;Retrieve feeds from URL or local cache.&lt;/li&gt;
&lt;/ul&gt; &lt;p&gt;This initial release is relatively simple and just renders RSS.
The next release will allow you to build customisable filters on
top of RSS feeds by implementing some simple interfaces. This will
allow you to do simple things like display most recent content from
Umbraco and add edit/delete buttons.&lt;/p&gt; &lt;p&gt;Please feel free to send your feedback, comments or
suggestions.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.darren-ferguson.com/2009/7/20/umbraco-dashboard-rss-package-available-to-download.aspx</guid>
         <pubDate>Mon, 20 Jul 2009 14:41:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>I've released a package allows you to display RSS feeds on your
Umbraco dashboard. The package is available to dowload from <a rel="nofollow"
>my Umbraco packages page</a> or the <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects/dashboard-rss">our.umbraco
project page</a>. Features of this package include:</p> <ul>
<li>Full PDF documentation</li> <li>Source code available</li> <li>Refreshes feeds using AJAX on a configurable interval</li> <li>Fully customisable CSS</li> <li>Use your own XSLT to transform feeds</li> <li>Retrieve feeds from URL or local cache.</li>
</ul> <p>This initial release is relatively simple and just renders RSS.
The next release will allow you to build customisable filters on
top of RSS feeds by implementing some simple interfaces. This will
allow you to do simple things like display most recent content from
Umbraco and add edit/delete buttons.</p> <p>Please feel free to send your feedback, comments or
suggestions.</p>
<img src="http://feeds.feedburner.com/~r/darrenjferguson/~4/zhoQ8MKhuLU" height="1" width="1"/>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Robots.txt Editor for Umbraco</title>
         <link>http://blog.leekelleher.com/2009/07/20/robots-txt-editor-for-umbraco/</link>
         <description>Following up on my recent post of using Robots.txt with Umbraco, I decided that it would be nice to be able to edit the robots.txt directly from the Umbraco back-end. (Also I wanted to play a bit more with the BaseTree/ITree classes).
This afternoon I had a few hours to spare &amp;#8211; actually I was procrastinating [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&amp;blog=2580820&amp;post=144&amp;subd=leekelleher&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://blog.leekelleher.com/?p=144</guid>
         <pubDate>Mon, 20 Jul 2009 15:18:23 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Following up on my recent post of using <a rel="nofollow" target="_blank" href="http://blog.leekelleher.com/2009/07/07/robots-txt-for-use-with-umbraco/">Robots.txt with Umbraco</a>, I decided that it would be nice to be able to edit the robots.txt directly from the Umbraco back-end. (Also I wanted to play a bit more with the BaseTree/ITree classes).</p>
<p>This afternoon I had a few hours to spare &#8211; actually I was procrastinating on another job, (don&#8217;t tell my client &#8211; I&#8217;ll finish it off later tonight) &#8211; so I got down to some coding.</p>
<p>The <a rel="nofollow" target="_blank" href="http://umbracoext.codeplex.com/SourceControl/changeset/view/35482">source-code is available</a> on the <a rel="nofollow" target="_blank" href="http://umbracoext.codeplex.com/">Umbraco Extensions project</a> (on CodePlex) and created <a rel="nofollow" target="_blank" href="http://our.umbraco.org/projects/robotstxt-editor">a project page</a> on the new <a rel="nofollow" target="_blank" href="http://our.umbraco.org/">Our Umbraco community</a> website. (Don&#8217;t forget to give it some karma points! ;-p)</p>
<p><a rel="nofollow" target="_blank" href="http://our.umbraco.org/media/wiki/5402/633837309506210000_Robotstxt_Editor_10.zip">A direct download to the package installer (zip) is available here.</a></p>
<p>Very special thanks to <a rel="nofollow" target="_blank" href="http://webdeveloper2.com/">Dave Kinsella</a> for providing the <a rel="nofollow" target="_blank" href="http://twitpic.com/b01nb">Robot icon</a> <img class="alignnone size-full wp-image-149" title="robot icon" src="http://leekelleher.files.wordpress.com/2009/07/18477911.png?w=16&#038;h=16" alt="robot icon" width="16" height="16"/> &#8211; although I know Dave, it was great <a rel="nofollow" target="_blank" href="http://twitter.com/leekelleher/statuses/2738891885">proof that Twitter really does work!</a> (Thanks to <a rel="nofollow" target="_blank" href="http://twitter.com/DanielBowden">Dan</a> too for his <a rel="nofollow" target="_blank" href="http://twitpic.com/b03gf">Johnny 5</a> attempt! <img class="alignnone size-full wp-image-150" title="18480255" src="http://leekelleher.files.wordpress.com/2009/07/18480255.png?w=16&#038;h=15" alt="18480255" width="16" height="15"/> &#8211; Here was <a rel="nofollow" target="_blank" href="http://twitpic.com/b06dk">my attempt</a> too! <img class="alignnone size-full wp-image-151" title="18484040" src="http://leekelleher.files.wordpress.com/2009/07/18484040.png?w=16&#038;h=16" alt="18484040" width="16" height="16"/>)</p>
<p>If you have any bugs, comments, feedback or suggestions – please feel free to get in touch with me via the <a rel="nofollow" target="_blank" href="http://our.umbraco.org/projects/robotstxt-editor/feedback">Our Umbraco forums</a>.</p> Tagged: ASP.NET, Developer, Editor, Package, Robots.txt, SEO, Umbraco <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/leekelleher.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leekelleher.wordpress.com/144/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/leekelleher.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leekelleher.wordpress.com/144/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/leekelleher.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leekelleher.wordpress.com/144/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/leekelleher.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leekelleher.wordpress.com/144/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/leekelleher.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leekelleher.wordpress.com/144/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&blog=2580820&post=144&subd=leekelleher&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6a8e6348aa8c014a012bde96c9b04270?s=96&amp;amp;d=monsterid&amp;amp;r=G" medium="image">
            <media:title>vertino</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/07/18477911.png" medium="image">
            <media:title>robot icon</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/07/18480255.png" medium="image">
            <media:title>18480255</media:title>
         </media:content>
         <media:content url="http://leekelleher.files.wordpress.com/2009/07/18484040.png" medium="image">
            <media:title>18484040</media:title>
         </media:content>
      </item>
      <item>
         <title>London Meetup, Thursday 6th August</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/hWTM-Oi3hec/27487</link>
         <description>&lt;p&gt;
Since Codegarden09 in Copenhagen &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.darren-ferguson.com/&quot;&gt;Darren Ferguson&lt;/a&gt; and the UK umbraco community have been busy arranging an Umbraco UK meetup.
&lt;/p&gt; &lt;p&gt;
The event will take place on August 6th in London
and will be kindly hosted by &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.lbi.com/en/London/ContactUs_Accessible/&quot;
&gt;LBi&lt;/a&gt; - one of the largest full service digital
agencies. LBi are kindly donating the venue free of charge!&lt;/p&gt; &lt;p&gt;There is an event wiki page with all of the details &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/wiki/codegarden-2009/umbraco-uk-meetup&quot;&gt;here&lt;/a&gt;. You can sign up to attend by leaving
your details on &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/wiki/codegarden-2009/umbraco-uk-meetup/atendees&quot;&gt;this wiki page&lt;/a&gt; or by filling out &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://www.fergusonmoriyama.com/contact.aspx&quot;
&gt;this contact form&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Spaces are limited so please don't leave it until the last
minute.&lt;/p&gt; &lt;h3&gt;Help required!&lt;/h3&gt; &lt;p&gt;Although most of the practical details are in place there is
plenty the Umbraco community can do to support this event.&lt;/p&gt; &lt;h4&gt;Give a presentation&lt;/h4&gt; &lt;p&gt;If you think that you have a compelling talk/presentation to
give at the event, please leave some details on this wiki page or
fill out this form.&lt;/p&gt; &lt;h4&gt;Tweet/Blog/Email your friends&lt;/h4&gt; &lt;p&gt;Be sure to let any UK Umbraco users know about the event by
sending links to the wiki pages above. Use the hashtag
#umbracouk.&lt;/p&gt; &lt;p&gt;Non Umbracians are welcome, there will be plenty of beginner
focused material. If you know any CMS professionals who may be
interested in Umbraco then get them to come along.&lt;/p&gt; &lt;h4&gt;Come along prepared to participate&lt;/h4&gt; &lt;p&gt;We don't want the meetup to be a bunch of guys standing up and
talking we want to have group sessions and may be some open space.
Come along prepared to speak up, with questions and topics around
Umbraco in mind.&lt;/p&gt; &lt;h3&gt;Finally&lt;/h3&gt; &lt;p&gt;Without community partcipation this event will just be some tech
guys in a room.&lt;/p&gt; &lt;p&gt;By contributing to the wiki pages above and throwing your
suggestions into the ring we can make it something much more than
that.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=hWTM-Oi3hec:2m83AS6y2Ww:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=hWTM-Oi3hec:2m83AS6y2Ww:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=hWTM-Oi3hec:2m83AS6y2Ww:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/hWTM-Oi3hec&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Per Ploug Hansen</author>
         <guid isPermaLink="false">http://umbraco.org/27487</guid>
         <pubDate>Mon, 20 Jul 2009 04:11:22 -0700</pubDate>
      </item>
      <item>
         <title>Add YouTube Plug-in to Umbraco/TinyMCE</title>
         <link>http://blog.leekelleher.com/2009/07/16/add-youtube-plugin-to-umbraco-tinymce/</link>
         <description>Update: Following on from Dirk and Ismail&amp;#8217;s comments, I found out that this YouTube plug-in does not work with TinyMCE v3 (which is the default richtext editor in Umbraco v4). This guide is written to works for Umbraco v3 only, (using TinyMCE v2).
If you are looking for similar functionality in Umbraco v4, (TinyMCE v3), then all [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&amp;blog=2580820&amp;post=134&amp;subd=leekelleher&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://blog.leekelleher.com/?p=134</guid>
         <pubDate>Thu, 16 Jul 2009 08:07:25 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong><span style="text-decoration:underline;"><em>Update:</em></span></strong><em> Following on from <a rel="nofollow" href="#comment-224">Dirk and Ismail&#8217;s comments</a>, I found out that this YouTube plug-in does not work with TinyMCE v3 (which is the default richtext editor in Umbraco v4). This guide is written to works for Umbraco v3 <strong>only</strong>, (using TinyMCE v2).</em></p>
<p><em>If you are looking for similar functionality in Umbraco v4, (TinyMCE v3), then all you need to do is enable the &#8216;Flash/media&#8217; button in your Richtext editor data-type and embed the YouTube video like any other Flash movie (swf) &#8211; <a rel="nofollow" href="#comment-225">more details in my comment below</a>.</em></p>
<p><em><strong><span style="text-decoration:underline;">/End of update.</span></strong></em></p>
<hr />
Recently one of my clients wanted the ability to insert YouTube video clips directly into the TinyMCE editor within Umbraco. My initial thought was to create a macro that would take a YouTube video URL, parse it and display it on the rendered (front-end) page. <a rel="nofollow" target="_blank" href="http://www.nibble.be/?p=36">Tim G has a blog post on how to do this on his Nibble blog</a>, (love the <a rel="nofollow" target="_blank" href="http://www.youtube.com/watch?v=fruHQhNe-UM">Surfin&#8217; Bird</a> reference).
<p>This approached worked fine, but we ran into problems trying to edit the YouTube video URL, along with that, my client had an additional step of selecting a macro, then entering the YouTube URL.</p>
<p>After a little researching, I eventually found a native <a rel="nofollow" target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1669296&amp;group_id=103281&amp;atid=738747">YouTube plug-in for TinyMCE</a>, (<a rel="nofollow" target="_blank" href="http://sourceforge.net/tracker/download.php?group_id=103281&amp;atid=738747&amp;file_id=217845&amp;aid=1669296">direct link to ZIP download</a>).</p>
<p>Here is how I integrated in Umbraco:</p>
<ol>
<li>Extract the contents of the <code>youtube.zip</code> archive to your <code>/umbraco_client/tinymce/plugins/youtube/</code></li>
<li>In your <code>/config/</code> folder, open the <code>tinyMceConfig.config</code> file.</li>
<li>Insert the following lines:<br />
After the last <code>&lt;command /&gt;</code> entry, add&#8230;
<pre>&lt;command&gt; &lt;umbracoAlias&gt;mceYoutube&lt;/umbracoAlias&gt; &lt;icon&gt;../umbraco_client/tinymce/plugins/youtube/images/youtube.gif&lt;/icon&gt; &lt;tinyMceCommand value="" userInterface="true" frontendCommand="youtube"&gt;youtube&lt;/tinyMceCommand&gt;
&lt;priority&gt;75&lt;/priority&gt;
&lt;/command&gt;</pre>
<p>Then after the last <code>&lt;plugin /&gt;</code> entry, add&#8230;</p>
<pre>
&lt;plugin loadOnFrontend="false"&gt;youtube&lt;/plugin&gt;</pre>
</li>
<li>Once the XML config entries are in place, you will need to restart the Umbraco application &#8211; the quickest way of doing this is by modifying your <code>Web.config</code>, (literally open it, add a space, remove it, hit save).</li>
<li>The YouTube button is now available in Umbraco. <strong>However, it&#8217;s not quite ready yet, there is still one more step!</strong></li>
<li>In your Umbraco back-end, go to the &#8220;Developer&#8221; section, expand the &#8220;DataTypes&#8221; folder and then select &#8220;Richtext editor&#8221;. In the &#8220;Buttons&#8221; section you should see a YouTube icon. Check the box next to the icon, and you&#8217;re done! If you don&#8217;t see the YouTube icon, then check that the did the config steps above, and/or check that the read permissions are set correctly on your <code>/umbraco_client/</code> folder, (re-apply them if needs be).</li>
</ol> Tagged: plug-in, TinyMCE, Umbraco, YouTube <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/leekelleher.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leekelleher.wordpress.com/134/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/leekelleher.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leekelleher.wordpress.com/134/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/leekelleher.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leekelleher.wordpress.com/134/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/leekelleher.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leekelleher.wordpress.com/134/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/leekelleher.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leekelleher.wordpress.com/134/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&blog=2580820&post=134&subd=leekelleher&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6a8e6348aa8c014a012bde96c9b04270?s=96&amp;amp;d=monsterid&amp;amp;r=G" medium="image">
            <media:title>vertino</media:title>
         </media:content>
      </item>
      <item>
         <title>Creating a license provider that interfaces with the Umbraco store</title>
         <link>http://feedproxy.google.com/~r/darrenjferguson/~3/J-eE1WYzx1c/creating-a-license-provider-that-interfaces-with-the-umbraco-store.aspx</link>
         <description>&lt;p&gt;At codegarden 09 I attended an open space session that discussed
the three current package repositories - our.umbraco projects, the
Umbraco package repository and the Umbraco store. My action point
from this discussion was to write up some information on how to
create a license provider that works with the Umbraco store. With
this in mind I've released my &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/umbraco-store-license-provider&quot;&gt;
framework for creating licenses&lt;/a&gt; on our.umbraco.org and also
created a wiki page which &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/wiki/how-tos/creating-a-license-provider-that-interfaces-with-the-umbraco-store&quot;&gt;
explains how to configure the application&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The application is written around spring.net and is easy to get
up and quickly. It is also very flexible allowing you to implement
some simple interfaces in several areas of the application where
you may want to customise functionality. Integration testing is
already completed and my framework already provides licenses for
two products in the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://store.umbraco.org/&quot;&gt;Umbraco
store&lt;/a&gt;.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.darren-ferguson.com/2009/7/15/creating-a-license-provider-that-interfaces-with-the-umbraco-store.aspx</guid>
         <pubDate>Wed, 15 Jul 2009 13:40:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>At codegarden 09 I attended an open space session that discussed
the three current package repositories - our.umbraco projects, the
Umbraco package repository and the Umbraco store. My action point
from this discussion was to write up some information on how to
create a license provider that works with the Umbraco store. With
this in mind I've released my <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects/umbraco-store-license-provider">
framework for creating licenses</a> on our.umbraco.org and also
created a wiki page which <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/wiki/how-tos/creating-a-license-provider-that-interfaces-with-the-umbraco-store">
explains how to configure the application</a>.</p> <p>The application is written around spring.net and is easy to get
up and quickly. It is also very flexible allowing you to implement
some simple interfaces in several areas of the application where
you may want to customise functionality. Integration testing is
already completed and my framework already provides licenses for
two products in the <a rel="nofollow" target="_blank" href="http://store.umbraco.org/">Umbraco
store</a>.</p>
<img src="http://feeds.feedburner.com/~r/darrenjferguson/~4/J-eE1WYzx1c" height="1" width="1"/>]]></content:encoded>
         <category>Umbraco</category>
      </item>
      <item>
         <title>Testing Outgoing SMTP Emails - So Simple!</title>
         <link>http://farmcode.org/post/2009/07/16/Testing-Outgoing-SMTP-Emails-So-Simple!.aspx</link>
         <description>&lt;p&gt;At the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.umbraco.org&quot;&gt;Umbraco&lt;/a&gt; retreat before &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegarden09.com/&quot;&gt;CodeGarden 09&lt;/a&gt; in Denmark, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.aaron-powell.com/&quot;&gt;Aaron&lt;/a&gt; had told me an extremely handy tip about testing outbound emails in your .Net applications. I'm not sure why I've never heard about this before and the funny thing is all of the .Net developers working in our office (including contractors) had never seen this before either! It's so incredibly simple and built into .Net, so if you don't know about this already you'll want to be using this in the future.&lt;/p&gt; &lt;p&gt;If you application needs to send emails for whatever reason and you’re testing locally, you generally have to make sure that you're only sending emails to your address(es) so you’re not spamming a bunch of random people. This is an easy way to get around that and lets you view all of the emails sent. Just change (in our case add) a &lt;em&gt;deliveryMethod&lt;/em&gt; attribute to your &lt;em&gt;smtp&lt;/em&gt; settings to &lt;em&gt;SpecifiedPickupDirectory:&lt;/em&gt;&lt;/p&gt; &lt;pre&gt;&amp;lt;system.net&amp;gt; &amp;lt;mailSettings&amp;gt; &amp;lt;smtp from=&quot;noreply@localhost&quot; deliveryMethod=&quot;SpecifiedPickupDirectory&quot;&amp;gt; &amp;lt;specifiedPickupDirectory pickupDirectoryLocation=&quot;c:&amp;#92;maildrop&quot; /&amp;gt; &amp;lt;/smtp&amp;gt; &amp;lt;/mailSettings&amp;gt;
&amp;lt;/system.net&amp;gt;&lt;/pre&gt; &lt;p&gt;Now, all emails that are sent, just get saved to the specified folder and you can view them with Windows Live Mail, Outlook express, Thunderbird, or whatever.&lt;/p&gt; &lt;p&gt;Nice!! &lt;/p&gt;</description>
         <author>tech.nospam@nospam.thefarmdigital.com.au (ShannonDeminick)</author>
         <guid isPermaLink="false">http://farmcode.org/post.aspx?id=72bcfcef-4528-4969-8074-ff9824534e73</guid>
         <pubDate>Wed, 15 Jul 2009 18:29:05 -0700</pubDate>
      </item>
      <item>
         <title>translation features in umbraco</title>
         <link>http://www.netaddicts.be/blog/2009/7/14/translation-features-in-umbraco.aspx</link>
         <description>A client of mine was asking how he had to use the translation features in umbraco. Honestly, I haven't used it before but have started to explore how those features can be used in umbraco. Have a look at &lt;a rel=&quot;nofollow&quot;&gt;this article&lt;/a&gt; and let me know your thoughts on the last question.</description>
         <author>Administrator</author>
         <guid isPermaLink="false">http://www.netaddicts.be/1506.aspx</guid>
         <pubDate>Tue, 14 Jul 2009 13:21:50 -0700</pubDate>
      </item>
      <item>
         <title>Tweet on publish for Umbraco – available to download</title>
         <link>http://feedproxy.google.com/~r/darrenjferguson/~3/oX0Y-R6YXcg/tweet-on-publish-for-umbraco-–-available-to-download.aspx</link>
         <description>&lt;p&gt;I've released a new version of my Umbraco package that sends
tweets when you publish a content node. The package is available to
download from &lt;a rel=&quot;nofollow&quot;&gt;my Umbraco packages
page&lt;/a&gt; or the &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/tweet-on-publish&quot;&gt;our.umbraco
project page&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Features include:&lt;/p&gt; &lt;ul&gt;
&lt;li&gt;Complete rewrite of my previous twitter package&lt;/li&gt; &lt;li&gt;Configure multiple twitter accounts.&lt;/li&gt; &lt;li&gt;Send multiple tweets per publish.&lt;/li&gt; &lt;li&gt;Ensure documents are not tweeted on re-publish.&lt;/li&gt; &lt;li&gt;Support direct messages and @mentions&lt;/li&gt; &lt;li&gt;Send different tweets per document type.&lt;/li&gt; &lt;li&gt;Filter tweets by domain.&lt;/li&gt; &lt;li&gt;Includes full PDF manual.&lt;/li&gt;
&lt;/ul&gt; &lt;p&gt;So why is this useful? I use the package to publicise blog posts
and to send me a direct message when a comment is left on my blog
so that I can quickly check whether or not it is a spam comment and
act accordingly.&lt;/p&gt; &lt;p&gt;I'll provide a demonstration screen-cast shortly. In the
meantime I'd love to hear your feedback.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.darren-ferguson.com/2009/7/13/tweet-on-publish-for-umbraco-–-available-to-download.aspx</guid>
         <pubDate>Mon, 13 Jul 2009 15:07:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>I've released a new version of my Umbraco package that sends
tweets when you publish a content node. The package is available to
download from <a rel="nofollow">my Umbraco packages
page</a> or the <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/projects/tweet-on-publish">our.umbraco
project page</a>.</p> <p>Features include:</p> <ul>
<li>Complete rewrite of my previous twitter package</li> <li>Configure multiple twitter accounts.</li> <li>Send multiple tweets per publish.</li> <li>Ensure documents are not tweeted on re-publish.</li> <li>Support direct messages and @mentions</li> <li>Send different tweets per document type.</li> <li>Filter tweets by domain.</li> <li>Includes full PDF manual.</li>
</ul> <p>So why is this useful? I use the package to publicise blog posts
and to send me a direct message when a comment is left on my blog
so that I can quickly check whether or not it is a spam comment and
act accordingly.</p> <p>I'll provide a demonstration screen-cast shortly. In the
meantime I'd love to hear your feedback.</p>
<img src="http://feeds.feedburner.com/~r/darrenjferguson/~4/oX0Y-R6YXcg" height="1" width="1"/>]]></content:encoded>
         <category>Umbraco,Twitter</category>
      </item>
      <item>
         <title>Umbraco tip of the week - security on your live servers</title>
         <link>http://feedproxy.google.com/~r/cultiv/~3/g29C33Q3wJc/umbraco-tip-of-the-week---security-on-your-live-servers</link>
         <author>Sebastiaan Janssen</author>
         <guid isPermaLink="false">http://www.cultiv.nl/blog/2009/7/13/umbraco-tip-of-the-week---security-on-your-live-servers</guid>
         <pubDate>Sun, 12 Jul 2009 23:22:36 -0700</pubDate>
         <content:encoded><![CDATA[<p>This morning, I thought I'd protect my site a little better to
get some understanding of what would be required to do so.</p> <p>First of all, I thought I'd enable Windows authentication om my
/umbraco folder. Couldn't be easier, right? Wrong.<br /> Apparently, since I am using the <a rel="nofollow"
 target="_blank" href="http://umbraco.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=23321">
.net 3.5 configuration</a> to run Umbraco in integrated pipeline
mode in IIS7, some weird problem was introduced:</p> <p><img src="http://www.cultiv.nl/media/584/iis7formsauth_500x133.jpg" width="500" height="133" alt="iis7formsauth"/></p> <p>I could not disable forms authentication on the /umbraco folder.
Googling for this, did not get me a lot of good results. However, I
finally figured it out and it was actually a quite easy fix, the
following section in the web.config needs to be disabled:</p> <pre class="brush: xml"> &lt;authentication mode="Forms"&gt; &lt;forms name="yourAuthCookie" loginUrl="login.aspx" protection="All" path="/" /&gt; &lt;/authentication&gt;
</pre> <p>After disabling the forms authentication section, I could easily
enable Windows authentication on my Umbraco folder and disable
anonymous access. Great!</p> <p>This seems to be an unintentional "bug" that I've <a rel="nofollow"
 target="_blank" href="http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=23469">
submitted</a> (you can vote, if you care) to the core team for
future consideration.</p> <p>After that, I thought I'd also make it impossible to show the
debug information on my live site. I had actually linked to an <a rel="nofollow"
 target="_blank" href="http://umbraco.org/documentation/books/hide-debugging-features-for-production-systems">
Umbraco book</a> about this in an <a rel="nofollow"
 title="Umbraco tip of the week - Debugging from within the website">
earlier post</a>, so that should be easy, right? Wrong.</p> <p>I immediately saw a glaring mistake in the rewrite code, it
relied on me having ".aspx" in all of my URL's. But since I have
set "useDirectoryUrls" to true (so that none of my pages end in
".aspx"), this would not work.</p> <p>Maybe this book was written before you could even enable
useDirectoryUrls, I'm not sure. I've made <a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/wiki/how-tos/hide-debugging-features-for-production-systems">
a new wiki article</a> for it though.</p> <p>The solution is as follows, any URL with a querystring in it,
starting with umbDebug should be rewritten:</p> <pre class="brush: xml"> &lt;!-- Prevent the umbDebug querystrings from being used --&gt; &lt;add name="nodebug" virtualUrl="(.*)umbDebug.*" rewriteUrlParameter="IncludeQueryStringForRewrite" redirect="Application" destinationUrl="~$1" ignoreCase="true" /&gt;
</pre> <p><strong>Updated:</strong> Or... as <a rel="nofollow"
 target="_blank" href="http://www.netaddicts.be/">Dirk</a> and <a rel="nofollow"
 target="_blank" href="http://twitter.com/shazwazza">Shannon</a> point out, in
Umbraco 4 you can just disable the debugging by using:</p> <pre class="brush: xml">
&lt;add key="umbracoDebugMode" value="false" /&gt;
</pre>
<div class="feedflare">
<a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/cultiv?a=g29C33Q3wJc:z_UjBdevoro:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/cultiv?d=yIl2AUoC8zA" border="0"></a> <a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/cultiv?a=g29C33Q3wJc:z_UjBdevoro:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/cultiv?i=g29C33Q3wJc:z_UjBdevoro:F7zBnMyn0Lo" border="0"></a>
</div><img src="http://feeds.feedburner.com/~r/cultiv/~4/g29C33Q3wJc" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CodeGarden 09 Open Space Minutes -Space 2: Exception Handling in Umbraco</title>
         <link>http://blogs.thesitedoctor.co.uk/tim/2009/07/09/CodeGarden+09+Open+Space+Minutes+Space+2+Exception+Handling+In+Umbraco.aspx</link>
         <description>&lt;p&gt;
Those of you lucky enough to go to CodeGarden '09 you'll know the format of the Open
Space already but for those of you who didn't, Open Space is the time that the attendees
are invited to talk about something they're interested in so I proposed two:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Space 1: Selling Umbraco &lt;li&gt;
Space 2: Exception handing and error reporting in Umbraco (and other .net websites/applications) &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I'll write up the Selling Umbraco talk shortly but I wanted to put a few resources
together for it first so decided to write this one up first.
&lt;/p&gt;
&lt;p&gt;
First of all we had a brief chat about how everyone handles errors in their applications
and the various error handling options available. We discussed three options:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blogs.thesitedoctor.co.uk/tim/2009/02/27/Advanced+Error+Reporting+In+Umbraco+DasBlog+And+Other+ASPNet+Sites.aspx&quot;&gt;Error
Handler v2.0&lt;/a&gt; &lt;li&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://code.google.com/p/elmah/&quot;&gt;ELMAH&lt;/a&gt; &lt;li&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.exceptioneer.com/&quot;&gt;Exceptioneer&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I've only had a brief look at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://code.google.com/p/elmah/&quot;&gt;ELMAH&lt;/a&gt; and
found at the time it was a little too much in the way of RSS feeds etc and I just
want an email alert, that said, Lee Kelleher has written a good article about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.leekelleher.com/2009/04/23/integrating-elmah-with-umbraco/&quot;&gt;integrating
ELMAH with Umbraco here&lt;/a&gt; and I've written another article about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blogs.thesitedoctor.co.uk/tim/2009/02/27/Advanced+Error+Reporting+In+Umbraco+DasBlog+And+Other+ASPNet+Sites.aspx&quot;&gt;integrating
Error Handler v2.0 into Umbraco here&lt;/a&gt; so I'll overview how to integrate &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.exceptioneer.com/&quot;&gt;Exceptioneer&lt;/a&gt; into
Umbraco here instead.
&lt;/p&gt;
&lt;p&gt;
Wiring up &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.exceptioneer.com/&quot;&gt;Exceptioneer&lt;/a&gt; with your site couldn't
be easier, the best bit is that they do all the hard work for you with their &quot;Integrate&quot;
section of the site but to give you a quick snapshot of how easy it is, first of all, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.exceptioneer.com/Site/Downloads.aspx&quot;&gt;download
the dll&lt;/a&gt; and pop it into your bin folder. Then edit your web.config:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
&lt;code&gt;&amp;lt;?xml
version=&quot;1.0&quot;?&amp;gt; &amp;lt;configuration&amp;gt; &amp;lt;configSections&amp;gt; &amp;lt;section name=&quot;Exceptioneer&quot;
type=&quot;Exceptioneer.WebClient.ClientModuleConfiguration, Exceptioneer.WebClient&quot; requirePermission=&quot;true&quot;
/&amp;gt; &amp;lt;/configSections&amp;gt; &amp;lt;!-- This is where you get to specify your API Key
and Application Name --&amp;gt; &amp;lt;Exceptioneer ApiKey=&quot;XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&quot;
ApplicationName=&quot;YOUR APPLICATION NAME&quot; /&amp;gt; &amp;lt;!-- If you're using IIS 6.0 or Visual
Studio's built in web server you'll need to add this bit --&amp;gt; &amp;lt;system.web&amp;gt;
&amp;lt;httpModules&amp;gt; &amp;lt;add name=&quot;Exceptioneer&quot; type=&quot;Exceptioneer.WebClient.ClientModule,
Exceptioneer.WebClient&quot; /&amp;gt; &amp;lt;/httpModules&amp;gt; &amp;lt;!-- If you want to use the
JavaScript handling then add the Http Handler as so --&amp;gt; &amp;lt;httpHandlers&amp;gt; &amp;lt;add
path=&quot;ExceptioneerJavaScript.axd&quot; verb=&quot;GET,POST&quot; type=&quot;Exceptioneer.WebClient.JavaScriptHandler,
Exceptioneer.WebClient&quot; /&amp;gt; &amp;lt;/httpHandlers&amp;gt; &amp;lt;/system.web&amp;gt; &amp;lt;!-- If
you're using IIS 7.0 you'll need to add this bit too --&amp;gt; &amp;lt;system.webServer&amp;gt;
&amp;lt;validation validateIntegratedModeConfiguration=&quot;false&quot;/&amp;gt; &amp;lt;modules&amp;gt; &amp;lt;add
name=&quot;Exceptioneer&quot; preCondition=&quot;managedHandler&quot; type=&quot;Exceptioneer.WebClient.ClientModule,
Exceptioneer.WebClient&quot; /&amp;gt; &amp;lt;/modules&amp;gt; &amp;lt;handlers&amp;gt; &amp;lt;add name=&quot;ExceptioneerJavaScript&quot;
path=&quot;ExceptioneerJavaScript.axd&quot; verb=&quot;GET,POST&quot; type=&quot;Exceptioneer.WebClient.JavaScriptHandler,
Exceptioneer.WebClient&quot; /&amp;gt; &amp;lt;/handlers&amp;gt; &amp;lt;/system.webServer&amp;gt; &amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
Now, one of the coolest things about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.exceptioneer.com/&quot;&gt;Exceptioneer&lt;/a&gt; is
that you can now also debug JavaScript errors! To debug the javascript errors, just
include this script in your templates:
&lt;/p&gt;
&lt;pre&gt;&amp;lt;script src=&quot;/ExceptioneerJavaScript.axd?Reporter=true&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;p&gt;
That's it, you're done. Easy eh? If you want to know more about what it can do, Phil's
put together this &quot;lovely&quot; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.exceptioneer.com/Public/Demonstration.aspx&quot;&gt;video
overview&lt;/a&gt;. Exceptioneer have done a great comparison of the main features of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.exceptioneer.com/Public/ExceptioneerAndELMAH.aspx&quot;&gt;comparison
Exceptioneer and ELMAH here&lt;/a&gt;, the downside though is &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.exceptioneer.com/&quot;&gt;Exceptioneer&lt;/a&gt; is
still in beta. &lt;/p&gt;
&lt;p&gt;
Remember, regardless of how good you think your code is, you should always integrate
some form of error handling in your website even if it is just an email to alert you
to the fact. &lt;/p&gt;
&lt;img width=&quot;0&quot; height=&quot;0&quot; src=&quot;http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=bd1cc28f-f7b4-4f09-b096-6091ccfa43d7&quot;/&gt;</description>
         <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,bd1cc28f-f7b4-4f09-b096-6091ccfa43d7.aspx</guid>
         <pubDate>Wed, 08 Jul 2009 17:23:38 -0700</pubDate>
      </item>
      <item>
         <title>Robots.txt for use with Umbraco</title>
         <link>http://blog.leekelleher.com/2009/07/07/robots-txt-for-use-with-umbraco/</link>
         <description>I originally posted this over at the Our Umbraco community wiki. [Robots.txt for use with Umbraco] I am only posting it on my blog as a cross-reference. The Our Umbraco wiki version will evolve with the community&amp;#8217;s experience and knowledge.
The Robots Exclusion Protocol has been around for many years, yet there are a lot of [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&amp;blog=2580820&amp;post=132&amp;subd=leekelleher&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://blog.leekelleher.com/?p=132</guid>
         <pubDate>Tue, 07 Jul 2009 09:10:30 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p><em>I originally posted this over at the Our Umbraco community wiki. [<a rel="nofollow" target="_blank" href="http://our.umbraco.org/wiki/reference/umbraco-best-practices/robotstxt-for-use-with-umbraco">Robots.txt for use with Umbraco</a>] I am only posting it on my blog as a cross-reference. The Our Umbraco wiki version will evolve with the community&#8217;s experience and knowledge.</em></p>
<p>The Robots Exclusion Protocol has been around for many years, yet there are a lot of web-developers who are unaware of the reasons for having a robots.txt file in the root of their websites.</p>
<p>There have been many rumours around whether the bigger search engine crwalers (i.e. Googlebot) consider your website amateurish if you didn&#8217;t have a robots.txt &#8211; and if handled badly, could lead to your site being invisible on SERPs.</p>
<p>If you are happy for a crawler to crawl/index all of your website&#8217;s content, then you can use the following:</p>
<pre>User-agent: *
Disallow:</pre>
<p>However, when using Umbraco to power my websites, it is preferable to define which folders are accessible by the crawler. Personally, I would not like to see the contents of my <code>/umbraco/</code> folder to be returned in Google&#8217;s SERPs.</p>
<p>Here is an example of the robots.txt that I have used on several Umbraco-powered websites.</p>
<pre># robots.txt for Umbraco
User-agent: *
Disallow: /aspnet_client/
Disallow: /bin/
Disallow: /config/
Disallow: /css/
Disallow: /data/
Disallow: /scripts/
Disallow: /umbraco/
Disallow: /umbraco_client/
Disallow: /usercontrols/
Disallow: /xslt/</pre>
<p>From my perspective, there is no reason for a search engine crawler to be crawling/indexing files from any of the above folders &#8211; you may have a different perspective, to which you can amend your robots.txt accordingly.</p>
<p>For more information about the robots.txt standard, please refer to the official website: <a rel="nofollow" target="_blank" href="http://www.robotstxt.org/robotstxt.html">http://www.robotstxt.org/robotstxt.html</a></p> Tagged: Robots.txt, SEO, Umbraco <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/leekelleher.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leekelleher.wordpress.com/132/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/leekelleher.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leekelleher.wordpress.com/132/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/leekelleher.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leekelleher.wordpress.com/132/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/leekelleher.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leekelleher.wordpress.com/132/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/leekelleher.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leekelleher.wordpress.com/132/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&blog=2580820&post=132&subd=leekelleher&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6a8e6348aa8c014a012bde96c9b04270?s=96&amp;amp;d=monsterid&amp;amp;r=G" medium="image">
            <media:title>vertino</media:title>
         </media:content>
      </item>
      <item>
         <title>Thoughts,tips for creating umbraco packages</title>
         <link>http://www.nibble.be/?p=70</link>
         <description>I&amp;#8217;ve created my share of umbraco packages and thought I&amp;#8217;d try to share some tips/insights.
Creating packages is easy, the built-in package creator makes it super simple and with package actions you can perform additional common tasks (like updating the xsltextensions) without having to write a single line of code.
It really takes a minimal effort to [...]</description>
         <guid isPermaLink="false">http://www.nibble.be/?p=70</guid>
         <pubDate>Tue, 07 Jul 2009 08:34:44 -0700</pubDate>
         <content:encoded><![CDATA[<p>I&#8217;ve created my share of <a rel="nofollow" target="_blank" href="http://www.nibble.be/?page_id=4">umbraco packages</a> and thought I&#8217;d try to share some tips/insights.
<p>Creating packages is easy, the built-in package creator makes it super simple and with <a rel="nofollow" target="_blank" href="http://umbraco.tv/assets/package%20actions.pdf">package actions</a> you can perform additional common tasks (like updating the xsltextensions) without having to write a single line of code.</p>
<p>It really takes a minimal effort to package something up that you made, even if it&#8217;s very project specific it should be possible to isolate the functionality and package it up. </p>
<h3>Dare to share </h3>
<p>Even a simple package can be a great help, so don&#8217;t hesitate and share</p>
<h3>Naming</h3>
<p> To avoid conflicts and overwriting other existing items when installing a package, make sure you have unique and meaningful names</p>
<ul>
<li>Assemblies</li>
</ul>
<blockquote><p>Starting these with your name or company name followed by a project name should be enough to make them unique<br />FE: Nibble.Umb.Poll </p>
</blockquote>
<ul>
<li>Stylesheets, Scripts, Document types, Templates, XSLT files, Macros</li>
</ul>
<blockquote><p>A unique and meaningful name that links them back to the package, so it easy to see that they are part of a package<br />FE: not style.css but starrating.css<br />not list.xslt but bloglistposts.xslt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</blockquote>
<ul>
<li>Usercontrols</li>
</ul>
<blockquote><p>placing these in a new unique folder inside the /usercontrols folder makes it easy to see that they are part of a package<br />FE: /usercontrols/Nibble.Umb.Poll/poll.ascx</p>
</blockquote>
<ul>
<li>Config files</li>
</ul>
<blockquote><p>place these in the /config folder (again, with a unique and meaningful name)</p>
</blockquote>
<h3>Installation </h3>
<p>Package are really easy to install but in some cases the package installation might fail. So it&#8217;s always great to provide some manual installation instructions, just in case. </p>
<h3>Think ahead</h3>
<p>You might have created a package with a simple site in mind, but don&#8217;t forget they can/will also be used on multilingual sites, site running a different database engine. Or in case it&#8217;s a datatype, will be used with Canvas, autoform, doc2form. It&#8217;s a great plus if this is taken into account.</p>
<h3>What doesn&#8217;t work</h3>
<p>If the package only works with a certain umbraco version and up or if it only works on sql server, don&#8217;t forget to mention this to avoid that people install it on non supported installations.
<p>&nbsp;
<p>I&#8217;ve also added this post to the <a rel="nofollow" target="_blank" href="http://our.umbraco.org/wiki/how-tos/packages-and-projects/thoughts,tips-for-creating-packages">wiki</a> on our.umbraco.org, if you have anything to add/change (or correct my bad spelling) please do so .</p>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco Relation API</title>
         <link>http://blog.hendyracher.co.uk/umbraco-relation-api/</link>
         <description>One of the gems at #cg09 was being introduced to the cms.businesslogic.relations namespace and the ability to associate typed node Ids via an alias - it&amp;#8217;s so much faster than having to compare properties. To create a new RelationType simply add a row to the umbracoRelationType table (it&amp;#8217;s asking for a custom tree in the developer [...]</description>
         <guid isPermaLink="false">http://blog.hendyracher.co.uk/?p=466</guid>
         <pubDate>Tue, 07 Jul 2009 01:23:28 -0700</pubDate>
      </item>
      <item>
         <title>New Package - Poll package for umbraco 4</title>
         <link>http://www.nibble.be/?p=69</link>
         <description>I finally got round to polish and package the umbraco poll I made some time ago. So here it is &amp;#8230; The package installs the following: &amp;#160;
The document types (Polls, Poll, Poll Answer) will be used to setup the polls. So you&amp;#8217;ll have a Polls document that will contain several Poll documents and these will [...]</description>
         <guid isPermaLink="false">http://www.nibble.be/?p=69</guid>
         <pubDate>Mon, 06 Jul 2009 03:16:47 -0700</pubDate>
         <content:encoded><![CDATA[<p>I finally got round to polish and package the umbraco poll I made some time ago. So here it is &#8230;</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="170" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb.png" width="338" border="0"></a> </p>
<p>The package installs the following:</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_3.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="153" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb_3.png" width="367" border="0"></a> </p>
<p>&nbsp;</p>
<p>The document types (Polls, Poll, Poll Answer) will be used to setup the polls.</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_4.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="131" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb_4.png" width="240" border="0"></a> </p>
<p>So you&#8217;ll have a Polls document that will contain several Poll documents and these will have several Poll Answer documents beneath it.</p>
<p>After you have setup a poll with some answers in your content area you can get the poll on your page.</p>
<p>First add a reference to the installed stylesheet (/css/Nibble.Umb.Poll.css) and then place the Poll macro on your template.</p>
<p>Please note that:</p>
<ul>
<li>The macro will have to be placed inside a form with runat=&#8221;server&#8221; attribute
<li>There has to be a scriptmanager on the page</li>
</ul>
<p>The poll macro has several parameters:</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_5.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="233" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb_5.png" width="240" border="0"></a> </p>
<p>&nbsp;</p>
<ul>
<li>Poll Node Id: This is the id of the Poll content node that you want to display
<li>Display Only: Check this if you only want to display the results of a poll
<li>Submit On Select: Check this if you want to submit the vote when a user selects a answer
<li>Hide Submit: Check this if you want to hide the submit button
<li>Sort Results: Check this if you want that the results are sorted by number of votes
<li>Width Total Votes: Instead of the highest number of votes being equal to 100% width, the total number of votes is 100%
<li>Hide Question: Check this if you want to hide the question
<li>Random Poll: Check this if you want to display a random Poll, you&#8217;ll also have to update the Poll Node Id to the Polls document (containing the different polls)</li>
</ul>
<p>&nbsp;</p>
<p>So depending on the parameters (Submit On Select and&nbsp; Hide Submit) your poll can look like:</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_6.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="158" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb_6.png" width="313" border="0"></a> </p>
<p>or (with submit button)</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_7.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="167" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb_7.png" width="303" border="0"></a> </p>
<p>The Results can look like this:</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_8.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="213" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb_8.png" width="290" border="0"></a> </p>
<p>Sorted:</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_9.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="203" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb_9.png" width="278" border="0"></a> </p>
<p>Width Total Votes:</p>
<p><a rel="nofollow" target="_blank" href="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_10.png"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="200" alt="image" src="http://www.nibble.be/wlwimages/NewPackagePollpackageforumbraco4_AC94/image_thumb_10.png" width="274" border="0"></a> </p>
<p>You can download the package here: <a rel="nofollow" title="http://our.umbraco.org/projects/poll" target="_blank" href="http://our.umbraco.org/projects/poll">http://our.umbraco.org/projects/poll</a></p>]]></content:encoded>
      </item>
      <item>
         <title>UmbImport V1 released</title>
         <link>http://www.richardsoeteman.net/2009/06/30/UmbImportV1Released.aspx</link>
         <description>&lt;p&gt;
I'm very pleased to announce that I finally released the V1 version of UmbImport.
For those of you who don't know what UmbImport is:
&lt;/p&gt;
&lt;p&gt;
UmbImport helps you import content or members from any datasource into &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.umbraco.org&quot;&gt;Umbraco&lt;/a&gt;.
The following datasources are supported by default: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SQL Server &lt;/li&gt;
&lt;li&gt;
CSV file &lt;/li&gt;
&lt;li&gt;
XML file &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You can also create your own custom DataAdapter. Check out the following links to
screencasts to see the power of UmbImport.&amp;#160; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.richardsoeteman.net/PermaLink,guid,189035af-bbc0-4d3f-8d54-9782c06794e7.aspx&quot;&gt;Import
content&amp;#160; &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.vimeo.com/3853997&quot;&gt;Import members&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The package is added to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/&quot;&gt;our.umbraco.org&lt;/a&gt; the
new &lt;a rel=&quot;nofollow&quot; title=&quot;Umbraco&quot; target=&quot;_blank&quot; href=&quot;http://www.umbraco.org&quot;&gt;Umbraco&lt;/a&gt; community
site , so you can &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/projects/umbimport&quot;&gt;download&lt;/a&gt; it
there or use the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbimport.soetemansoftware.nl/&quot;&gt;UmbImport&lt;/a&gt; site.
On &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://our.umbraco.org/&quot;&gt;our.umbraco.org&lt;/a&gt; you will
find a forum also where you can drop your questions/feature requests/ bugs etc. In
August I will release a manual also. If you find any issues please report it on the
forum or comment on this post.
&lt;/p&gt;
&lt;img width=&quot;0&quot; height=&quot;0&quot; src=&quot;http://www.richardsoeteman.net/aggbug.ashx?id=79b35431-6f38-43e6-ae34-3a3e428892d5&quot;/&gt;</description>
         <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,79b35431-6f38-43e6-ae34-3a3e428892d5.aspx</guid>
         <pubDate>Tue, 30 Jun 2009 00:43:08 -0700</pubDate>
      </item>
      <item>
         <title>Source Code Released for User Control File Tree Umbraco Package</title>
         <link>http://blog.leekelleher.com/2009/06/29/source-code-released-for-user-control-file-tree-umbraco-package/</link>
         <description>A few months ago I released the User Control File Tree package for Umbraco, this allowed developers to edit the front-end code/mark-up in their ASCX user-controls from the Umbraco back-end, (remotely), rather than editing them directly on the server via a text-editor.
Today I have released the source-code on the Umbraco Extensions project (on CodePlex) and [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&amp;blog=2580820&amp;post=129&amp;subd=leekelleher&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://blog.leekelleher.com/?p=129</guid>
         <pubDate>Mon, 29 Jun 2009 15:55:28 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>A few months ago I released <a rel="nofollow" target="_blank" href="http://blog.leekelleher.com/2009/04/14/umbraco-package-ascx-usercontrol-file-editor-tree/">the User Control File Tree package for Umbraco</a>, this allowed developers to edit the front-end code/mark-up in their ASCX user-controls from the Umbraco back-end, (remotely), rather than editing them directly on the server via a text-editor.</p>
<p>Today I have <a rel="nofollow" target="_blank" href="http://umbracoext.codeplex.com/SourceControl/changeset/view/35032">released the source-code</a> on the <a rel="nofollow" target="_blank" href="http://umbracoext.codeplex.com/">Umbraco Extensions project</a> (on CodePlex) and created <a rel="nofollow" target="_blank" href="http://our.umbraco.org/projects/user-control-file-tree">a project page</a> on the new <a rel="nofollow" target="_blank" href="http://our.umbraco.org/">Our Umbraco community</a> website.</p>
<p>If you have any comments, feedback or suggestions &#8211; please feel free to get in touch with me via the Our Umbraco forums.</p> Tagged: ASCX, ASP.NET, Developer, Umbraco, User Controls <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/leekelleher.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/leekelleher.wordpress.com/129/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/leekelleher.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/leekelleher.wordpress.com/129/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/leekelleher.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/leekelleher.wordpress.com/129/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/leekelleher.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/leekelleher.wordpress.com/129/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/leekelleher.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/leekelleher.wordpress.com/129/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.leekelleher.com&blog=2580820&post=129&subd=leekelleher&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6a8e6348aa8c014a012bde96c9b04270?s=96&amp;amp;d=monsterid&amp;amp;r=G" medium="image">
            <media:title>vertino</media:title>
         </media:content>
      </item>
      <item>
         <title>Integrating sIFR with Umbraco CMS</title>
         <link>http://feedproxy.google.com/~r/CWS/~3/P-PVZCI9DlE/integrating-sifr-with-umbraco-cms.aspx</link>
         <guid isPermaLink="false">http://www.creativewebspecialist.co.uk/2009/06/29/integrating-sifr-with-umbraco-cms.aspx</guid>
         <pubDate>Mon, 29 Jun 2009 00:00:00 -0700</pubDate>
         <content:encoded><![CDATA[<p>Hello all. Well I have just come back from sunny Copenhagen where I spoke at the <a rel="nofollow" target="_blank" href="http://codegarden09.com">Umbraco conference CodeGarden09</a>. If you missed my session or wasn’t able to attend CodeGarden09 this blog post will give you an overview of the session.
</p><p>I done a talk on integrating sIFR into Umbraco with <a rel="nofollow" title="sIFR3" target="_blank" href="http://wiki.novemberborn.net/sifr3/">Mark Wubben, who is the brains behind the sIFR project</a>.</p> <div class="feedflare">
<a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/CreativeWebSpecialist?a=WiFOdsG_iZA:2YejWH4a9SI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/CreativeWebSpecialist?i=WiFOdsG_iZA:2YejWH4a9SI:D7DqB2pKExk" border="0"></a>
</div><img src="http://feeds.feedburner.com/~r/CreativeWebSpecialist/~4/WiFOdsG_iZA" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/CWS/~4/P-PVZCI9DlE" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco Codegarden09 Wrap Up</title>
         <link>http://www.motusconnect.com/blog/2009/6/25/umbraco-codegarden09-wrap-up</link>
         <description>This year's Codegarden had 174 attendees, loads of speakers, 36 open space sessions, 1,000's of lines of code, 100's of liters of beer, and some - one of a kind - bed sheets printed with a goofy picture of the Umbraco Core Team and MVPs taken home by the lucky Umbraco bingo winner.</description>
         <author>info@motusconnect.com (Paul Sterling)</author>
         <guid isPermaLink="false">http://www.motusconnect.com/blog/2009/6/25/umbraco-codegarden09-wrap-up</guid>
         <pubDate>Thu, 25 Jun 2009 01:33:44 -0700</pubDate>
         <content:encoded><![CDATA[<p>There are lots of words used to describe Umbraco Codegarden09,
my two favorite being <a rel="nofollow" target="_blank" href="http://www.ole-erling.dk/"
>Ole Erling</a>!&nbsp; This year's Codegarden had
174 attendees, loads of speakers, 36 open space sessions, 1,000's
of lines of code, 100's of liters of beer, and some - one of a kind
- bed sheets printed with a goofy picture of the Umbraco Core Team
and MVPs taken home by the lucky Umbraco bingo winner.</p> <p><a rel="nofollow"
>
<img width="164" height="244" alt="3651210817_9e24d2cf8c_m[1]" border="0" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;"/></a></p> <h2>Venue</h2> <p>The venue this year in Copenhagen was Kedelhallen and it was
fantastic - plenty of space to interact and collaborate, a cozy
cafe, lawns filled with chairs, and the weather was absolutely
perfect (a Codegarden tradition).&nbsp; Personally, I had a
fantastic experience meeting many new people in the community and
(finally) meeting people I interact with daily in Twitter and the
Umbraco Forum.&nbsp; I never had a minute where I thought 'what
should I do now?' as friendly Umbraco people were eager to share,
discuss, and chat - this is one of the things that makes Umbraco
Codegarden unique among conferences.&nbsp;</p> <h2>Real Time Input</h2> <p>Between the Core Team retreat and Codegarden the week spent with
Umbraco people was exhausting, inspiring, and extraordinarily
productive.&nbsp; As many know already, one of my main projects is
<a rel="nofollow" target="_blank" href="http://commerce4umbraco.codeplex.com/"
>Commerce for Umbraco</a> and I received excellent
and relevant feedback from a number of attendees regarding items
that work well and items that don't work as well.&nbsp; This type
of feedback is the most valuable for an open source project as it
gives us a direction.&nbsp; Based on the feedback and experiences
of the project's users we expect a full release in approximately
60-days - hurray!</p> <h2>Umbraco Store</h2> <p>Another area that I focus some of my time and money in is the
development of the Umbraco Store (<a rel="nofollow"
 target="_blank" href="http://store.umbraco.org/">http://store.umbraco.org/</a>) and
this received feedback as well.&nbsp; During an open space session
we discussed integrating the three current package repositories
(projects on <a rel="nofollow" target="_blank" href="http://our.umbraco.org/"
>our.umbraco.org</a>, package repository, and the <a rel="nofollow"
 target="_blank" href="http://store.umbraco.org/">Umbraco Store</a>)
into a&nbsp; more unified user experience.&nbsp; From this session
we created very clear, actionable items with assigned owners and,
with some luck and a bit of work, we'll have prototype of the
integrated experience in a few weeks.&nbsp; Look for more posts
from me on this topic as we continue to develop it.&nbsp; One
interesting item is that the reluctance to commercialize one's work
by selling packages in the Umbraco Store was noticeably absent in
discussions this year.</p> <h2>Our Umbraco</h2> <p>As you no doubt already know, the new Umbraco community site was
unveiled at Codegarden09 (<a rel="nofollow"
 target="_blank" href="http://our.umbraco.org/">http://our.umbraco.org/</a>).&nbsp;
This site sets the standard for a much higher level of
collaboration between members of the Umbraco community.&nbsp; If
you haven't seen it yet, go check it out now.</p> <h2>Umbraco ASP.NET MVC</h2> <p>Some of the biggest news is the announcement of Umbraco's
adoption of the ASP.NET MVC framework for the v5 release.&nbsp; At
Codegarden this was the announcement that generated the greatest
buzz.&nbsp; At the Core Team retreat this was the focus of our
discussions and some prototypes were created to prove the proof of
concept.&nbsp; This is a very exciting direction for Umbraco and
one that you'll no doubt see many more posts and discussions about
in the coming year.</p> <h2>Scale and Momentum</h2> <p>Finally, as an attendee of past Codegardens one could not miss
that the scale of the event was actually, well, big.&nbsp; I think
this year (2009) marks the point at which the Umbraco Project is
bigger than Niels, or the Core Team, it is truly a community
project that is made by, and for, the people that use it.&nbsp; I
see this as a tremendous accomplishment and one that is
irreversible.&nbsp;</p> <p>&nbsp; See you next year!</p>]]></content:encoded>
      </item>
      <item>
         <title>CodeGarden '09 Presentation</title>
         <link>http://blog.percipientstudios.com/2009/6/22/codegarden-'09-presentation.aspx</link>
         <description>&lt;p&gt;Download my Umbraco CodeGarden '09 presentation, &quot;What I wish I
had known in my first 30 days with umbraco&quot; (PDF)&lt;/p&gt;</description>
         <author>info@percipientstudios.com (Douglas Robar)</author>
         <guid isPermaLink="false">http://blog.percipientstudios.com/2009/6/22/codegarden-'09-presentation.aspx</guid>
         <pubDate>Mon, 22 Jun 2009 10:37:49 -0700</pubDate>
         <content:encoded><![CDATA[<p>I gave a presentation at Umbraco CodeGarden '09 and also at the umbracoUK meetup entitled, <a rel="nofollow" target="_blank" href="http://blog.percipientstudios.com/media/971/what%20i%20wish%20i%20had%20known.pdf"><strong>What I wish I had known in my first 30 days with umbraco</strong></a> (PDF).</p>
<p>As promised, here are the updated slides.</p>]]></content:encoded>
      </item>
      <item>
         <title>Umbraco Core Team and MVP’s Gone Wild</title>
         <link>http://www.motusconnect.com/blog/2009/6/20/umbraco-core-team-and-mvp’s-gone-wild</link>
         <description>Here's a cheeky video made at the Core Team planning retreat at the end of a long day spent discussing v.Next of Umbraco.</description>
         <author>info@motusconnect.com (Paul Sterling)</author>
         <guid isPermaLink="false">http://www.motusconnect.com/blog/2009/6/20/umbraco-core-team-and-mvp’s-gone-wild</guid>
         <pubDate>Fri, 19 Jun 2009 20:20:10 -0700</pubDate>
         <content:encoded><![CDATA[<p>Here's a cheeky video made at the Core Team planning retreat at
the end of a long day spent discussing v.Next of Umbraco.</p> <p>

 

 
 
 
 
<iframe class="embeddedvideo" type="application/x-shockwave-flash" width="425"
 height="269" src="http://stream.umbraco.org/v.swf"

/>
</p> <p>Hope to see you at CodeGarden 09 on Monday!</p> <p>-Paul</p>]]></content:encoded>
      </item>
      <item>
         <title>Can you upgrade your site to Umbraco 4?</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/ZIPESA437VU/24928</link>
         <description>&lt;p&gt;As &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://umbraco.org/v4&quot;&gt;Umbraco 4&lt;/a&gt; is coming on Friday it's a good idea to start preparing upgrades. We've gone to great lengths to make sure that Umbraco is as compatible with Umbraco 3 as possible and Umbraco 4 includes an automated upgrade wizard that will convert any existing Umbraco 3.0.5+ installation to Umbraco 4, including converting your old templates to the new MasterPage syntax. For most installations, upgrading shouldn't be a problem and should take less than an hour.&lt;/p&gt; &lt;p&gt;In general &lt;strong&gt;it's very few items that aren't supported&lt;/strong&gt;, but if you're using any of these features, upgrading is not straight forward:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;The XSLT helper method RenderTemplate().&lt;/strong&gt; As we've switched from the old proprietary template model in Umbraco 2 and 3 to ASP.NET MasterPages in Umbraco 4, the RenderTemplate can no longer be used. If your site depends on the RenderTemplate functionality, you need to disable MasterPages as continue to use the old template model which is still supported in Umbraco 4 by editing /config/umbracoSettings.config and set &quot;useAspNetMasterPages&quot; to false. It's crucial that you change this setting in the Umbraco 4 distribution &lt;strong&gt;before you copy the Umbraco 4 files.&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;UltraSimpleMailer / Newsletter.&lt;/strong&gt; This is not compatible with Umbraco 4 as it relied on a very old WYSIWYG editor and the old template model. We're working on making a new version of the UltraSimpleMailer, but it won't be ready for the release of Umbraco 4 on Friday. &lt;strong&gt;If you're using the UltraSimpleMailer we suggest that you don't upgrade yet&lt;/strong&gt;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;3rd party datatypes&lt;/strong&gt;. In general all old data types should work with umbraco if they're made using best practices. However, we can't give any guarantees that they'll work and you should make sure to test them first.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;How to upgrade&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;First of all the upgrade wizard only supports Umbraco 3.0.5+ installations (while 3.0.3 installations apparently work too). If you're running an older version of Umbraco (2.0, 2.1 or &amp;lt;3.0.5) you should first upgrade to Umbraco 3.0.6.&lt;/p&gt; &lt;p&gt;Secondly, make sure that your site doesn't use any of the un supported functionality described above and if it does make sure that you follow the suggestions above.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Upgrade:&lt;/em&gt;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Before you upgrade make sure to backup your files and your database and make sure that you run the upgrade on a local development server and not in a hosted environment.&lt;/li&gt; &lt;li&gt;If you have special settings in your web.config or in your config files in the /config directory such as XSLT Extensions or localized url replacement characters, make sure to have those changes nearby as you'll need to update those settings after the upgrade. You might want to use a diff tool to see the differences.&lt;/li&gt; &lt;li&gt;Extract the Umbraco 4 zip somewhere local outside your development environment.&lt;/li&gt; &lt;li&gt;Copy the /web.config, /default.aspx, /bin, /config, /masterpages, /umbraco and /umbraco_client from the unpacked files to your umbraco 3 installation.&lt;/li&gt; &lt;li&gt;Update the web.config and the /config files if you had any special settings (from step 2)&lt;/li&gt; &lt;li&gt;Start a browser and point it to the root of your site (ie. http://localhost or &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://mysite.com&quot;&gt;http://mysite.com&lt;/a&gt;)&lt;/li&gt; &lt;li&gt;Follow the installation wizard - it should upgrade your database and your templates automatically&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;If you have any troubles upgrading, let us know in the comments and if you encounter any bugs add them to the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codeplex.com/umbraco/WorkItem/Create.aspx&quot;&gt;Codeplex tracker&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=ZIPESA437VU:-cFcGWMBEL0:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=ZIPESA437VU:-cFcGWMBEL0:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=ZIPESA437VU:-cFcGWMBEL0:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/ZIPESA437VU&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Per Ploug Hansen</author>
         <guid isPermaLink="false">http://umbraco.org/24928</guid>
         <pubDate>Fri, 12 Jun 2009 05:12:16 -0700</pubDate>
      </item>
      <item>
         <title>Codegarden 09</title>
         <link>http://ismailmayat.wordpress.com/2009/06/11/codegarden-09/</link>
         <description>It&amp;#8217;s almost that time of year, Codegarden 09. I for one can&amp;#8217;t wait. Looking forward to learning loads and meeting a great bunch of talented people. I am flying out Sunday 21st June should be in Copenhagen around 3pm. Staying at Avenue hotel so if anyone else is there or staying close by and wants [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ismailmayat.wordpress.com&amp;blog=7358174&amp;post=105&amp;subd=ismailmayat&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://ismailmayat.wordpress.com/?p=105</guid>
         <pubDate>Thu, 11 Jun 2009 08:50:29 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>It&#8217;s almost that time of year, <a rel="nofollow" target="_blank" href="http://codegarden09.com">Codegarden 09</a>. I for one can&#8217;t wait. Looking forward to learning loads and meeting a great bunch of talented people. I am flying out Sunday 21st June should be in Copenhagen around 3pm. Staying at <a rel="nofollow" target="_blank" href="http://www.avenuehotel.dk/index.php?id=1">Avenue hotel</a> so if anyone else is there or staying close by and wants to hook up drop me a comment. Going to take my running stuff so if someone is really brave and feels like going for a run your more than welcome to join me.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/ismailmayat.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ismailmayat.wordpress.com/105/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/ismailmayat.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ismailmayat.wordpress.com/105/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/ismailmayat.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ismailmayat.wordpress.com/105/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/ismailmayat.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ismailmayat.wordpress.com/105/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/ismailmayat.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ismailmayat.wordpress.com/105/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ismailmayat.wordpress.com&blog=7358174&post=105&subd=ismailmayat&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6495743815f2137983c9d19ad4746edb?s=96&amp;amp;d=&amp;amp;r=G" medium="image">
            <media:title>ismailmayat</media:title>
         </media:content>
      </item>
      <item>
         <title>Win tickets for CodeGarden 09 :)</title>
         <link>http://feedproxy.google.com/~r/UmbracoBlog/~3/hlkFz-6KNq0/27009</link>
         <description>&lt;p&gt;Do you want to get to CodeGarden for free and do you have a cool
site or package that you want to show during the open space, then
you're in luck.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Microsoft have sponsored 2*2 tickets&lt;/strong&gt; and all
you need to do is to submit a three paragraph description
(inclusion of screenshots is a bonus here) of what you'd like to
show and &lt;a rel=&quot;nofollow&quot;
 target=&quot;_blank&quot; href=&quot;mailto:nh@umbraco.dk?subject=cg09 competition&quot;&gt;mail it to
me&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The deadline is the 15th of June 12.00 GMT+1 and the winners
will be selected by the hard but righteous jury which is me and
Daniel Frost from Microsoft.&lt;/p&gt; &lt;p&gt;Impress us, come to CG for free and get famous :-)))&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=hlkFz-6KNq0:7uDl_LCvmq8:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?a=hlkFz-6KNq0:7uDl_LCvmq8:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/UmbracoBlog?i=hlkFz-6KNq0:7uDl_LCvmq8:V_sGLiPBpWU&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/UmbracoBlog/~4/hlkFz-6KNq0&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
         <author>Niels Hartvig</author>
         <guid isPermaLink="false">http://umbraco.org/27009</guid>
         <pubDate>Wed, 10 Jun 2009 02:11:55 -0700</pubDate>
      </item>
      <item>
         <title>Regular expression in Umbraco for number validation.</title>
         <link>http://blog.vizioz.com/2009/06/regular-expression-in-umbraco-for.html</link>
         <description>This evening I was looking for a way to validate an Umbraco node that could be either text or a numeric value, in my case a salary that could be either an hourly amount, an annual figure or a comment. &lt;br /&gt;&lt;br /&gt;In the case where the node contained a value I wanted the XSLT to output a pound sign (£) and for any that contained text it would just output the text, as this could be something like &quot;Contact Us&quot; or &quot;Negotiable&quot;&lt;br /&gt;&lt;br /&gt;I thought someone else might find this useful so here is the XSLT and the regular expression.&lt;br /&gt;&lt;br /&gt;First if you are using Umbraco, don't forget to include the reference to the EXSLT Regular expression library at the top of your XSLT.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;xsl:stylesheet version=&quot;1.0&quot;&lt;br /&gt; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&lt;br /&gt; xmlns:msxml=&quot;urn:schemas-microsoft-com:xslt&quot;&lt;br /&gt; xmlns:umbraco.library=&quot;urn:umbraco.library&quot;&lt;br /&gt; xmlns:Exslt.ExsltRegularExpressions=&quot;urn:Exslt.ExsltRegularExpressions&quot;&lt;br /&gt; exclude-result-prefixes=&quot;msxml umbraco.library Exslt.ExsltRegularExpressions&quot;&amp;gt;&lt;/pre&gt;&lt;br /&gt;Then the code I used was:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;xsl:if test=&quot;Exslt.ExsltRegularExpressions:match($currentPage/data [@alias='Salary'],&lt;br /&gt; '^[0-9]*&amp;#92;,?[0-9]*&amp;#92;.?[0-9]+$') != ''&quot;&amp;gt;&lt;br /&gt; &amp;lt;xsl:text&amp;gt;&amp;#163;&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;&amp;lt;/xsl:if&amp;gt;&lt;/pre&gt;&lt;br /&gt;This regular expression allows any number of digits, an optional comma, more digits, an optional decimal point and finally more digits, so all the following are valid:&lt;br /&gt;&lt;br /&gt;12,000&lt;br /&gt;14.43&lt;br /&gt;334,342.03&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8614620678187102145-7407437541274445203?l=blog.vizioz.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Chris)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8614620678187102145.post-7407437541274445203</guid>
         <pubDate>Tue, 09 Jun 2009 12:48:00 -0700</pubDate>
      </item>
      <item>
         <title>Google Analytics for Umbraco – First Beta</title>
         <link>http://blog.sitereactor.dk/2009/06/05/google-analytics-for-umbraco-first-beta/</link>
         <description>I&amp;#8217;m happy to announce the first beta release of my Google Analytics plugin/section for Umbraco.
The development took a bit longer then first anticipated, but I think it turned out really well. There are still a few bugs, so I don&amp;#8217;t recommend that you install it in a customer solution just yet. This first release is [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=blog.sitereactor.dk&amp;blog=4531466&amp;post=75&amp;subd=elpadrinodk&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://blog.sitereactor.dk/?p=75</guid>
         <pubDate>Fri, 05 Jun 2009 06:34:07 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m happy to announce the first beta release of my Google Analytics plugin/section for Umbraco.<br />
The development took a bit longer then first anticipated, but I think it turned out really well. There are still a few bugs, so I don&#8217;t recommend that you install it in a customer solution just yet. This first release <span style="text-decoration:underline;">is</span> a beta release, so first off you should just try it out and please feel free to report any bugs you might find.<br />
When I have had a chance to clean up the source code, and documenting it I will release the code as open source.</p>
<p>Currently known bugs are:<br />
When submitting a new date range the first click on the button doesn&#8217;t raise the click event of the button, so you have to make your selection again and click the button to refresh the view with your new date range (default date range si one month).<br />
I&#8217;m currently using Googles Chart API to display the charts, so the amount of data that can be displayed is limited.</p>
<p>At the bottom of this post you will find a link to download the files necessary to install the google analytics plugin. This is not a &#8220;normal&#8221; umbraco package that you can install from within the client, so need to unpack the files within the root directory of you umbraco installation.<br />
These files are included in the package:<br />
web.config<br />
umbracoAppInserts.sql<br />
umbracoAppTreeUpdate.sql (only needed if you have downloaded the package before &#8211; contains sql fix).<br />
bin&#92;Google.GData.Analytics.dll<br />
bin&#92;Google.GData.Client.dll<br />
bin&#92;Sitereactor.GoogleAnalytics.dll<br />
config&#92;Analytics&#92;Analytics.config<br />
config&#92;Analytics&#92;AnalyticsChartProperties.config<br />
umbraco&#92;config&#92;lang&#92;*.xml<br />
umbraco&#92;statistics&#92;StatContent.aspx</p>
<p>So, there are a couple of things that you have to be aware of when installing/unpacking these files.<br />
First off, the web.config file is just a standard umbraco web.config so be sure not to overwrite you own. This file is simply included to shown you how and where to configure the google analytics account that you want displayed within Umbraco.<br />
Under &lt;appSettings&gt; you have to add the following to your web.config file:<br />
&lt;add key=&#8221;GoogleAnalytics.Email&#8221; value=&#8221;email@gmail.com&#8221;/&gt;<br />
&lt;add key=&#8221;GoogleAnalytics.Passwd&#8221; value=&#8221;password&#8221;/&gt;<br />
&lt;add key=&#8221;GoogleAnalytics.ProfileId&#8221; value=&#8221;ga:profileid&#8221;/&gt;</p>
<p>These three entries are your Google Analytics credentials. If you are unsure of what your profileid number is, then login to analytics, click on the account you want shown within umbraco, click view report and the id value of the querystring is your profileid <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley'/> </p>
<p>The umbracoAppInserts.sql file is a sql script that creates three entries in your umbraco database, which will make the Statistics section appear within umbraco. Before you run this script, open it up and replace [umbracodatabasename] with [your db name].</p>
<p>Finally, in &#8220;umbraco&#92;config&#92;lang&#92;&#8221; I have included the newest language files (from the 4.0.2.1 release) as all of these files include a translation for &#8220;Statistics&#8221; (the name of the section). You only need to extract these to your umbraco&#92;config&#92;lang directory if the section name looks like this: [stats]</p>
<p>I have included the latest release build of the Google Analytics .NET API, which is needed to get access to and retrieve data from the service.</p>
<p>The Sitereactor.GoogleAnalytics assembly contains all my wonderfull code <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley'/> -&gt; Connecting to and retrieving analytics data feeds, manipulating the data and forming URLs for retrieving Google Charts (check out the API <a rel="nofollow" title="Google Chart API" target="_blank" href="http://code.google.com/intl/da/apis/chart/">here</a>). If you have a suggestion for another Chart implementation then googles, please let me know (should be open source).<br />
All of this code will become open source very soon.</p>
<p>StatContent.aspx handles the analytics views within umbraco.</p>
<p>Analytics.config and AnalyticsChartProperties.config are used to configure the five views within the statistics section (Dashboard, Visitors, Traffic Sources, Content and Goals). These views are exactly what you find on the Google Analytics site with the only difference that it is currently not possible to click the statistics and get a detailed view (this will be included in a future release).<br />
The usage of &lt;section name=&#8221;Dashboard&#8221;&gt; and &lt;report name=&#8221;Pageviews&#8221; chartType=&#8221;" chartData=&#8221;" aggregateType=&#8221;"&gt; within the Analytics.config-file is currently strongly typed, so you shouldn&#8217;t mess to much with this file &#8211; if you change the name attribute something will break or not shown up <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley'/><br />
The AnalyticsChartProperties.config-file you can go crazy with <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley'/> Values/InnerText only, though. Here, the size and color of small and large charts are specified. For example, a large SingleLineChart has a width of 500px and height of 125px, so if you want to increase that or maybe just change the color of the line, be my guest.</p>
<p>I think that was pretty much it. Let me know if you have any problems installing the section or experience bugs or differences in the datasets, please let me know (after you have double checked <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley'/> ). All feedback is appriciated.</p>
<p>Here are some screens of what to expect &#8211; file at the bottom.</p> <a rel="nofollow" target="_blank" href='http://blog.sitereactor.dk/2009/06/05/google-analytics-for-umbraco-first-beta/umbracoanalytics-dashbaord-fk/' title='Dashboard - Analytic