<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkMBRXk5eSp7ImA9WhVXFUs.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786</id><updated>2012-04-16T10:20:54.721+02:00</updated><category term="Code" /><category term="Customize Content Editor" /><category term="Other" /><category term="Lucene" /><category term="Shared Source" /><category term="TDS" /><category term="Localization" /><category term="Controls" /><category term="Error messages" /><category term="Admin and Security" /><category term="Modules" /><category term="Webedit" /><category term="dtSearch" /><category term="Configuration" /><title>Sitecore Blog</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://sitecoreblog.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SitecoreBlog" /><feedburner:info uri="sitecoreblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkMBRXk4eSp7ImA9WhVXFUs.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-4205685071051249202</id><published>2012-04-16T10:20:00.002+02:00</published><updated>2012-04-16T10:20:54.731+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-16T10:20:54.731+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Customize Content Editor" /><title>How to create a custom Multilist field not related to the items</title><content type="html">Sometimes you need to create any fields who list and store some values but you don’t have any sitecore items related to those values. For example, in one of our projects we have a list of categories who come from a webservice.&lt;br /&gt;
&lt;br /&gt;
To do that easily, I have created a base class that you can download &lt;a href="https://docs.google.com/open?id=0BxspBwpcyZCRbkdQZnc2QTNENzA"&gt;here&lt;/a&gt;&lt;br /&gt;
(the code of this file is also at the bottom of this post)&lt;br /&gt;
&lt;br /&gt;
After that you need to impelemnt your field by creating a new class who will inherit from my base class. Here is the skeleton of this class.
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class Test : MultilistExBase
{
 protected override void InitRendering()
 {
  //You can Initialise some variables here.
 }

 protected override IEnumerable&amp;lt;KeyValuePair&amp;lt;string, string&amp;gt;&amp;gt; GetNonSelectedItems()
 {
  //Return here your unselected items. First value is the ID you will store into your field, the second one is the display text.
 }

 protected override IEnumerable&amp;lt;KeyValuePair&amp;lt;string, string&amp;gt;&amp;gt; GetSelectedItems()
 {
  //Return here your selected items. First value is the ID you will store into your field, the second one is the display text.
 }
}&lt;/pre&gt;
You need to implement only  3 methods :
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;InitRendering: Allow you to initialize your variables, webservice, ...&lt;/li&gt;
&lt;li&gt;GetNonSelectedItems: You need to return the list of unselected items&lt;/li&gt;
&lt;li&gt;GetSelectedItems: You need to return the list of selected items&lt;/li&gt;
&lt;/ul&gt;
As you can see the items are only a KeyValuePair&lt;string, string=""&gt; where the key is the id stored into the sitecore field and the value is the display text. With this method you can really have the control of what is stored and display into the field.&lt;/string,&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;To create your customfield into sitecore you need:
- Register your namespace in the &lt;controlsources&gt; tag of your .config file
&lt;/controlsources&gt;&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;controlSources&amp;gt;
      &amp;lt;source mode="on" namespace="MyNamespace" assembly="MyAssembly" prefix="myControls"/&amp;gt;
&amp;lt;/controlSources&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Create a new item based on the /sitecore/templates/System/Templates/Template field type in the core database below /sitecore/system/Field types/List Types&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-hedBgmeDOH8/T4vPYiFjgzI/AAAAAAAAAGE/UKARPf70j3Y/s1600/2012-04-16_0859.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="416" src="http://2.bp.blogspot.com/-hedBgmeDOH8/T4vPYiFjgzI/AAAAAAAAAGE/UKARPf70j3Y/s640/2012-04-16_0859.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-2z3dd6f-EEk/T4vPBgPc6rI/AAAAAAAAAF0/5e1jbfW2w9s/s1600/2012-04-16_0907.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
After that you will have a field like:&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-2z3dd6f-EEk/T4vPBgPc6rI/AAAAAAAAAF0/5e1jbfW2w9s/s1600/2012-04-16_0907.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://1.bp.blogspot.com/-2z3dd6f-EEk/T4vPBgPc6rI/AAAAAAAAAF0/5e1jbfW2w9s/s640/2012-04-16_0907.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-UIoXZfUVV8M/T4vPLKRBpWI/AAAAAAAAAF8/SSYyY_CxuXc/s1600/2012-04-16_0908.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
But you can see that you can handle the raw value as I want: &lt;a href="http://1.bp.blogspot.com/-UIoXZfUVV8M/T4vPLKRBpWI/AAAAAAAAAF8/SSYyY_CxuXc/s1600/2012-04-16_0908.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="40" src="http://1.bp.blogspot.com/-UIoXZfUVV8M/T4vPLKRBpWI/AAAAAAAAAF8/SSYyY_CxuXc/s640/2012-04-16_0908.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;
If you want to be complete, you can also create the field who will be used into your code to retrieve the content of your field (as you use the fields from Sitecore.Data.Fields). The most important method here it the GetAvailableFields() method where you need to return the list of objects corresponding to the raw value.
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class TestField : DelimitedField
{
 // Methods
 public TestField(Field innerField)
  : base(innerField, '|')
 {
 }

 public List&amp;lt;MyObject&amp;gt; GetAvailableFields()
 {
  //Return the list of object corresponding to the raw value
  List&amp;lt;MyObject&amp;gt; lst = new List&amp;lt;MyObject&amp;gt;(); 
  foreach (var item in this.Items)
  {
   lst.Add(new MyObject(item));
  }
  return lst;
 }

 public static implicit operator TestField(Field field)
 {
  if (field != null)
  {
   return new TestField(field);
  }
  return null;
 }
}&lt;/pre&gt;
&lt;br/&gt;
&lt;br/&gt;

Here is the source code of my base class:
&lt;pre class="csharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sitecore.Shell.Applications.ContentEditor;
using Sitecore.Diagnostics;
using Sitecore.Data.Items;
using System.Collections;
using Sitecore;
using Sitecore.Globalization;
using Sitecore.Resources;
using System.Web.UI;
using Sitecore.Text;
using Sitecore.Data;

namespace BaseFields
{
    public abstract class MultilistExBase : Sitecore.Shell.Applications.ContentEditor.MultilistEx
    {
        /// &amp;lt;summary&amp;gt;
        /// Return here your unselected items. First value is the ID you will store into your field, the second one is the display text.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;returns&amp;gt;The unselected items&amp;lt;/returns&amp;gt;
        protected abstract IEnumerable&amp;lt;KeyValuePair&amp;lt;string, string&amp;gt;&amp;gt; GetNonSelectedItems();
        /// &amp;lt;summary&amp;gt;
        /// Return here your selected items. First value is the ID you will store into your field, the second one is the display text.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;returns&amp;gt;The selected items&amp;lt;/returns&amp;gt;
        protected abstract IEnumerable&amp;lt;KeyValuePair&amp;lt;string, string&amp;gt;&amp;gt; GetSelectedItems();

        /// &amp;lt;summary&amp;gt;
        /// By overideing this method, you can initialise some variables here.
        /// &amp;lt;/summary&amp;gt;
        protected virtual void InitRendering()
        {
        }

