<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Steve Green</title>
	<atom:link href="http://blog.capaxsolutions.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.capaxsolutions.co.uk</link>
	<description>C# Flavoured ASP.Net Web Development using Sitecore CMS</description>
	<lastBuildDate>Thu, 21 Jan 2010 23:32:08 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='blog.capaxsolutions.co.uk' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/9871ebe2c784231367bdcab9547729f5?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Steve Green</title>
		<link>http://blog.capaxsolutions.co.uk</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.capaxsolutions.co.uk/osd.xml" title="Steve Green" />
		<item>
		<title>Goodbye London, Hello Brisbane</title>
		<link>http://blog.capaxsolutions.co.uk/2010/01/21/goodbye-london-hello-brisbane/</link>
		<comments>http://blog.capaxsolutions.co.uk/2010/01/21/goodbye-london-hello-brisbane/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 23:32:08 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=168</guid>
		<description><![CDATA[Good news everyone!
I&#8217;ve joined Sitecore as a Solution Architect in their Brisbane Australia office!
Things have been pretty hectic since I decided to jump ship for the other hemisphere which hopefully explains the lack of blog posts. Once everything is settled I&#8217;m sure I&#8217;ll get back into the swing of things.
I&#8217;ve been keen to work for Sitecore [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=168&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p><a href="http://en.wikipedia.org/wiki/Hubert_J._Farnsworth" target="_blank">Good news everyone!</a></p>
<p>I&#8217;ve joined Sitecore as a Solution Architect in their Brisbane Australia office!</p>
<p>Things have been pretty hectic since I decided to jump ship for the other hemisphere which hopefully explains the lack of blog posts. Once everything is settled I&#8217;m sure I&#8217;ll get back into the swing of things.</p>
<p>I&#8217;ve been keen to work for Sitecore for a while now but why Brisbane? Below is a sample of what tempted me back to the the Antipodes:</p>
<p><a href="http://sitecored.files.wordpress.com/2010/01/london1.png"><img class="alignleft size-medium wp-image-184" title="London weather" src="http://sitecored.files.wordpress.com/2010/01/london1.png?w=216&#038;h=300" alt="" width="216" height="300" /></a><a href="http://sitecored.files.wordpress.com/2010/01/brisbane1.png"><img class="alignright size-medium wp-image-183" title="Brisbane weather" src="http://sitecored.files.wordpress.com/2010/01/brisbane1.png?w=210&#038;h=300" alt="" width="210" height="300" /></a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=168&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2010/01/21/goodbye-london-hello-brisbane/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2010/01/london1.png?w=216" medium="image">
			<media:title type="html">London weather</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2010/01/brisbane1.png?w=210" medium="image">
			<media:title type="html">Brisbane weather</media:title>
		</media:content>
	</item>
		<item>
		<title>Web.config Transformations in Visual Studio 2010</title>
		<link>http://blog.capaxsolutions.co.uk/2009/11/27/web-config-transformations-in-visual-studio-2010/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/11/27/web-config-transformations-in-visual-studio-2010/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 23:22:46 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=148</guid>
		<description><![CDATA[I’ve been looking at the new Visual Studio 2010 beta and it looks like it’s going to make all sorts of improvements over VS2008.
One of the features I really like is the web.config transformations; this is exactly what I’ve been looking for in Sitecore installs. When you’re deploying Sitecore to a production server there is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=148&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>I’ve been looking at the new <a href="http://www.microsoft.com/visualstudio/en-gb/products/2010/default.mspx" target="_blank">Visual Studio 2010 beta</a> and it looks like it’s going to make all sorts of <a href="http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx" target="_blank">improvements over VS2008</a>.</p>
<p>One of the features I really like is the web.config transformations; this is exactly what I’ve been looking for in Sitecore installs. When you’re deploying Sitecore to a production server there is always a raft of settings that need changing, you can manually keep track of them or use features like configSource attributes but there always seems to be problems. In VS2010 however you can keep a set of transformation web.configs for your various deployments:</p>
<p><a href="http://sitecored.files.wordpress.com/2009/11/image.png"><img style="display:inline;border:0;" title="image" src="http://sitecored.files.wordpress.com/2009/11/image_thumb.png?w=204&#038;h=72" border="0" alt="image" width="204" height="72" /></a></p>
<p>Part of the MSBuild deployment process is that it creates a new web.config with the changes you’ve specified in the transformation files. The files themselves contain the settings that need changing and details on how to match them within the original web.config:</p>
<pre style="overflow:scroll;background-color:#ffffff;width:100%;"><span style="font-family:'Courier New';color:blue;font-size:8pt;">
&lt;?</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">xml</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">version</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">1.0</span>"<span style="color:blue;">?&gt;</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">&lt;!--</span><span style="font-family:'Courier New';color:green;font-size:8pt;"> For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 </span><span style="font-family:'Courier New';color:blue;font-size:8pt;">--&gt;</span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">&lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">configuration</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">xmlns:xdt</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">http://schemas.microsoft.com/XML-Document-Transform</span>"<span style="color:blue;">&gt;</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">  &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">connectionStrings</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">configSource</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">App_Config\ConnectionStrings.Debug.config</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Transform</span><span style="color:blue;">=</span>"<span style="color:blue;">Replace</span>"<span style="color:blue;"> /&gt;</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">  &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">sitecore</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">database</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">SqlServer</span>"<span style="color:blue;">&gt;</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">    &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">sc.variable</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">name</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">dataFolder</span>"<span style="color:blue;"> </span><span style="color:red;">value</span><span style="color:blue;">=</span>"<span style="color:blue;">E:\WebApplications\vs2010test\data</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Transform</span><span style="color:blue;">=</span>"<span style="color:blue;">Replace</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Locator</span><span style="color:blue;">=</span>"<span style="color:blue;">Match(name)</span>"<span style="color:blue;">  /&gt;</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">    &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">sites</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">&gt;</span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">      &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">site</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">name</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">vs2010test_english</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Transform</span><span style="color:blue;">=</span>"<span style="color:blue;">Replace</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Locator</span><span style="color:blue;">=</span>"<span style="color:blue;">Match(name)</span>"<span style="color:blue;"> </span><span style="color:red;">language</span><span style="color:blue;">=</span>"<span style="color:blue;">en</span>"<span style="color:blue;"> </span><span style="color:red;">hostName</span><span style="color:blue;">=</span>"<span style="color:blue;">english.vs2010test.local</span>"<span style="color:blue;"> </span><span style="color:red;">...</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">      &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">site</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">name</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">vs2010test_japanese</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Transform</span><span style="color:blue;">=</span>"<span style="color:blue;">Replace</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Locator</span><span style="color:blue;">=</span>"<span style="color:blue;">Match(name)</span>"<span style="color:blue;"> </span><span style="color:red;">language</span><span style="color:blue;">=</span>"<span style="color:blue;">ja-JP</span>"<span style="color:blue;"> </span><span style="color:red;">hostName</span><span style="color:blue;">=</span>"<span style="color:blue;">japanese.vs2010test.local</span>"<span style="color:blue;"> </span><span style="color:red;">...</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">      &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">site</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">name</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">vs2010test_german</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Transform</span><span style="color:blue;">=</span>"<span style="color:blue;">Replace</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Locator</span><span style="color:blue;">=</span>"<span style="color:blue;">Match(name)</span>"<span style="color:blue;"> </span><span style="color:red;">language</span><span style="color:blue;">=</span>"<span style="color:blue;">de-DE</span>"<span style="color:blue;"> </span><span style="color:red;">hostName</span><span style="color:blue;">=</span>"<span style="color:blue;">german.vs2010test.local</span>"<span style="color:blue;"> </span><span style="color:red;">...</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">    &lt;/</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">sites</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">&gt;</span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">    &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">settings</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">&gt;</span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">      &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">setting</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">name</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">IndexFolder</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Transform</span><span style="color:blue;">=</span>"<span style="color:blue;">Replace</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Locator</span><span style="color:blue;">=</span>"<span style="color:blue;">Match(name)</span>"<span style="color:blue;"> </span><span style="color:red;">value</span><span style="color:blue;">=</span>"<span style="color:blue;">E:\WebApplications\vs2010test\data\indexes</span>"<span style="color:blue;"> /&gt;</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">    &lt;/</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">settings</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">&gt;</span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">  &lt;/</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">sitecore</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> &gt;</span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">  &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">system.web</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">&gt;</span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">    &lt;</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">customErrors</span><span style="font-family:'Courier New';color:blue;font-size:8pt;"> </span><span style="font-family:'Courier New';color:red;font-size:8pt;">mode</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">=</span><span style="font-family:'Courier New';font-size:8pt;">"<span style="color:blue;">RemoteOnly</span>"<span style="color:blue;"> </span><span style="color:red;">xdt:Transform</span><span style="color:blue;">=</span>"<span style="color:blue;">Replace</span>"<span style="color:blue;">/&gt;</span></span>
<span style="font-family:'Courier New';color:blue;font-size:8pt;">  &lt;/</span><span style="font-family:'Courier New';color:#a31515;font-size:8pt;">system.web</span><span style="font-family:'Courier New';color:blue;font-size:8pt;">&gt;</span>
<span style="line-height:115%;font-family:'Courier New';color:blue;font-size:8pt;">&lt;/</span><span style="line-height:115%;font-family:'Courier New';color:#a31515;font-size:8pt;">configuration</span><span style="line-height:115%;font-family:'Courier New';color:blue;font-size:8pt;">&gt;</span>
</pre>
<p>The important attribute is xdt:Transform=&#8221;Replace&#8221; which replaces the setting in the original web.config with the new one. This works fine when there is just a single node of that type such as &lt;connectionStrings/&gt;.</p>
<p>For nodes with multiple instances such as &lt;site/&gt; you can distinguish them using xdt:Locator=&#8221;Match(name)&#8221; which tells the transformer to match the element to the original using the name attribute.</p>
<p>Once all the changes are made you should end up with a new web.config that is configured for your deployment target machine. There is the added bonus that all of these transform files are stored in source control alongside the original web.config.</p>
<p>I’ve also been looking at the <a href="http://www.hhogdev.com/products/team-development-for-sitecore.aspx" target="_blank">Team Development for Sitecore</a> product from Hedgehog software (deserves own blog post), combined with this and I think my deployment issues will be solved. Hopefully <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=148&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/11/27/web-config-transformations-in-visual-studio-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2009/11/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Inherit parent field values in Sitecore</title>
		<link>http://blog.capaxsolutions.co.uk/2009/11/10/inherit-parent-field-values-in-sitecore/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/11/10/inherit-parent-field-values-in-sitecore/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 13:59:04 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[custom field]]></category>
		<category><![CDATA[inherit]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=132</guid>
		<description><![CDATA[Fields that inherit the value of their parent items is something I’ve heard asked for before in the past but I’ve always just recommended coding it into the presentation. As an alternative however I’ve created a custom renderField pipeline step that handles it for you. 
By including “InheritParent” in the name of your field it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=132&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>Fields that inherit the value of their parent items is something I’ve heard asked for before in the past but I’ve always just recommended coding it into the presentation. As an alternative however I’ve created a custom renderField pipeline step that handles it for you. </p>
<p>By including “InheritParent” in the name of your field it will look for values in parent items when none exists in the current item. Installing it is just a matter of including the code in your project and referencing it in the &lt;renderField&gt; just after GetFieldValue:</p>
<blockquote><p>&lt;renderField&gt;<br />
  &lt;processor type=&#8221;Sitecore.Pipelines.RenderField.GetFieldValue, Sitecore.Kernel&#8221; /&gt;<br />
<strong>  &lt;processor type=&#8221;Namespace.FieldValueInherit, Assembly&#8221; /&gt;</strong><br />
…</p></blockquote>
<pre style="background-color:#ffffff;width:100%;overflow:scroll;">
<div class="blogButton">
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:blue;font-size:10pt;">using</span><span style="font-family:'Courier New';font-size:10pt;"> System;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:blue;font-size:10pt;">using</span><span style="font-family:'Courier New';font-size:10pt;"> Sitecore.Data.Fields;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:blue;font-size:10pt;">using</span><span style="font-family:'Courier New';font-size:10pt;"> Sitecore.Data.Items;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:blue;font-size:10pt;">using</span><span style="font-family:'Courier New';font-size:10pt;"> Sitecore.Pipelines.RenderField;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"> </span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:blue;font-size:10pt;">namespace</span><span style="font-family:'Courier New';font-size:10pt;"> Namespace</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;">{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>    </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>    </span><span style="color:gray;">///</span><span style="color:green;"> Sitecore renderField pipeline for inheriting parent field values recursively.</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>    </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>    </span><span style="color:blue;">public</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">FieldValueInherit</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>    </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>        </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;summary&gt;</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>        </span><span style="color:gray;">///</span><span style="color:green;"> Processes the field value inheritance pipeline.</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>        </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>        </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;param name="args"&gt;</span><span style="color:green;">The pipeline arguments.</span><span style="color:gray;">&lt;/param&gt;</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>        </span><span style="color:blue;">public</span> <span style="color:blue;">void</span> Process(<span style="color:#2b91af;">RenderFieldArgs</span> args)</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>        </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:green;">//Dont run while in page edit mode.</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:blue;">if</span> (Sitecore.<span style="color:#2b91af;">Context</span>.<span style="color:#2b91af;">PageMode</span>.IsPageEditor ||</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span>Sitecore.<span style="color:#2b91af;">Context</span>.<span style="color:#2b91af;">PageMode</span>.IsPageEditorClassic ||</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span>Sitecore.<span style="color:#2b91af;">Context</span>.<span style="color:#2b91af;">PageMode</span>.IsPageEditorDesigning ||</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span>Sitecore.<span style="color:#2b91af;">Context</span>.<span style="color:#2b91af;">PageMode</span>.IsPageEditorEditing ||</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span>Sitecore.<span style="color:#2b91af;">Context</span>.<span style="color:#2b91af;">PageMode</span>.IsPageEditorNavigating)</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span><span style="color:blue;">return</span>;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"> </span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:green;">//Check field exists.</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:#2b91af;">Field</span> field = args.GetField();</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:blue;">if</span> (field == <span style="color:blue;">null</span>)</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span><span style="color:blue;">return</span>;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"> </span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:green;">//Check field is tagged to inherit parent values.</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:blue;">if</span> (!field.Name.Contains(<span style="color:#a31515;">"InheritParent"</span>))</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>          </span><span>      </span><span style="color:blue;">return</span>;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"> </span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:green;">//If field contains standard values then check parent items for fields that have been set.</span></span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span><span style="color:blue;">if</span> (field.ContainsStandardValue || !field.HasValue)</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span><span style="color:#2b91af;">Item</span> item = args.Item;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>       </span><span>         </span><span style="color:blue;">if</span> (item == <span style="color:blue;">null</span>)</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                    </span><span style="color:blue;">return</span>;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"> </span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span><span style="color:#2b91af;">Item</span>[] ancestors = item.Axes.GetAncestors();</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span><span style="color:#2b91af;">Array</span>.Reverse(ancestors);</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span><span style="color:blue;">foreach</span> (<span style="color:#2b91af;">Item</span> ancestor <span style="color:blue;">in</span> ancestors)</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                    </span><span style="color:blue;">if</span> (ancestor.Fields[field.ID] != <span style="color:blue;">null</span> &amp;&amp; ancestor.Fields[field.ID].HasValue)</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                    </span>{</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                        </span>args.Result.FirstPart = ancestor.Fields[field.ID].Value;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                        </span><span style="color:blue;">return</span>;</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                    </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>                </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>            </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>        </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;"><span>    </span>}</span>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;">}</span>
<p style="margin:0 0 10pt;" class="MsoNormal"><span style="font-family:Calibri;"> </span>
</div>
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=132&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/11/10/inherit-parent-field-values-in-sitecore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>
	</item>
		<item>
		<title>Visual Studio Template for Sitecore Renderings</title>
		<link>http://blog.capaxsolutions.co.uk/2009/10/28/visual-studio-template-for-sitecore-renderings/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/10/28/visual-studio-template-for-sitecore-renderings/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 16:46:49 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=126</guid>
		<description><![CDATA[Bit of a mini-post, I saw a writeup on how to create new template types for Visual Studio so I went ahead and created one for the Sitecore XSLT Rendering files. Save the below file to your Visual Studio templates folder (Tools-&#62;Options-&#62;Projects &#38; Solutions) and you&#8217;re done. When you next go to add an xslt [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=126&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>Bit of a mini-post, I <a href="http://www.switchonthecode.com/tutorials/visual-studio-how-to-create-item-templates" target="_blank">saw a writeup</a> on how to create new template types for Visual Studio so I went ahead and created one for the Sitecore XSLT Rendering files. Save the below file to your Visual Studio templates folder (Tools-&gt;Options-&gt;Projects &amp; Solutions) and you&#8217;re done. When you next go to add an xslt file you can pick the Sitecore XSLT Rendering (which I got from the latest 6.2 release) listed under my templates.</p>
<p><img class="size-full wp-image-127 alignnone" title="InsertRendering" src="http://sitecored.files.wordpress.com/2009/10/insertrendering.png?w=509&#038;h=307" alt="InsertRendering" width="509" height="307" /></p>
<p>If you wish to modify it you can just make changes to the xsl.xslt file in the zip file.</p>
<p><a href="http://sites.google.com/a/capaxsolutions.co.uk/filehost/Home/SitecoreRendering.zip" target="_blank">The File</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=126&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/10/28/visual-studio-template-for-sitecore-renderings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2009/10/insertrendering.png" medium="image">
			<media:title type="html">InsertRendering</media:title>
		</media:content>
	</item>
		<item>
		<title>Adventures in Sitecore integrated mode</title>
		<link>http://blog.capaxsolutions.co.uk/2009/10/15/adventures-in-sitecore-integrated-mode/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/10/15/adventures-in-sitecore-integrated-mode/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 12:06:27 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=104</guid>
		<description><![CDATA[Had a real head scratcher of a problem with Sitecore running in integrated mode. The site in question is rather odd in that everything including the home node is secured; any anonymous visitor is redirected to the login page. They also need various URL tricks to be done which necessitated integrated mode. Putting all that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=104&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>Had a real head scratcher of a problem with Sitecore running in integrated mode. The site in question is rather odd in that everything including the home node is secured; any anonymous visitor is redirected to the login page. They also need various URL tricks to be done which necessitated integrated mode. Putting all that together was straight forward, just a matter of denying extranet/Anonymous access to the root home node and specifying a login page followed by implementing the integrated mode fix as described <a href="http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/KnownIssues%20Recommended/IIS%20in%20Integrated%20Pipeline%20mode.aspx" target="_blank">here</a>.</p>
<p>Oddly though the moment I viewed the site while logged out it stopped sending me to the login page and instead threw up a &#8220;Layout not Found&#8221; page. Odder still the item it said it was trying to display wasn&#8217;t the home item or even the login item but instead was the root /sitecore item. I knew something strange was happening with the ItemResolver in the httpBeginRequest pipeline so I added a custom processor and debugged it to have a look at the HttpRequestArgs.</p>
<p>Here is what I saw when I switched back to classic mode:</p>
<p>{Sitecore.Pipelines.HttpRequest.HttpRequestArgs}<br />
    base {Sitecore.Pipelines.PipelineArgs}: {Sitecore.Pipelines.HttpRequest.HttpRequestArgs}<br />
    Context: {System.Web.HttpContext}<br />
    LocalPath: &#8220;/default&#8221;<br />
    PermissionDenied: true<br />
    RequestType: Begin<br />
    StartPath: &#8220;/sitecore/content/home&#8221;<br />
    Url: {Sitecore.Web.RequestUrl}</p>
<p>As you can see it has attempted to retrieve the home item and been denied permission. It also attempts to retrieve the /default item but this also fails as it doesn&#8217;t exist. By the end of the request the context item is still null and permission has been denied so sitecore redirects to the login page.</p>
<p>On the other hand here is what happens when it&#8217;s in integrated mode:</p>
<p>{Sitecore.Pipelines.HttpRequest.HttpRequestArgs}<br />
    base {Sitecore.Pipelines.PipelineArgs}: {Sitecore.Pipelines.HttpRequest.HttpRequestArgs}<br />
    Context: {System.Web.HttpContext}<br />
    LocalPath: &#8220;/&#8221;<br />
    PermissionDenied: true<br />
    RequestType: Begin<br />
    StartPath: &#8220;/sitecore/content/home&#8221;<br />
    Url: {Sitecore.Web.RequestUrl}</p>
<p>In this case the ItemResolver has been denied access to the home item but then went on to retrieve the / root item and set this as the context (which of course has no layout). The difference is down to the fact that IIS is now no longer telling ASP.Net to look for a /default file in integrated mode. So the context is now set and Sitecore attempts to render it as per normal except the context item in question is the /sitecore item.</p>
<p>Thankfully the solution is simple; if I deny access to /sitecore and /sitecore/content then the problem is resolved. In this case the ItemResolver finishes with permission denied and a null context which means the visitor is redirected to the login page once again.</p>
<p>I could have skipped this whole process however if I&#8217;d not fallen for that old trap of confusing what is true for one thing been true for another. On a classic asp.net website only files beneath the site root can be accessed as webpages and although similar in Sitecore it is by no means the same thing. In Sitecore *any* item can become the context item if access is allowed, I guess I can write this off as a reminder <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=104&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/10/15/adventures-in-sitecore-integrated-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>
	</item>
		<item>
		<title>Example custom datatype</title>
		<link>http://blog.capaxsolutions.co.uk/2009/10/08/example-custom-datatype/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/10/08/example-custom-datatype/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 15:14:08 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=107</guid>
		<description><![CDATA[Richard Dias has already covered this topic before on his blog but I felt that the issue could do with even a few more examples of how to get custom datatypes working in sitecore.
I&#8217;ve created a firstname/secondname textfield combo which stores the data as attributes on an xml element. This is how sitecore stores data [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=107&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>Richard Dias has <a href="http://richdias.wordpress.com/2008/02/03/hello-world/" target="_blank">already covered</a> this topic before on his blog but I felt that the issue could do with even a few more examples of how to get custom datatypes working in sitecore.</p>
<p>I&#8217;ve created a firstname/secondname textfield combo which stores the data as attributes on an xml element. This is how sitecore stores data internally for situations like these, a good example been the image field. Do try switching on raw mode and having a look at how sitecore stores the various data types.</p>
<p>Installing the datatype is as defined in steps 10 and 11 of the <a href="http://sdn.sitecore.net/Articles/API/Creating%20a%20Composite%20Custom%20Field.aspx" target="_blank">SDN article</a>, firstly you add the following to &lt;controlSources&gt; in web.config (don&#8217;t forget to change the namespace and assembly details):<br />
&lt;source mode=&#8221;on&#8221; namespace=&#8221;Project.Namespace&#8221; assembly=&#8221;Project.Assembly&#8221; prefix=&#8221;ExampleCustomDatatype&#8221;/&gt;</p>
<p>And then you create a &#8220;template field type&#8221; item representing your field in &#8220;/system/field types&#8221; on the core database. The &#8220;template field type&#8221; template has 3 fields, the first 2 been the assembly and class of the control and the third requires the prefix defined in the web.config, followed by :, followed by the class name. In this case it would be ExampleCustomDatatype:ExampleCustomDatatype.</p>
<p>Finally below is the code that I&#8217;m using in this example:</p>
<pre style="background-color:#ffffff;width:100%;"><span style="color:blue;">using </span>System;
<span style="color:blue;">using </span>System.Web.UI;
<span style="color:blue;">using </span>Sitecore.Shell.Applications.ContentEditor;
<span style="color:blue;">using </span>Sitecore.Web.UI.HtmlControls;

<span style="color:blue;">namespace </span>Project.Namespace
{
    <span style="color:blue;">public class </span><span style="color:#2b91af;">ExampleCustomDatatype </span>: <span style="color:#2b91af;">Input
    </span>{
        <span style="color:blue;">private </span><span style="color:#2b91af;">XmlValue </span>XmlValueStore
        {
            <span style="color:blue;">get
            </span>{
                <span style="color:#2b91af;">XmlValue </span>viewStateProperty = <span style="color:blue;">base</span>.GetViewStateProperty(<span style="color:#a31515;">"XmlValueStore"</span>, <span style="color:blue;">null</span>) <span style="color:blue;">as </span><span style="color:#2b91af;">XmlValue</span>;
                <span style="color:blue;">if </span>(viewStateProperty == <span style="color:blue;">null</span>)
                {
                    viewStateProperty = <span style="color:blue;">new </span><span style="color:#2b91af;">XmlValue</span>(<span style="color:blue;">string</span>.Empty, <span style="color:#a31515;">"ExampleCustomDatatype"</span>);
                    <span style="color:blue;">this</span>.XmlValueStore = viewStateProperty;
                }
                <span style="color:blue;">return </span>viewStateProperty;
            }
            <span style="color:blue;">set
            </span>{
                <span style="color:blue;">base</span>.SetViewStateProperty(<span style="color:#a31515;">"XmlValueStore"</span>, <span style="color:blue;">value</span>, <span style="color:blue;">null</span>);
            }
        }

        <span style="color:blue;">public override string </span>Value
        {
            <span style="color:blue;">get
            </span>{
                <span style="color:blue;">return </span>XmlValueStore.ToString();
            }
            <span style="color:blue;">set
            </span>{
                XmlValueStore = <span style="color:blue;">new </span><span style="color:#2b91af;">XmlValue</span>(<span style="color:blue;">value</span>, <span style="color:#a31515;">"ExampleCustomDatatype"</span>);
            }
        }

        <span style="color:blue;">private string </span>FirstName
        {
            <span style="color:blue;">get
            </span>{
                <span style="color:blue;">return </span>XmlValueStore.GetAttribute(<span style="color:#a31515;">"firstname"</span>);
            }
            <span style="color:blue;">set
            </span>{
                XmlValueStore.SetAttribute(<span style="color:#a31515;">"firstname"</span>, <span style="color:blue;">value</span>);
            }
        }

        <span style="color:blue;">private string </span>SecondName
        {
            <span style="color:blue;">get
            </span>{
                <span style="color:blue;">return </span>XmlValueStore.GetAttribute(<span style="color:#a31515;">"secondname"</span>);
            }
            <span style="color:blue;">set
            </span>{
                XmlValueStore.SetAttribute(<span style="color:#a31515;">"secondname"</span>, <span style="color:blue;">value</span>);
            }
        }

        <span style="color:blue;">protected override void </span>OnLoad(<span style="color:#2b91af;">EventArgs </span>e)
        {
            <span style="color:blue;">if </span>(!Sitecore.<span style="color:#2b91af;">Context</span>.ClientPage.IsEvent)
            {
                <span style="color:#2b91af;">Text </span>firstNameField = <span style="color:blue;">new </span><span style="color:#2b91af;">Text </span>{ID = GetID(<span style="color:#a31515;">"firstName"</span>), Value = FirstName};
                <span style="color:blue;">this</span>.Controls.Add(firstNameField);

                <span style="color:blue;">this</span>.Controls.Add(<span style="color:blue;">new </span><span style="color:#2b91af;">LiteralControl</span>(Sitecore.Resources.<span style="color:#2b91af;">Images</span>.GetSpacer(0x18, 16)));

                <span style="color:#2b91af;">Text </span>secondNameField = <span style="color:blue;">new </span><span style="color:#2b91af;">Text </span>{ID = GetID(<span style="color:#a31515;">"secondName"</span>), Value = SecondName};
                <span style="color:blue;">this</span>.Controls.Add(secondNameField);
            }
            <span style="color:blue;">else
            </span>{
                <span style="color:#2b91af;">Text </span>firstNameField = FindControl(GetID(<span style="color:#a31515;">"firstName"</span>)) <span style="color:blue;">as </span><span style="color:#2b91af;">Text</span>;
                <span style="color:#2b91af;">Text </span>secondNameField = FindControl(GetID(<span style="color:#a31515;">"secondName"</span>)) <span style="color:blue;">as </span><span style="color:#2b91af;">Text</span>;
                <span style="color:blue;">if </span>(firstNameField != <span style="color:blue;">null</span>)
                {
                    <span style="color:blue;">if </span>(FirstName != firstNameField.Value)
                    {
                        <span style="color:blue;">this</span>.TrackModified = <span style="color:blue;">true</span>;
                        <span style="color:blue;">this</span>.SetModified();
                    }
                    FirstName = firstNameField.Value;
                }
                <span style="color:blue;">if </span>(secondNameField != <span style="color:blue;">null</span>)
                {
                    <span style="color:blue;">if </span>(SecondName != secondNameField.Value)
                    {
                        <span style="color:blue;">this</span>.TrackModified = <span style="color:blue;">true</span>;
                        <span style="color:blue;">this</span>.SetModified();
                    }
                    SecondName = secondNameField.Value;
                }
            }
            <span style="color:blue;">base</span>.OnLoad(e);
        }
    }
}</pre>
<p>Once all is said and done you can add the new field type to a template and try editing in an item. You should see two plain text fields and when you enter say &#8220;Steve&#8221; into the first and &#8220;Green&#8221; into the second you will see the following in raw mode:</p>
<p>&lt;ExampleCustomDatatype firstname=&#8221;Steve&#8221; secondname=&#8221;Green&#8221; /&gt;</p>
<p>Finally you can pull the content out in just the same way you would with any other field that stores data as attributes in an xml element:</p>
<p>&lt;xsl:value-of select=&#8221;sc:fld(&#8216;fieldname&#8217;,.,&#8217;firstname&#8217;)&#8221;/&gt;</p>
<p>&lt;xsl:value-of select=&#8221;sc:fld(&#8216;fieldname&#8217;,.,&#8217;secondname&#8217;)&#8221;/&gt;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=107&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/10/08/example-custom-datatype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore survey</title>
		<link>http://blog.capaxsolutions.co.uk/2009/10/01/sitecore-survey/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/10/01/sitecore-survey/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 09:09:57 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[naming]]></category>
		<category><![CDATA[survey]]></category>
		<category><![CDATA[templates]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=89</guid>
		<description><![CDATA[Workmate of mine Adam Rambridge sent around an excellent survey on monday asking what best practices we recommend for sitecore projects. Instead of writing up a blog post this week I&#8217;ve taken the easy route and just copy/pasted the results  



Question
Answer


Your name
Steve Green



Information architecture



How best to structure templates?
Typically I would break the templates down into 3 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=89&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>Workmate of mine Adam Rambridge sent around an excellent survey on monday asking what best practices we recommend for sitecore projects. Instead of writing up a blog post this week I&#8217;ve taken the easy route and just copy/pasted the results <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<table class="responses" border="1" cellspacing="0" cellpadding="4" align="left">
<tbody>
<tr>
<th align="left" valign="top">Question</th>
<th align="left" valign="top">Answer</th>
</tr>
<tr>
<td align="left" valign="top">Your name</td>
<td align="left" valign="top">Steve Green</td>
</tr>
<tr>
<td colspan="2" align="center" valign="top">
<h3>Information architecture</h3>
</td>
</tr>
<tr>
<td align="left" valign="top">How best to structure templates?</td>
<td align="left" valign="top">Typically I would break the templates down into 3 folders, field sections, page types and meta data.Field sections are reusable collections of fields such as title/text, meta tags, navigation that are inherited by page types.Page type templates are for items that are under the home node, ideally they are the only templates to have presentation values.Meta data templates are for items outside the web context which are typically stored in the global folder. These cover things such as reusable rich text blocks, control labels and configuration, dropdown menu sources and other content that doesn&#8217;t &#8216;belong&#8217; to the content items.</td>
</tr>
<tr>
<td align="left" valign="top">How should the content structure be organised?</td>
<td align="left" valign="top">I&#8217;d recommend prefacing your template names with a short signifier, so ABC_ or Comp_, this is so the client can later develop other websites and easily distinguish between the templates meant for one over the other.All content under the home item should represent a page and have valid presentation. All other content should be stored within the global folder which is a sibling item to the root home node.</td>
</tr>
<tr>
<td align="left" valign="top">Is this good practice that we should use on all projects?</td>
<td align="left" valign="top">90% of the best practices we typically use can be applied as-is without modification. I would prefer to see at least some attempt made to consistency.</td>
</tr>
<tr>
<td align="left" valign="top">Are there disadvantages to this scheme?</td>
<td align="left" valign="top">None, you should only be doing it if it makes sense, if it doesn&#8217;t then you&#8217;re not doing anyone any favours.</td>
</tr>
<tr>
<td align="left" valign="top">Are there better ways?</td>
<td align="left" valign="top">Indubitably, I hope to find them out <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </td>
</tr>
<tr>
<td align="left" valign="top">How should you decide when to store items in a global folder rather than under the home node?</td>
<td align="left" valign="top">Only content that &#8220;belongs&#8221; to the item should be present. The approach to organising sitecore content should be functionally similar to database normalization. It should be in global folders if the content in question isn&#8217;t &#8220;owned&#8221; by the context item, this covers both things like sidemenu RTE blocks, control labels or if there is a many-to-one relationship of some sort.</td>
</tr>
<tr>
<td align="left" valign="top">Text that goes with a control or sublayout</td>
<td align="left" valign="top">We did try name/value pairs for a while but frankly these suck. I&#8217;ve now switched to a set of custom configuration templates, one per rendering or sublayout. They have 2 sections, one for labels and one for configuration. The configuration node is set at the top of the renderings as a variable and as a private property on the sublayouts. I&#8217;ve been planning on automating this at some point however.Something which I don&#8217;t do but it worth considering is using the parameters templates which were introduced in 6.1. I&#8217;m not sure how usable this is for the content editors however, letting them go into the presentation interface is dangerous at the best of times.</td>
</tr>
<tr>
<td colspan="2" align="center" valign="top">
<h3>Naming</h3>
</td>
</tr>
<tr>
<td align="left" valign="top">Naming fields and field sections</td>
<td align="left" valign="top">Field names should be programmatically sound with friendly names added later.</td>
</tr>
<tr>
<td align="left" valign="top">Naming templates, layouts, renderings etc.</td>
<td align="left" valign="top">ProjectAcronym_TemplateName typically. Folders used as much as possible (note, not supported in workflows).</td>
</tr>
<tr>
<td align="left" valign="top">Name prefixes</td>
<td align="left" valign="top">See above.</td>
</tr>
<tr>
<td align="left" valign="top">What other advice would you give on naming items?</td>
<td align="left" valign="top">Clear, concise and SEO friendly. In the case of sublayouts and renderings make sure the item name matches the file name.</td>
</tr>
<tr>
<td colspan="2" align="center" valign="top">
<h3>Project structure</h3>
</td>
</tr>
<tr>
<td align="left" valign="top">What is the ideal structure for a Sitecore project?</td>
<td align="left" valign="top">Start with the standard 4, Website, Business, Data and Tests. You&#8217;ll almost always end up creating them so why not do it from the start. Otherwise you tend to bloat up the website project with helper classes only to have to refactor later.</td>
</tr>
<tr>
<td align="left" valign="top">What are the worst mistakes that should be avoided?</td>
<td align="left" valign="top">Omnidirectional project references, untilize dependency injection where possible.</td>
</tr>
<tr>
<td colspan="2" align="center" valign="top">
<h3>Sitecore ORMs</h3>
</td>
</tr>
<tr>
<td align="left" valign="top">What do you think about Sitecore ORMs?</td>
<td align="left" valign="top">Tears, wailing, gnashing of teeth. Contentious issue but personally I think the issues it&#8217;s trying to solve are not as big as the problems it causes.</td>
</tr>
<tr>
<td align="left" valign="top">What problems does it solve?</td>
<td align="left" valign="top">Very very good question. It&#8217;s can be cool that&#8217;s for sure. Templates as object, intelisense on your fields, that&#8217;s lovely. Then you run into the hell of lazy loading, caching and often a gradual and inexplicable delta between the database and the in memory objects.</td>
</tr>
<tr>
<td align="left" valign="top">Does it cause any problems of its own?</td>
<td align="left" valign="top">See above.</td>
</tr>
<tr>
<td align="left" valign="top">Would you use shared source Domain Objects instead? Why?</td>
<td align="left" valign="top">Never tried it to be honest.</td>
</tr>
<tr>
<td colspan="2" align="center" valign="top">
<h3>Sublayouts and renderings</h3>
</td>
</tr>
<tr>
<td align="left" valign="top">How do you decide whether to use one over the other?</td>
<td align="left" valign="top">It&#8217;s not very scientific but I use the rule of thumb that if it&#8217;s not easy it&#8217;s time to switch to a sublayout. XSLT should make your life easier, not harder.</td>
</tr>
<tr>
<td align="left" valign="top">Are there dangers of too much reliance on XSLT?</td>
<td align="left" valign="top">There can be issues with refactoring, due to its reliance on referencing items by paths and fields by names. I&#8217;ve got some grand ideas to help resolve that however via xslt helpers.</td>
</tr>
<tr>
<td align="left" valign="top">Are there dangers of too much reliance on sublayouts?</td>
<td align="left" valign="top">Sitecore is designed with xslt in mind, if you use sublayouts where a simple xslt rendering could have done you&#8217;ve missed a trick.</td>
</tr>
<tr>
<td align="left" valign="top">Is one easier to maintain that the other?</td>
<td align="left" valign="top">Loaded question. Ask someone who needs to rename every reference to an item by path and you&#8217;ll get one answer. Ask somone who needs to pull out a faulty ORM and you&#8217;ll get another. I think like most things you need a healthy balance really.</td>
</tr>
<tr>
<td colspan="2" align="center" valign="top">
<h3>Testing</h3>
</td>
</tr>
<tr>
<td align="left" valign="top">Can Sitecore projects benefit from unit testing?</td>
<td align="left" valign="top">Strictly speaking no, Sitecore itself is impossible to properly unit test. Integration and stress testing however is vital.</td>
</tr>
<tr>
<td align="left" valign="top">WatiN?</td>
<td align="left" valign="top">A recursive Watin test for the whole site to check for standard errors (missing presentation, failed xslt etc) should be standard on all sitecore sites.</td>
</tr>
<tr>
<td align="left" valign="top">What holds us back from doing more testing?</td>
<td align="left" valign="top">Time, and occasional false perception of there not been enough time.</td>
</tr>
<tr>
<td colspan="2" align="center" valign="top">
<h3>What else?</h3>
</td>
</tr>
<tr>
<td align="left" valign="top">What factors cause sitecore projects to go well?</td>
<td align="left" valign="top">When the site is been developed as a sitecore site, see next question for more.</td>
</tr>
<tr>
<td align="left" valign="top">What factors cause sitecore projects to go badly?</td>
<td align="left" valign="top">When a site is been developed as something else. Sitecore projects typically fail when someone is trying to code something else into the system. Sitecore can be an application framework, but you&#8217;d be better off with MVC. Sitecore can be made to act like any other CMS or legacy system, but you&#8217;d be better off not doing it that way. Sitecore always *CAN*, but you probably shouldn&#8217;t.</td>
</tr>
<tr>
<td align="left" valign="top">What other questions should this survey have asked?</td>
<td align="left" valign="top">I&#8217;m sure we can think up enough for a sequal at some point. This survey though was exhaustive and excellent, cheers <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </td>
</tr>
</tbody>
</table>
<p> </p>
<p> </p>
<p>Love to see what other peoples answers would be, if you do end up posting your answers online make sure you post a link to in the comments <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=89&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/10/01/sitecore-survey/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>
	</item>
		<item>
		<title>Avoiding Layout not Found with bump folders &#8211; Sitecore best practice</title>
		<link>http://blog.capaxsolutions.co.uk/2009/09/25/avoiding-layout-not-found-with-bump-folders-sitecore-best-practice/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/09/25/avoiding-layout-not-found-with-bump-folders-sitecore-best-practice/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:15:39 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=60</guid>
		<description><![CDATA[
Layout not found, never a good look. Despite all efforts to not link to items lacking presentation the only sure-fire way to prevent this is to simply not have any; everything under the home node should have *some* kind of presentation applied. In every case where someone has said &#8220;don&#8217;t worry, there is no way [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=60&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p><img class="aligncenter size-full wp-image-67" title="layoutnotfound" src="http://sitecored.files.wordpress.com/2009/09/layoutnotfound.png?w=323&#038;h=212" alt="layoutnotfound" width="323" height="212" /></p>
<p>Layout not found, never a good look. Despite all efforts to not link to items lacking presentation the only sure-fire way to prevent this is to simply not have any; everything under the home node should have *some* kind of presentation applied. In every case where someone has said &#8220;don&#8217;t worry, there is no way they could reach that item&#8221; they always have linked to it or found that users actively change the urls to it (happens more than you&#8217;d expect).</p>
<p>The biggest offender for zero presentation is the common garden variety /sitecore/templates/Common/Folder. It&#8217;s not uncommon to see deeply nested sets of folders in order to create more content rich urls, it is after all part of the SEO holy trinity of url, title and header. My replacement for this is what I call the bump folder, not the best of names but it has stuck. It&#8217;s straightforward to implement and dead easy for content editors to use, the bump folder simply 301 redirects the user to either the parent item or the item selected in a droplink.</p>
<p>First step is to create a new template in your solution and add the following field:</p>
<p><img class="size-full wp-image-69 alignnone" title="bumpfoldertemplate" src="http://sitecored.files.wordpress.com/2009/09/bumpfoldertemplate1.png?w=510&#038;h=103" alt="bumpfoldertemplate" width="510" height="103" /></p>
<p>This is a single droplink field called Target and I&#8217;ve ticked shared as it&#8217;s language invariant (or at least likely to be, just untick if it&#8217;s going to change based on language). The interesting bit to note here is the source, you can not only supply paths but also sitecore queries. In this case the query used is &#8220;query:./*[@@tid!=../@@tid]&#8221; which means &#8220;Select all child items which are not bump folders&#8221;. The reason I avoid linking up to bump folders is to avoid 301 daisy chaining or even worse 301 loops (where the folder linked to has no target set and 301 redirects to the parent item). I&#8217;m also using a drop list instead of a general link so as to avoid the folders turning into aliases and creating the website equivalent of spaghetti code.</p>
<p>The only thing to add now is a layout item (and aspx file) and assign it to the presentation for the bump folder. In the codebehind for the layout add the following:</p>
<pre style="background-color:#ffffff;width:100%;"><span style="font-family:'Courier New';font-size:10pt;">
<span style="color:blue;">protected</span> <span style="color:blue;">void</span> Page_PreInit(<span style="color:blue;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e) </span><span style="font-family:'Courier New';font-size:10pt;">{ </span><span style="font-family:'Courier New';font-size:10pt;">
<span style="color:#2b91af;">  LookupField</span> target = Sitecore.<span style="color:#2b91af;">Context</span>.Item.Fields[<span style="color:#a31515;">"target"</span>]; </span><span style="font-family:'Courier New';font-size:10pt;">
<span style="color:blue;">  if</span>(target.TargetItem != <span style="color:blue;">null</span>) </span><span style="font-family:'Courier New';font-size:10pt;">
    Response.Redirect(target.TargetItem.GetFriendlyUrl()); </span><span style="font-family:'Courier New';font-size:10pt;">
  Response.Redirect(Sitecore.<span style="color:#2b91af;">Context</span>.Item.Parent.GetFriendlyUrl());</span>
<span style="font-family:'Courier New';font-size:10pt;">}</span></pre>
<p>Done, I know it&#8217;s not exactly ground breaking stuff but it&#8217;s little things like this that can really make a big difference to a Sitecore project.</p>
<p><strong><em>Update: 27th September 2009</em></strong></p>
<p style="line-height:1.5em;margin:0 0 1em;padding:0;">Doh, forgot to add that I’m using a set of extension methods alongside my solution, GetFriendlyUrl() in this case is actually an extension method.</p>
<pre style="background-color:#ffffff;width:100%;"><span style="font-family:'Courier New';font-size:10pt;"><span style="color:blue;">public</span> <span style="color:blue;">static</span> <span style="color:blue;">string</span> GetFriendlyUrl(<span style="color:blue;">this</span> <span style="color:#2b91af;">Item</span> item)
</span><span style="font-family:'Courier New';font-size:10pt;">{
</span><span style="font-family:'Courier New';font-size:10pt;"><span style="color:blue;">    return</span> <span style="color:#2b91af;">LinkManager</span>.GetItemUrl(item);
</span><span style="font-family:'Courier New';font-size:10pt;">}</span></pre>
<p>Also as pointed out by Thomas Eldblom these bump folders shouldn&#8217;t preclude the development of &#8220;fit for purpose&#8221; container items. They&#8217;re simply for content editors to organise their content into more useful hierarchies. Thomas also has some good pointers on how to manage your errors in general, see the comments for more details.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=60&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/09/25/avoiding-layout-not-found-with-bump-folders-sitecore-best-practice/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2009/09/layoutnotfound.png" medium="image">
			<media:title type="html">layoutnotfound</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2009/09/bumpfoldertemplate1.png" medium="image">
			<media:title type="html">bumpfoldertemplate</media:title>
		</media:content>
	</item>
		<item>
		<title>Traffic light labels &#8211; Sitecore best practice</title>
		<link>http://blog.capaxsolutions.co.uk/2009/09/17/traffic-light-labels-sitecore-best-practice/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/09/17/traffic-light-labels-sitecore-best-practice/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 16:10:11 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=34</guid>
		<description><![CDATA[Adding little &#8220;traffic light&#8221; labels to the top of your renderings and sub-layouts can really help both the customer and other developers see how the site is progressing. Just a small span at the top of the file containing its name and a css class for its status will do the trick:
&#60;span class="devlabel red"&#62;homepage_flashbanner.ascx&#60;/span&#62;
The problem [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=34&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>Adding little &#8220;traffic light&#8221; labels to the top of your renderings and sub-layouts can really help both the customer and other developers see how the site is progressing. Just a small span at the top of the file containing its name and a css class for its status will do the trick:</p>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">span</span> <span style="color:#ff0000;">class</span>=<span style="color:#0000ff;">"devlabel red"</span><span style="color:#0000ff;">&gt;</span>homepage_flashbanner.ascx<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">span</span><span style="color:#0000ff;">&gt;</span></pre>
<p>The problem you run into is that the style tags often interfere with the layout of the page or just don&#8217;t show up correctly at all:</p>
<p><img class="alignnone size-full wp-image-51" title="before" src="http://sitecored.files.wordpress.com/2009/09/before.png?w=395&#038;h=146" alt="before" width="395" height="146" /></p>
<p>It can be worse than this, often you&#8217;ll find that simply adding these spans will throw the whole page into a shambles.</p>
<p>The solution is to turn to the as always awesome jQuery. Start by adding the following script to the bottom of your main layout file:</p>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">script</span> <span style="color:#ff0000;">type</span>=<span style="color:#0000ff;">"text/javascript"</span><span style="color:#0000ff;">&gt;</span>
jQuery(document).ready(function() {
   jQuery(".devlabel").each(function(n) {
      var label = jQuery(this);
      var target = label.next();
      var pos = target.offset();
      var left = pos.left + "px";
      var top = -12 + pos.top + "px";
      label.css({
         zIndex: 5000,
         left: left,
         top: top
      });
   });
 });
<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">script</span><span style="color:#0000ff;">&gt;</span></pre>
<p>Make sure the CSS class for the label is set to absolute positioning as so:</p>
<pre style="background-color:#ffffff;width:100%;">.<span style="color:#800000;">devlabel</span>
{
	<span style="color:#ff0000;">font-size</span>:<span style="color:#0000ff;">8px</span>;
	<span style="color:#ff0000;">position</span>:<span style="color:#0000ff;">absolute</span>;
}
.<span style="color:#800000;">red</span>
{
	<span style="color:#ff0000;">color</span>:<span style="color:#0000ff;">red</span>;
}
.<span style="color:#800000;">orange</span>
{
	<span style="color:#ff0000;">color</span>:<span style="color:#0000ff;">orange</span>;
}
.<span style="color:#800000;">green</span>
{
	<span style="color:#ff0000;">color</span>:<span style="color:#0000ff;">green</span>;
}</pre>
<p>What that jQuery will do is search for any labels with the &#8216;devlabel&#8217; class and position them directly above the <strong>very next element</strong>. It should end up looking more like this:</p>
<p><img class="alignnone size-full wp-image-53" title="after" src="http://sitecored.files.wordpress.com/2009/09/after.png?w=385&#038;h=125" alt="after" width="385" height="125" /></p>
<p>Then of course as your project progresses you can change the color of the traffic lights, red for not started, orange for in progress and green for finished (and tested!). Quite satisfying to watch them slowly turn green one by one <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img class="alignnone size-full wp-image-52" title="progress" src="http://sitecored.files.wordpress.com/2009/09/progress.png?w=389&#038;h=119" alt="progress" width="389" height="119" /></p>
<p>I’ve been adding these &#8216;traffic lights&#8217; to my projects for quite a while now, the only issue really is having to remove them at the end of the project (for SEO purposes they’re a big no no). This has given me inspiration for possibly writing a pipeline handler to automate the process, instead of using the traffic light colors it could instead output the name and Sitecore UI icons of the various renderings and sub-layouts. Once I have the details sorted I’ll be sure to post an update.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=34&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/09/17/traffic-light-labels-sitecore-best-practice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2009/09/before.png" medium="image">
			<media:title type="html">before</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2009/09/after.png" medium="image">
			<media:title type="html">after</media:title>
		</media:content>

		<media:content url="http://sitecored.files.wordpress.com/2009/09/progress.png" medium="image">
			<media:title type="html">progress</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore field validator for unpublished media items.</title>
		<link>http://blog.capaxsolutions.co.uk/2009/09/10/sitecore-media-library-validator/</link>
		<comments>http://blog.capaxsolutions.co.uk/2009/09/10/sitecore-media-library-validator/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 21:26:39 +0000</pubDate>
		<dc:creator>Steve Green</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[media library]]></category>
		<category><![CDATA[validator]]></category>

		<guid isPermaLink="false">http://blog.capaxsolutions.co.uk/?p=32</guid>
		<description><![CDATA[When you&#8217;ve got larger Sitercore installs where there is a team of graphic artists dedicated to maintaining the media library you can get cases of content editors linking to images that haven&#8217;t been published yet.
Off the back of those kind of situations I wrote a custom validator to test if the item is published on any of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=32&subd=sitecored&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>When you&#8217;ve got larger Sitercore installs where there is a team of graphic artists dedicated to maintaining the media library you can get cases of content editors linking to images that haven&#8217;t been published yet.</p>
<p>Off the back of those kind of situations I wrote a custom validator to test if the item is published on any of the target databases. It could easily be repurposed for any of the link fields and the warning could be raised to an error if needed.</p>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">using</span> System.Collections.Generic;
<span style="color:#0000ff;">using</span> Sitecore.Configuration;
<span style="color:#0000ff;">using</span> Sitecore.Data;
<span style="color:#0000ff;">using</span> Sitecore.Data.Fields;
<span style="color:#0000ff;">using</span> Sitecore.Data.Items;
<span style="color:#0000ff;">using</span> Sitecore.Data.Validators;
<span style="color:#0000ff;">using</span> Sitecore.Diagnostics;
<span style="color:#0000ff;">using</span> Sitecore.Globalization;
<span style="color:#0000ff;">using</span> Sitecore.SecurityModel;
<span style="color:#0000ff;">using</span> Sitecore.Shell.Applications.ContentEditor;
<span style="color:#0000ff;">namespace</span> example
{
    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> UnpublishedMediaValidator : StandardValidator
    {
        <span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> ValidatorResult Evaluate()
        {
            ItemUri itemUri = <span style="color:#0000ff;">base</span>.ItemUri;
            <span style="color:#0000ff;">if</span> (itemUri != <span style="color:#0000ff;">null</span>)
            {
                Field field = <span style="color:#0000ff;">base</span>.GetField();
                <span style="color:#0000ff;">if</span> (field == <span style="color:#0000ff;">null</span>)
                    <span style="color:#0000ff;">return</span> ValidatorResult.Valid;
                <span style="color:#0000ff;">string</span> str = field.Value;
                <span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">string</span>.IsNullOrEmpty(str))
                    <span style="color:#0000ff;">return</span> ValidatorResult.Valid;
                <span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">string</span>.Compare(str, "<span style="color:#8b0000;">&lt;image /&gt;</span>") == 0)
                    <span style="color:#0000ff;">return</span> ValidatorResult.Valid;
                <span style="color:#0000ff;">string</span> itemId = <span style="color:#0000ff;">new</span> XmlValue(str, "<span style="color:#8b0000;">image</span>").GetAttribute("<span style="color:#8b0000;">mediaid</span>");
                <span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">string</span>.IsNullOrEmpty(itemId))
                    <span style="color:#0000ff;">return</span> ValidatorResult.Valid;
                Database currentDatabase = Factory.GetDatabase(itemUri.DatabaseName);
                Assert.IsNotNull(currentDatabase, itemUri.DatabaseName);
                Item localItem = currentDatabase.GetItem(itemId);
                <span style="color:#0000ff;">if</span> (localItem == <span style="color:#0000ff;">null</span>)
                    <span style="color:#0000ff;">return</span> ValidatorResult.Valid;
                <span style="color:#0000ff;">foreach</span>(Database targetDatabase <span style="color:#0000ff;">in</span> GetTargets(localItem))
                {
                    Item targetItem = targetDatabase.GetItem(localItem.ID);
                    <span style="color:#0000ff;">if</span>(targetItem == <span style="color:#0000ff;">null</span>)
                    {
                        <span style="color:#0000ff;">base</span>.Text = Translate.Text("<span style="color:#8b0000;">The field \"{0}\" links to an unpublished item.</span>", <span style="color:#0000ff;">new</span> <span style="color:#0000ff;">object</span>[] { field.DisplayName });
                        <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">base</span>.GetFailedResult(ValidatorResult.Warning);
                    }
                }
            }
            <span style="color:#0000ff;">return</span> ValidatorResult.Valid;
        }
        <span style="color:#0000ff;">private</span> List&lt;Database&gt; GetTargets(Item item)
        {
            <span style="color:#0000ff;">using</span> (<span style="color:#0000ff;">new</span> SecurityDisabler())
            {
                Item item2 = item.Database.Items["<span style="color:#8b0000;">/sitecore/system/publishing targets</span>"];
                <span style="color:#0000ff;">if</span> (item2 != <span style="color:#0000ff;">null</span>)
                {
                    List&lt;Database&gt; list = <span style="color:#0000ff;">new</span> List&lt;Database&gt;();
                    <span style="color:#0000ff;">foreach</span> (Item item3 <span style="color:#0000ff;">in</span> item2.Children)
                    {
                        <span style="color:#0000ff;">string</span> name = item3["<span style="color:#8b0000;">Target database</span>"];
                        <span style="color:#0000ff;">if</span> (name.Length &gt; 0)
                        {
                            Database database = Factory.GetDatabase(name, <span style="color:#0000ff;">false</span>);
                            <span style="color:#0000ff;">if</span> (database != <span style="color:#0000ff;">null</span>)
                            {
                                list.Add(database);
                            }
                            <span style="color:#0000ff;">else</span>
                            {
                                Log.Warn("<span style="color:#8b0000;">Unknown database in PublishAction: </span>" + name, <span style="color:#0000ff;">this</span>);
                            }
                        }
                    }
                    <span style="color:#0000ff;">return</span> list;
                }
            }
            <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">new</span> List&lt;Database&gt;();
        }
        <span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> ValidatorResult GetMaxValidatorResult()
        {
            <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">base</span>.GetFailedResult(ValidatorResult.Warning);
        }
        <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">override</span> <span style="color:#0000ff;">string</span> Name
        {
            <span style="color:#0000ff;">get</span>
            {
                <span style="color:#0000ff;">return</span> "<span style="color:#8b0000;">Unpublished Items.</span>";
            }
        }
    }
}</pre>
<p>Implementing it is fairly straight forward, just compile the code, create a new Validation Rule item in /sitecore/system/Settings/Validation Rules/Field Rules/ (namespace.class,assembly) and add to the Validator Bar rule on the Image Field Type in /sitecore/system/Settings/Validation Rules/Field Types/Image</p>
<p>As I said it would be easy to repurpose this for any link type, useful in conjunction with more complex workflows.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sitecored.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sitecored.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sitecored.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sitecored.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sitecored.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sitecored.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sitecored.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sitecored.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sitecored.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sitecored.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.capaxsolutions.co.uk&blog=9199105&post=32&subd=sitecored&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.capaxsolutions.co.uk/2009/09/10/sitecore-media-library-validator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da00436ef9beff20d0f70144c9e75385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve Green</media:title>
		</media:content>
	</item>
	</channel>
</rss>