<?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>Brian Pedersen&#039;s Sitecore and .NET Blog</title>
	<atom:link href="http://briancaos.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://briancaos.wordpress.com</link>
	<description>Sitecore, C#, ASP.NET for developers</description>
	<lastBuildDate>Fri, 24 May 2013 14:43:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='briancaos.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Brian Pedersen&#039;s Sitecore and .NET Blog</title>
		<link>http://briancaos.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://briancaos.wordpress.com/osd.xml" title="Brian Pedersen&#039;s Sitecore and .NET Blog" />
	<atom:link rel='hub' href='http://briancaos.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Sitecore 6.6: CSRF form field is missing</title>
		<link>http://briancaos.wordpress.com/2013/05/07/sitecore-6-6-csrf-form-field-is-missing/</link>
		<comments>http://briancaos.wordpress.com/2013/05/07/sitecore-6-6-csrf-form-field-is-missing/#comments</comments>
		<pubDate>Tue, 07 May 2013 09:42:35 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[AntiCSRF]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[CSRF form field is missing]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1156</guid>
		<description><![CDATA[In the latest version of Sitecore 6.6 (release 13.04.04) I sometimes get this error: Exception: Sitecore.Security.AntiCsrf.Exceptions.PotentialCsrfException Message: CSRF form field is missing. Source: Sitecore.Security.AntiCsrf at Sitecore.Security.AntiCsrf.SitecoreAntiCsrfModule.RaiseError(Exception ex, HttpContext context) at Sitecore.Security.AntiCsrf.SitecoreAntiCsrfModule.PreRequestHandlerExecute(Object sender, EventArgs e) at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&#38; &#8230; <a href="http://briancaos.wordpress.com/2013/05/07/sitecore-6-6-csrf-form-field-is-missing/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1156&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In the latest version of <a href="http://www.sitecore.net" target="_blank">Sitecore</a> 6.6 (release 13.04.04) I sometimes get this error:</p>
<blockquote><p>Exception: Sitecore.Security.AntiCsrf.Exceptions.PotentialCsrfException<br />
Message: CSRF form field is missing.<br />
Source: Sitecore.Security.AntiCsrf<br />
at Sitecore.Security.AntiCsrf.SitecoreAntiCsrfModule.RaiseError(Exception ex, HttpContext context)<br />
at Sitecore.Security.AntiCsrf.SitecoreAntiCsrfModule.PreRequestHandlerExecute(Object sender, EventArgs e)<br />
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()<br />
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)</p></blockquote>
<p>The issue seemes to be related to an implementation of <a href="http://anticsrf.codeplex.com/" target="_blank">AntiCSRF</a>, a Microsoft Public License library that prevents <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery" target="_blank">Cross Site Request Forgery</a>.</p>
<p><strong>HOW TO FIX IT:</strong></p>
<p>The fix is easy. Clear your cookies, clear the browser cache, close the browser and try again.</p>
<p><strong>UPDATE:</strong></p>
<p>The clever guys at Sitecore Support have come up with this (untested) quick fix that you can try:</p>
<p>Please add these lines to the Sitecore.AntiCsrf.config file (website/app_config/include/Sitecore.AntiCsrf.config):</p>
<pre class="brush: xml; title: ; notranslate">&lt;ignore wildcard=&quot;/sitecore/shell/*Applications/Security/User*Manager*?*Cart_Users_Callback=yes&quot;/&gt;
&lt;ignore wildcard=&quot;/sitecore/shell/*Applications/Security/Role*Manager*?*Cart_Roles_Callback=yes&quot;/&gt;
&lt;ignore wildcard=&quot;/sitecore/shell/*Applications/Security/Domain*Manager*?*Cart_Domains_Callback=yes&quot;/&gt;
&lt;ignore wildcard=&quot;/sitecore/shell/~/xaml/Sitecore.Shell.Applications.Security.SelectAccount*Cart_*_Roles_Callback=yes&quot;/&gt;
&lt;ignore wildcard=&quot;/sitecore/shell/~/xaml/Sitecore.Shell.Applications.Security.SelectAccount*Cart_*_Users_Callback=yes&quot;/&gt;
</pre>
<p><strong>UPDATE 2:</strong></p>
<p>The tough guy could choose to disable AntiCSRF completely. Add the following line in the /App_Config/Include/Sitecore.AntiCSRF.config file:</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;configuration&gt;
  &lt;sitecore&gt;
    &lt;AntiCsrf&gt;
      &lt;rules&gt;
        &lt;rule name=&quot;shell&quot;&gt;
          &lt;!-- Ingore AntiCSRF completely --&gt;
          &lt;ignore wildcard=&quot;/sitecore/*&quot;/&gt;
        &lt;/rule&gt;
      &lt;/rules&gt;
    &lt;/AntiCsrf&gt;
  &lt;/sitecore&gt;
&lt;/configuration&gt;</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1156&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2013/05/07/sitecore-6-6-csrf-form-field-is-missing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore allow email adress as user name</title>
		<link>http://briancaos.wordpress.com/2013/04/22/sitecore-allow-email-adress-as-user-name/</link>
		<comments>http://briancaos.wordpress.com/2013/04/22/sitecore-allow-email-adress-as-user-name/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 08:32:46 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[Sitecore 7]]></category>
		<category><![CDATA[Account]]></category>
		<category><![CDATA[AccountNameValidation]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[User]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1151</guid>
		<description><![CDATA[If you try to create a new user in Sitecore with an email address as account name you will be met with a validation error: &#8220;user name is not valid in the selected domain.&#8221; But do not worry, it&#8217;s not &#8230; <a href="http://briancaos.wordpress.com/2013/04/22/sitecore-allow-email-adress-as-user-name/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1151&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If you try to create a new user in <a href="http://www.sitecore.net" target="_blank">Sitecore</a> with an email address as account name you will be met with a validation error:</p>
<blockquote><p>&#8220;user name is not valid in the selected domain.&#8221;</p></blockquote>
<p>But do not worry, it&#8217;s not the underlying security framework that disallows email as username, it&#8217;s just a default validation of user names in the user manager dialog box.</p>
<p>The default validation is based on this regular expression: ^\w[\w\s]*$</p>
<p>You can change the regular expression using the AccountNameValidation setting. Add the following to your <strong>web.config</strong>:</p>
<pre class="brush: xml; title: ; notranslate">&lt;setting name=&quot;AccountNameValidation&quot; value=&quot;.+&quot; /&gt;</pre>
<p>When using the users email address as username, you should consider changing the membership provider in Sitecore to require a unique email. Otherwise you risk having users that share email addresses.</p>
<p>The change is simple. Go to web.config and change the attribute &#8220;<strong>requiresUniqueEmail</strong>&#8221; to &#8220;<strong>true</strong>&#8220;:</p>
<pre class="brush: xml; title: ; notranslate">&lt;add name=&quot;sql&quot;
type=&quot;System.Web.Security.SqlMembershipProvider&quot;
connectionStringName=&quot;core&quot;
applicationName=&quot;sitecore&quot;
minRequiredPasswordLength=&quot;1&quot;
minRequiredNonalphanumericCharacters=&quot;0&quot;
requiresQuestionAndAnswer=&quot;false&quot;
requiresUniqueEmail=&quot;true&quot;
maxInvalidPasswordAttempts=&quot;256&quot; /&gt;</pre>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1151&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2013/04/22/sitecore-allow-email-adress-as-user-name/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore 7 is coming: My wish list for Sitecore 7.01</title>
		<link>http://briancaos.wordpress.com/2013/04/10/sitecore-7-is-comming-my-wish-list-for-sitecore-7-01/</link>
		<comments>http://briancaos.wordpress.com/2013/04/10/sitecore-7-is-comming-my-wish-list-for-sitecore-7-01/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 12:37:22 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[Sitecore 7]]></category>
		<category><![CDATA[Page Editor]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1145</guid>
		<description><![CDATA[The next big release of Sitecore 7 is on it&#8217;s way. This time Sitecore have listened to many MVP&#8217;s and have adressed some technical issues. Most of this release revolves around scalability and indexing. The Lucene index have been updated to allow &#8230; <a href="http://briancaos.wordpress.com/2013/04/10/sitecore-7-is-comming-my-wish-list-for-sitecore-7-01/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1145&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The next big release of <a href="http://www.dansolovay.com/2013/03/a-peak-at-sitecore-7.html" target="_blank">Sitecore 7</a> is on it&#8217;s way. This time Sitecore have <a href="http://www.sitecore.net/Community/Technical-Blogs/Sitecore-7-Development-Team/Posts/2013/04/Sitecore-7-We-heard-your-voice.aspx" target="_blank">listened to many MVP&#8217;s</a> and have adressed some technical issues.</p>
<p>Most of this release revolves around scalability and indexing. The <a href="http://lucenenet.apache.org/" target="_blank">Lucene index</a> have been updated to allow even more impressive performance and even higher scalability. The old Sitecore 6 would easily swallow 1.000.000 items. Sitecore 7 have almost no limitations. Even on folder level, where the old Sitecore 6 stalled at around 200 items at the same level; Sitecore 7 implements a revamped version of <a href="https://github.com/jerrong/Sitecore-Item-Buckets" target="_blank">Sitecore Item Buckets</a>, allowing you to have an infinite amount of items at the same level.</p>
<p>So what&#8217;s next on my wish list? Could I ask for more? Of course. More wants more. Here is the areas where I would like Sitecore to focus on for the first update of Sitecore 7:</p>
<p><strong>SITECORE PAGE EDITOR</strong></p>
<p>AN EXTENSIBLE PAGE EDITOR</p>
<p>We need the Sitecore Page Editor to be extensible, like the rest of Sitecore.</p>
<p>If you wish to add a new field to the Sitecore shell, you write some code, put it in a DLL and points to the field. No modifications to Sitecore itself.</p>
<p>In the Page editor, you need to modify one of Sitecore&#8217;s own Javascript files (FieldChromeType.js). This file changes with every version of Sitecore, and you cannot just append your modifications, as you need to modify namespaces and switch statements.</p>
<p>This is bad and very Sitecore-unlike behavior. Sitecore is a platform. You never modify the platform. You extend it. Except for the page editor. Sigh.</p>
<p>PAGE EDITOR LINK FIELD TYPE NEEDS TO ALLOW LOOKUP FIELDS</p>
<p>If you would like to have a link popup box in the page editor, you must have a general link field. The page editor should have a popup for all lookup fields, so you can have fields where only internal links are allowed.</p>
<p>PAGE EDITOR SHOULD HAVE A BUTTON FOR THE MEDIA LIBRARY</p>
<p>A button that opened the media library would be nice please. It&#8217;s 10 lines of code. <a href="http://briancaos.wordpress.com/2012/06/06/open-media-library-from-sitecore-page-editor/" target="_blank">I can give you the code</a>.</p>
<p>PAGE EDITOR SHOULD BE ABLE TO EDIT NON-VISUAL FIELDS</p>
<p>Not all fields are visible. But you should be able to edit them anyway. <a href="http://blog.istern.dk/2012/05/21/running-sitecore-field-editor-from-a-command/" target="_blank">Thomas Stern made a solution</a>. This should be standard.</p>
<p>PAGE EDITOR SHOULD BE ABLE TO PUBLISH EVERYTHING THAT&#8217;S INCLUDED ON THE PAGE</p>
<p>The publish button on the page editor will only publish the current item (and it&#8217;s subitems). <a href="http://briancaos.wordpress.com/2013/03/07/create-components-for-sitecore-page-editor/" target="_blank">But most pages have included components</a>. These components are not stored on the item, and often not as children to the current item. When publishing from the page editor, these components should be published as well. Otherwise you cannot publish them from the Page Editor at all.</p>
<p>PAGE EDITOR SHOULD BE CHEAPER TO DEVELOP FOR</p>
<p>This is not a no-brainer. The Page Editor is the coolest thing since sliced bread. Customers are requesting page editable websites more and more often.</p>
<p>Unfortunately, if you are aiming at building a page-editor only website (a website that is edited completely using the page editor) costs explode. The number of lines explode, as you have to consider many more states and exceptions.</p>
<p>You have to add code to allow fields that is hidden if empty to be shown, only in page edit mode. And how do you make a carrousel page editable? And what about the metadata fields?</p>
<p>How do you allow the customer to version pages, if the page consists of components?</p>
<p>All of these simple, little decisions complicate your code, making it more expensive to develop, and more expensive to test.</p>
<p><strong>SITECORE SHELL</strong></p>
<p>ADDING COMPONENTS USING THE SHELL</p>
<p>If you wish to use the <a href="http://www.sitecore.net/Products/Digital-Marketing-System.aspx" target="_blank">Sitecore DMS</a> in it&#8217;s full extent you are bound to make a Page Editable website. Why? Because the Page Editor is the only place where you can add components to a page. Components are necessary if you would like to use <a href="http://www.sitecore.net/Products/Digital-Marketing-System/Engagement-Analytics/A-B-Multivariate-Testing.aspx" target="_blank">A/B Testing</a> and <a href="http://www.sitecore.net/Products/Digital-Marketing-System/Engagement-Analytics/Real-Time-Personalization.aspx" target="_blank">Real Time Personalisation</a>.</p>
<p>We need the dialogs for adding components to a page available in the Sitecore Shell.</p>
<p>I would expect the Sitecore Shell to contain the full set of functions, and the Page Editor to be a subset of functionality.</p>
<p>Yes I know that I can use the Presentation-&gt;Details button to open the Layout Details and from there I can add my components. But my customer cannot. It&#8217;s a developer tool and way too complicated to use.</p>
<p>Please make a user friendly way of adding components to a page from the Sitecore Shell.</p>
<p><strong>CODING</strong></p>
<p>SC:FIELDRENDERER</p>
<p>The sc:FieldRenderer should be able to get a NULL item without crashing. This would remove half of my code lines in my components.</p>
<p>SC:LINK</p>
<p>The sc:Link should be able to use lookup fields and not only the general link field.</p>
<p>SC:EDITFRAME</p>
<p>The sc:EditFrame should accept a Sitecore item instead of a Item path in the DataSource property.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1145&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2013/04/10/sitecore-7-is-comming-my-wish-list-for-sitecore-7-01/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>
	</item>
		<item>
		<title>The URL-encoded form data is not valid error in Sitecore Page Editor</title>
		<link>http://briancaos.wordpress.com/2013/04/02/the-url-encoded-form-data-is-not-valid-error-in-sitecore-page-editor/</link>
		<comments>http://briancaos.wordpress.com/2013/04/02/the-url-encoded-form-data-is-not-valid-error-in-sitecore-page-editor/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 08:58:13 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[General .NET]]></category>
		<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[aspnet:MaxHttpCollectionKeys]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[web.config]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1141</guid>
		<description><![CDATA[In ASP.NET 3.5 you may encounter one of the following error messages: &#8220;Operation is not valid due to the current state of the object&#8221; or: &#8220;The URL-encoded form data is not valid&#8221; WHY? Microsoft released a Security update at dec 29 &#8230; <a href="http://briancaos.wordpress.com/2013/04/02/the-url-encoded-form-data-is-not-valid-error-in-sitecore-page-editor/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1141&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In ASP.NET 3.5 you may encounter one of the following error messages:</p>
<blockquote><p>&#8220;Operation is not valid due to the current state of the object&#8221;</p>
<p>or:</p>
<p>&#8220;The URL-encoded form data is not valid&#8221;</p></blockquote>
<p><strong>WHY?</strong></p>
<p>Microsoft <a href="http://weblogs.asp.net/scottgu/archive/2011/12/28/asp-net-security-update-shipping-thursday-dec-29th.aspx" target="_blank">released a Security update</a> at dec 29 2012. The update contained (amongst other features) an upper bound to the number of simultaneous HTTP form elements that can be posted. The new limit is 1000.</p>
<p>In the Sitecore Page Editor you may experience that for large pages you have more than 1000 form elements.</p>
<p><strong>WHAT TO DO?</strong></p>
<p>To fix this you should add the following to the web.config:</p>
<p>In the <strong>&lt;appSettings&gt;</strong> of the <strong>web.config</strong> add the following:</p>
<pre class="brush: xml; title: ; notranslate">&lt;add key=”aspnet:MaxHttpCollectionKeys” value=”value greater than 1000” /&gt;
</pre>
<p>Thanks to <a href="http://www.pentia.dk/Pentia/Medarbejdere" target="_blank">Alin Parjolea</a> for the tip.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1141/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1141&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2013/04/02/the-url-encoded-form-data-is-not-valid-error-in-sitecore-page-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore 404 without 302</title>
		<link>http://briancaos.wordpress.com/2013/03/21/sitecore-404-without-302/</link>
		<comments>http://briancaos.wordpress.com/2013/03/21/sitecore-404-without-302/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 11:02:20 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[General .NET]]></category>
		<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[302]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[httpRequestBegin]]></category>
		<category><![CDATA[Pipeline]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[TrySkipIisCustomErrors]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1131</guid>
		<description><![CDATA[It&#8217;s a well known issue that when Sitecore displays a 404 page, it&#8217;s done by doing a 302 redirect to the 404 page, hence the 302 status code is thrown before the 404. The behavior is partially because of the &#8230; <a href="http://briancaos.wordpress.com/2013/03/21/sitecore-404-without-302/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1131&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s a well known issue that when <a href="http://www.sitecore.net" target="_blank">Sitecore</a> displays a <a href="http://en.wikipedia.org/wiki/HTTP_404" target="_blank">404 page</a>, it&#8217;s done by doing a <a href="http://en.wikipedia.org/wiki/HTTP_302" target="_blank">302 redirect</a> to the 404 page, hence the 302 status code is thrown before the 404.</p>
<p>The behavior is partially because of the way .net handles redirects internally. But fortunately you can overcome it pretty easily.</p>
<p>My colleague <a href="http://www.pentia.dk/Pentia/Medarbejdere" target="_blank">Anders Laub</a> came up with this extension to the Sitecore <a href="http://sitecoreblog.alexshyba.com/2007/06/briefly-about-http-request-begin.html" target="_blank">httpRequestBegin</a> pipeline.</p>
<p>By adding a processor to the pipeline you can switch the missing item with a 404 item inside Sitecore. The item in Sitecore will then have a sublayout that will throw the 404. In effect, Sitecore (or .net) will not know that there is a page missing and will continue the business as usual. It&#8217;s up to us developers to handle the 404. Just like we like it.</p>
<p>First the <strong>httpRequestBegin</strong> processor:</p>
<pre class="brush: xml; title: ; notranslate">&lt;httpRequestBegin&gt;
  &lt;processor type=&quot;Sitecore.Pipelines.PreprocessRequest.CheckIgnoreFlag, Sitecore.Kernel&quot; /&gt;
  ...
  ...
  &lt;processor type=&quot;Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel&quot; /&gt;
  &lt;processor type=&quot;MyCode.Custom404ResolverPipeline, MyDll&quot; /&gt;
  ...
  ...
&lt;/httpRequestBegin&gt;</pre>
<p>The processor is added just after the <strong>ItemResolver</strong>. The ItemResolver returns null if the item is not found.</p>
<p>We then switch the missing item with our 404 item:</p>
<pre class="brush: csharp; title: ; notranslate">public class Custom404ResolverPipeline : HttpRequestProcessor
{
  public override void Process(HttpRequestArgs args)
  {
    Assert.ArgumentNotNull(args, &amp;quot;args&amp;quot;);

    // Do nothing if the item is actually found
    if (Sitecore.Context.Item != null || Sitecore.Context.Database == null)
      return;

    // all the icons and media library items 
    // for the sitecore client need to be ignored
    if (args.Url.FilePath.StartsWith(&amp;quot;/-/&amp;quot;))
      return;

    // Get the 404 not found item in Sitecore.
    // You can add more complex code to get the 404 item 
    // from multisite solutions. In a production 
    // environment you would probably get the item from
    // your website configuration.
    Item notFoundPage = Sitecore.Context.Database.GetItem(&amp;quot;{DFE03D7A-00B9-4C15-8AB7-482D82B3484E}&amp;quot;);
    if (notFoundPage == null)
      return;

    // Switch to the 404 item
    Sitecore.Context.Item = notFoundPage;
  }
}</pre>
<p>The page we switched to needs to have a sublayout that will do the actual 404 return code:</p>
<pre class="brush: csharp; title: ; notranslate">public partial class _404 : System.Web.UI.UserControl
{
  protected void Page_Load(object sender, EventArgs e)
  {
    HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.NotFound;
    HttpContext.Current.Response.TrySkipIisCustomErrors = true;
    HttpContext.Current.Response.StatusDescription = &amp;quot;Page not found&amp;quot;;
  }
}</pre>
<p>Remember to set the <strong>TrySkipIisCustomErrors</strong> or your <a href="http://briancaos.wordpress.com/2012/06/12/custom-404-page-ignored-by-iis-7/" target="_blank">404 page will be ignored by IIS 7.5</a>.</p>
<p>MORE READING:</p>
<ul>
<li><a href="http://herskind.co.uk/blog/2012/03/sitecore-404-without-302" target="_blank">Kern Herskind has another solution here</a>.</li>
<li><a href="http://stackoverflow.com/questions/14252235/sitecore-uses-302-found-to-redirect-users-to-my-custom-404-page-is-that-legi" target="_blank">A Stackoverflow article on the same issue</a>.</li>
<li><a href="http://www.partechit.nl/nl/blog/2012/november/return-404-status-code-when-itemnotfound-page-is-loaded" target="_blank">Partech handles the issue as well</a>.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1131&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2013/03/21/sitecore-404-without-302/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Create components for Sitecore Page Editor</title>
		<link>http://briancaos.wordpress.com/2013/03/07/create-components-for-sitecore-page-editor/</link>
		<comments>http://briancaos.wordpress.com/2013/03/07/create-components-for-sitecore-page-editor/#comments</comments>
		<pubDate>Thu, 07 Mar 2013 11:19:00 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[datasource]]></category>
		<category><![CDATA[Edit Frame]]></category>
		<category><![CDATA[Page Edit]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1123</guid>
		<description><![CDATA[This quick tutorial will guide you trough your first Sitecore Page Editable Component. The Sitecore Page Editor is build around the concept of components. A component is a reusable piece of data that is parred with a sublayout and placed &#8230; <a href="http://briancaos.wordpress.com/2013/03/07/create-components-for-sitecore-page-editor/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1123&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This quick tutorial will guide you trough your first <a href="http://www.sitecore.net" target="_blank">Sitecore</a> Page Editable Component.</p>
<p>The <a href="http://www.techphoria414.com/Blog/2012/May/Sitecore_Page_Editor_Unleashed" target="_blank">Sitecore Page Editor</a> is build around the concept of components. A component is a reusable piece of data that is parred with a <a href="http://gettingtoknowsitecore.blogspot.dk/2010/02/sublayouts-and-web-controls.html" target="_blank">sublayout </a>and placed in a placeholder.</p>
<div id="attachment_1124" class="wp-caption aligncenter" style="width: 650px"><a href="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor.png"><img class="size-large wp-image-1124" alt="Sitecore Page Editor" src="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor.png?w=640&#038;h=463" width="640" height="463" /></a><p class="wp-caption-text">Sitecore Page Editor&#8217;</p></div>
<p>This tutorial will create a very simple component: Adding an Image.</p>
<p>To create components you must go through a series of steps.</p>
<p><strong>STEP 1: CREATE THE TEMPLATE</strong></p>
<p>First you need a Sitecore Template where you store the data. My component must show an image, so all my template contains is an image field called &#8220;DocumentImage&#8221;:</p>
<div id="attachment_1125" class="wp-caption aligncenter" style="width: 650px"><a href="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-template.png"><img class="size-large wp-image-1125" alt="Document Image Template" src="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-template.png?w=640&#038;h=214" width="640" height="214" /></a><p class="wp-caption-text">Document Image Template</p></div>
<p><strong>STEP 2: FIND A HOME FOR TEMPLATES OF THIS TYPE</strong></p>
<p>Next step is to define a place in your web site structure where you will store templates of this type. Templates of different types can share a folder, or you can create a folder specifically for this type.</p>
<p>You will need the folder in a few steps.</p>
<p><strong>STEP 3: CREATE A SUBLAYOUT</strong></p>
<p>Now you need a sublayout that will present the data from the template.</p>
<div id="attachment_1126" class="wp-caption aligncenter" style="width: 650px"><a href="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-sublayout.png"><img class="size-large wp-image-1126" alt="Document Image Sublayout" src="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-sublayout.png?w=640&#038;h=463" width="640" height="463" /></a><p class="wp-caption-text">Document Image Sublayout</p></div>
<p>When creating the sublayout you must determine the contents of these fields:</p>
<ul>
<li><span style="line-height:1.5;"><strong>Editable</strong>: Check this box. If unchecked, the sublayout is not editable and cannot be used in the Page Edittor as a component.</span></li>
<li><span style="line-height:1.5;"><strong>Datasource location</strong>: Select the folder you chose in STEP 2. When the component is added to a page, this is where the data will be stored.</span></li>
<li><span style="line-height:1.5;"><strong>Datasource template</strong>: Select the template you created in STEP 1. When the component is added to a page, this is the template that is created.</span></li>
</ul>
<p><strong>STEP 4: ASSIGN THE SUBLAYOUT TO A PACEHOLDER SETTING</strong></p>
<p>Each placeholder that is capable of having controls added must be defined in the folder <em>/sitecore/layout/Placeholder Settings</em>.</p>
<p>Select the placeholder setting where you would like to allow your control to be added and add it to the &#8220;Allowed controls&#8221; field:</p>
<div id="attachment_1127" class="wp-caption aligncenter" style="width: 650px"><a href="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-placeholder-setting.png"><img class="size-large wp-image-1127" alt="Placeholder setting" src="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-placeholder-setting.png?w=640&#038;h=248" width="640" height="248" /></a><p class="wp-caption-text">Placeholder setting</p></div>
<p><a href="http://www.sitecore.net/Community/Technical-Blogs/Maximizing-Usability/Posts/2012/08/The-Power-of-Placeholder-Settings.aspx" target="_blank">Read more about placeholder settings here</a>.</p>
<p><strong>STEP 5: CODE THE CONTENTS OF THE SUBLAYOUT</strong></p>
<p>When a component is added to a page it is parred to a item through the &#8220;<a href="http://firebreaksice.com/using-the-datasource-field-with-sitecore-sublayouts/" target="_blank">datasource</a>&#8221; parameter on the layout. This means that you cannot get the data for your component with <em>Sitecore.Context.Item</em>. Sitecore.Content.Item will point to the actual page where the component is added, not the item assigned to the component.</p>
<p>The following method will get the item from the &#8220;datasource&#8221;, with a fallback to the current item. The fallback is a safety mechanism that ensures that the item returned is never null, as this will crash the entire web page.</p>
<pre class="brush: csharp; title: ; notranslate">protected Item CurrentContextItem
{
  get
  {
    Sublayout thisSublayout = (Parent as Sublayout);
    if (thisSublayout == null)
      return Sitecore.Context.Item;
    if (string.IsNullOrEmpty(thisSublayout.DataSource))
      return Sitecore.Context.Item;
    string dataSource = thisSublayout.DataSource;
    Item dataSourceItem = Sitecore.Context.Database.GetItem(dataSource) ??
                          Sitecore.Context.ContentDatabase.GetItem(dataSource);
    if (dataSourceItem == null)
      return Sitecore.Context.Item;
    return dataSourceItem;
  }
}
</pre>
<p>(<a href="http://briancaos.wordpress.com/2008/11/13/applying-datasource-to-sublayouts-on-sitecore-items/" target="_blank">This method of getting the datasource has not changed the last 5 years</a>).</p>
<p>You now assign the Item parameter of the <a href="http://briancaos.wordpress.com/2011/02/28/sitecore-image-parameters/" target="_blank">sc:Image webcontrol</a> to <strong>CurrentContextItem</strong>, and the control will take its data from that item:</p>
<pre class="brush: csharp; title: ; notranslate">&lt;%@ Control Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeBehind=&quot;DocumentImage.ascx.cs&quot; Inherits=&quot;PT.Document.DocumentImage&quot; %&gt;
&lt;%@ Register TagPrefix=&quot;sc&quot; Namespace=&quot;Sitecore.Web.UI.WebControls&quot; Assembly=&quot;Sitecore.Kernel&quot; %&gt;

&lt;div class=&quot;Image&quot;&gt;
  &lt;sc:Image field=&quot;DocumentImage&quot; id=&quot;Image&quot; runat=&quot;server&quot; Item=&quot;&lt;%# CurrentContextItem %&gt;&quot; MaxHeight=&quot;200&quot; /&gt;
&lt;/div&gt;</pre>
<p>If your component uses an <a href="http://briancaos.wordpress.com/2011/11/28/using-sitecore-editframe-in-pageedit/" target="_blank">EditFrame</a> you need to get the actual value from the datasource, not the item it points to. In this case you need another method:</p>
<pre class="brush: csharp; title: ; notranslate">protected string DataSourceValue()
{
  Sublayout sublayout = (Parent as Sublayout);
  return (((sublayout == null) || string.IsNullOrEmpty(sublayout.DataSource)) ? string.Empty : sublayout.DataSource);
}
</pre>
<p>You can now use this method to ensure your <strong>EditFrame</strong> uses the correct item:</p>
<pre class="brush: csharp; title: ; notranslate">&lt;sc:EditFrame runat=&quot;server&quot; ID=&quot;editFrame&quot; Buttons=&quot;???&quot; DataSource=&quot;&lt;%# DataSourceValue %&gt;&quot;&gt;
  ...
  ...
&lt;/sc:EditFrame&gt;</pre>
<p>That&#8217;s all there is to it. Happy coding.</p>
<p>More reading:</p>
<ul>
<li><span style="line-height:16px;"><a href="http://theclientview.net/2011/04/sitecore-recommended-practices-part-6-presentationpage-editor-and-solution-code/" target="_blank">Sitecore Recommended Practices – part 6 (Presentation,Page Editor, and Solution Code)</a> by Dan Brown.</span></li>
<li><a href="http://sdn.sitecore.net/upload/sitecore6/64/presentation_component_reference-a4.pdf" target="_blank">Presentation component reference</a> (PDF Document by Sitecore)</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1123&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2013/03/07/create-components-for-sitecore-page-editor/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor.png?w=640" medium="image">
			<media:title type="html">Sitecore Page Editor</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-template.png?w=640" medium="image">
			<media:title type="html">Document Image Template</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-sublayout.png?w=640" medium="image">
			<media:title type="html">Document Image Sublayout</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2013/03/sitecore-page-editor-placeholder-setting.png?w=640" medium="image">
			<media:title type="html">Placeholder setting</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore media library missing PDF icons</title>
		<link>http://briancaos.wordpress.com/2013/01/10/sitecore-media-library-missing-pdf-icons/</link>
		<comments>http://briancaos.wordpress.com/2013/01/10/sitecore-media-library-missing-pdf-icons/#comments</comments>
		<pubDate>Thu, 10 Jan 2013 08:42:41 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[acrobat reader icon]]></category>
		<category><![CDATA[media library]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[pdf icon]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1113</guid>
		<description><![CDATA[When uploading PDF (or Word/Excel/&#8230;) documents to the Sitecore media library, the PDF icon is not shown: In this case it is only my test server that is not showing the icons. My local development machine (my own laptop) displays &#8230; <a href="http://briancaos.wordpress.com/2013/01/10/sitecore-media-library-missing-pdf-icons/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1113&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>When uploading PDF (or Word/Excel/&#8230;) documents to the <a href="http://www.sitecore.net" target="_blank">Sitecore</a> media library, the PDF icon is not shown:</p>
<div id="attachment_1114" class="wp-caption aligncenter" style="width: 395px"><a href="http://briancaos.files.wordpress.com/2013/01/pdficon-missing1.png"><img class="size-full wp-image-1114" alt="PDF icon Missing" src="http://briancaos.files.wordpress.com/2013/01/pdficon-missing1.png?w=640"   /></a><p class="wp-caption-text">PDF icon Missing</p></div>
<p>In this case it is only my test server that is not showing the icons. My local development machine (my own laptop) displays the icons perfectly:</p>
<div id="attachment_1115" class="wp-caption aligncenter" style="width: 383px"><a href="http://briancaos.files.wordpress.com/2013/01/pdficon-shown.png"><img class="size-full wp-image-1115" alt="PDF icon Shown" src="http://briancaos.files.wordpress.com/2013/01/pdficon-shown.png?w=640"   /></a><p class="wp-caption-text">PDF icon Shown on my laptop</p></div>
<p>The reason is that Siteore use the associated icon from the OS. Acrobat Reader is installed on my laptop, not on my test server. So the test server displays a default icon instead.</p>
<p><strong>WHAT&#8217;S THE SOLUTION THEN?</strong></p>
<p>You can specify which static file to use for which extension in the web.config. To add the PDF icon, do the following:</p>
<p>Download a .pdf icon from the <a href="http://www.adobe.com/misc/linking.html">Adobe Website</a> (<em>due to licensing restrictions, Sitecore is not shipped with an Acrobat Reader icon</em>). Place the icon wherever you wish.</p>
<p>Go to the web.config and find the <strong>&lt;mediaType name=&#8221;PDF file&#8221; extensions=&#8221;pdf&#8221;&gt;</strong> section.</p>
<p>Add the following:</p>
<pre class="brush: xml; title: ; notranslate">&lt;mediaType name=&quot;PDF file&quot; extensions=&quot;pdf&quot;&gt;
  &lt;mimeType&gt;application/pdf&lt;/mimeType&gt;
  &lt;forceDownload&gt;false&lt;/forceDownload&gt;
  &lt;sharedTemplate&gt;system/media/unversioned/pdf&lt;/sharedTemplate&gt;
  &lt;versionedTemplate&gt;system/media/versioned/pdf&lt;/versionedTemplate&gt;
  &lt;!-- New section --&gt;
  &lt;thumbnails&gt;
    &lt;generator type=&quot;Sitecore.Resources.Media.MediaThumbnailGenerator, Sitecore.Kernel&quot;&gt;
      &lt;extension&gt;png&lt;/extension&gt;
    &lt;/generator&gt;
    &lt;staticFile&gt;File location. For example /sitecore/shell/Themes/pdficon_large.png&lt;/staticFile&gt;
  &lt;/thumbnails&gt;
  &lt;!-- end:New section --&gt;
&lt;/mediaType&gt;
</pre>
<p>Clear the following folders:</p>
<ul>
<li><span style="line-height:16px;">/temp/ folder (at least all files named &#8220;fileIcon&#8221;)</span></li>
<li>The Sitecore media cache (default located at /app_data/mediacache/)</li>
</ul>
<p>Clear your browser cache.</p>
<p>Restart the website.</p>
<p>That&#8217;s it. You now have PDF icons in Sitecore.</p>
<p><strong>MORE READING:</strong></p>
<ul>
<li><a href="http://sitecoreblog.blogspot.dk/2011/02/adding-custom-icons-for-media-library.html" target="_blank">Adding custom icons for the media library</a></li>
<li><a href="http://sdn.sitecore.net/forum/showpost.aspx?PostID=6599" target="_blank">Sitecore forum post on missing PDF icons</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1113&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2013/01/10/sitecore-media-library-missing-pdf-icons/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2013/01/pdficon-missing1.png" medium="image">
			<media:title type="html">PDF icon Missing</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2013/01/pdficon-shown.png" medium="image">
			<media:title type="html">PDF icon Shown</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore Save Dialog appears for unchanged content</title>
		<link>http://briancaos.wordpress.com/2012/11/30/sitecore-save-dialog-appears-for-unchanged-content/</link>
		<comments>http://briancaos.wordpress.com/2012/11/30/sitecore-save-dialog-appears-for-unchanged-content/#comments</comments>
		<pubDate>Fri, 30 Nov 2012 12:28:40 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[Carriage Return]]></category>
		<category><![CDATA[Memo]]></category>
		<category><![CDATA[MultiLine Field]]></category>
		<category><![CDATA[New Line]]></category>
		<category><![CDATA[Save]]></category>
		<category><![CDATA[Sitecore]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1104</guid>
		<description><![CDATA[Have you ever experienced that Sitecore keeps popping the &#8220;Do you want to save the changes to the item?&#8221; dialog box, even when you have made no changes to the item? And the box keeps appearing, even when you have &#8230; <a href="http://briancaos.wordpress.com/2012/11/30/sitecore-save-dialog-appears-for-unchanged-content/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1104&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Have you ever experienced that <a href="http://www.sitecore.net" target="_blank">Sitecore</a> keeps popping the &#8220;Do you want to save the changes to the item?&#8221; dialog box, even when you have made no changes to the item? And the box keeps appearing, even when you have chosen &#8220;yes&#8221;?</p>
<div id="attachment_1105" class="wp-caption aligncenter" style="width: 464px"><img class="size-full wp-image-1105" alt="Save Dialog" src="http://briancaos.files.wordpress.com/2012/11/save-dialog.png?w=640"   /><p class="wp-caption-text">Save Dialog</p></div>
<p>This scenario can occur if the contents of any multiline field or textbox field contains new lines <a href="http://en.wikipedia.org/wiki/Newline" target="_blank">\n</a> or carriage returns <a href="http://en.wikipedia.org/wiki/Carriage_return" target="_blank">\r</a>.</p>
<div id="attachment_1106" class="wp-caption aligncenter" style="width: 539px"><img class="size-full wp-image-1106" alt="Memo Box with \r or \n" src="http://briancaos.files.wordpress.com/2012/11/memobox.png?w=640"   /><p class="wp-caption-text">Memo Box with \r or \n</p></div>
<p>In rare situations, the browser will interprete <strong>\n</strong> and <strong>\r</strong> differently from Sitecore, thus telling Sitecore that the contents in the box differs from the contents in the Sitecore database.</p>
<p>The situation rarely occurs with manually entered text, but if you have programatically added the text to the box, the <strong>\n</strong> and <strong>\r</strong> might misalign.</p>
<p>So if you add text to the multiline field (or textbox field) you should ensure that any <strong>\n</strong> and <strong>\r</strong> are removed before adding the text.</p>
<p>I made this string extension method to remove all new lines, carriage returns, tabs and strange \xA0&#8242;s (which looks like a space but isn&#8217;t):</p>
<pre class="brush: csharp; title: ; notranslate">public static string CleanNewLinesTabsAndOtherStuff(this string s)
{
  return s.Replace(&quot;\r\n&quot;, &quot; &quot;).Replace(&quot;\r&quot;, &quot; &quot;).Replace(&quot;\n&quot;, &quot; &quot;).Replace(&quot;\t&quot;, &quot; &quot;).Replace('\xA0', '\x20');
}</pre>
<p>I replace all of them with spaces, but in other situations you could replace them with <a href="http://msdn.microsoft.com/en-us/library/system.string.empty.aspx" target="_blank">string.Empty</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1104&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2012/11/30/sitecore-save-dialog-appears-for-unchanged-content/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2012/11/save-dialog.png" medium="image">
			<media:title type="html">Save Dialog</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2012/11/memobox.png" medium="image">
			<media:title type="html">Memo Box with \r or \n</media:title>
		</media:content>
	</item>
		<item>
		<title>Sitecore Users and C#</title>
		<link>http://briancaos.wordpress.com/2012/11/01/sitecore-users-and-c/</link>
		<comments>http://briancaos.wordpress.com/2012/11/01/sitecore-users-and-c/#comments</comments>
		<pubDate>Thu, 01 Nov 2012 10:51:17 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Custom Property]]></category>
		<category><![CDATA[Roles]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[security framework]]></category>
		<category><![CDATA[Sitecore]]></category>
		<category><![CDATA[Sitecore.Security]]></category>
		<category><![CDATA[System.Web.Security]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1097</guid>
		<description><![CDATA[The Sitecore security framework is based on the .NET security. Managing Authentication, Authorization, User Accounts and Roles can be done using the standard System.Web.Security namespace. But Sitecore also provides its own Security framework that you can use for easy manipulation &#8230; <a href="http://briancaos.wordpress.com/2012/11/01/sitecore-users-and-c/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1097&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://www.sitecore.net" target="_blank">Sitecore</a> security framework is based on the <a href="http://www.asp.net/web-forms/tutorials/security/introduction/security-basics-and-asp-net-support-cs" target="_blank">.NET security</a>. Managing <a href="http://www.codeproject.com/Articles/98950/ASP-NET-authentication-and-authorization" target="_blank">Authentication, Authorization</a>, User Accounts and <a href="http://msdn.microsoft.com/en-us/library/5k850zwb(v=vs.100).aspx" target="_blank">Roles</a> can be done using the standard <a href="http://msdn.microsoft.com/en-us/library/system.web.security.aspx" target="_blank">System.Web.Security</a> namespace.</p>
<p>But Sitecore also provides its own Security framework that you can use for easy manipulation of users and roles seen from a Sitecore perspective.</p>
<p><strong>BASICS OF SITECORE SECURITY</strong></p>
<p>There is 2 things you need to know about Security in Sitecore:</p>
<ul>
<li>Sitecore prefixes user names with a domain name. This is used to differentiate users between those with access to the Sitecore editor (domain: <strong>sitecore</strong>) and those with access to the Sitecore extranet (domain: <strong>extranet</strong>).<br />
So when accessing Sitecore users from <strong>System.Web.Security</strong>, make sure you remember to ask for <strong>sitecore\admin</strong>, and not admin.<br />
(Advanced Sitecore users know that you can create as many domains as you like).</li>
<li>In Sitecore there is no such thing as &#8220;not been logged in&#8221;. If you are not logged in, you will have a user called &#8220;<strong>extranet\Anonymous</strong>&#8220;.<br />
This means that you will always have a user, no matter the context you are running in.</li>
</ul>
<p><strong>ENOUGH TALK, LETS CODE</strong></p>
<p><strong>Get a user from the domain name, user name and password:</strong></p>
<pre class="brush: csharp; title: ; notranslate">using System.Linq;
using Sitecore.Common;
using Sitecore.Security;
using Sitecore.Security.Accounts;

namespace PT.Framework.NemLogin
{
  public class UserRepository
  {
    /// &lt;summary&gt;
    /// Gets the &lt;see cref=&quot;Sitecore.Security.Accounts.User&quot;/&gt;.
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;domainName&quot;&gt;Name of the domain.&lt;/param&gt;
    /// &lt;param name=&quot;userName&quot;&gt;Name of the user.&lt;/param&gt;
    /// &lt;param name=&quot;password&quot;&gt;The password.&lt;/param&gt;
    /// &lt;returns&gt;&lt;see cref=&quot;Sitecore.Security.Accounts.User&quot;/&gt; if found or null if not found&lt;/returns&gt;
    public static User GetUser(string domainName, string userName, string password)
    {
      if (!System.Web.Security.Membership.ValidateUser(domainName + @&quot;\&quot; + userName, password))
        return null;
      if (User.Exists(domainName + @&quot;\&quot; + userName))
        return User.FromName(domainName + @&quot;\&quot; + userName, true);
      return null;
    }
  }
}</pre>
<p>The above function demonstrates how you can use the <strong>System.Web.Security</strong> and the <strong>Sitecore.Security</strong> namespace simultaneously. The function first validates the user using standard .NET security, then uses the Sitecore namespace to get the user.</p>
<p><strong>Login:</strong></p>
<p>The following function will do a login of a specified user:</p>
<pre class="brush: csharp; title: ; notranslate">using Sitecore.Security.Accounts;

using Sitecore.Security.Authentication;
using Sitecore.Web.Authentication;

public static bool Login(string domainName, string userName, string password)
{
 return AuthenticationManager.Login(domainName + @&quot;\&quot; + userName, password, false);
}</pre>
<p>And this function will also do a login, but it utilizes the Sitecore TicketManager. The TicketManager manages persistent logins and is used to remember you when you log into the Sitecore backend:</p>
<pre class="brush: csharp; title: ; notranslate">public static bool Login(User user)
{
  string ticketID = TicketManager.GetCurrentTicketId();
  if (!string.IsNullOrEmpty(ticketID))
    TicketManager.RemoveTicket(ticketID);
  return AuthenticationManager.Login(user);
}
</pre>
<p><strong>Managing Custom Properties on User Profiles:</strong></p>
<p>This is an example on how to store custom data on a user profile, and later search for the user based on the value in the custom field:</p>
<pre class="brush: csharp; title: ; notranslate">#region

using System.Linq;
using Sitecore.Common;
using Sitecore.Security;
using Sitecore.Security.Accounts;

#endregion

namespace MyCode
{
  public class UserRepository
  {
    public static User GetUserFromCustomField(string fieldName, string fieldValue)
    {
      IFilterable&lt;User&gt; allUsers = UserManager.GetUsers();
      return allUsers.Where(user =&gt; user.Profile.GetCustomProperty(fieldName) == fieldValue).FirstOrDefault();
    }

    public static void SetCustomField(User user, string fieldName, string fieldValue)
    {
      UserProfile profile = user.Profile;
      profile.SetCustomProperty(fieldName, fieldValue);
      profile.Save();
    }
  }
}</pre>
<p>Read more here:</p>
<ul>
<li><a href="http://sdn.sitecore.net/upload/sitecore6/sc61keywords/security_api_cookbook_usletter.pdf" target="_blank">Sitecore Security API Cookbook</a> &#8211; The essential reading</li>
<li><a href="http://sdn.sitecore.net/upload/sitecore6/sc61keywords/membership_providers_a4.pdf" target="_blank">Sitecore Membership Providers</a> &#8211; The next book you will read</li>
<li><a href="http://learnsitecore.cmsuniverse.net/en/Developers/Articles/2009/11/Custom%20user%20profile%20properties.aspx" target="_blank">Working with custom user profiles</a> by Learn Sitecore</li>
<li><a href="http://www.markstiles.net/Blog/2011/12/26/setting-up-a-sitecore-extranet.aspx" target="_blank">Setting up a Sitecore Extranet</a> by Mark Stiles</li>
<li><a href="http://istern.dk/blog/2009/5/12/virtualuser-in-sitecore-6.aspx" target="_blank">Virtual Users in Sitecore 6</a> by iStern</li>
<li><a href="http://briancaos.wordpress.com/2010/06/30/setting-up-security-on-languages-in-sitecore-6/" target="_blank">Setting up Security on Languages</a> by briancaos</li>
<li><a href="http://briancaos.wordpress.com/2009/10/02/assigning-security-to-items-in-sitecore-6-programatically/" target="_blank">Assigning Security to items</a> by briancaos</li>
</ul>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1097/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1097/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1097&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2012/11/01/sitecore-users-and-c/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Migrating huge amounts of Sitecore content &#8211; Use the Sitecore Serializer</title>
		<link>http://briancaos.wordpress.com/2012/10/02/migrating-huge-amounts-of-sitecore-content-use-the-sitecore-serializer/</link>
		<comments>http://briancaos.wordpress.com/2012/10/02/migrating-huge-amounts-of-sitecore-content-use-the-sitecore-serializer/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 12:23:16 +0000</pubDate>
		<dc:creator>briancaos</dc:creator>
				<category><![CDATA[Sitecore 6]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Migrating]]></category>
		<category><![CDATA[Packager]]></category>
		<category><![CDATA[Revert Tree]]></category>
		<category><![CDATA[Serialize Tree]]></category>

		<guid isPermaLink="false">http://briancaos.wordpress.com/?p=1085</guid>
		<description><![CDATA[Migrating contents from one Sitecore to another is a common task. We move templates, layouts, content, media library items etc. from development to test and from test to production all the time. Usually we use the Sitecore Pagkage Designer to &#8230; <a href="http://briancaos.wordpress.com/2012/10/02/migrating-huge-amounts-of-sitecore-content-use-the-sitecore-serializer/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1085&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Migrating contents from one Sitecore to another is a common task. We move templates, layouts, content, media library items etc. from development to test and from test to production all the time.</p>
<p>Usually we use the <a href="http://www.youtube.com/watch?v=aBghfode8xA" target="_blank">Sitecore Pagkage Designer</a> to pack contents into a package that can be installed on another Sitecore. But sometimes that&#8217;s not the best solution.</p>
<p><strong>MIGRATING HUGE AMOUNTS OF DATA</strong></p>
<p>Yesterday I had to move 28.000 items + 16 GB of Media Library contents from development to test.</p>
<p>The packager will not support this amount of contents. <strong>A Sitecore package</strong> is basically a .zip file with serialized Sitecore items. Each item is a file inside the .zip file.</p>
<p>I tried to create a package containing my 28.000 items, but the size of the zip file grew bigger than 2 GB which caused the package to fail.</p>
<p><strong>HOW TO EASILY MIGRATE 16+GB OF DATA &#8211; THE INITIAL SETUP</strong></p>
<p>Instead of creating one (or several) packages of data I create one package containing the &#8220;basics&#8221; of the project to migrate, i.e.:</p>
<ul>
<li>New Templates (adding dynamically from /sitecore/templates)</li>
<li>New Layouts (adding dynamically from/sitecore/layouts)</li>
<li>New System settings (adding dynamically from /sitecore/system)</li>
<li>New &#8230;</li>
</ul>
<p>Furthermore i add the <strong>ROOT</strong> node of the contents to migrate:</p>
<ul>
<li>The root node of the Media Library folder I used to create my media library items</li>
<li>The root node of the contents to move</li>
</ul>
<div id="attachment_1086" class="wp-caption aligncenter" style="width: 409px"><a href="http://briancaos.files.wordpress.com/2012/10/contenttree.jpg"><img class="size-full wp-image-1086" title="Adding root nodes only" src="http://briancaos.files.wordpress.com/2012/10/contenttree.jpg?w=640" alt="Adding root nodes only"   /></a><p class="wp-caption-text">Adding root nodes only</p></div>
<p>The package is now substantially smaller, about 1 Mb  which is a great size for a package. It installs fast and is easy to move around.</p>
<p>This package is installed on the destination Sitecore.</p>
<p><strong>MOVING THE 16+GB DATA</strong></p>
<p>Now I am ready to migrate the actual contents. As said before, 16 GB of data is not easily movable. Unless you use &#8230; the <strong>Sitecore tree serializer</strong>!</p>
<p>The Sitecore serializer can be found on the &#8220;Developer&#8221; tab. Right click the tabs and select the Developer tab:</p>
<div id="attachment_1087" class="wp-caption aligncenter" style="width: 348px"><a href="http://briancaos.files.wordpress.com/2012/10/developertab.jpg"><img class="size-full wp-image-1087" title="Developer Tab" src="http://briancaos.files.wordpress.com/2012/10/developertab.jpg?w=640" alt="Developer Tab"   /></a><p class="wp-caption-text">Right click to select the Developer Tab</p></div>
<p>Select the item to serialize and click the &#8220;Serialize Tree&#8221; button:</p>
<div id="attachment_1088" class="wp-caption aligncenter" style="width: 650px"><a href="http://briancaos.files.wordpress.com/2012/10/serializetree.jpg"><img class="size-full wp-image-1088" title="Serialize Tree" src="http://briancaos.files.wordpress.com/2012/10/serializetree.jpg?w=640&#038;h=219" alt="" width="640" height="219" /></a><p class="wp-caption-text">Serialize Tree</p></div>
<p>Now Sitecore is serializing the item + all sub items into separate files on your hard drive  usually in the <strong>/app_data/serialization</strong> folder:</p>
<p><a href="http://briancaos.files.wordpress.com/2012/10/serializeddata.jpg"><img class="size-full wp-image-1089" title="Serialized Data" src="http://briancaos.files.wordpress.com/2012/10/serializeddata.jpg?w=640&#038;h=166" alt="Serialized Data" width="640" height="166" /></a></p>
<dl class="wp-caption aligncenter">
<dd class="wp-caption-dd">Serialized Data</dd>
</dl>
<p>It will take some time. (It took me 3 hours to generate 16 GB media library items in 12.000 individual files.)</p>
<p>When it&#8217;s finished, copy the files to your destination Sitecore machine, and reverse the process by selecting the root node you included in your package and clicking &#8220;Revert Tree&#8221;:</p>
<div id="attachment_1090" class="wp-caption aligncenter" style="width: 548px"><a href="http://briancaos.files.wordpress.com/2012/10/reverttree.jpg"><img class="size-full wp-image-1090" title="Revert Tree" src="http://briancaos.files.wordpress.com/2012/10/reverttree.jpg?w=640" alt="Revert Tree"   /></a><p class="wp-caption-text">Revert Tree</p></div>
<p>It will take a LOT of time if you have 16+gb of data. But don&#8217;t worry, Sitecore is creating a <a href="http://briancaos.wordpress.com/2012/02/06/using-sitecore-jobs/" target="_blank">Sitecore Job</a> to de-serialize the data. So you can close the browser while the process is running.</p>
<p>When the job is done you can remove the serialized files from the source and destination machines.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briancaos.wordpress.com/1085/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briancaos.wordpress.com/1085/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=briancaos.wordpress.com&#038;blog=4258391&#038;post=1085&#038;subd=briancaos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://briancaos.wordpress.com/2012/10/02/migrating-huge-amounts-of-sitecore-content-use-the-sitecore-serializer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25db0dbe9728e65c205cb902b4aa9741?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">briancaos</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2012/10/contenttree.jpg" medium="image">
			<media:title type="html">Adding root nodes only</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2012/10/developertab.jpg" medium="image">
			<media:title type="html">Developer Tab</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2012/10/serializetree.jpg" medium="image">
			<media:title type="html">Serialize Tree</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2012/10/serializeddata.jpg" medium="image">
			<media:title type="html">Serialized Data</media:title>
		</media:content>

		<media:content url="http://briancaos.files.wordpress.com/2012/10/reverttree.jpg" medium="image">
			<media:title type="html">Revert Tree</media:title>
		</media:content>
	</item>
	</channel>
</rss>