        protected override void DoRender(System.Web.UI.HtmlTextWriter output)
        {
            Assert.ArgumentNotNull(output, &amp;quot;output&amp;quot;);

            base.ServerProperties[&amp;quot;ID&amp;quot;] = this.ID;

            InitRendering();

            string text = string.Empty;
            if (this.ReadOnly)
            {
                text = &amp;quot; disabled=\&amp;quot;disabled\&amp;quot;&amp;quot;;
            }
            output.Write(string.Concat(new string[]
                   {
                    &amp;quot;&amp;lt;input id=\&amp;quot;&amp;quot;, 
                    this.ID, 
                    &amp;quot;_Value\&amp;quot; type=\&amp;quot;hidden\&amp;quot; value=\&amp;quot;&amp;quot;, 
                    StringUtil.EscapeQuote(this.Value), 
                    &amp;quot;\&amp;quot; /&amp;gt;&amp;quot;
                   }));
            output.Write(&amp;quot;&amp;lt;table&amp;quot; + this.GetControlAttributes() + &amp;quot;&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td class=\&amp;quot;scContentControlMultilistCaption\&amp;quot; width=\&amp;quot;50%\&amp;quot;&amp;gt;&amp;quot; + Translate.Text(&amp;quot;All&amp;quot;) + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td width=\&amp;quot;20\&amp;quot;&amp;gt;&amp;quot; + Images.GetSpacer(20, 1) + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td class=\&amp;quot;scContentControlMultilistCaption\&amp;quot; width=\&amp;quot;50%\&amp;quot;&amp;gt;&amp;quot; + Translate.Text(&amp;quot;Selected&amp;quot;) + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td width=\&amp;quot;20\&amp;quot;&amp;gt;&amp;quot; + Images.GetSpacer(20, 1) + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td valign=\&amp;quot;top\&amp;quot; height=\&amp;quot;100%\&amp;quot;&amp;gt;&amp;quot;);
            output.Write(string.Concat(new string[]
                   {
                    &amp;quot;&amp;lt;select id=\&amp;quot;&amp;quot;, 
                    this.ID, 
                    &amp;quot;_unselected\&amp;quot; class=\&amp;quot;scContentControlMultilistBox\&amp;quot; multiple=\&amp;quot;multiple\&amp;quot; size=\&amp;quot;10\&amp;quot;&amp;quot;, 
                    text, 
                    &amp;quot; ondblclick=\&amp;quot;javascript:scContent.multilistMoveRight('&amp;quot;, 
                    this.ID, 
                    &amp;quot;')\&amp;quot; onchange=\&amp;quot;javascript:document.getElementById('&amp;quot;, 
                    this.ID, 
                    &amp;quot;_all_help').innerHTML=this.selectedIndex&amp;gt;=0?this.options[this.selectedIndex].innerHTML:''\&amp;quot; &amp;gt;&amp;quot;
                   }));

            //Bind the selected values?
            foreach (KeyValuePair&amp;lt;string, string&amp;gt; field in GetNonSelectedItems())
            {
                //Item item2 = dictionaryEntry.Value as Item;
                //if (item2 != null)
                //{
                output.Write(string.Concat(new string[]
    {
     &amp;quot;&amp;lt;option value=\&amp;quot;&amp;quot;, 
     field.Key, 
     &amp;quot;\&amp;quot;&amp;gt;&amp;quot;, 
     field.Value, 
     &amp;quot;&amp;lt;/option&amp;gt;&amp;quot;
    }));
                //}
            }

            output.Write(&amp;quot;&amp;lt;/select&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td valign=\&amp;quot;top\&amp;quot;&amp;gt;&amp;quot;);
            this.RenderButton(output, &amp;quot;Core/16x16/arrow_blue_right.png&amp;quot;, &amp;quot;javascript:scContent.multilistMoveRight('&amp;quot; + this.ID + &amp;quot;')&amp;quot;);
            output.Write(&amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);
            this.RenderButton(output, &amp;quot;Core/16x16/arrow_blue_left.png&amp;quot;, &amp;quot;javascript:scContent.multilistMoveLeft('&amp;quot; + this.ID + &amp;quot;')&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td valign=\&amp;quot;top\&amp;quot; height=\&amp;quot;100%\&amp;quot;&amp;gt;&amp;quot;);
            output.Write(string.Concat(new string[]
               {
                &amp;quot;&amp;lt;select id=\&amp;quot;&amp;quot;, 
                this.ID, 
                &amp;quot;_selected\&amp;quot; class=\&amp;quot;scContentControlMultilistBox\&amp;quot; multiple=\&amp;quot;multiple\&amp;quot; size=\&amp;quot;10\&amp;quot;&amp;quot;, 
                text, 
                &amp;quot; ondblclick=\&amp;quot;javascript:scContent.multilistMoveLeft('&amp;quot;, 
                this.ID, 
                &amp;quot;')\&amp;quot; onchange=\&amp;quot;javascript:document.getElementById('&amp;quot;, 
                this.ID, 
                &amp;quot;_selected_help').innerHTML=this.selectedIndex&amp;gt;=0?this.options[this.selectedIndex].innerHTML:''\&amp;quot;&amp;gt;&amp;quot;
               }));

            //Bind the available items list
            foreach (KeyValuePair&amp;lt;string, string&amp;gt; field in GetSelectedItems())
            {
                output.Write(string.Concat(new string[]
    {
                    &amp;quot;&amp;lt;option value=\&amp;quot;&amp;quot;, 
     field.Key, 
     &amp;quot;\&amp;quot;&amp;gt;&amp;quot;, 
     field.Value, 
     &amp;quot;&amp;lt;/option&amp;gt;&amp;quot;
    }));

            }
            output.Write(&amp;quot;&amp;lt;/select&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td valign=\&amp;quot;top\&amp;quot;&amp;gt;&amp;quot;);
            this.RenderButton(output, &amp;quot;Core/16x16/arrow_blue_up.png&amp;quot;, &amp;quot;javascript:scContent.multilistMoveUp('&amp;quot; + this.ID + &amp;quot;')&amp;quot;);
            output.Write(&amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);
            this.RenderButton(output, &amp;quot;Core/16x16/arrow_blue_down.png&amp;quot;, &amp;quot;javascript:scContent.multilistMoveDown('&amp;quot; + this.ID + &amp;quot;')&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td valign=\&amp;quot;top\&amp;quot;&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;div style=\&amp;quot;border:1px solid #999999;font:8pt tahoma;padding:2px;margin:4px 0px 4px 0px;height:14px\&amp;quot; id=\&amp;quot;&amp;quot; + this.ID + &amp;quot;_all_help\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td valign=\&amp;quot;top\&amp;quot;&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;div style=\&amp;quot;border:1px solid #999999;font:8pt tahoma;padding:2px;margin:4px 0px 4px 0px;height:14px\&amp;quot; id=\&amp;quot;&amp;quot; + this.ID + &amp;quot;_selected_help\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);
            output.Write(&amp;quot;&amp;lt;/table&amp;gt;&amp;quot;);
            
        }        

        private void RenderButton(HtmlTextWriter output, string icon, string click)
        {
            Assert.ArgumentNotNull(output, &amp;quot;output&amp;quot;);
            Assert.ArgumentNotNull(icon, &amp;quot;icon&amp;quot;);
            Assert.ArgumentNotNull(click, &amp;quot;click&amp;quot;);
            ImageBuilder imageBuilder = new ImageBuilder();
            imageBuilder.Src = icon;
            imageBuilder.Width = 16;
            imageBuilder.Height = 16;
            imageBuilder.Margin = &amp;quot;2px&amp;quot;;
            if (!this.ReadOnly)
            {
                imageBuilder.OnClick = click;
            }
            output.Write(imageBuilder.ToString());
        }
    }
}quot;_selected_help').innerHTML=this.selectedIndex&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-4205685071051249202?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZZWm8TSdRjflZNmpsQoH_yvDd3c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZZWm8TSdRjflZNmpsQoH_yvDd3c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZZWm8TSdRjflZNmpsQoH_yvDd3c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZZWm8TSdRjflZNmpsQoH_yvDd3c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/jz7u5bSK7yM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/4205685071051249202/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2012/04/how-to-create-custom-multilist-field.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/4205685071051249202?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/4205685071051249202?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/jz7u5bSK7yM/how-to-create-custom-multilist-field.html" title="How to create a custom Multilist field not related to the items" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-hedBgmeDOH8/T4vPYiFjgzI/AAAAAAAAAGE/UKARPf70j3Y/s72-c/2012-04-16_0859.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2012/04/how-to-create-custom-multilist-field.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08AQXo7cCp7ImA9WhVSF00.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-4939878070879646507</id><published>2012-03-14T08:24:00.000+01:00</published><updated>2012-03-14T08:24:00.408+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-14T08:24:00.408+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuration" /><title>Add a custom section in the config</title><content type="html">Here is the method if you need to a custom section into you config file.&lt;br /&gt;
&lt;br /&gt;Here is my example of config that I need to include into my \App_Config\Include folder:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;configuration xmlns:patch=&amp;quot;http://www.sitecore.net/xmlconfig/&amp;quot;&amp;gt;
  &amp;lt;sitecore&amp;gt;
 &amp;lt;MyCustomSection&amp;gt;
  &amp;lt;MyCustomElement Name=&amp;quot;XXX&amp;quot; MyProperty=&amp;quot;YYY&amp;quot; /&amp;gt;
  &amp;lt;MyCustomElement Name=&amp;quot;AAA&amp;quot; MyProperty=&amp;quot;BBB&amp;quot; /&amp;gt;
 &amp;lt;/MyCustomSection&amp;gt;
  &amp;lt;/sitecore&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;
&lt;br /&gt;And here is a way to read it:&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System.Collections.Generic;
using Sitecore.Configuration;
using System.Xml;
using Sitecore.Xml;

/// &amp;lt;summary&amp;gt;
/// TODO: Update summary.
/// &amp;lt;/summary&amp;gt;
public class MyConfigElement
{
 //The two properties corresponding to the properties into the config
 public string Name { get; set; }
 public string MyProperty { get; set; }

 //The method who return the list of my custom elements
 public static List&amp;lt;MyConfigElement&amp;gt; GetListMyCustomElements()
 {
  List&amp;lt;MyConfigElement&amp;gt; lst = new List&amp;lt;MyConfigElement&amp;gt;();
  
  //Read the configuration nodes
  foreach (XmlNode node in Factory.GetConfigNodes(&amp;quot;MyCustomSection/MyCustomElement&amp;quot;))
  {
   //Create a element of this type
   MyConfigElement elem = new MyConfigElement();
   elem.Name = XmlUtil.GetAttribute(&amp;quot;Name&amp;quot;, node);
   elem.MyProperty = XmlUtil.GetAttribute(&amp;quot;MyProperty&amp;quot;, node);
   lst.Add(elem);
  }
  return lst;
 }
}&lt;/pre&gt;
&lt;br /&gt;Don’t forget to use a property “Name” to avoid the conflicts in the include folder (see this post: &lt;a href="http://sitecoreblog.blogspot.com/2012/02/config-patching-system-for-external.html"&gt;http://sitecoreblog.blogspot.com/2012/02/config-patching-system-for-external.html&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-4939878070879646507?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0XmX_KduyixC7v262iL42KEoJek/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0XmX_KduyixC7v262iL42KEoJek/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0XmX_KduyixC7v262iL42KEoJek/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0XmX_KduyixC7v262iL42KEoJek/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/8YkPas5Eb-Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/4939878070879646507/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2012/03/add-custom-section-in-config.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/4939878070879646507?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/4939878070879646507?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/8YkPas5Eb-Q/add-custom-section-in-config.html" title="Add a custom section in the config" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2012/03/add-custom-section-in-config.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUFRno7cSp7ImA9WhVTFkU.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-7377540783496081054</id><published>2012-03-02T12:03:00.001+01:00</published><updated>2012-03-02T12:03:37.409+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-02T12:03:37.409+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuration" /><title>Include the sc namespace</title><content type="html">When you have multiple projects in a single solution you will maybe have this error message when you try to use some sitecore controls like the sc:Text:
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-xCqajA142qo/T1CmnbWcJdI/AAAAAAAAAFk/SfE22wvx6U0/s1600/2012-03-02_1143.png" imageanchor="1"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-xCqajA142qo/T1CmnbWcJdI/AAAAAAAAAFk/SfE22wvx6U0/s1600/2012-03-02_1143.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
You have to simple solutions to fix this problem:
&lt;br /&gt;
&lt;br /&gt;
You may add this line on the top of each files:
&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;%@ Register Assembly="Sitecore.Kernel" Namespace="Sitecore.Web.UI.WebControls" TagPrefix="sc" %&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Or you may add a web.config into your project with the minimal information to include this namespace. &lt;br /&gt;
But don’t deploy this web.config in your solution because it will override the correct sitecore web.config&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;?xml version="1.0"?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;pages validateRequest="false"&amp;gt;
      &amp;lt;controls&amp;gt;
        &amp;lt;add tagPrefix="sc" namespace="Sitecore.Web.UI.WebControls" assembly="Sitecore.Kernel" /&amp;gt;
        &amp;lt;add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&amp;gt;
        &amp;lt;add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&amp;gt;
        &amp;lt;add tagPrefix="sc" namespace="Sitecore.Web.UI.WebControls" assembly="Sitecore.Analytics" /&amp;gt;
      &amp;lt;/controls&amp;gt;
    &amp;lt;/pages&amp;gt;
  &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-7377540783496081054?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4k2Pv_W4pviwIGnr2KLujD3T4Oo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4k2Pv_W4pviwIGnr2KLujD3T4Oo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4k2Pv_W4pviwIGnr2KLujD3T4Oo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4k2Pv_W4pviwIGnr2KLujD3T4Oo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/zzTMkziLQLg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/7377540783496081054/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2012/03/include-sc-namespace.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7377540783496081054?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7377540783496081054?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/zzTMkziLQLg/include-sc-namespace.html" title="Include the sc namespace" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-xCqajA142qo/T1CmnbWcJdI/AAAAAAAAAFk/SfE22wvx6U0/s72-c/2012-03-02_1143.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2012/03/include-sc-namespace.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4CRX8-cSp7ImA9WhRaFEs.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-4910552471619604879</id><published>2012-02-17T08:32:00.000+01:00</published><updated>2012-02-17T08:32:44.159+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-17T08:32:44.159+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TDS" /><title>Team development for sitecore (TDS) - Double build required</title><content type="html">With Team development for sitecore (TDS) some developers of my company complain that they need to build the solution twice to have they change in the deploy folder.&lt;br /&gt;
&lt;br /&gt;
After some investigations, I have found that sometime TDS doesn't create the dependencies correctly. And, with those dependencies not correctly set the TDS project is build &lt;b&gt;before&lt;/b&gt; the project to deploy. &lt;br /&gt;
&lt;br /&gt;
The bug fix is pretty easy:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;div&gt;Right click on your solution and then on "&lt;i&gt;properties&lt;/i&gt;"&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div&gt;Click on the "&lt;i&gt;Project Dependencies&lt;/i&gt;"&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-885Erte0pIc/Tz4BHwGRKvI/AAAAAAAAAE8/4KvDALtmaB4/s1600/2012-02-17_0817.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="385" src="http://2.bp.blogspot.com/-885Erte0pIc/Tz4BHwGRKvI/AAAAAAAAAE8/4KvDALtmaB4/s400/2012-02-17_0817.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div&gt;In the "&lt;i&gt;project&lt;/i&gt;" dropdown select your project to deploy and uncheck the corresponding TDS project&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5Cnc63K6Fls/Tz4BN7Ku8iI/AAAAAAAAAFE/ZHW8fkQziI8/s1600/2012-02-17_0820.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="466" src="http://4.bp.blogspot.com/-5Cnc63K6Fls/Tz4BN7Ku8iI/AAAAAAAAAFE/ZHW8fkQziI8/s640/2012-02-17_0820.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; In the "&lt;i&gt;project&lt;/i&gt;" dropdown select your TDS project to deploy and check the corresponding project to deploy&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dA_IHDwyIBo/Tz4BdclMITI/AAAAAAAAAFU/sD5E7NHiJt0/s1600/2012-02-17_0820_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="465" src="http://4.bp.blogspot.com/-dA_IHDwyIBo/Tz4BdclMITI/AAAAAAAAAFU/sD5E7NHiJt0/s640/2012-02-17_0820_001.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-4910552471619604879?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JW0wLqZj8eLj5XqApJOIys7wxNc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JW0wLqZj8eLj5XqApJOIys7wxNc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JW0wLqZj8eLj5XqApJOIys7wxNc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JW0wLqZj8eLj5XqApJOIys7wxNc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/lhK0CBdVCII" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/4910552471619604879/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2012/02/team-development-for-sitecore-tds.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/4910552471619604879?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/4910552471619604879?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/lhK0CBdVCII/team-development-for-sitecore-tds.html" title="Team development for sitecore (TDS) - Double build required" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-885Erte0pIc/Tz4BHwGRKvI/AAAAAAAAAE8/4KvDALtmaB4/s72-c/2012-02-17_0817.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2012/02/team-development-for-sitecore-tds.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcDQ3c_eyp7ImA9WhRaEkQ.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-597996645617790338</id><published>2012-02-15T08:47:00.000+01:00</published><updated>2012-02-15T08:47:52.943+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T08:47:52.943+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuration" /><title>Config patching system for the external config files</title><content type="html">This very good post &lt;a href="http://www.thescrewballdivision.com/playing-with-sitecore-include-files"&gt;http://www.thescrewballdivision.com/playing-with-sitecore-include-files&lt;/a&gt; explain the available commands for the patching very well so I will not copy it but I will add an important information.&lt;br /&gt;
&lt;br /&gt;
When you need to add some informations in a tag the key used for the merge is the property name.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Example&lt;/u&gt;:&lt;br /&gt;
&lt;br /&gt;
By default in the web.config you have this:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;event name=&amp;quot;publish:end&amp;quot;&amp;gt;
 &amp;lt;handler type=&amp;quot;Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel&amp;quot; method=&amp;quot;ClearCache&amp;quot;&amp;gt;
   &amp;lt;sites hint=&amp;quot;list&amp;quot;&amp;gt;    
      &amp;lt;site&amp;gt;website&amp;lt;/site&amp;gt;
   &amp;lt;/sites&amp;gt;
 &amp;lt;/handler&amp;gt;
&amp;lt;/event&amp;gt; 
&lt;/pre&gt;&lt;br /&gt;
And if you add this in a separated config file:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;event name=&amp;quot;publish:end&amp;quot;&amp;gt;
 &amp;lt;handler type=&amp;quot;Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel&amp;quot; method=&amp;quot;ClearCache&amp;quot;&amp;gt;
   &amp;lt;sites hint=&amp;quot;list&amp;quot;&amp;gt;    
     &amp;lt;site&amp;gt;mysite&amp;lt;/site&amp;gt;
   &amp;lt;/sites&amp;gt;
 &amp;lt;/handler&amp;gt;
&amp;lt;/event&amp;gt; 
&lt;/pre&gt;&lt;br /&gt;
The merged web.config will be:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;event name=&amp;quot;publish:end&amp;quot;&amp;gt;
 &amp;lt;handler type=&amp;quot;Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel&amp;quot; method=&amp;quot;ClearCache&amp;quot;&amp;gt;
   &amp;lt;sites hint=&amp;quot;list&amp;quot;&amp;gt;    
      &amp;lt;site&amp;gt;mysite&amp;lt;/site&amp;gt;
   &amp;lt;/sites&amp;gt;
 &amp;lt;/handler&amp;gt;
&amp;lt;/event&amp;gt; 
&lt;/pre&gt;&lt;br /&gt;
To avoid this and combine the two tags without removing the existing one you only have to add a name property in the site tag:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;event name=&amp;quot;publish:end&amp;quot;&amp;gt;
 &amp;lt;handler type=&amp;quot;Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel&amp;quot; method=&amp;quot;ClearCache&amp;quot;&amp;gt;
   &amp;lt;sites hint=&amp;quot;list&amp;quot;&amp;gt;    
      &amp;lt;site name=&amp;quot;mysite&amp;quot;&amp;gt;mysite&amp;lt;/site&amp;gt;
   &amp;lt;/sites&amp;gt;
 &amp;lt;/handler&amp;gt;
&amp;lt;/event&amp;gt; &lt;/pre&gt;&lt;br /&gt;
Like this you will have the expected result:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;event name=&amp;quot;publish:end&amp;quot;&amp;gt;
 &amp;lt;handler type=&amp;quot;Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel&amp;quot; method=&amp;quot;ClearCache&amp;quot;&amp;gt;
   &amp;lt;sites hint=&amp;quot;list&amp;quot;&amp;gt;  
      &amp;lt;site&amp;gt;website&amp;lt;/site&amp;gt;
      &amp;lt;site name=&amp;quot;mysite&amp;quot;&amp;gt;mysite&amp;lt;/site&amp;gt;
   &amp;lt;/sites&amp;gt;
 &amp;lt;/handler&amp;gt;
&amp;lt;/event&amp;gt; &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-597996645617790338?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/94PGVahopO424gQ3HK6CwooC0GA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/94PGVahopO424gQ3HK6CwooC0GA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/94PGVahopO424gQ3HK6CwooC0GA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/94PGVahopO424gQ3HK6CwooC0GA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/4ukr6bkhE9o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/597996645617790338/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2012/02/config-patching-system-for-external.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/597996645617790338?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/597996645617790338?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/4ukr6bkhE9o/config-patching-system-for-external.html" title="Config patching system for the external config files" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2012/02/config-patching-system-for-external.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIMRH8-cSp7ImA9WhRbF0o.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-3938247374034955009</id><published>2012-02-09T08:29:00.000+01:00</published><updated>2012-02-09T08:29:45.159+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-09T08:29:45.159+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Error messages" /><title>Error message - The operation could not be completed</title><content type="html">I post here an error message I had yesterday on the sitecore of one of our customer because I don't have found this answer on the sdn site of in the forums.&lt;br /&gt;
&lt;br /&gt;
We had randomly some error messages: &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-X_4vVycODI0/TzNyL1Zb6yI/AAAAAAAAAEQ/RBDe_QsUGyM/s1600/2012-02-09_0807.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="189" src="http://4.bp.blogspot.com/-X_4vVycODI0/TzNyL1Zb6yI/AAAAAAAAAEQ/RBDe_QsUGyM/s320/2012-02-09_0807.png" width="277" /&gt;&lt;/a&gt;&lt;/div&gt;"The operation could not be completed.&lt;br /&gt;
&lt;br /&gt;
Your session may have been lost due to a time-out or a server failure.&lt;br /&gt;
&lt;br /&gt;
Try again."&lt;br /&gt;
&lt;div class="clear"&gt;&lt;/div&gt;After investigation, I don't have found any error messages in the logs or in the windows event viewer. But, we had multiple log files with the same datetime.&lt;br /&gt;
&lt;br /&gt;
In fact the resolution was pretty simple the number of worker process of the application pool was set to 5 but it must be set to 1.&lt;br /&gt;
&lt;br /&gt;
To change it:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;In iis select your application pool and click on the "Advanced settings" button&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ic6bCBzzaDw/TzN0XgqmzXI/AAAAAAAAAEc/o3CN5TYu8hw/s1600/2012-02-09_0818.png" imageanchor="1"&gt;&lt;img border="0" height="331" src="http://2.bp.blogspot.com/-Ic6bCBzzaDw/TzN0XgqmzXI/AAAAAAAAAEc/o3CN5TYu8hw/s640/2012-02-09_0818.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;In the "Process Model" section, set the "Maximum Worker Process" to 1.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JUdIhlAygJw/TzN0i3mP_RI/AAAAAAAAAEs/Oj-zIxehxPs/s1600/2012-02-09_0820.png" imageanchor="1"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-JUdIhlAygJw/TzN0i3mP_RI/AAAAAAAAAEs/Oj-zIxehxPs/s320/2012-02-09_0820.png" width="262" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-3938247374034955009?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mUbPgb-bWxK_SUULRyCIAJyey4c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mUbPgb-bWxK_SUULRyCIAJyey4c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mUbPgb-bWxK_SUULRyCIAJyey4c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mUbPgb-bWxK_SUULRyCIAJyey4c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/rXHx46lRTcc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/3938247374034955009/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2012/02/error-message-operation-could-not-be.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/3938247374034955009?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/3938247374034955009?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/rXHx46lRTcc/error-message-operation-could-not-be.html" title="Error message - The operation could not be completed" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-X_4vVycODI0/TzNyL1Zb6yI/AAAAAAAAAEQ/RBDe_QsUGyM/s72-c/2012-02-09_0807.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2012/02/error-message-operation-could-not-be.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcBQng5eyp7ImA9WhRbFk8.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-1970893558229512545</id><published>2012-02-07T14:57:00.002+01:00</published><updated>2012-02-07T14:57:33.623+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-07T14:57:33.623+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuration" /><title>Share the config file : how to handle the path like the dataFolder</title><content type="html">&lt;p&gt;When we use SVN or TFS normally we commit some .config file an especially the web.config. The problem happened when all the computers doesn’t have the same path structure. For example I will not use the same data folder as my colleague.  &lt;/p&gt;&lt;p&gt;You have multiple solutions to handle including having different build configuration but I think that the easiest way to handle it is by simply using the virtual directories.&lt;/p&gt;To create a virtual directory:&lt;br /&gt;
&lt;ol&gt; &lt;li&gt;In IIS right click on your website and select “Add Virtual Directory”&lt;/li&gt;
 &lt;li&gt;The alias is the folder name (in your config file) and the physical path is the real folder&lt;/li&gt;
 &lt;li&gt;In the config, the datafolder will look like&lt;br /&gt;
  &lt;pre name="code" class="xml"&gt;  &amp;lt;sc.variable name=&amp;quot;dataFolder&amp;quot; value=&amp;quot;/Data&amp;quot; /&amp;gt;
  &lt;/pre&gt; &lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-1970893558229512545?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6HFdzU5yC-oJINxIyqlRGiPK8RI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6HFdzU5yC-oJINxIyqlRGiPK8RI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6HFdzU5yC-oJINxIyqlRGiPK8RI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6HFdzU5yC-oJINxIyqlRGiPK8RI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/sfD1tM8swVg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/1970893558229512545/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2012/02/share-config-file-how-to-handle-path.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/1970893558229512545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/1970893558229512545?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/sfD1tM8swVg/share-config-file-how-to-handle-path.html" title="Share the config file : how to handle the path like the dataFolder" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2012/02/share-config-file-how-to-handle-path.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8NR388cSp7ImA9WhRbFU4.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-7300821898220013715</id><published>2012-02-06T15:18:00.000+01:00</published><updated>2012-02-06T15:18:16.179+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-06T15:18:16.179+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Other" /><category scheme="http://www.blogger.com/atom/ns#" term="Configuration" /><title>Remote events how to investigate</title><content type="html">I had some issues with the sitecore remote events not triggered on the content delivery. I will explain how you can investigate why it could happened and how to fix it.&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
First of all, how sitecore handle the remote events when you use the scalability? &lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
When you publish an item in sitecore, sitecore will write a line in the EventQueue table of the corresponding database with all the necessary data including the InstanceName of the server who have triggered the event.&lt;br/&gt;&lt;br /&gt;
After that sitecore have an timer who check in this table if they are any event to trigger. First remark, sitecore look at the InstanceName field to know if this instance need to trigger this record or not so this instance need to be unique (be carefull with the copy paste) ;-).&lt;br/&gt;&lt;br /&gt;
&lt;br /&gt;
Here is what sitecore add in the web database in the EventQueue when you publish an item:&lt;br /&gt;
&lt;table style="border: solid 1px"&gt; &lt;tbody&gt;
 &lt;tr style="background-color: #444444"&gt;
  &lt;td width="100px"&gt;Id&lt;/td&gt;
  &lt;td&gt;82480059-8CF4-4D2E-82B1-9C00323F12F2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;EventType &lt;/td&gt;
  &lt;td&gt;Sitecore.Eventing.Remote.PublishEndRemoteEvent, Sitecore.Kernel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="background-color: #444444"&gt;
  &lt;td&gt;InstanceType &lt;/td&gt;
  &lt;td&gt;Sitecore.Eventing.Remote.PublishEndRemoteEvent, Sitecore.Kernel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;InstanceData &lt;/td&gt;
  &lt;td&gt;{"CompareRevisions":true,"Deep":false,"FromDate":"\/Date(-5339901827822+0200)\/","LanguageName":"en","Mode":3,"PublishDate":"\/Date(1328532964271+0100)\/","PublishingTargets":["{8E080626-DDC3-4EF4-A1D1-F0BE4A200254}","{8E080626-DDC3-4EF4-A1D1-F0BE4A200254}"],"RepublishAll":false,"RootItemId":"ebff6e2a-9149-4660-9d55-dec34282f856","SourceDatabaseName":"master","TargetDatabaseName":"web"}&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="background-color: #444444"&gt;
  &lt;td&gt;InstanceName &lt;/td&gt;
  &lt;td&gt;GRNQ6R1-sitecore650up3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;RaiseLocally&lt;/td&gt; 
  &lt;td&gt;0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="background-color: #444444"&gt;
  &lt;td&gt;RaiseGlobally&lt;/td&gt; 
  &lt;td&gt;1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;UserName&lt;/td&gt;
  &lt;td&gt;sitecore\admin&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr style="background-color: #444444"&gt;
  &lt;td&gt;Stamp&lt;/td&gt; 
  &lt;td&gt;0x0000000000079C0F&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;td&gt;Created&lt;/td&gt;
  &lt;td&gt;2012-02-06 12:56:07.033&lt;/td&gt;
 &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt;&lt;br/&gt;&lt;br /&gt;
The most important columns are :&lt;br /&gt;
&lt;ul&gt; &lt;li&gt;"InstanceName": it is the server who have triggered the event. (setting "InstanceName" from ScalabilitySettings.config)&lt;/li&gt;
 &lt;li&gt;"EventType": The type of event: item:saved:remote, publish:end:remote, ...&lt;/li&gt;
 &lt;li&gt;"InstanceData": The data required to perform this operation&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
This is the first method to see if your events are trigered. &lt;br /&gt;
&lt;br /&gt;
For the second method, you need to set in the web.config of each server the &amp;lt;events timingLevel=&amp;quot;high&amp;quot;&amp;gt; setting (this setting is set to custom by default).&lt;br /&gt;
With this modification you should have any line like this for each event handled by sitecore in your log on both content delivery and content management instances.&lt;br /&gt;
&lt;pre name="code" class="xml"&gt;Heartbeat 14:22:05 INFO  Event started: publish:statusUpdated
Heartbeat 14:22:05 INFO  Executed: Sitecore.Publishing.RemotePublishingEventHandler.OnStatusUpdated(). Elapsed: 4,23265309264199
Heartbeat 14:22:05 INFO  Event ended: publish:statusUpdated. Elapsed: 4,33442834380877
&lt;/pre&gt;&lt;br /&gt;
If even with all those informations your events are not triggered or triggered but not received in by the other server you can try to cleanup the temporary event tables.&lt;br /&gt;
On each database execute those scripts:&lt;br /&gt;
&lt;pre name="code" class="sql"&gt;DELETE FROM EventQueue;
DELETE FROM [Properties] WHERE  [Key] LIKE 'EQStamp%';
&lt;/pre&gt;&lt;br /&gt;
I don't know exactly what is the EQStamp% setting but it was the solution provided by the support and it has solved my problem :) If anybody know what is is exactly you can post a comment.&lt;br/&gt;&lt;br /&gt;
Be also careful to the exception in your events because if one event of the pipeline throw an exception the other one will be not executed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-7300821898220013715?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xOXl7GboUW-DDStsLuXAKw6lgC4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xOXl7GboUW-DDStsLuXAKw6lgC4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xOXl7GboUW-DDStsLuXAKw6lgC4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xOXl7GboUW-DDStsLuXAKw6lgC4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/Lleq-8KnVWM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/7300821898220013715/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2012/02/remote-events-how-to-investigate.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7300821898220013715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7300821898220013715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/Lleq-8KnVWM/remote-events-how-to-investigate.html" title="Remote events how to investigate" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2012/02/remote-events-how-to-investigate.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQNQHk7cCp7ImA9WhRSE0k.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-8156175221416075571</id><published>2011-11-15T09:06:00.000+01:00</published><updated>2011-11-15T09:06:31.708+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-15T09:06:31.708+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Admin and Security" /><title>Add a publish button in the contextual menu</title><content type="html">To add a publish button in the contextal menu as in the screenshot below it is very simple:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8dITRfYXyc4/TsIciPDevHI/AAAAAAAAADo/U11bj55ZwO8/s1600/2011-11-15_0859.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-8dITRfYXyc4/TsIciPDevHI/AAAAAAAAADo/U11bj55ZwO8/s1600/2011-11-15_0859.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;div&gt;Open the core database&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Go to the item /sitecore/content/Applications/Content Editor/Context Menues/Default and duplicate the item Insert for example&lt;/li&gt;
&lt;li&gt;Set the fields values to:&lt;/li&gt;
&lt;ol&gt;&lt;li&gt;Display Name: Publish Item&lt;/li&gt;
&lt;li&gt;Message: item:publish(id=$Target)&lt;/li&gt;
&lt;/ol&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PGX769WHPQI/TsIcxzDoHrI/AAAAAAAAADw/EZs-CsiN5Ms/s1600/2011-11-15_0901.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="522" src="http://3.bp.blogspot.com/-PGX769WHPQI/TsIcxzDoHrI/AAAAAAAAADw/EZs-CsiN5Ms/s640/2011-11-15_0901.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-8156175221416075571?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y4-jMSE9eLOPu03SqAc99ZR3Zqw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y4-jMSE9eLOPu03SqAc99ZR3Zqw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y4-jMSE9eLOPu03SqAc99ZR3Zqw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y4-jMSE9eLOPu03SqAc99ZR3Zqw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/kwIBy3Za5j8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/8156175221416075571/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/11/add-publish-button-in-contextual-menu.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/8156175221416075571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/8156175221416075571?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/kwIBy3Za5j8/add-publish-button-in-contextual-menu.html" title="Add a publish button in the contextual menu" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-8dITRfYXyc4/TsIciPDevHI/AAAAAAAAADo/U11bj55ZwO8/s72-c/2011-11-15_0859.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/11/add-publish-button-in-contextual-menu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkENSXY4eip7ImA9WhdbGUk.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-7636050912987803384</id><published>2011-10-18T16:38:00.000+02:00</published><updated>2011-10-18T16:38:18.832+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T16:38:18.832+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Retreive the content editor language and item version</title><content type="html">Here is a small tip to retreive the language and the version of the item selected in the sitecore content editor when you create a custom field for example.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;public class MyCustomField : CustomDropListField
{
 public string ItemLanguage { get; set; }
 public string ItemVersion { get; set; }  
} 
&lt;/pre&gt;&lt;br /&gt;
Thank you to Mister Tony Locatelli from LBi Belgium for this tip :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-7636050912987803384?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T1-SNP7DaM-fcKxlgm_SHbPjP04/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T1-SNP7DaM-fcKxlgm_SHbPjP04/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T1-SNP7DaM-fcKxlgm_SHbPjP04/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T1-SNP7DaM-fcKxlgm_SHbPjP04/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/xS-K4RoY8QI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/7636050912987803384/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/10/retreive-content-editor-language-and.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7636050912987803384?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7636050912987803384?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/xS-K4RoY8QI/retreive-content-editor-language-and.html" title="Retreive the content editor language and item version" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>3</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/10/retreive-content-editor-language-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUHRH8_eCp7ImA9WhdbFUo.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-792476711435504286</id><published>2011-10-13T09:03:00.003+02:00</published><updated>2011-10-14T08:20:35.140+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-14T08:20:35.140+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Crash IIS event 5011 and how to add your unhandled exceptions in the event viewer</title><content type="html">Recently I had a bug in one of my website because of a recursive infinite loop. The effect was some random restart of IIS but noting in the sitecore logs and not way to know why.&lt;br /&gt;
&lt;br /&gt;
In the windows event viewer I saw in the IIS section that the I had some IIS crashes with the event code 5011.&lt;br /&gt;
&lt;br /&gt;
After googling a little bit I found this website: &lt;a href="http://martinnormark.com/how-to-handle-iis-event-id-1009-event-id-5011-on-iis-7"&gt;http://martinnormark.com/how-to-handle-iis-event-id-1009-event-id-5011-on-iis-7&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
So, if you create a dll with this class&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;#region Using

using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Web;

#endregion

/// &amp;lt;summary&amp;gt;
/// Handles all unhandled exceptions from in the current AppDomain. 
/// 
/// Works great to catch unhandled exceptions thrown by IIS's child threads, /// which will make the application pool terminate unexpectedly 

/// without logging. This makes sure your Exception /// is logged to the Application event log.
/// &amp;lt;/summary&amp;gt;
public class UnhandledExceptionModule : IHttpModule
{
  #region Fields

  private static int _UnhandledExceptionCount = 0;
  private static string _SourceName = null;
  private static object _InitLock = new object();
  private static bool _Initialized = false;

  #endregion

  #region IHttpModule members

  public void Init(HttpApplication app)
  {

    // Do this one time for each AppDomain.
    if (!_Initialized)
    {
      lock (_InitLock)
      {
        if (!_Initialized)
        {
          string webenginePath = Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), &amp;quot;webengine.dll&amp;quot;);

          if (!File.Exists(webenginePath))
          {
            throw new Exception(String.Format(CultureInfo.InvariantCulture,                 &amp;quot;Failed to locate webengine.dll at '{0}'.  This module requires .NET Framework 2.0.&amp;quot;, webenginePath));
          }

          FileVersionInfo ver = FileVersionInfo.GetVersionInfo(webenginePath);
          _SourceName = string.Format(CultureInfo.InvariantCulture, &amp;quot;ASP.NET {0}.{1}.{2}.0&amp;quot;, ver.FileMajorPart,                 ver.FileMinorPart, ver.FileBuildPart);

          if (!EventLog.SourceExists(_SourceName))
          {
            throw new Exception(String.Format(CultureInfo.InvariantCulture,                 &amp;quot;There is no EventLog source named '{0}'. This module requires .NET Framework 2.0.&amp;quot;, _SourceName));
          }

          AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);

          _Initialized = true;
        }
      }
    }
  }

  public void Dispose()
  {
  }

  #endregion

  #region UnhandledException event handler

  public void OnUnhandledException(object o, UnhandledExceptionEventArgs e)
  {
    // Let this occur one time for each AppDomain.
    if (Interlocked.Exchange(ref _UnhandledExceptionCount, 1) != 0)
      return;

    StringBuilder message = new StringBuilder(&amp;quot;\r\n\r\nUnhandledException logged by UnhandledExceptionModule:\r\n\r\nappId=&amp;quot;);

    string appId = (string)AppDomain.CurrentDomain.GetData(&amp;quot;.appId&amp;quot;);
    if (appId != null)
    {
      message.Append(appId);
    }

    Exception currentException = null;
    for (currentException = (Exception)e.ExceptionObject; currentException != null; currentException = currentException.InnerException)
    {
      message.AppendFormat(&amp;quot;\r\n\r\ntype={0}\r\n\r\nmessage={1}\r\n\r\nstack=\r\n{2}\r\n\r\n&amp;quot;,
                           currentException.GetType().FullName,
                           currentException.Message,
                           currentException.StackTrace);
    }

    EventLog Log = new EventLog();
    Log.Source = _SourceName;
    Log.WriteEntry(message.ToString(), EventLogEntryType.Error);
  }

  #endregion
}
&lt;/pre&gt;&lt;br /&gt;
Add add this&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;httpmodules&amp;gt;            
    &amp;lt;add name=&amp;quot;UnhandledExceptionModule&amp;quot; type=&amp;quot;UnhandledExceptionModule&amp;quot;/&amp;gt;        
    .....
&amp;lt;/httpmodules&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
You will have more details about the cause of this error a StackOverflowException in my case.&lt;br /&gt;
&lt;br /&gt;
It takes me a lot of time to find why because I didn't find how to know witch line or class cause the exception but it already help a lot :)&lt;br /&gt;
&lt;br /&gt;
This class also adds all the unhandled error in the event viewer so it is also great to have it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-792476711435504286?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aLjUKBvSftzIcFWv1yFlgH0fLZ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aLjUKBvSftzIcFWv1yFlgH0fLZ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aLjUKBvSftzIcFWv1yFlgH0fLZ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aLjUKBvSftzIcFWv1yFlgH0fLZ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/BTKvAYfCaQc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/792476711435504286/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/10/crash-iis-event-5011-and-how-to-add.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/792476711435504286?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/792476711435504286?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/BTKvAYfCaQc/crash-iis-event-5011-and-how-to-add.html" title="Crash IIS event 5011 and how to add your unhandled exceptions in the event viewer" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/10/crash-iis-event-5011-and-how-to-add.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcCSH04fip7ImA9WhdbFUo.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-8805207953754494640</id><published>2011-10-12T09:17:00.001+02:00</published><updated>2011-10-14T08:17:49.336+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-14T08:17:49.336+02:00</app:edited><title>Open the content editor on a specific item</title><content type="html">&lt;h2&gt;First technique&lt;/h2&gt;useful if you need to generate a link to send to one of your editors. &lt;br /&gt;
&lt;br /&gt;
The format of this link will be :&lt;br /&gt;
&lt;a href="http://youthostname/sitecore/shell/Applications/Content%20Editor?id=%7b9822ABDF-F2B7-41BA-B56D-63E73BEB7E88%7d&amp;amp;amp;vs=1&amp;amp;amp;la=en&amp;amp;amp;sc_content=master&amp;amp;amp;fo=%7b9822ABDF-F2B7-41BA-B56D-63E73BEB7E88%7d&amp;amp;ic=People%2f16x16%2fcubes_blue.png&amp;amp;he=Content+Editor&amp;amp;cl=0"&gt;http://Youthostname/sitecore/shell/Applications/Content Editor?id=%7b9822ABDF-F2B7-41BA-B56D-63E73BEB7E88%7d&amp;amp;amp;vs=1&amp;amp;amp;la=en&amp;amp;amp;sc_content=master&amp;amp;amp;fo=%7b9822ABDF-F2B7-41BA-B56D-63E73BEB7E88%7d&amp;amp;ic=People%2f16x16%2fcubes_blue.png&amp;amp;he=Content+Editor&amp;amp;cl=0 &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Where the parameters are:&lt;br /&gt;
- Id &amp;amp; fo: the ID of the target item&lt;br /&gt;
- vs: the version of the  target item.&lt;br /&gt;
- la: the language&amp;nbsp; of the  target item &lt;br /&gt;
- sc_content: the database&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;The second technique&lt;/h2&gt;useful of you need to open it from one of your xaml application :&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;UrlString str = new UrlString(); 
.Add(&amp;quot;id&amp;quot;, id); 
str.Add(&amp;quot;fo&amp;quot;, id); 
Windows.RunApplication(&amp;quot;Content editor&amp;quot;, str.ToString());

&lt;/pre&gt;&lt;br /&gt;
&lt;h2&gt;The third technique&lt;/h2&gt;In javascript: (a contribution of &lt;a href="http://www.blogger.com/profile/02508471872563315303"&gt;Mark Ursino&lt;/a&gt;. Thank you!)&lt;br /&gt;
&lt;a href="http://firebreaksice.com/link-directly-to-a-sitecore-item-in-a-custom-editor/"&gt;http://firebreaksice.com/link-directly-to-a-sitecore-item-in-a-custom-editor/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-8805207953754494640?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8lwh3NhcttyLJNaJVpvrnC6NidE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8lwh3NhcttyLJNaJVpvrnC6NidE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8lwh3NhcttyLJNaJVpvrnC6NidE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8lwh3NhcttyLJNaJVpvrnC6NidE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/wWxG0H9FdNY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/8805207953754494640/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/10/open-content-editor-on-specific-item.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/8805207953754494640?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/8805207953754494640?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/wWxG0H9FdNY/open-content-editor-on-specific-item.html" title="Open the content editor on a specific item" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/10/open-content-editor-on-specific-item.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MHQn4zeyp7ImA9WhdVF0s.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-5182706411377113858</id><published>2011-09-20T14:38:00.001+02:00</published><updated>2011-09-23T11:17:13.083+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-23T11:17:13.083+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Admin and Security" /><title>Sitecore installation tips and tricks</title><content type="html">Recently I have done one of the most difficult installation of sitecore I have never done. Not because of sitecore himself but because of IIS, the firewall, the sql server, …&lt;br /&gt;
&lt;br /&gt;
Here is some tips you can use if you have some trouble to install sitecore :&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;IIS Errors&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you have this error : « This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault='Deny'), or set explicitly by a location tag with overrideMode='Deny' or the legacy allowOverride='false'. »&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Execute this command : %windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/security/requestFiltering&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
If the website return a blank page or an error:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Check if all the required windows component are installed (IIS, Dotnet, …)&lt;/li&gt;
&lt;li&gt;Check if the server doesn’t need a reboot to install some components or updates&lt;/li&gt;
&lt;li&gt;Execute an aspnet_regiis –i&lt;/li&gt;
&lt;li&gt;Check if you don’t have some strange Query strings or http verbs blocked in the IIS request filtering&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;SQL Errors&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you have an sql error :&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Check your connectionstring in connectionstrings.config&lt;/li&gt;
&lt;li&gt;Check if the local firewall doesn’t block your query (cf windows eventviewer)&lt;/li&gt;
&lt;li&gt;Check if the global firewall doesn’t block the request&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;from the web server to the sql server&lt;/li&gt;
&lt;li&gt;from the sql server to the web server&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Check the network route is correct (especially if you have more than one network card on this server) (use the command « route PRINT » to see it) and use the command « route –p add » if needed&lt;/li&gt;
&lt;li&gt;Put the server name in the hostfile&lt;/li&gt;
&lt;li&gt;If you use the active directory&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;you will maybe need to use the impersonate (cf. web.config)&lt;/li&gt;
&lt;li&gt;The user need to have the access write to the web server and the sql server&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;Sitecore Errors&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
If the website return a blank page :&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Try to add a page test.htm at the root of your website folder and call it to see if iis work.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
If the license is missing :&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Check in the web.config if the datafolder and the licensefolder is set correctly&lt;/li&gt;
&lt;li&gt;Check if the App Pool user have the read access to the license.xml file&lt;/li&gt;
&lt;li&gt;Check if the license file is correct&lt;/li&gt;
&lt;/ul&gt;If the you see some errors in the log about the performance counter : &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Unzip and execute this package (as administrator) : &lt;a href="http://sdn.sitecore.net/upload/sdn5/faq/administration/sitecorecounters.zip"&gt;http://sdn.sitecore.net/upload/sdn5/faq/administration/sitecorecounters.zip&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Check if the user of the App Pool is in the windows user group : « Performance Monitor Users » &lt;/li&gt;
&lt;/ul&gt;&lt;span style="font-size: large;"&gt;Optimisations&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;If you want to use the Framework 4.0 &lt;a href="http://sdn.sitecore.net/upload/sitecore6/64/integrating%20an%20asp.net%20mvc%20web%20application%20in%20sitecore%20cms-a4.pdf"&gt;http://sdn.sitecore.net/upload/sitecore6/64/integrating%20an%20asp.net%20mvc%20web%20application%20in%20sitecore%20cms-a4.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;If possible set the App Pool in « Integrated » mode&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-5182706411377113858?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Dc1ydDXE-vBZNS5RO9hZSu84KmY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dc1ydDXE-vBZNS5RO9hZSu84KmY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Dc1ydDXE-vBZNS5RO9hZSu84KmY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dc1ydDXE-vBZNS5RO9hZSu84KmY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/Wk9h2tQqLwQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/5182706411377113858/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/09/sitecore-installation-tips-and-tricks.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/5182706411377113858?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/5182706411377113858?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/Wk9h2tQqLwQ/sitecore-installation-tips-and-tricks.html" title="Sitecore installation tips and tricks" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/09/sitecore-installation-tips-and-tricks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ESH45fip7ImA9WhdRGEQ.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-6141863993907004583</id><published>2011-07-15T14:53:00.004+02:00</published><updated>2011-08-09T14:26:49.026+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-09T14:26:49.026+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Shared Source" /><category scheme="http://www.blogger.com/atom/ns#" term="Admin and Security" /><title>New module on trac</title><content type="html">Here is my first contribution in association with the &lt;a href="http://www.lbigroup.be/"&gt;LBi&lt;/a&gt; to the Shared Source library.&lt;br /&gt;
&lt;a href="http://trac.sitecore.net/ScheduledTaskUtils"&gt;http://trac.sitecore.net/ScheduledTaskUtils&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This module allows you to run manually a sitecore scheduler. This is very useful especially when you try to debug a scheduler.&lt;br /&gt;
&lt;br /&gt;
Here is a small screenshot &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-J7_tdDa13_g/TiA3vNa9JJI/AAAAAAAAADU/sS3-b0OU5Ss/s1600/Screenshot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-J7_tdDa13_g/TiA3vNa9JJI/AAAAAAAAADU/sS3-b0OU5Ss/s1600/Screenshot.jpg" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;If you have some bug of improvement request, you can post a reply to this post.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-6141863993907004583?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gfn7XlEffXNZHVjzu42x2gONJ6Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gfn7XlEffXNZHVjzu42x2gONJ6Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gfn7XlEffXNZHVjzu42x2gONJ6Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gfn7XlEffXNZHVjzu42x2gONJ6Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/Wp4Vd9wMd1g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/6141863993907004583/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/07/new-module-on-trac.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/6141863993907004583?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/6141863993907004583?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/Wp4Vd9wMd1g/new-module-on-trac.html" title="New module on trac" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-J7_tdDa13_g/TiA3vNa9JJI/AAAAAAAAADU/sS3-b0OU5Ss/s72-c/Screenshot.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/07/new-module-on-trac.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQDSH08eSp7ImA9WhZbGEw.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-120901628310974109</id><published>2011-06-23T10:21:00.001+02:00</published><updated>2011-06-23T10:22:59.371+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T10:22:59.371+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Create a custom remote event in sitecore</title><content type="html">Recently, I had to clear some cache on the frontend server from my backend.&lt;br /&gt;
To do that I have implemented a custom remote event. I did not find some documentation on sdn so here is the procedure (thank you to the  &lt;strong&gt; &lt;/strong&gt;&lt;em&gt;Sergey Kravchenko&lt;/em&gt; from the sitecore support).&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt; Create your custom remote event class.&amp;nbsp; Remote event class is a usual class inherited from System.Object and marked with a [DataContract] attribute. &lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace XXX
{
    [DataContract]
    public class ClearCacheEvent
    {
        public ClearCacheEvent()
        {

        }
    }
}
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create a custom event arguments class, to store the arguments of the  event. It also, can be empty. Both Remote event class and event  arguments class will be used to add event to the EventQueue. &lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sitecore.Events;

namespace XXX
{
    public class ClearCacheEventArgs : EventArgs, IPassNativeEventArgs
    {
        public ClearCacheEventArgs(ClearCacheEvent @event)
        {
            
        }
    }
}
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create your custom event handler&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sitecore.Diagnostics;
using Sitecore.Events;

namespace XXX
{
    public class ClearCacheEventHandler
    {
        /// &amp;lt;summary&amp;gt;
        /// The methos is the method that you need to implement as you do normally
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        public virtual void OnClearCacheRemote(object sender, EventArgs e)
        {
            Log.Info(&amp;quot;Tadaa&amp;quot;, this);
        }

        /// &amp;lt;summary&amp;gt;
        /// This methos is used to raise the local event
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;event&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        public static void Run(ClearCacheEvent @event)
        {
            Log.Info(&amp;quot;ClearCacheEventHandler - Run&amp;quot;, typeof(ClearCacheEventHandler));
            ClearCacheEventArgs args = new ClearCacheEventArgs(@event);
            Event.RaiseEvent(&amp;quot;clearcache:remote&amp;quot;, new object[] { args });
        }
    }
}
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create a custom Hook to bind event from the EventQueue and the "local event"&amp;nbsp;in the CD server web config. This hook will call the method you have added in the event handler ("Run" method of the ClearCacheEventHandler class in our case)&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sitecore.Events.Hooks;

namespace XXX
{
    public class ClearCacheHook : IHook
    {
        public void Initialize()
        {
            Sitecore.Eventing.EventManager.Subscribe&lt;clearcacheevent&gt;(new Action&lt;clearcacheevent&gt;(ClearCacheEventHandler.Run));
        }
    }
}
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Trigger the event in your code&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;ClearCacheEvent inst = new ClearCacheEvent();
Sitecore.Eventing.EventManager.QueueEvent&amp;lt;ClearCacheEvent&amp;gt;(inst);
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Configure the web.config (or add it in a separated file in the /include folder it is cleaner)&lt;/br&gt;&lt;br /&gt;
The hook:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;hooks&amp;gt;
    &amp;lt;hook type=&amp;quot;XXX.ClearCacheHook, XXX&amp;quot;/&amp;gt;
&amp;lt;/hooks&amp;gt;
&lt;/pre&gt;The event:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;events&amp;gt;
    &amp;lt;event name=&amp;quot;clearcache:remote&amp;quot;&amp;gt;
        &amp;lt;handler type=&amp;quot;XXX.ClearCacheEventHandler, XXX&amp;quot; method=&amp;quot;OnClearCacheRemote&amp;quot;/&amp;gt;
    &amp;lt;/event&amp;gt;
&amp;lt;/events&amp;gt;
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
How does it work?&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Your code add an event in the &amp;nbsp; EventQueue.&lt;/li&gt;
&lt;li&gt;The EventQueue is checked by the special task: &lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;eventQueue&amp;gt;
    &amp;lt;processingInterval&amp;gt;00:00:02&amp;lt;/processingInterval&amp;gt;
&amp;lt;/eventQueue&amp;gt;
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;The Hook call a method who raise the corresponding local event.&lt;/li&gt;
&lt;li&gt;Your local is triggered.&lt;/li&gt;
&lt;/ol&gt;&lt;ol&gt;&lt;li&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-120901628310974109?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0WI8n1YFsbt_bK4-w4Li-N8Azpc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0WI8n1YFsbt_bK4-w4Li-N8Azpc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0WI8n1YFsbt_bK4-w4Li-N8Azpc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0WI8n1YFsbt_bK4-w4Li-N8Azpc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/92Qmd3DSlek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/120901628310974109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/06/create-custom-remote-event-in-sitecore.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/120901628310974109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/120901628310974109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/92Qmd3DSlek/create-custom-remote-event-in-sitecore.html" title="Create a custom remote event in sitecore" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/06/create-custom-remote-event-in-sitecore.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4MQn8-fip7ImA9WhZUFE4.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-2525263591831804293</id><published>2011-06-07T11:29:00.000+02:00</published><updated>2011-06-07T11:29:43.156+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-07T11:29:43.156+02:00</app:edited><title>The page editor is not yet available</title><content type="html">I have recently experiment a bug with the webedit mode in sitecore 6.4.1. When I try to add some components on some pages I have this message: "The page editor is not yet available".&lt;br /&gt;
&lt;br /&gt;
In fact, it append if a layout or a sublayout contains an ASP.NET LinkButton with a PostBackUrl attribute&lt;br /&gt;
&lt;br /&gt;
As a workaround, you can wrap your line with PostBackUrl attribute in the “if” clause like this:&lt;br /&gt;
&lt;pre class="csharp" name="xml"&gt;if ((!Sitecore.Context.PageMode.IsPageEditor) &amp;amp;&amp;amp; (!Sitecore.Context.PageMode.IsPreview))
{
       lbLink.PostBackUrl = Utils.GetUrlFromGeneralLink(tmpItem, &amp;quot;Link&amp;quot;);
}
&lt;/pre&gt;&lt;br /&gt;
Thank you to the sitecore support. I will maybe see some of you at the London dreamcore :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-2525263591831804293?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QEdK7vGVvZ5DtVXHcz4izn2lV9Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QEdK7vGVvZ5DtVXHcz4izn2lV9Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QEdK7vGVvZ5DtVXHcz4izn2lV9Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QEdK7vGVvZ5DtVXHcz4izn2lV9Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/f6aow8O-Djs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/2525263591831804293/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/06/page-editor-is-not-yet-available.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/2525263591831804293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/2525263591831804293?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/f6aow8O-Djs/page-editor-is-not-yet-available.html" title="The page editor is not yet available" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/06/page-editor-is-not-yet-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAHRHgzfCp7ImA9WhZVE0Q.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-7191121832926755167</id><published>2011-05-26T08:52:00.000+02:00</published><updated>2011-05-26T08:52:15.684+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-26T08:52:15.684+02:00</app:edited><title>Add a custom property to the site node</title><content type="html">&lt;div class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: FR-BE;"&gt;Here is an easy way to add &lt;/span&gt; &lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: FR-BE;"&gt;and retrieve&lt;/span&gt; &lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: FR-BE;"&gt;a custom property to you site in the .config file.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example with my custom property SiteUID&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Add this property to your site tag:&lt;br /&gt;
&lt;pre class="csharp" name="xml"&gt;&amp;lt;site patch:after="*[contains(@name, 'login')]"
    hostName="uk.xxx"
    targetHostName="uk.xxx"
    name="UK"
    &lt;b&gt;&lt;span style="color: red;"&gt;siteUID="MyUniqueID"&lt;/span&gt;&lt;/b&gt;
    virtualFolder="/"
    physicalFolder="/"
    rootPath="/sitecore/content/United Kingdom/Website"
    startItem="/Homepage"
    contentStartItem="/sitecore/content/United Kingdom/Website/Homepage"
    database="web"
    domain="extranet"
    allowDebug="true"
    cacheHtml="true"
    htmlCacheSize="10MB"
    registryCacheSize="0"
    viewStateCacheSize="0"
    xslCacheSize="5MB"
    filteredItemsCacheSize="2MB"
    enablePreview="true"
    enableWebEdit="true"
    enableDebugger="true"
    disableClientData="false"
    language="en"/&amp;gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Create an extension method:&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;/// &amp;lt;summary&amp;gt;
/// Retrun the site unique ID
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
public static string SiteUID(this SiteContext site)
{
    Assert.IsNotNull(site, "Site cannot be null");
            
    try 
    {         
        string uid = site.Properties["siteUID"];
        if (!String.IsNullOrEmpty(uid))
            return uid;
        else
            return site.Name;
    }
    catch (Exception)
    {
        return site.Name;
    }
}&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Use this property in your code: (don't forget to add you using to the class with your extention method)&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;Sitecore.Context.Site.SiteUID()&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-7191121832926755167?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/80Eza1_1CyU7OLgJWQuHStoOg8Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/80Eza1_1CyU7OLgJWQuHStoOg8Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/80Eza1_1CyU7OLgJWQuHStoOg8Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/80Eza1_1CyU7OLgJWQuHStoOg8Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/b1VyBjufgrM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/7191121832926755167/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/05/add-custom-property-to-site-node.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7191121832926755167?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7191121832926755167?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/b1VyBjufgrM/add-custom-property-to-site-node.html" title="Add a custom property to the site node" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/05/add-custom-property-to-site-node.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08AQHo9fyp7ImA9WhZVE0Q.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-7396455060529168945</id><published>2011-05-26T08:33:00.004+02:00</published><updated>2011-05-26T08:37:21.467+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-26T08:37:21.467+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>Write you messages in a separated file</title><content type="html">It is not always easy with a sitecore "out of the box" to know witch messages come from your custom code and witch messages come from sitecore himself.&lt;br /&gt;
Here is a small tip to write you custom messages in a separated file:&lt;br /&gt;
&lt;br /&gt;
First of all, we will prefix all our messages with a custom prefix "SH - " in my case:&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;Log.Info("SH - My message", typeof(MyObject));
Log.Error("SH - My message", typeof(MyObject));
...
&lt;/pre&gt;&lt;br /&gt;
And then to write it in a custom log file change in the web.config in the log4net section:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;appender name="MyFileAppender" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging"&amp;gt;
    &amp;lt;file value="$(dataFolder)/logs/mylog.{date}.txt" /&amp;gt;
 &amp;lt;filter type="log4net.Filter.StringMatchFilter"&amp;gt;
    &amp;lt;regexToMatch value="^SH .*" /&amp;gt;
    &amp;lt;/filter&amp;gt;
    &amp;lt;filter type="log4net.Filter.DenyAllFilter" /&amp;gt;
    &amp;lt;appendToFile value="true" /&amp;gt;
    &amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;
    &amp;lt;conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" /&amp;gt;
    &amp;lt;/layout&amp;gt;
&amp;lt;/appender&amp;gt;
&lt;/pre&gt;You will need to adapt the regex with your custom prefix of course.&lt;br /&gt;
&lt;br /&gt;
And second point after the logFileAppender of sitecore add you custom one:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;root&amp;gt;
    &amp;lt;priority value="DEBUG"/&amp;gt;
    &amp;lt;appender-ref ref="LogFileAppender"/&amp;gt;
    &amp;lt;appender-ref ref="MyFileAppender" /&amp;gt;
&amp;lt;/root&amp;gt;&lt;/pre&gt;&lt;br /&gt;
You have a lot of example of what you can do with log4net here: &lt;a href="http://logging.apache.org/log4net/release/config-examples.html"&gt;http://logging.apache.org/log4net/release/config-examples.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-7396455060529168945?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-ozoVHycjhloZwc32Zc-3ooacoA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ozoVHycjhloZwc32Zc-3ooacoA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-ozoVHycjhloZwc32Zc-3ooacoA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ozoVHycjhloZwc32Zc-3ooacoA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/jaF9oay78pg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/7396455060529168945/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/05/write-you-messages-in-separated-file.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7396455060529168945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7396455060529168945?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/jaF9oay78pg/write-you-messages-in-separated-file.html" title="Write you messages in a separated file" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/05/write-you-messages-in-separated-file.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYERnc_fyp7ImA9WhZQGUQ.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-3872957294630579439</id><published>2011-04-28T14:35:00.000+02:00</published><updated>2011-04-28T14:35:07.947+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-28T14:35:07.947+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Other" /><title>Infinite loop when using sitecore and the iis url rewriting</title><content type="html">Recently I have install the ULRewrite module for IIS7 : &lt;a href="http://www.iis.net/download/URLRewrite"&gt;http://www.iis.net/download/URLRewrite&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Everything was good but during my tests with IE7 I had a strange comportment: I have an infinite loop on the error page.&lt;br /&gt;
&lt;br /&gt;
In fact, it was a mistake during the configuration of this module. Effectively, this module add this section in the web.config.&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;httpErrors&amp;gt;
  &amp;lt;remove statusCode="404" subStatusCode="-1" /&amp;gt;
  &amp;lt;error statusCode="404" prefixLanguageFilePath="" path="/notfound" responseMode="ExecuteURL" /&amp;gt;
 &amp;lt;/httpErrors&amp;gt;
&amp;lt;/system.webServer&amp;gt;
&lt;/pre&gt;But the error page I have configured as the ItemNotFoundUrl is error-page-not-found.aspx:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;setting name="ItemNotFoundUrl" value="/sitecore/service/error-page-not-found.aspx" /&amp;gt;
&lt;/pre&gt;So we only need to put this url of our custom error page in path="XXX” or simply remove the section &amp;lt;httpErrors&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-3872957294630579439?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sm2Id7Ko-KeKwK7nioAB--F-am0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sm2Id7Ko-KeKwK7nioAB--F-am0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sm2Id7Ko-KeKwK7nioAB--F-am0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sm2Id7Ko-KeKwK7nioAB--F-am0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/S9MZ3kowdko" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/3872957294630579439/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/04/infinite-loop-when-using-sitecore-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/3872957294630579439?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/3872957294630579439?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/S9MZ3kowdko/infinite-loop-when-using-sitecore-and.html" title="Infinite loop when using sitecore and the iis url rewriting" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/04/infinite-loop-when-using-sitecore-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcGQns-cSp7ImA9WhZRFU8.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-5885540723148207984</id><published>2011-04-11T14:47:00.000+02:00</published><updated>2011-04-11T14:47:03.559+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-11T14:47:03.559+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webedit" /><title>Master page and webedit</title><content type="html">&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;When you use the masterpages, in Sitecore you may experiment some troubles with the webedit. Effectively, the webedit toolbar doesn't appear.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&amp;nbsp;But, this is easily fixable. You only need to add this in you page:&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&amp;lt;sc:placeholder key="webedit" runat="server" /&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-5885540723148207984?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jDopBkax-Xc_SLgCUKqu8YYeb6o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jDopBkax-Xc_SLgCUKqu8YYeb6o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jDopBkax-Xc_SLgCUKqu8YYeb6o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jDopBkax-Xc_SLgCUKqu8YYeb6o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/bKE-NZtrLro" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/5885540723148207984/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/04/master-page-and-webedit.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/5885540723148207984?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/5885540723148207984?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/bKE-NZtrLro/master-page-and-webedit.html" title="Master page and webedit" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/04/master-page-and-webedit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcEQns9eSp7ImA9Wx9bEk4.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-2510966354499591555</id><published>2011-02-20T21:00:00.000+01:00</published><updated>2011-02-20T21:00:03.561+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-20T21:00:03.561+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Admin and Security" /><title>Create a desktop shortcut to the core content editor</title><content type="html">Here is a small tip to create a shortcut to the content editor of the core database that will be accessible even if you currently on the master database. This is very useful to not always switching between the databases.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-WkCNU6Hur0g/TVvXq4byd-I/AAAAAAAAAB8/b62lGj0-lAk/s1600/Core+DB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&amp;nbsp;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-WkCNU6Hur0g/TVvXq4byd-I/AAAAAAAAAB8/b62lGj0-lAk/s1600/Core+DB.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-WkCNU6Hur0g/TVvXq4byd-I/AAAAAAAAAB8/b62lGj0-lAk/s1600/Core+DB.png" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Switch to the core database&lt;/li&gt;
&lt;li&gt;Open the content editor&lt;/li&gt;
&lt;li&gt;Drag’n drop the sitecore element from the content editor to the desktop&lt;/li&gt;
&lt;li&gt;Right click on this new shortcut and change the name and the icon to personalize it&lt;/li&gt;
&lt;/ol&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-2510966354499591555?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rGlDAq6yCkZ-6Io4DndDqyz_4EE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rGlDAq6yCkZ-6Io4DndDqyz_4EE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rGlDAq6yCkZ-6Io4DndDqyz_4EE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rGlDAq6yCkZ-6Io4DndDqyz_4EE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/sb-oUAcEW3w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/2510966354499591555/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/02/create-desktop-shortcut-to-core-content.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/2510966354499591555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/2510966354499591555?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/sb-oUAcEW3w/create-desktop-shortcut-to-core-content.html" title="Create a desktop shortcut to the core content editor" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-WkCNU6Hur0g/TVvXq4byd-I/AAAAAAAAAB8/b62lGj0-lAk/s72-c/Core+DB.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/02/create-desktop-shortcut-to-core-content.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UERXk8fSp7ImA9Wx9bEEg.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-4499573287025812007</id><published>2011-02-18T21:00:00.000+01:00</published><updated>2011-02-18T21:00:04.775+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-18T21:00:04.775+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Admin and Security" /><title>Set the root folder of the file Explorer</title><content type="html">There is a very simple way to allow your user to upload (or download) some files from sitecore to a specific folder.&lt;br /&gt;
&lt;br /&gt;
Follow these steps:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Go to the core DB&lt;/li&gt;
&lt;li&gt;Duplicate &amp;nbsp;/sitecore/content/Documents and settings/All users/Start menu/Programs/File Explorer&lt;/li&gt;
&lt;li&gt;In the duplicated shorcut, edit the field "Parameters" and set the root folder. Example: "ro=\design\upload\modules"&lt;/li&gt;
&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ROp1QeYSluc/TVvZ-k2L4mI/AAAAAAAAACE/mOdIyPJysO8/s1600/FileExplorer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://2.bp.blogspot.com/-ROp1QeYSluc/TVvZ-k2L4mI/AAAAAAAAACE/mOdIyPJysO8/s320/FileExplorer.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-4499573287025812007?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Mtz4XmHuaPU2jcQAAyvCYYiLD_I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mtz4XmHuaPU2jcQAAyvCYYiLD_I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Mtz4XmHuaPU2jcQAAyvCYYiLD_I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mtz4XmHuaPU2jcQAAyvCYYiLD_I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/zEHtnF0i3Dg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/4499573287025812007/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/02/set-root-folder-of-file-explorer.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/4499573287025812007?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/4499573287025812007?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/zEHtnF0i3Dg/set-root-folder-of-file-explorer.html" title="Set the root folder of the file Explorer" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ROp1QeYSluc/TVvZ-k2L4mI/AAAAAAAAACE/mOdIyPJysO8/s72-c/FileExplorer.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/02/set-root-folder-of-file-explorer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ERH4yfyp7ImA9Wx9UGUo.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-2691667166015194294</id><published>2011-02-17T21:00:00.000+01:00</published><updated>2011-02-17T21:00:05.097+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-17T21:00:05.097+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Other" /><title>Adding custom icons for the media library</title><content type="html">If you need to have some custom icons in the media library you have several options:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Install the corresponding program on the computer and associate the file with this program (ie: acrobat reader for .pdf files). This option is maybe not an option for the production server.&lt;/li&gt;
&lt;li&gt;Associate the file extension in the operating system. Open "Control Panel -&amp;gt; Folder Options-&amp;gt; File Types -&amp;gt; New -&amp;gt; Add file Extension" then register the icon for this extension (Advanced -&amp;gt; Change Icon)&lt;/li&gt;
&lt;li&gt;Associate the Icon with the file extension in your web.config. Add thumbnails generator for the known file type. For example for PDF file type:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;mediaType name="PDF file" extensions="pdf"&amp;gt;
  &amp;lt;mimeType&amp;gt;application/pdf&amp;lt;/mimeType&amp;gt;
  &amp;lt;forceDownload&amp;gt;false&amp;lt;/forceDownload&amp;gt;
  &amp;lt;sharedTemplate&amp;gt;system/media/unversioned/pdf&amp;lt;/sharedTemplate&amp;gt;
  &amp;lt;versionedTemplate&amp;gt;system/media/versioned/pdf&amp;lt;/versionedTemplate&amp;gt;
  &amp;lt;thumbnails&amp;gt;
    &amp;lt;generator type="Sitecore.Resources.Media.MediaThumbnailGenerator, Sitecore.Kernel"&amp;gt;
      &amp;lt;extension&amp;gt;png&amp;lt;/extension&amp;gt;
    &amp;lt;/generator&amp;gt;
    &amp;lt;staticFile&amp;gt;Path where the icon is located. For example /sitecore/shell/Themes/standard/images/pdf_icon.png&amp;lt;/staticFile&amp;gt;
  &amp;lt;/thumbnails&amp;gt;
&amp;lt;/mediaType&amp;gt;
&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
After these modification, clear the cached files:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Open the folder "/Temp" under the Sitecore root.&lt;/li&gt;
&lt;li&gt;Delete all files with the name "fileicon.....".&lt;/li&gt;
&lt;li&gt;Clear media cache "/App_Data/MediaCache" under the Sitecore root.&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-2691667166015194294?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NmF4aDCiGCYa3n4aVbMyD7gqUrs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NmF4aDCiGCYa3n4aVbMyD7gqUrs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NmF4aDCiGCYa3n4aVbMyD7gqUrs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NmF4aDCiGCYa3n4aVbMyD7gqUrs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/sooRmlPQO3U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/2691667166015194294/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/02/adding-custom-icons-for-media-library.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/2691667166015194294?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/2691667166015194294?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/sooRmlPQO3U/adding-custom-icons-for-media-library.html" title="Adding custom icons for the media library" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/02/adding-custom-icons-for-media-library.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMEQns-eyp7ImA9Wx9UGEU.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-2657829999184875320</id><published>2011-02-16T21:00:00.000+01:00</published><updated>2011-02-16T21:00:03.553+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-16T21:00:03.553+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Customize Content Editor" /><title>Use the dictionary en-GB in place of en-US</title><content type="html">We had a bug when we try to use the en-GB dictionary in place of the en-US. Effectively, the logical way is editing /sitecore/system/Languages/en and set the property “Dictionary” to en-US.tdf. &lt;br /&gt;
&lt;br /&gt;
But it doesn’t work, the bug fix is to use replace the en-US.tdf file by the en-GB.tdf file in the folder “\sitecore\shell\RadControls\Spell\TDF”. &lt;br /&gt;
&lt;br /&gt;
Here is the explanation of the sitecore support:&lt;br /&gt;
When you are opening the RTE editor the current item language name is transferred there as the “la=xx-XX” URL parameter. &lt;br /&gt;
&lt;br /&gt;
This value is used for a spellchecking, i.e. if the current item language is “la-LA” then the “la-LA.tdf” dictionary will be used.&lt;br /&gt;
&lt;br /&gt;
However when the item language is “en“ - Telerik control automatically interprets this value as “en-US” and used the “en-US.tdf” dictionary file.&lt;br /&gt;
&lt;br /&gt;
Thus the only possible way to change the default dictionary for “en” items spellcheking is to rename the old “en-US.tdf” to something different and rename the “en-GB.tdf” file into “en-US.tdf”.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-2657829999184875320?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hUPrUBze4t3XewULHYIQppPWF_s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hUPrUBze4t3XewULHYIQppPWF_s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hUPrUBze4t3XewULHYIQppPWF_s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hUPrUBze4t3XewULHYIQppPWF_s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/PVAl1BXbKvg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/2657829999184875320/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/02/use-dictionary-en-gb-in-place-of-en-us.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/2657829999184875320?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/2657829999184875320?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/PVAl1BXbKvg/use-dictionary-en-gb-in-place-of-en-us.html" title="Use the dictionary en-GB in place of en-US" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/02/use-dictionary-en-gb-in-place-of-en-us.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQEQXo6cSp7ImA9Wx9VEUw.&quot;"><id>tag:blogger.com,1999:blog-630324887720106786.post-7554183221010790079</id><published>2011-01-27T08:11:00.000+01:00</published><updated>2011-01-27T08:11:40.419+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-27T08:11:40.419+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Admin and Security" /><title>Use the sitecore jobs</title><content type="html">When you need to do some long running operations in the Sitecore backend (like an import form example) most of the time we do that as we do for the small tasks.&lt;br /&gt;
&lt;br /&gt;
But this is not a very good practice because the task is synchronous in the main thread and the admin is freeze until the task is finished.&lt;br /&gt;
&lt;br /&gt;
In sitecore they are a very simple way to execute these tasks in another thread: the jobs.&lt;br /&gt;
&lt;br /&gt;
Here is a small code snippet to create a job :&lt;br /&gt;
&lt;pre name="code" class="csharp"&gt;//Create the options and pass some attributes
JobOptions options2 = new JobOptions(&amp;quot;The job name&amp;quot;, &amp;quot;The job category&amp;quot;, &amp;quot;MyWebsiteName&amp;quot;, MyObjectInstanceThanContainTheMethodToExecute, &amp;quot;The Method Name To Exectute&amp;quot;, new object[] { parameter1ForTheMethod, parameter2ForTheMethod });
options2.ContextUser = Context.User;
//This line allow to keep the job alive at least the time needed to check the lastest infos for the status.
options2.AfterLife = TimeSpan.FromMilliseconds((double)(POOLING_INTERVAL * 2));
//The thread priority
options2.Priority = System.Threading.ThreadPriority.Normal;
//Start the job himself
Job job = JobManager.Start(options2);
job.Options.CustomData = status; //Status is a object shared between my job and this class (to check the status of the import)
//Keep an instance of the if you need to check his status
this.JobHandle = job.Handle.ToString();
&lt;/pre&gt;&lt;br /&gt;
You may also launch a timer to check the status (how many items are already imported for example) but I will create another subject about “How to create a admin wizard”&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/630324887720106786-7554183221010790079?l=sitecoreblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xUWZE20zXxHEIkod9qLgrNm0Uis/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xUWZE20zXxHEIkod9qLgrNm0Uis/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xUWZE20zXxHEIkod9qLgrNm0Uis/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xUWZE20zXxHEIkod9qLgrNm0Uis/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SitecoreBlog/~4/1WN5oofZ_rE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sitecoreblog.blogspot.com/feeds/7554183221010790079/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sitecoreblog.blogspot.com/2011/01/use-sitecore-jobs.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7554183221010790079?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/630324887720106786/posts/default/7554183221010790079?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SitecoreBlog/~3/1WN5oofZ_rE/use-sitecore-jobs.html" title="Use the sitecore jobs" /><author><name>Vangansewinkel Benjamin</name><uri>http://www.blogger.com/profile/01696678283653731912</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_Nd7hE7ZxH34/TQYjYUJJL4I/AAAAAAAAABE/TTsBcYDuEoc/S220/ben2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://sitecoreblog.blogspot.com/2011/01/use-sitecore-jobs.html</feedburner:origLink></entry></feed>

