<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>RichardSoeteman.net</title>
    <link>http://www.richardsoeteman.net/</link>
    <description />
    <language>en-us</language>
    <copyright>Richard Soeteman</copyright>
    <lastBuildDate>Mon, 08 Mar 2010 12:48:25 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>richard@richardsoeteman.net</managingEditor>
    <webMaster>richard@richardsoeteman.net</webMaster>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=774c6b8f-d413-4419-8d91-7ac47b59e7bc</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,774c6b8f-d413-4419-8d91-7ac47b59e7bc.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,774c6b8f-d413-4419-8d91-7ac47b59e7bc.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=774c6b8f-d413-4419-8d91-7ac47b59e7bc</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently I’ve developed a rather large website for a customer. To make the structure
as simple as possible to understand I like to use different Icons for each document
type. I was very happy with the <a href="http://our.umbraco.org/projects/famfamfam-icons">FamFamFam
Icons</a> project from The Farm. After Installing this I got another challenge and
that was to pick the right Icon.
</p>
        <p>
          <a href="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/iconspng_2.png">
            <img title="iconspng" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="523" alt="iconspng" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/iconspng_thumb.png" width="481" border="0" />
          </a>  
</p>
        <p>
        </p>
        <p>
Today I started working on a new project, installed the FamFamFam Icons package again
and thought that it would be better to assign document types to the Image instead
of assigning the image to a document type. I’ve created a small Usercontrol that lists
all the icons (except for the default Umbraco sprites). Next to the Icon you find 
a dropdown with the possible documenttypes which you can select.
</p>
        <p>
          <a href="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/selecticon_2.png">
            <img title="selecticon" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="463" alt="selecticon" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/selecticon_thumb.png" width="703" border="0" />
          </a>
        </p>
        <p>
I did not create a package out of this. It’s working for me, but it needs some improvements
before I can add it to <a href="http://our.umbraco.org/">our.umbraco.org</a>. 
Maybe that  will never happen, so attached you find a zip file. Add the IconPickerDashboard.dll
file to your bin folder, the IconPickerDashboard.ascx to your usercontrol folder.
</p>
        <p>
Add the following section to your  the Dashboard.config file.
</p>
        <pre>
          <span style="COLOR: #0000ff">&lt;</span>
          <span style="COLOR: #800000">section</span>
          <span style="COLOR: #0000ff">&gt;</span>
          <span style="COLOR: #0000ff">&lt;</span>
          <span style="COLOR: #800000">areas</span>
          <span style="COLOR: #0000ff">&gt;</span>
          <span style="COLOR: #0000ff">&lt;</span>
          <span style="COLOR: #800000">area</span>
          <span style="COLOR: #0000ff">&gt;</span>settings<span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">area</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">areas</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tab</span><span style="COLOR: #ff0000">caption</span>=<span style="COLOR: #0000ff">"IconPicker"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">control</span><span style="COLOR: #0000ff">&gt;</span>/usercontrols/IconPickerDashboard.ascx<span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">control</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">tab</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">section</span><span style="COLOR: #0000ff">&gt;</span></pre>
        <p>
Now browse to the settings section and select the icons you like.
</p>
        <p>
Download the zip (Requires .net 3.5).
</p>
        <div class="wlWriterEditableSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:b8d74c35-1ba0-4abe-b59b-4bd4ac2dbe38" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">
          <p>
          </p>
          <div>
            <a href="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/IconPickerDashboard_1.zip" target="_blank">IconPickerDashboard.zip</a>
          </div>
          <p>
          </p>
        </div>
        <p>
Or download the source:
</p>
        <div class="wlWriterEditableSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:1a2f0475-b876-4f3a-9438-869d532a008e" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">
          <p>
          </p>
          <div>
            <a href="http://www.richardsoeteman.net/ct.ashx?id=774c6b8f-d413-4419-8d91-7ac47b59e7bc&amp;url=http%3a%2f%2fwww.richardsoeteman.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fSelectIconsforadoctype_B7BE%2fIconPickerDashboard_source_1.zip" target="_self">IconPickerDashboard_source.zip</a>
          </div>
          <p>
          </p>
        </div>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=774c6b8f-d413-4419-8d91-7ac47b59e7bc" />
      </body>
      <title>Select Icons for a document type</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,774c6b8f-d413-4419-8d91-7ac47b59e7bc.aspx</guid>
      <link>http://www.richardsoeteman.net/2010/03/08/SelectIconsForADocumentType.aspx</link>
      <pubDate>Mon, 08 Mar 2010 12:48:25 GMT</pubDate>
      <description>&lt;p&gt;
Recently I’ve developed a rather large website for a customer. To make the structure
as simple as possible to understand I like to use different Icons for each document
type. I was very happy with the &lt;a href="http://our.umbraco.org/projects/famfamfam-icons"&gt;FamFamFam
Icons&lt;/a&gt; project from The Farm. After Installing this I got another challenge and
that was to pick the right Icon.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/iconspng_2.png"&gt;&lt;img title=iconspng style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=523 alt=iconspng src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/iconspng_thumb.png" width=481 border=0&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Today I started working on a new project, installed the FamFamFam Icons package again
and thought that it would be better to assign document types to the Image instead
of assigning the image to a document type. I’ve created a small Usercontrol that lists
all the icons (except for the default Umbraco sprites). Next to the Icon you find&amp;nbsp;
a dropdown with the possible documenttypes which you can select.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/selecticon_2.png"&gt;&lt;img title=selecticon style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=463 alt=selecticon src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/selecticon_thumb.png" width=703 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
I did not create a package out of this. It’s working for me, but it needs some improvements
before I can add it to &lt;a href="http://our.umbraco.org/"&gt;our.umbraco.org&lt;/a&gt;.&amp;nbsp;
Maybe that&amp;nbsp; will never happen, so attached you find a zip file. Add the IconPickerDashboard.dll
file to your bin folder, the IconPickerDashboard.ascx to your usercontrol folder.
&lt;/p&gt;
&lt;p&gt;
Add the following section to your&amp;nbsp; the Dashboard.config file.
&lt;/p&gt;
&lt;pre&gt;    &lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;section&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;areas&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;area&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;settings&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;area&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;areas&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;tab&lt;/span&gt; &lt;span style="COLOR: #ff0000"&gt;caption&lt;/span&gt;=&lt;span style="COLOR: #0000ff"&gt;"IconPicker"&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;control&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;/usercontrols/IconPickerDashboard.ascx&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;control&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;tab&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;section&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Now browse to the settings section and select the icons you like.
&lt;/p&gt;
&lt;p&gt;
Download the zip (Requires .net 3.5).
&lt;/p&gt;
&lt;div class=wlWriterEditableSmartContent id=scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:b8d74c35-1ba0-4abe-b59b-4bd4ac2dbe38 style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;p&gt;
&lt;div&gt;&lt;a href="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/SelectIconsforadoctype_B7BE/IconPickerDashboard_1.zip" target=_blank&gt;IconPickerDashboard.zip&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Or download the source:
&lt;/p&gt;
&lt;div class=wlWriterEditableSmartContent id=scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:1a2f0475-b876-4f3a-9438-869d532a008e style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;p&gt;
&lt;div&gt;&lt;a href="http://www.richardsoeteman.net/ct.ashx?id=774c6b8f-d413-4419-8d91-7ac47b59e7bc&amp;amp;url=http%3a%2f%2fwww.richardsoeteman.net%2fcontent%2fbinary%2fWindowsLiveWriter%2fSelectIconsforadoctype_B7BE%2fIconPickerDashboard_source_1.zip" target=_self&gt;IconPickerDashboard_source.zip&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=774c6b8f-d413-4419-8d91-7ac47b59e7bc" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,774c6b8f-d413-4419-8d91-7ac47b59e7bc.aspx</comments>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=90ffa866-c315-42be-9d32-bcf85c20e6bd</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,90ffa866-c315-42be-9d32-bcf85c20e6bd.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,90ffa866-c315-42be-9d32-bcf85c20e6bd.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=90ffa866-c315-42be-9d32-bcf85c20e6bd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’m very pleased to announce that CMSImport 1.0.3 is released. Now I can hear you
think CMSImport? Must be a fork of the great UmbImport package. No this isn’t the
case. A few weeks back Niels (AKA @Umbraco) asked me to change the name since <a title="Umbraco" href="http://www.umbraco.org." target="_blank">Umbraco</a> HQ
got a lot of requests about this package. So now the name is CMSImport and that’s
not going to change anymore.
</p>
        <h3>CMSImport PRO
</h3>
        <p>
Finally we’ve finished our commercial edition of CMSImport.  CMSImport PRO gives
you all the options of the default package and the following extra features: 
</p>
        <ul>
          <li>
Update Content 
</li>
          <li>
Save Import Steps 
</li>
          <li>
Schedule imports for a certain time and day 
</li>
        </ul>
        <h3>Pricing
</h3>
        <p>
You can buy a single domain license of CMSImport. With a single domain license you
are allowed to use  CMSImport PRO for a single domain and all subdomains, such
as www.example.com, accept.example.com, and local.example.com. 
</p>
        <p>
We also have a Enterprise license available. With an Enterprise license you are allowed
to install the CMSImport PRO on unlimited production web servers, and use it for unlimited
Umbraco instances within the Enterprise.  
</p>
        <p>
A single domain license will be available for  <strong>99 Euro</strong>, an enterpise
license for <strong>389 euro. </strong></p>
        <p>
When you buy a license you’ll get free updates within 90 days of purchase and 
free updates for all minor releases within a major release.  For example, if
you purchased a  1.0 version of CMSImport, you get free updates of all 1.x versions
through our <a href="http://www.cmsimport.com/clientarea.aspx" target="_blank">client
area</a>. 
</p>
        <p>
          <strong>Special 1.0 offer.</strong>When you buy the 1.0 release you’ll get a free
update to 2.x. <strong>This is a 1.0 offer only!</strong></p>
        <h3>
        </h3>
        <h3>What’s more in this release?
</h3>
        <p>
Several issues are solved in this release(both in the free and Pro release):
</p>
        <ul>
          <li>
"item with the same key already added" error when using duplicate column
names 
</li>
          <li>
Automapping column names 
</li>
          <li>
The imported document creator is not always the administrator anymore. It's using
the logged in user now. When you schedule an import you can select the user that should
be used as the creator of the document 
</li>
          <li>
Special characters in CSV are now supported, we’ve changed the reader from ANSI text
to Unicode 
</li>
          <li>
Sometimes CSV replaced spaces with empty strings, this is solved now 
</li>
          <li>
With member import you can now merge any member property into the template. Simply
surround the member property with [#(property here)] 
</li>
          <li>
Using a renamed Umbraco folder. This is possible now, although it will be better to
change it after install, otherwise you have to install manually. 
</li>
          <li>
We’ve removed the limitation to allow only one DataAdapter. We are thinking to build
a DataAdapter pack which contains adapters to import from wordpress, Rss, Outlook,
excel etc. These adapters will be available for free in the Commercial Edition and
for a small fee for the Free edition. 
</li>
        </ul>
        <h3>Roadmap
</h3>
        <p>
In the 1.x version we will add the following functionality:
</p>
        <ul>
          <li>
            <strong>FieldAdapters.</strong> Sounds boring but this is a big thing. When you import
data now, sometimes the import will fail. For example if you import boolean as text
(true/false) and want to store that in a True/False field in Umbraco it will fail.
Umbraco expects that the value will be 0/1. FieldAdapters will solve this problem.
If a insert of data fails. CMSImport will check if 1 o more FieldAdapters are available
to convert the data in the right format. This will be added to version 1.1 which must
be ready before CodeGarden 2010. 
</li>
          <li>
            <strong>Dictionary Import</strong>. Need I say more? 
</li>
          <li>
            <strong>
              <b>Hierarchical </b>imports</strong>(PRO only). 
</li>
        </ul>
        <p>
In the 2.x version we will add the following functionality:
</p>
        <ul>
          <li>
            <strong>
              <b>Hierarchical </b>import support in Data Adapters</strong>. Not the same
as the 1.x Hierarchical<strong></strong>import feature ;-) 
</li>
          <li>
            <strong>Export/import definitions (PRO only)</strong>. An easy way to deploy Import
definitions 
</li>
        </ul>
        <h3>
        </h3>
        <h3>More Info
</h3>
        <p>
For more info, download, or purchase you’ll go to <a title="http://www.cmsimport.com/" href="http://www.cmsimport.com/">http://www.cmsimport.com/</a></p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=90ffa866-c315-42be-9d32-bcf85c20e6bd" />
      </body>
      <title>CMSImport (PRO) 1.0.3 released</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,90ffa866-c315-42be-9d32-bcf85c20e6bd.aspx</guid>
      <link>http://www.richardsoeteman.net/2010/02/16/CMSImportPRO103Released.aspx</link>
      <pubDate>Tue, 16 Feb 2010 08:57:09 GMT</pubDate>
      <description>&lt;p&gt;
I’m very pleased to announce that CMSImport 1.0.3 is released. Now I can hear you
think CMSImport? Must be a fork of the great UmbImport package. No this isn’t the
case. A few weeks back Niels (AKA @Umbraco) asked me to change the name since &lt;a title="Umbraco" href="http://www.umbraco.org." target="_blank"&gt;Umbraco&lt;/a&gt; HQ
got a lot of requests about this package. So now the name is CMSImport and that’s
not going to change anymore.
&lt;/p&gt;
&lt;h3&gt;CMSImport PRO
&lt;/h3&gt;
&lt;p&gt;
Finally we’ve finished our commercial edition of CMSImport.&amp;#160; CMSImport PRO gives
you all the options of the default package and the following extra features: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Update Content 
&lt;/li&gt;
&lt;li&gt;
Save Import Steps 
&lt;/li&gt;
&lt;li&gt;
Schedule imports for a certain time and day 
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Pricing
&lt;/h3&gt;
&lt;p&gt;
You can buy a single domain license of CMSImport. With a single domain license you
are allowed to use&amp;#160; CMSImport PRO for a single domain and all subdomains, such
as www.example.com, accept.example.com, and local.example.com. 
&lt;/p&gt;
&lt;p&gt;
We also have a Enterprise license available. With an Enterprise license you are allowed
to install the CMSImport PRO on unlimited production web servers, and use it for unlimited
Umbraco instances within the Enterprise.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
A single domain license will be available for&amp;#160; &lt;strong&gt;99 Euro&lt;/strong&gt;, an enterpise
license for &lt;strong&gt;389 euro. &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
When you buy a license you’ll get free updates within 90 days of purchase and&amp;#160;
free updates for all minor releases within a major release.&amp;#160; For example, if
you purchased a&amp;#160; 1.0 version of CMSImport, you get free updates of all 1.x versions
through our &lt;a href="http://www.cmsimport.com/clientarea.aspx" target="_blank"&gt;client
area&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Special 1.0 offer.&lt;/strong&gt;When you buy the 1.0 release you’ll get a free
update to 2.x. &lt;strong&gt;This is a 1.0 offer only!&lt;/strong&gt;
&lt;/p&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;What’s more in this release?
&lt;/h3&gt;
&lt;p&gt;
Several issues are solved in this release(both in the free and Pro release):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&amp;quot;item with the same key already added&amp;quot; error when using duplicate column
names 
&lt;/li&gt;
&lt;li&gt;
Automapping column names 
&lt;/li&gt;
&lt;li&gt;
The imported document creator is not always the administrator anymore. It's using
the logged in user now. When you schedule an import you can select the user that should
be used as the creator of the document 
&lt;/li&gt;
&lt;li&gt;
Special characters in CSV are now supported, we’ve changed the reader from ANSI text
to Unicode 
&lt;/li&gt;
&lt;li&gt;
Sometimes CSV replaced spaces with empty strings, this is solved now 
&lt;/li&gt;
&lt;li&gt;
With member import you can now merge any member property into the template. Simply
surround the member property with [#(property here)] 
&lt;/li&gt;
&lt;li&gt;
Using a renamed Umbraco folder. This is possible now, although it will be better to
change it after install, otherwise you have to install manually. 
&lt;/li&gt;
&lt;li&gt;
We’ve removed the limitation to allow only one DataAdapter. We are thinking to build
a DataAdapter pack which contains adapters to import from wordpress, Rss, Outlook,
excel etc. These adapters will be available for free in the Commercial Edition and
for a small fee for the Free edition. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Roadmap
&lt;/h3&gt;
&lt;p&gt;
In the 1.x version we will add the following functionality:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FieldAdapters.&lt;/strong&gt; Sounds boring but this is a big thing. When you import
data now, sometimes the import will fail. For example if you import boolean as text
(true/false) and want to store that in a True/False field in Umbraco it will fail.
Umbraco expects that the value will be 0/1. FieldAdapters will solve this problem.
If a insert of data fails. CMSImport will check if 1 o more FieldAdapters are available
to convert the data in the right format. This will be added to version 1.1 which must
be ready before CodeGarden 2010. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dictionary Import&lt;/strong&gt;. Need I say more? 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;b&gt;Hierarchical &lt;/b&gt;imports&lt;/strong&gt;(PRO only). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In the 2.x version we will add the following functionality:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;b&gt;Hierarchical &lt;/b&gt;import support in Data Adapters&lt;/strong&gt;. Not the same
as the 1.x Hierarchical&lt;strong&gt; &lt;/strong&gt;import feature ;-) 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export/import definitions (PRO only)&lt;/strong&gt;. An easy way to deploy Import
definitions 
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;More Info
&lt;/h3&gt;
&lt;p&gt;
For more info, download, or purchase you’ll go to &lt;a title="http://www.cmsimport.com/" href="http://www.cmsimport.com/"&gt;http://www.cmsimport.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=90ffa866-c315-42be-9d32-bcf85c20e6bd" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,90ffa866-c315-42be-9d32-bcf85c20e6bd.aspx</comments>
      <category>CMSImport</category>
      <category>Package</category>
      <category>UmbImport</category>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=ca001b5a-93d9-456c-9b82-5b345d5a1b80</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,ca001b5a-93d9-456c-9b82-5b345d5a1b80.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,ca001b5a-93d9-456c-9b82-5b345d5a1b80.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ca001b5a-93d9-456c-9b82-5b345d5a1b80</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Just a small blogpost to announce that I’ve just made a new release of the Package
Action Contrib project. The following actions are added to the project:
</p>
        <ul>
          <li>
AddConfigurationSection 
</li>
          <li>
PermissionForApp 
</li>
          <li>
AddLanguageFileKey 
</li>
          <li>
MoveFile 
</li>
          <li>
UpdateAppTree 
</li>
        </ul>
        <p>
You can download the new release and documentation from <a href="http://packageactioncontrib.codeplex.com/" target="_blank">codeplex</a>.
I’ve also updated the WIKI page on <a title="Umbraco" href="http://our.umbraco.org/wiki/reference/packaging/package-actions/community-made-package-actions" target="_blank">our.umbraco.org</a>.
</p>
        <p>
          <br />
Many thanks to the contributors of this release, Simon Dingley, Chris Houston, Dirk
de Grave and Søren Spelling Lund for submitting their code!
</p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=ca001b5a-93d9-456c-9b82-5b345d5a1b80" />
      </body>
      <title>Package Action Contrib 1.0.4</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,ca001b5a-93d9-456c-9b82-5b345d5a1b80.aspx</guid>
      <link>http://www.richardsoeteman.net/2010/02/03/PackageActionContrib104.aspx</link>
      <pubDate>Wed, 03 Feb 2010 15:45:02 GMT</pubDate>
      <description>&lt;p&gt;
Just a small blogpost to announce that I’ve just made a new release of the Package
Action Contrib project. The following actions are added to the project:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
AddConfigurationSection 
&lt;/li&gt;
&lt;li&gt;
PermissionForApp 
&lt;/li&gt;
&lt;li&gt;
AddLanguageFileKey 
&lt;/li&gt;
&lt;li&gt;
MoveFile 
&lt;/li&gt;
&lt;li&gt;
UpdateAppTree 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You can download the new release and documentation from &lt;a href="http://packageactioncontrib.codeplex.com/" target="_blank"&gt;codeplex&lt;/a&gt;.
I’ve also updated the WIKI page on &lt;a title="Umbraco" href="http://our.umbraco.org/wiki/reference/packaging/package-actions/community-made-package-actions" target="_blank"&gt;our.umbraco.org&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
Many thanks to the contributors of this release, Simon Dingley, Chris Houston, Dirk
de Grave and Søren Spelling Lund for submitting their code!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=ca001b5a-93d9-456c-9b82-5b345d5a1b80" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,ca001b5a-93d9-456c-9b82-5b345d5a1b80.aspx</comments>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=24e1d561-1f6c-4411-bd62-584023d31df7</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,24e1d561-1f6c-4411-bd62-584023d31df7.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,24e1d561-1f6c-4411-bd62-584023d31df7.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=24e1d561-1f6c-4411-bd62-584023d31df7</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This <a href="http://our.umbraco.org/forum/developers/extending-umbraco/6203-Add-new-parameter-types-to-Macros?p=0#comment22398" target="_blank">forum
post</a>  triggered me to share some code that I had. A while back I was building
a site which  let the customers define their own custom overviews One requirement
was that users could define the sort by property . To do this you can use the property
picker but it wasn’t friendly enough for my case so I ended up building a custom macro
parameter type. 
</p>
        <p>
To start you need to create a new class library and add references to the following
assemblies:
</p>
        <ul>
          <li>
Businesslogic 
</li>
          <li>
Cms 
</li>
          <li>
Interfaces 
</li>
          <li>
            <a title="Umbraco" href="http://www.umbraco.org." target="_blank">Umbraco</a>
          </li>
          <li>
System.web 
</li>
        </ul>
        <p>
In the example below I’ve created a class that inherits from dropdownlist. This was
the easiest way since I needed a dropdownlist and didn’t want to play with the control
tree, Now more important is that this class inherits from the <em>IMacroGuiRendering</em> Interface. 
This add two properties ShowCaption, to show the caption on the parameters tab and
more important value which holds the selected value .  
</p>
        <div class="csharpcode">
          <pre>
            <span class="lnum"> 1: </span>
            <span class="kwrd">using</span> System;</pre>
          <pre>
            <span class="lnum"> 2: </span>
            <span class="kwrd">using</span> System.Collections.Generic;</pre>
          <pre>
            <span class="lnum"> 3: </span>
            <span class="kwrd">using</span> System.Text;</pre>
          <pre>
            <span class="lnum"> 4: </span>
            <span class="kwrd">using</span> System.Web.UI.WebControls;</pre>
          <pre>
            <span class="lnum"> 5: </span>
            <span class="kwrd">using</span> umbraco.interfaces;</pre>
          <pre>
            <span class="lnum"> 6: </span> </pre>
          <pre>
            <span class="lnum"> 7: </span>
            <span class="kwrd">namespace</span> MacroRenderDemo</pre>
          <pre>
            <span class="lnum"> 8: </span>{</pre>
          <pre>
            <span class="lnum"> 9: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">class</span> OrderBy
: DropDownList, IMacroGuiRendering</pre>
          <pre>
            <span class="lnum"> 10: </span> {</pre>
          <pre>
            <span class="lnum"> 11: </span>
            <span class="kwrd">protected</span>
            <span class="kwrd">override</span>
            <span class="kwrd">void</span> OnLoad(EventArgs
e)</pre>
          <pre>
            <span class="lnum"> 12: </span> {</pre>
          <pre>
            <span class="lnum"> 13: </span>
            <span class="kwrd">base</span>.OnLoad(e);</pre>
          <pre>
            <span class="lnum"> 14: </span>
            <span class="kwrd">if</span> (<span class="kwrd">this</span>.Items.Count
== 0)</pre>
          <pre>
            <span class="lnum"> 15: </span> {</pre>
          <pre>
            <span class="lnum"> 16: </span>
            <span class="kwrd">this</span>.Items.Add(<span class="kwrd">new</span> ListItem(<span class="str">"Title"</span>, <span class="str">"nodeName"</span>));</pre>
          <pre>
            <span class="lnum"> 17: </span>
            <span class="kwrd">this</span>.Items.Add(<span class="kwrd">new</span> ListItem(<span class="str">"Date"</span>, <span class="str">"createDate"</span>));</pre>
          <pre>
            <span class="lnum"> 18: </span> }</pre>
          <pre>
            <span class="lnum"> 19: </span> }</pre>
          <pre>
            <span class="lnum"> 20: </span> </pre>
          <pre>
            <span class="lnum"> 21: </span>
            <span class="preproc">#region</span> IMacroGuiRendering
Members</pre>
          <pre>
            <span class="lnum"> 22: </span> </pre>
          <pre>
            <span class="lnum"> 23: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">bool</span> ShowCaption</pre>
          <pre>
            <span class="lnum"> 24: </span> {</pre>
          <pre>
            <span class="lnum"> 25: </span> get { <span class="kwrd">return</span><span class="kwrd">true</span>;
}</pre>
          <pre>
            <span class="lnum"> 26: </span> }</pre>
          <pre>
            <span class="lnum"> 27: </span> </pre>
          <pre>
            <span class="lnum"> 28: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">string</span> Value</pre>
          <pre>
            <span class="lnum"> 29: </span> {</pre>
          <pre>
            <span class="lnum"> 30: </span> get</pre>
          <pre>
            <span class="lnum"> 31: </span> {</pre>
          <pre>
            <span class="lnum"> 32: </span>
            <span class="kwrd">return</span>
            <span class="kwrd">this</span>.SelectedValue;</pre>
          <pre>
            <span class="lnum"> 33: </span> }</pre>
          <pre>
            <span class="lnum"> 34: </span> set</pre>
          <pre>
            <span class="lnum"> 35: </span> {</pre>
          <pre>
            <span class="lnum"> 36: </span>
            <span class="kwrd">this</span>.SelectedValue
= <span class="kwrd">value</span>;</pre>
          <pre>
            <span class="lnum"> 37: </span> }</pre>
          <pre>
            <span class="lnum"> 38: </span> }</pre>
          <pre>
            <span class="lnum"> 39: </span> </pre>
          <pre>
            <span class="lnum"> 40: </span>
            <span class="preproc">#endregion</span>
          </pre>
          <pre>
            <span class="lnum"> 41: </span> }</pre>
          <pre>
            <span class="lnum"> 42: </span>}</pre>
        </div>
        <style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
When you build the project and add the binary into the bin folder of your Umbraco
site you still can’t select the new type from the parameter type list. First we need
to register the class  in the database. Below you’ll see the database table that
holds all the Macro property types.
</p>
        <p>
          <img title="dbrecords" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="378" alt="dbrecords" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Createacustommacroparametertype_1212C/dbrecords_25180f92-f0b8-4354-9f5c-704b8160735b.jpg" width="881" border="0" /> 
</p>
        <p>
It is important that you add the Assemblyname  including the namespace to the
macroPropertyTypeRenderAssembly column and add the name of your class to the 
macroPropertyTypeRenderAssembly column . 
</p>
        <p>
Now we can use the parameter in our macro’s
</p>
        <p>
          <img title="parameters" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="474" alt="parameters" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Createacustommacroparametertype_1212C/parameters_5296818b-a8b7-42b3-9a5a-eb9b46a229da.jpg" width="953" border="0" />
        </p>
        <p>
and off course we can now use the new parameter in our template when we select the
macro
</p>
        <p>
          <img title="InsertMacro" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="557" alt="InsertMacro" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Createacustommacroparametertype_1212C/InsertMacro_2202d017-5aa8-4afc-a633-6f67b2390cb6.jpg" width="472" border="0" />
        </p>
        <p>
Another example how flexible Umbraco is. If a requirement isn’t available out of the
box, usuallyall it takes is to implement an interface and write a few lines of code.
</p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=24e1d561-1f6c-4411-bd62-584023d31df7" />
      </body>
      <title>Create a custom macro parameter type</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,24e1d561-1f6c-4411-bd62-584023d31df7.aspx</guid>
      <link>http://www.richardsoeteman.net/2010/01/04/CreateACustomMacroParameterType.aspx</link>
      <pubDate>Mon, 04 Jan 2010 21:37:53 GMT</pubDate>
      <description>&lt;p&gt;
This &lt;a href="http://our.umbraco.org/forum/developers/extending-umbraco/6203-Add-new-parameter-types-to-Macros?p=0#comment22398" target="_blank"&gt;forum
post&lt;/a&gt;&amp;#160; triggered me to share some code that I had. A while back I was building
a site which&amp;#160; let the customers define their own custom overviews One requirement
was that users could define the sort by property . To do this you can use the property
picker but it wasn’t friendly enough for my case so I ended up building a custom macro
parameter type. 
&lt;/p&gt;
&lt;p&gt;
To start you need to create a new class library and add references to the following
assemblies:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Businesslogic 
&lt;/li&gt;
&lt;li&gt;
Cms 
&lt;/li&gt;
&lt;li&gt;
Interfaces 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Umbraco" href="http://www.umbraco.org." target="_blank"&gt;Umbraco&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
System.web 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In the example below I’ve created a class that inherits from dropdownlist. This was
the easiest way since I needed a dropdownlist and didn’t want to play with the control
tree, Now more important is that this class inherits from the &lt;em&gt;IMacroGuiRendering&lt;/em&gt; Interface.&amp;#160;
This add two properties ShowCaption, to show the caption on the parameters tab and
more important value which holds the selected value .&amp;#160; 
&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; umbraco.interfaces;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; MacroRenderDemo&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; OrderBy
: DropDownList, IMacroGuiRendering&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnLoad(EventArgs
e)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; &lt;span class="kwrd"&gt;base&lt;/span&gt;.OnLoad(e);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Items.Count
== 0)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Items.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ListItem(&lt;span class="str"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;nodeName&amp;quot;&lt;/span&gt;));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Items.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ListItem(&lt;span class="str"&gt;&amp;quot;Date&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;createDate&amp;quot;&lt;/span&gt;));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; &lt;span class="preproc"&gt;#region&lt;/span&gt; IMacroGuiRendering
Members&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; ShowCaption&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt; get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;
}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Value&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 29: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 30: &lt;/span&gt; get&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 31: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 32: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.SelectedValue;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 33: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 34: &lt;/span&gt; set&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 35: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 36: &lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.SelectedValue
= &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 37: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 38: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 39: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 40: &lt;/span&gt; &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 41: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 42: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
When you build the project and add the binary into the bin folder of your Umbraco
site you still can’t select the new type from the parameter type list. First we need
to register the class&amp;#160; in the database. Below you’ll see the database table that
holds all the Macro property types.
&lt;/p&gt;
&lt;p&gt;
&lt;img title="dbrecords" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="378" alt="dbrecords" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Createacustommacroparametertype_1212C/dbrecords_25180f92-f0b8-4354-9f5c-704b8160735b.jpg" width="881" border="0" /&gt;&amp;#160;
&lt;/p&gt;
&lt;p&gt;
It is important that you add the Assemblyname&amp;#160; including the namespace to the
macroPropertyTypeRenderAssembly column and add the name of your class to the&amp;#160;
macroPropertyTypeRenderAssembly column . 
&lt;/p&gt;
&lt;p&gt;
Now we can use the parameter in our macro’s
&lt;/p&gt;
&lt;p&gt;
&lt;img title="parameters" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="474" alt="parameters" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Createacustommacroparametertype_1212C/parameters_5296818b-a8b7-42b3-9a5a-eb9b46a229da.jpg" width="953" border="0" /&gt; 
&lt;/p&gt;
&lt;p&gt;
and off course we can now use the new parameter in our template when we select the
macro
&lt;/p&gt;
&lt;p&gt;
&lt;img title="InsertMacro" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="557" alt="InsertMacro" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Createacustommacroparametertype_1212C/InsertMacro_2202d017-5aa8-4afc-a633-6f67b2390cb6.jpg" width="472" border="0" /&gt; 
&lt;/p&gt;
&lt;p&gt;
Another example how flexible Umbraco is. If a requirement isn’t available out of the
box, usuallyall it takes is to implement an interface and write a few lines of code.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=24e1d561-1f6c-4411-bd62-584023d31df7" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,24e1d561-1f6c-4411-bd62-584023d31df7.aspx</comments>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=5cf8a3ee-a946-4802-9cea-a8acac814a97</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,5cf8a3ee-a946-4802-9cea-a8acac814a97.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,5cf8a3ee-a946-4802-9cea-a8acac814a97.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=5cf8a3ee-a946-4802-9cea-a8acac814a97</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Let’s start with wishing you all the best for 2010. 2009 was an insane year for me,
I had given myself one year  being successful in business running my own <a title="Umbraco" href="http://www.umbraco.org." target="_blank">Umbraco</a> 
projects instead of being a .net contractor. That turned out great, I’ve got a lot
of new customers, have build a few great sites for my customers  and did a few
Umbraco consulting jobs. So now it’s time to make plans for 2010.  First thing
is that I’m moving to a real office instead of working from home. I’m really excited
about this because I’m moving to an office building with lots of small companies,
I think that’s really inspiring. 
</p>
        <p>
When I’ve started investigating Umbraco back in 2008 we had a small amount of companies
in the Netherlands (mostly freelancers) that where building websites based on Umbraco.
Nowadays I see new companies that build Umbraco websites every week, not only small
shops but also really big agencies. For this year my focus will be on helping companies
(worldwide) being successful implementing Umbraco sites for their clients by offering
consultancy services and custom package development  instead of building sites
from front to end.
</p>
        <p>
As you might know I’m also working for a long time on <a href="http://umbimport.soetemansoftware.nl/" target="_blank">UmbImport
PRO</a>. My plan was to release this package last year. It’s the top prio on my todolist
for Q1 this year. Also another package will see the light this year, UmbLinkChecker.
As the name says this will be a package that checks every link in your published site,
not only in content but also hard coded links in your templates etc., I will build
a free and Pro version. Since Umbraco has more than 75000 active installs I think
it’s profitable to build commercial packages for Umbraco and we will see more and
more commercial packages from different vendors. Hope the Umbraco store will be back
up in 2010 and filled with great products.
</p>
        <p>
The last year I couldn’t find enough time to blog or write WIKI’s and helping the
community with their problems on the forum. I’m hoping this year that will change,
since I’ve got a lot of info that I’d like to share. 
</p>
        <p>
Have a great 2010!
</p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=5cf8a3ee-a946-4802-9cea-a8acac814a97" />
      </body>
      <title>Plans for 2010</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,5cf8a3ee-a946-4802-9cea-a8acac814a97.aspx</guid>
      <link>http://www.richardsoeteman.net/2010/01/02/PlansFor2010.aspx</link>
      <pubDate>Sat, 02 Jan 2010 09:34:32 GMT</pubDate>
      <description>&lt;p&gt;
Let’s start with wishing you all the best for 2010. 2009 was an insane year for me,
I had given myself one year&amp;#160; being successful in business running my own &lt;a title="Umbraco" href="http://www.umbraco.org." target="_blank"&gt;Umbraco&lt;/a&gt;&amp;#160;
projects instead of being a .net contractor. That turned out great, I’ve got a lot
of new customers, have build a few great sites for my customers&amp;#160; and did a few
Umbraco consulting jobs. So now it’s time to make plans for 2010.&amp;#160; First thing
is that I’m moving to a real office instead of working from home. I’m really excited
about this because I’m moving to an office building with lots of small companies,
I think that’s really inspiring. 
&lt;/p&gt;
&lt;p&gt;
When I’ve started investigating Umbraco back in 2008 we had a small amount of companies
in the Netherlands (mostly freelancers) that where building websites based on Umbraco.
Nowadays I see new companies that build Umbraco websites every week, not only small
shops but also really big agencies. For this year my focus will be on helping companies
(worldwide) being successful implementing Umbraco sites for their clients by offering
consultancy services and custom package development&amp;#160; instead of building sites
from front to end.
&lt;/p&gt;
&lt;p&gt;
As you might know I’m also working for a long time on &lt;a href="http://umbimport.soetemansoftware.nl/" target="_blank"&gt;UmbImport
PRO&lt;/a&gt;. My plan was to release this package last year. It’s the top prio on my todolist
for Q1 this year. Also another package will see the light this year, UmbLinkChecker.
As the name says this will be a package that checks every link in your published site,
not only in content but also hard coded links in your templates etc., I will build
a free and Pro version. Since Umbraco has more than 75000 active installs I think
it’s profitable to build commercial packages for Umbraco and we will see more and
more commercial packages from different vendors. Hope the Umbraco store will be back
up in 2010 and filled with great products.
&lt;/p&gt;
&lt;p&gt;
The last year I couldn’t find enough time to blog or write WIKI’s and helping the
community with their problems on the forum. I’m hoping this year that will change,
since I’ve got a lot of info that I’d like to share. 
&lt;/p&gt;
&lt;p&gt;
Have a great 2010!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=5cf8a3ee-a946-4802-9cea-a8acac814a97" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,5cf8a3ee-a946-4802-9cea-a8acac814a97.aspx</comments>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=43d3de2a-bec8-4a85-ae43-6e3f8375aff9</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,43d3de2a-bec8-4a85-ae43-6e3f8375aff9.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,43d3de2a-bec8-4a85-ae43-6e3f8375aff9.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=43d3de2a-bec8-4a85-ae43-6e3f8375aff9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Usually I develop websites that require login functionality for one or more roles,
now this is all cool for my clients but it’s a nightmare for me because I simply can’t
remember all the login and passwords. To make my life and other developers life’s
a little bit easier I’ve developed the Memberswitcher package. This package let's
you easily login members and switch between members by simply selecting a member from
a pull down list instead of enter the username and password. It’s using a lower level
asp.net membership method to login the member based on the username and is fully compatible
with all the asp.net Membership controls. Also the methods to fill the Membergroup
and Member pulldowns are using Membership methods, so it will work with the <a title="Umbraco" href="http://www.umbraco.org." target="_blank">Umbraco</a> members
but also with other membership providers.
</p>
        <p>
Once installed, an extra macro is added to the list. In your template select the Memberswitcher
macro, optional specify a node to redirect to once logged in and that’s it. 
<br />
&lt;umbraco:Macro RedirectToNodeAfterLogin="" Alias="MemberSwitcher"
runat="server"&gt;&lt;/umbraco:Macro&gt;
</p>
        <p>
When you visit the website you’ll see the control in action. First select the Membergroup
and Member.
</p>
        <p>
          <img title="membershwitcher_1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="431" alt="membershwitcher_1" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Memberswitcherpackage_7946/membershwitcher_1_d79dacdd-1d35-41cb-afef-540edf3b3c4e.png" width="923" border="0" />  
<br />
When you click the Login selected member button you’ll be logged in as you can see
in the following screenshot that is using the asp.net LoginStatus control.
</p>
        <p>
          <img title="membershwitcher_2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="438" alt="membershwitcher_2" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Memberswitcherpackage_7946/membershwitcher_2_2399ebbd-fa92-4774-9eff-12e027e19f70.png" width="906" border="0" />
        </p>
        <p>
Needless to say: 
<br /><strong>DO NOT USE THIS PACKAGE IN A PRODUCTION ENVIRONMENT!! </strong></p>
        <p>
Download the package <a href="http://our.umbraco.org/projects/memberswitcher" target="_blank">here</a></p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=43d3de2a-bec8-4a85-ae43-6e3f8375aff9" />
      </body>
      <title>Memberswitcher package</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,43d3de2a-bec8-4a85-ae43-6e3f8375aff9.aspx</guid>
      <link>http://www.richardsoeteman.net/2009/12/27/MemberswitcherPackage.aspx</link>
      <pubDate>Sun, 27 Dec 2009 07:37:27 GMT</pubDate>
      <description>&lt;p&gt;
Usually I develop websites that require login functionality for one or more roles,
now this is all cool for my clients but it’s a nightmare for me because I simply can’t
remember all the login and passwords. To make my life and other developers life’s
a little bit easier I’ve developed the Memberswitcher package. This package let's
you easily login members and switch between members by simply selecting a member from
a pull down list instead of enter the username and password. It’s using a lower level
asp.net membership method to login the member based on the username and is fully compatible
with all the asp.net Membership controls. Also the methods to fill the Membergroup
and Member pulldowns are using Membership methods, so it will work with the &lt;a title="Umbraco" href="http://www.umbraco.org." target="_blank"&gt;Umbraco&lt;/a&gt; members
but also with other membership providers.
&lt;/p&gt;
&lt;p&gt;
Once installed, an extra macro is added to the list. In your template select the Memberswitcher
macro, optional specify a node to redirect to once logged in and that’s it. 
&lt;br /&gt;
&amp;lt;umbraco:Macro RedirectToNodeAfterLogin=&amp;quot;&amp;quot; Alias=&amp;quot;MemberSwitcher&amp;quot;
runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/umbraco:Macro&amp;gt;
&lt;/p&gt;
&lt;p&gt;
When you visit the website you’ll see the control in action. First select the Membergroup
and Member.
&lt;/p&gt;
&lt;p&gt;
&lt;img title="membershwitcher_1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="431" alt="membershwitcher_1" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Memberswitcherpackage_7946/membershwitcher_1_d79dacdd-1d35-41cb-afef-540edf3b3c4e.png" width="923" border="0" /&gt;&amp;#160; 
&lt;br /&gt;
When you click the Login selected member button you’ll be logged in as you can see
in the following screenshot that is using the asp.net LoginStatus control.
&lt;/p&gt;
&lt;p&gt;
&lt;img title="membershwitcher_2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="438" alt="membershwitcher_2" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/Memberswitcherpackage_7946/membershwitcher_2_2399ebbd-fa92-4774-9eff-12e027e19f70.png" width="906" border="0" /&gt; 
&lt;/p&gt;
&lt;p&gt;
Needless to say: 
&lt;br /&gt;
&lt;strong&gt;DO NOT USE THIS PACKAGE IN A PRODUCTION ENVIRONMENT!! &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Download the package &lt;a href="http://our.umbraco.org/projects/memberswitcher" target="_blank"&gt;here&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=43d3de2a-bec8-4a85-ae43-6e3f8375aff9" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,43d3de2a-bec8-4a85-ae43-6e3f8375aff9.aspx</comments>
      <category>Package</category>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=bdc34020-7c06-49ca-ae62-9c1b4cbbacbd</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,bdc34020-7c06-49ca-ae62-9c1b4cbbacbd.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,bdc34020-7c06-49ca-ae62-9c1b4cbbacbd.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=bdc34020-7c06-49ca-ae62-9c1b4cbbacbd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A few weeks back I had this  issue when deploying a site. I needed to modify
a documenttype to add a few properties and after a few minutes an error was raised
and the only thing I could see when I deleted the property and saved the documenttype
again, or opened a document based on that document type was the following error message
(thanks Dan for the picture).  
</p>
        <p>
          <img title="error-delete (3)" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="345" alt="error-delete (3)" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/ObjectReferenceNotSetafteraddingordeleti_A407/error-delete%20(3)_2c661d11-e7ab-4a49-adc1-ab3776eb221a.jpg" width="640" border="0" />
        </p>
        <p>
Did I make a backup? ehh no, so I needed to fix this. Okay let’s look at  the
error message again. An Object reference not set error is thrown while deleting the
property. Love that <a title="Umbraco" href="http://www.umbraco.org." target="_blank">Umbraco</a> is
open source and I can have a look at the source code. Below you see the method that
is responsible for deleting the property from the documenttype.
</p>
        <div class="csharpcode">
          <pre>
            <span class="lnum"> 1: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">void</span> delete()</pre>
          <pre>
            <span class="lnum"> 2: </span> {</pre>
          <pre>
            <span class="lnum"> 3: </span>
            <span class="rem">// flush cache</span>
          </pre>
          <pre>
            <span class="lnum"> 4: </span> FlushCache();</pre>
          <pre>
            <span class="lnum"> 5: </span> </pre>
          <pre>
            <span class="lnum"> 6: </span>
            <span class="rem">// Delete all properties of
propertytype</span>
          </pre>
          <pre>
            <span class="lnum"> 7: </span>
            <span class="kwrd">foreach</span>(Content c <span class="kwrd">in</span> Content.getContentOfContentType(<span class="kwrd">new</span> ContentType(_contenttypeid)))</pre>
          <pre>
            <span class="lnum"> 8: </span> {</pre>
          <pre>
            <span class="lnum"> 9: </span> c.getProperty(<span class="kwrd">this</span>).delete();</pre>
          <pre>
            <span class="lnum"> 10: </span> }</pre>
          <pre>
            <span class="lnum"> 11: </span>
            <span class="rem">// Delete PropertyType ..</span>
          </pre>
          <pre>
            <span class="lnum"> 12: </span> SqlHelper.ExecuteNonQuery(<span class="str">"Delete
from cmsPropertyType where id = "</span> + <span class="kwrd">this</span>.Id);</pre>
          <pre>
            <span class="lnum"> 13: </span>
            <span class="kwrd">this</span>.InvalidateCache();</pre>
          <pre>
            <span class="lnum"> 14: </span> }</pre>
        </div>
        <style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
As you might have seen there is no check for null values on the 9 (c.getProperty(<span class="kwrd">this</span>).delete();).
This is what caused the error while deleting the property. I assume it's sort of the
same issue when opening a document. Now that I know this I can work on a solution.
As I mentioned earlier, I needed to add properties to the document type. Below you
find the code I’ve used to do that. 
</p>
        <div class="csharpcode">
          <pre>
            <span class="lnum"> 1: </span> ContentType ct = ContentType.GetByAlias(<span class="str">"_advertiser"</span>);</pre>
          <pre>
            <span class="lnum"> 2: </span>
            <span class="kwrd">foreach</span> (PropertyType
i <span class="kwrd">in</span> ct.PropertyTypes)</pre>
          <pre>
            <span class="lnum"> 3: </span> {</pre>
          <pre>
            <span class="lnum"> 4: </span>
            <span class="kwrd">if</span> (i.Alias == <span class="str">"linkToSpecial"</span>)</pre>
          <pre>
            <span class="lnum"> 5: </span> {</pre>
          <pre>
            <span class="lnum"> 6: </span>
            <span class="rem">// Delete all properties of
propertytype</span>
          </pre>
          <pre>
            <span class="lnum"> 7: </span>
            <span class="kwrd">foreach</span> (umbraco.cms.businesslogic.Content
c <span class="kwrd">in</span> umbraco.cms.businesslogic.Content.getContentOfContentType(ct))</pre>
          <pre>
            <span class="lnum"> 8: </span> {</pre>
          <pre>
            <span class="lnum"> 9: </span>
            <span class="kwrd">if</span> (c.getProperty(<span class="str">"linkToSpecial"</span>)
== <span class="kwrd">null</span>)</pre>
          <pre>
            <span class="lnum"> 10: </span> {</pre>
          <pre>
            <span class="lnum"> 11: </span> c.addProperty(i, c.Version);</pre>
          <pre>
            <span class="lnum"> 12: </span> c.Save();</pre>
          <pre>
            <span class="lnum"> 13: </span> }</pre>
          <pre>
            <span class="lnum"> 14: </span> }</pre>
          <pre>
            <span class="lnum"> 15: </span>
            <span class="rem">//Remove comment to delete
the property from the doctype</span>
          </pre>
          <pre>
            <span class="lnum"> 16: </span>
            <span class="rem">//i.delete();</span>
          </pre>
          <pre>
            <span class="lnum"> 17: </span>
            <span class="rem">//ct.Save();</span>
          </pre>
          <pre>
            <span class="lnum"> 18: </span> }</pre>
          <pre>
            <span class="lnum"> 19: </span> }</pre>
        </div>
        <style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
As you can see, I’ve used a  few hard coded values. <strong>_advertiser</strong> is
the alias of the document type and <strong>linkToSpecial</strong> is the alias of
the property that I wanted to add on the Document type. If you want to delete the
property  remove  lines 9-13 and remove the comment on line 16 and 17. You
can use this code in a usercontrol and use that usercontrol as a dashboard control. <strong>Needless
to say, this code comes without a warranty.</strong></p>
        <p>
I’ve added <a href="http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=24871" target="_blank">the
issue to codeplex</a>, please vote for it!. Hope this post is a nice work around for
the issue.
</p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=bdc34020-7c06-49ca-ae62-9c1b4cbbacbd" />
      </body>
      <title>Fix Object reference not set error after adding or deleting a document property</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,bdc34020-7c06-49ca-ae62-9c1b4cbbacbd.aspx</guid>
      <link>http://www.richardsoeteman.net/2009/10/27/FixObjectReferenceNotSetErrorAfterAddingOrDeletingADocumentProperty.aspx</link>
      <pubDate>Tue, 27 Oct 2009 20:06:12 GMT</pubDate>
      <description>&lt;p&gt;
A few weeks back I had this&amp;#160; issue when deploying a site. I needed to modify
a documenttype to add a few properties and after a few minutes an error was raised
and the only thing I could see when I deleted the property and saved the documenttype
again, or opened a document based on that document type was the following error message
(thanks Dan for the picture).&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
&lt;img title="error-delete (3)" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="345" alt="error-delete (3)" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/ObjectReferenceNotSetafteraddingordeleti_A407/error-delete%20(3)_2c661d11-e7ab-4a49-adc1-ab3776eb221a.jpg" width="640" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
Did I make a backup? ehh no, so I needed to fix this. Okay let’s look at&amp;#160; the
error message again. An Object reference not set error is thrown while deleting the
property. Love that &lt;a title="Umbraco" href="http://www.umbraco.org." target="_blank"&gt;Umbraco&lt;/a&gt; is
open source and I can have a look at the source code. Below you see the method that
is responsible for deleting the property from the documenttype.
&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; delete()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; &lt;span class="rem"&gt;// flush cache&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; FlushCache();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; &lt;span class="rem"&gt;// Delete all properties of
propertytype&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt; &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(Content c &lt;span class="kwrd"&gt;in&lt;/span&gt; Content.getContentOfContentType(&lt;span class="kwrd"&gt;new&lt;/span&gt; ContentType(_contenttypeid)))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; c.getProperty(&lt;span class="kwrd"&gt;this&lt;/span&gt;).delete();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; &lt;span class="rem"&gt;// Delete PropertyType ..&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; SqlHelper.ExecuteNonQuery(&lt;span class="str"&gt;&amp;quot;Delete
from cmsPropertyType where id = &amp;quot;&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.Id);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.InvalidateCache();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
As you might have seen there is no check for null values on the 9 (c.getProperty(&lt;span class="kwrd"&gt;this&lt;/span&gt;).delete();).
This is what caused the error while deleting the property. I assume it's sort of the
same issue when opening a document. Now that I know this I can work on a solution.
As I mentioned earlier, I needed to add properties to the document type. Below you
find the code I’ve used to do that. 
&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt; ContentType ct = ContentType.GetByAlias(&lt;span class="str"&gt;&amp;quot;_advertiser&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt; &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (PropertyType
i &lt;span class="kwrd"&gt;in&lt;/span&gt; ct.PropertyTypes)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (i.Alias == &lt;span class="str"&gt;&amp;quot;linkToSpecial&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; &lt;span class="rem"&gt;// Delete all properties of
propertytype&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt; &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (umbraco.cms.businesslogic.Content
c &lt;span class="kwrd"&gt;in&lt;/span&gt; umbraco.cms.businesslogic.Content.getContentOfContentType(ct))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (c.getProperty(&lt;span class="str"&gt;&amp;quot;linkToSpecial&amp;quot;&lt;/span&gt;)
== &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; c.addProperty(i, c.Version);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; c.Save();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; &lt;span class="rem"&gt;//Remove comment to delete
the property from the doctype&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt; &lt;span class="rem"&gt;//i.delete();&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; &lt;span class="rem"&gt;//ct.Save();&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
As you can see, I’ve used a&amp;#160; few hard coded values. &lt;strong&gt;_advertiser&lt;/strong&gt; is
the alias of the document type and &lt;strong&gt;linkToSpecial&lt;/strong&gt; is the alias of
the property that I wanted to add on the Document type. If you want to delete the
property&amp;#160; remove&amp;#160; lines 9-13 and remove the comment on line 16 and 17. You
can use this code in a usercontrol and use that usercontrol as a dashboard control. &lt;strong&gt;Needless
to say, this code comes without a warranty.&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
I’ve added &lt;a href="http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=24871" target="_blank"&gt;the
issue to codeplex&lt;/a&gt;, please vote for it!. Hope this post is a nice work around for
the issue.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=bdc34020-7c06-49ca-ae62-9c1b4cbbacbd" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,bdc34020-7c06-49ca-ae62-9c1b4cbbacbd.aspx</comments>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=deef886b-bb23-4fa3-8efd-07bf9c7a4140</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,deef886b-bb23-4fa3-8efd-07bf9c7a4140.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,deef886b-bb23-4fa3-8efd-07bf9c7a4140.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=deef886b-bb23-4fa3-8efd-07bf9c7a4140</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Just a little quick tip. When you install Umbraco v4.0.2.1 (don't know about other
versions) without runway and you publish your site, you will see a blank screen. This
is because the data/umbraco.config file contains the runway site as you can see in
the sample xml below.  
</p>
        <pre class="csharpcode">
          <span class="kwrd">&lt;!</span>
          <span class="html">DOCTYPE</span>
          <span class="attr">umbraco</span>[
&amp;<span class="attr">lt</span>;!<span class="attr">ELEMENT</span><span class="attr">nodes</span><span class="attr">ANY</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;!</span><span class="html">ELEMENT</span><span class="attr">node</span><span class="attr">ANY</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;!</span><span class="html">ATTLIST</span><span class="attr">node</span><span class="attr">id</span><span class="attr">ID</span> #<span class="attr">REQUIRED</span><span class="kwrd">&gt;</span> ]<span class="kwrd">&gt;</span><span class="kwrd">&lt;</span><span class="html">root</span><span class="attr">id</span><span class="kwrd">="-1"</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;</span><span class="html">node</span><span class="attr">id</span><span class="kwrd">="1048"</span><span class="attr">version</span><span class="kwrd">="6f0d47e7-8cf1-43e5-a5ad-c687e0b78331"</span><span class="attr">parentID</span><span class="kwrd">="-1"</span><span class="attr">level</span><span class="kwrd">="1"</span><span class="attr">writerID</span><span class="kwrd">="0"</span><br /><span class="attr">creatorID</span><span class="kwrd">="0"</span><span class="attr">nodeType</span><span class="kwrd">="1045"</span><span class="attr">template</span><span class="kwrd">="1042"</span><span class="attr">sortOrder</span><span class="kwrd">="2"</span><br /><span class="attr">createDate</span><span class="kwrd">="2008-05-02T09:52:36"</span><span class="attr">updateDate</span><span class="kwrd">="2009-02-18T10:19:26"</span><span class="attr">nodeName</span><span class="kwrd">="Runway
Homepage"</span><br /><span class="attr">urlName</span><span class="kwrd">="runway-homepage"</span><span class="attr">writerName</span><span class="kwrd">="Administrator"</span><br /><span class="attr">creatorName</span><span class="kwrd">="Administrator"</span><span class="attr">nodeTypeAlias</span><span class="kwrd">="RunwayHomepage"</span><span class="attr">path</span><span class="kwrd">="-1,1048"</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;</span><span class="html">data</span><span class="attr">alias</span><span class="kwrd">="bodyText"</span><span class="kwrd">&gt;&lt;!</span>[CDATA[<span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>Runway
gives you a bare-bones website that introduces you to a set of 
<br />
well-defined conventions for building an umbraco website.<span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>The
Runway website is very simple in form and provided without any design or functionality. 
<br />
By installing Runway, you<span class="attr">&amp;rsquo;<br /></span>ll begin with a minimal site built on best practices. You<span class="attr">&amp;rsquo;</span>ll
also enjoy the benefits of 
<br />
speaking the same <span class="attr">&amp;ldquo;</span>language<span class="attr">&amp;rdquo;</span><br />
as the rest of the umbraco community by using common properties and naming conventions.<span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;</span><span class="html">p</span><span class="kwrd">&gt;</span>Now
that you know what Runway is, it is time to get started using Runway.<span class="kwrd">&lt;/</span><span class="html">p</span><span class="kwrd">&gt;</span>]]<span class="kwrd">&gt;&lt;/</span><span class="html">data</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;</span><span class="html">data</span><span class="attr">alias</span><span class="kwrd">="siteName"</span><span class="kwrd">&gt;</span>Runway<span class="kwrd">&lt;/</span><span class="html">data</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;</span><span class="html">data</span><span class="attr">alias</span><span class="kwrd">="siteDescription"</span><span class="kwrd">&gt;&lt;!</span>[CDATA[Off
to a great start]]<span class="kwrd">&gt;&lt;/</span><span class="html">data</span><span class="kwrd">&gt;</span> ..................... <span class="kwrd">&lt;/</span><span class="html">node</span><span class="kwrd">&gt;</span><span class="kwrd">&lt;/</span><span class="html">root</span><span class="kwrd">&gt;</span></pre>
        <p>
          <span class="kwrd">Work around for this issue is to republish the entire site first.
I've added this issue to codeplex. <a href="http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=24176" target="_blank">Please
vote here</a>.</span>
        </p>
        <style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=deef886b-bb23-4fa3-8efd-07bf9c7a4140" />
      </body>
      <title>Empty site when using Umbraco v4.0.2.1 without runway</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,deef886b-bb23-4fa3-8efd-07bf9c7a4140.aspx</guid>
      <link>http://www.richardsoeteman.net/2009/08/10/EmptySiteWhenUsingUmbracoV4021WithoutRunway.aspx</link>
      <pubDate>Mon, 10 Aug 2009 18:18:04 GMT</pubDate>
      <description>&lt;p&gt;
Just a little quick tip. When you install Umbraco v4.0.2.1 (don't know about other
versions) without runway and you publish your site, you will see a blank screen. This
is because the data/umbraco.config file contains the runway site as you can see in
the sample xml below.&amp;nbsp; 
&lt;/p&gt;
&lt;pre class=csharpcode&gt;&lt;span class=kwrd&gt;&amp;lt;!&lt;/span&gt;&lt;span class=html&gt;DOCTYPE&lt;/span&gt; &lt;span class=attr&gt;umbraco&lt;/span&gt;[
&amp;amp;&lt;span class=attr&gt;lt&lt;/span&gt;;!&lt;span class=attr&gt;ELEMENT&lt;/span&gt; &lt;span class=attr&gt;nodes&lt;/span&gt; &lt;span class=attr&gt;ANY&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;!&lt;/span&gt;&lt;span class=html&gt;ELEMENT&lt;/span&gt; &lt;span class=attr&gt;node&lt;/span&gt; &lt;span class=attr&gt;ANY&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;!&lt;/span&gt;&lt;span class=html&gt;ATTLIST&lt;/span&gt; &lt;span class=attr&gt;node&lt;/span&gt; &lt;span class=attr&gt;id&lt;/span&gt; &lt;span class=attr&gt;ID&lt;/span&gt; #&lt;span class=attr&gt;REQUIRED&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; ]&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;root&lt;/span&gt; &lt;span class=attr&gt;id&lt;/span&gt;&lt;span class=kwrd&gt;="-1"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;node&lt;/span&gt; &lt;span class=attr&gt;id&lt;/span&gt;&lt;span class=kwrd&gt;="1048"&lt;/span&gt; &lt;span class=attr&gt;version&lt;/span&gt;&lt;span class=kwrd&gt;="6f0d47e7-8cf1-43e5-a5ad-c687e0b78331"&lt;/span&gt; &lt;span class=attr&gt;parentID&lt;/span&gt;&lt;span class=kwrd&gt;="-1"&lt;/span&gt; &lt;span class=attr&gt;level&lt;/span&gt;&lt;span class=kwrd&gt;="1"&lt;/span&gt; &lt;span class=attr&gt;writerID&lt;/span&gt;&lt;span class=kwrd&gt;="0"&lt;/span&gt; 
&lt;br&gt;
&lt;span class=attr&gt;creatorID&lt;/span&gt;&lt;span class=kwrd&gt;="0"&lt;/span&gt; &lt;span class=attr&gt;nodeType&lt;/span&gt;&lt;span class=kwrd&gt;="1045"&lt;/span&gt; &lt;span class=attr&gt;template&lt;/span&gt;&lt;span class=kwrd&gt;="1042"&lt;/span&gt; &lt;span class=attr&gt;sortOrder&lt;/span&gt;&lt;span class=kwrd&gt;="2"&lt;/span&gt; 
&lt;br&gt;
&lt;span class=attr&gt;createDate&lt;/span&gt;&lt;span class=kwrd&gt;="2008-05-02T09:52:36"&lt;/span&gt; &lt;span class=attr&gt;updateDate&lt;/span&gt;&lt;span class=kwrd&gt;="2009-02-18T10:19:26"&lt;/span&gt; &lt;span class=attr&gt;nodeName&lt;/span&gt;&lt;span class=kwrd&gt;="Runway
Homepage"&lt;/span&gt; 
&lt;br&gt;
&lt;span class=attr&gt;urlName&lt;/span&gt;&lt;span class=kwrd&gt;="runway-homepage"&lt;/span&gt; &lt;span class=attr&gt;writerName&lt;/span&gt;&lt;span class=kwrd&gt;="Administrator"&lt;/span&gt; 
&lt;br&gt;
&lt;span class=attr&gt;creatorName&lt;/span&gt;&lt;span class=kwrd&gt;="Administrator"&lt;/span&gt; &lt;span class=attr&gt;nodeTypeAlias&lt;/span&gt;&lt;span class=kwrd&gt;="RunwayHomepage"&lt;/span&gt; &lt;span class=attr&gt;path&lt;/span&gt;&lt;span class=kwrd&gt;="-1,1048"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;data&lt;/span&gt; &lt;span class=attr&gt;alias&lt;/span&gt;&lt;span class=kwrd&gt;="bodyText"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;!&lt;/span&gt;[CDATA[&lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Runway
gives you a bare-bones website that introduces you to a set of 
&lt;br&gt;
well-defined conventions for building an umbraco website.&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;The
Runway website is very simple in form and provided without any design or functionality. 
&lt;br&gt;
By installing Runway, you&lt;span class=attr&gt;&amp;amp;rsquo;&lt;br&gt;
&lt;/span&gt;ll begin with a minimal site built on best practices. You&lt;span class=attr&gt;&amp;amp;rsquo;&lt;/span&gt;ll
also enjoy the benefits of 
&lt;br&gt;
speaking the same &lt;span class=attr&gt;&amp;amp;ldquo;&lt;/span&gt;language&lt;span class=attr&gt;&amp;amp;rdquo;&lt;/span&gt; 
&lt;br&gt;
as the rest of the umbraco community by using common properties and naming conventions.&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Now
that you know what Runway is, it is time to get started using Runway.&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;p&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;]]&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;data&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;data&lt;/span&gt; &lt;span class=attr&gt;alias&lt;/span&gt;&lt;span class=kwrd&gt;="siteName"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;Runway&lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;data&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;&lt;/span&gt;&lt;span class=html&gt;data&lt;/span&gt; &lt;span class=attr&gt;alias&lt;/span&gt;&lt;span class=kwrd&gt;="siteDescription"&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&amp;lt;!&lt;/span&gt;[CDATA[Off
to a great start]]&lt;span class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;data&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; ..................... &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;node&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt; &lt;span class=kwrd&gt;&amp;lt;/&lt;/span&gt;&lt;span class=html&gt;root&lt;/span&gt;&lt;span class=kwrd&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;span class=kwrd&gt;Work around for this issue is to republish the entire site first.
I've added this issue to codeplex. &lt;a href="http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=24176" target=_blank&gt;Please
vote here&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;style type=text/css&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=deef886b-bb23-4fa3-8efd-07bf9c7a4140" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,deef886b-bb23-4fa3-8efd-07bf9c7a4140.aspx</comments>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=79b35431-6f38-43e6-ae34-3a3e428892d5</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,79b35431-6f38-43e6-ae34-3a3e428892d5.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,79b35431-6f38-43e6-ae34-3a3e428892d5.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=79b35431-6f38-43e6-ae34-3a3e428892d5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm very pleased to announce that I finally released the V1 version of UmbImport.
For those of you who don't know what UmbImport is:
</p>
        <p>
UmbImport helps you import content or members from any datasource into <a href="http://www.umbraco.org">Umbraco</a>.
The following datasources are supported by default: 
</p>
        <ul>
          <li>
SQL Server 
</li>
          <li>
CSV file 
</li>
          <li>
XML file 
</li>
        </ul>
        <p>
You can also create your own custom DataAdapter. Check out the following links to
screencasts to see the power of UmbImport.  
</p>
        <ul>
          <li>
            <a href="http://www.richardsoeteman.net/PermaLink,guid,189035af-bbc0-4d3f-8d54-9782c06794e7.aspx">Import
content  </a>
          </li>
          <li>
            <a href="http://www.vimeo.com/3853997">Import members</a>
          </li>
        </ul>
        <p>
The package is added to <a href="http://our.umbraco.org/" target="_blank">our.umbraco.org</a> the
new <a title="Umbraco" href="http://www.umbraco.org" target="_blank">Umbraco</a> community
site , so you can <a href="http://our.umbraco.org/projects/umbimport" target="_blank">download</a> it
there or use the <a href="http://umbimport.soetemansoftware.nl/" target="_blank">UmbImport</a> site.
On <a href="http://our.umbraco.org/" target="_blank">our.umbraco.org</a> you will
find a forum also where you can drop your questions/feature requests/ bugs etc. In
August I will release a manual also. If you find any issues please report it on the
forum or comment on this post.
</p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=79b35431-6f38-43e6-ae34-3a3e428892d5" />
      </body>
      <title>UmbImport V1 released</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,79b35431-6f38-43e6-ae34-3a3e428892d5.aspx</guid>
      <link>http://www.richardsoeteman.net/2009/06/30/UmbImportV1Released.aspx</link>
      <pubDate>Tue, 30 Jun 2009 07:43:08 GMT</pubDate>
      <description>&lt;p&gt;
I'm very pleased to announce that I finally released the V1 version of UmbImport.
For those of you who don't know what UmbImport is:
&lt;/p&gt;
&lt;p&gt;
UmbImport helps you import content or members from any datasource into &lt;a href="http://www.umbraco.org"&gt;Umbraco&lt;/a&gt;.
The following datasources are supported by default: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SQL Server 
&lt;/li&gt;
&lt;li&gt;
CSV file 
&lt;/li&gt;
&lt;li&gt;
XML file 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You can also create your own custom DataAdapter. Check out the following links to
screencasts to see the power of UmbImport.&amp;#160; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.richardsoeteman.net/PermaLink,guid,189035af-bbc0-4d3f-8d54-9782c06794e7.aspx"&gt;Import
content&amp;#160; &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.vimeo.com/3853997"&gt;Import members&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The package is added to &lt;a href="http://our.umbraco.org/" target="_blank"&gt;our.umbraco.org&lt;/a&gt; the
new &lt;a title="Umbraco" href="http://www.umbraco.org" target="_blank"&gt;Umbraco&lt;/a&gt; community
site , so you can &lt;a href="http://our.umbraco.org/projects/umbimport" target="_blank"&gt;download&lt;/a&gt; it
there or use the &lt;a href="http://umbimport.soetemansoftware.nl/" target="_blank"&gt;UmbImport&lt;/a&gt; site.
On &lt;a href="http://our.umbraco.org/" target="_blank"&gt;our.umbraco.org&lt;/a&gt; you will
find a forum also where you can drop your questions/feature requests/ bugs etc. In
August I will release a manual also. If you find any issues please report it on the
forum or comment on this post.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=79b35431-6f38-43e6-ae34-3a3e428892d5" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,79b35431-6f38-43e6-ae34-3a3e428892d5.aspx</comments>
      <category>UmbImport</category>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=ec1b9387-aef3-47c9-86d8-eb9cb917baff</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,ec1b9387-aef3-47c9-86d8-eb9cb917baff.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,ec1b9387-aef3-47c9-86d8-eb9cb917baff.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ec1b9387-aef3-47c9-86d8-eb9cb917baff</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In February I wrote this blogpost which describes the process of how to add a menu
item to the context menu using the Umbraco V4 Event system. In UmbImport PRO I've
used this mechanism. When I was testing this I came across a bug in my code when using
a pagepicker, this was showing an empty tree in the node picker.
</p>
        <p>
 <img height="153" alt="EmptynodePicker" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/UpdateAddingmenuitemsusingtheeventsystem_126B9/EmptynodePicker_273f8b38-a34b-4bb0-80be-d2c832c2a354.jpg" width="301" border="0" /></p>
        <p>
Then I got a little flashback to the level 2 course I attended last November where
Niels told us to check if there was a menu attached to the node (which is not the
case for the pagepicker) before adding menu items to it, otherwise an exception is
thrown what will result in an empty tree. This is what happened in my case. In the
example below I've only added <strong>node.Menu!= </strong><span class="kwrd"><strong>null </strong>check
and now everything is working fine.</span></p>
        <p>
 
</p>
        <div class="csharpcode">
          <pre>
            <span class="lnum"> 1: </span>
            <span class="kwrd">using</span> System;</pre>
          <pre>
            <span class="lnum"> 2: </span>
            <span class="kwrd">using</span> umbraco.BusinessLogic;</pre>
          <pre>
            <span class="lnum"> 3: </span>
            <span class="kwrd">using</span> umbraco.cms.presentation.Trees;</pre>
          <pre>
            <span class="lnum"> 4: </span>
            <span class="kwrd">using</span> umbraco.interfaces;</pre>
          <pre>
            <span class="lnum"> 5: </span> </pre>
          <pre>
            <span class="lnum"> 6: </span>
            <span class="kwrd">namespace</span> UnpublishAction</pre>
          <pre>
            <span class="lnum"> 7: </span>{</pre>
          <pre>
            <span class="lnum"> 8: </span>
            <span class="rem">/// &lt;summary&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 9: </span>
            <span class="rem">/// Add unpublish to the menu
item</span>
          </pre>
          <pre>
            <span class="lnum"> 10: </span>
            <span class="rem">/// &lt;/summary&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 11: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">class</span> AddUnpublishActionEvent
:ApplicationBase</pre>
          <pre>
            <span class="lnum"> 12: </span> {</pre>
          <pre>
            <span class="lnum"> 13: </span>
            <span class="kwrd">public</span> AddUnpublishActionEvent()</pre>
          <pre>
            <span class="lnum"> 14: </span> {</pre>
          <pre>
            <span class="lnum"> 15: </span> BaseContentTree.BeforeNodeRender += <span class="kwrd">new</span> BaseTree.BeforeNodeRenderEventHandler(BaseTree_BeforeNodeRender);</pre>
          <pre>
            <span class="lnum"> 16: </span> }</pre>
          <pre>
            <span class="lnum"> 17: </span> </pre>
          <pre>
            <span class="lnum"> 18: </span>
            <span class="rem">/// &lt;summary&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 19: </span>
            <span class="rem">/// Before a menu item gets
rendered we will add the unpublish action if the document is published</span>
          </pre>
          <pre>
            <span class="lnum"> 20: </span>
            <span class="rem">/// &lt;/summary&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 21: </span>
            <span class="kwrd">private</span>
            <span class="kwrd">void</span> BaseTree_BeforeNodeRender(<span class="kwrd">ref</span> XmlTree
sender, <span class="kwrd">ref</span> XmlTreeNode node, EventArgs e)</pre>
          <pre>
            <span class="lnum"> 22: </span> {</pre>
          <pre>
            <span class="lnum"> 23: </span>
            <span class="rem">///Only unpublish when published</span>
          </pre>
          <pre>
            <span class="lnum"> 24: </span>
            <span class="kwrd">if</span> (<strong>node.Menu!= <span class="kwrd">null</span></strong> &amp;&amp;
!node.NotPublished.GetValueOrDefault(<span class="kwrd">true</span>))</pre>
          <pre>
            <span class="lnum"> 25: </span> {</pre>
          <pre>
            <span class="lnum"> 26: </span>
            <span class="rem">//Find the publish action and
add 1 for the index</span>
          </pre>
          <pre>
            <span class="lnum"> 27: </span>
            <span class="kwrd">int</span> index = node.Menu.FindIndex(<span class="kwrd">delegate</span>(IAction
a) { <span class="kwrd">return</span> a.Alias == <span class="str">"publish"</span>;
})+1;</pre>
          <pre>
            <span class="lnum"> 28: </span> </pre>
          <pre>
            <span class="lnum"> 29: </span>
            <span class="rem">//Insert unpublish action</span>
          </pre>
          <pre>
            <span class="lnum"> 30: </span> node.Menu.Insert(index, UnpublishAction.Instance);</pre>
          <pre>
            <span class="lnum"> 31: </span> }</pre>
          <pre>
            <span class="lnum"> 32: </span> }</pre>
          <pre>
            <span class="lnum"> 33: </span> }</pre>
          <pre>
            <span class="lnum"> 34: </span>}</pre>
          <pre>
            <span class="lnum"> 35: </span> </pre>
        </div>
        <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
          <a href="http://www.richardsoeteman.net/downloads/Umbraco/Unpublishmenuitem.zip" target="_blank">Download
Source</a>
        </p>
        <p>
Hope it didn't get you into trouble, sorry if it did.
</p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=ec1b9387-aef3-47c9-86d8-eb9cb917baff" />
      </body>
      <title>Update: Adding menu items using the event system</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,ec1b9387-aef3-47c9-86d8-eb9cb917baff.aspx</guid>
      <link>http://www.richardsoeteman.net/2009/05/04/UpdateAddingMenuItemsUsingTheEventSystem.aspx</link>
      <pubDate>Mon, 04 May 2009 19:06:31 GMT</pubDate>
      <description>&lt;p&gt;
In February I wrote this blogpost which describes the process of how to add a menu
item to the context menu using the Umbraco V4 Event system. In UmbImport PRO I've
used this mechanism. When I was testing this I came across a bug in my code when using
a pagepicker, this was showing an empty tree in the node picker.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;&lt;img height="153" alt="EmptynodePicker" src="http://www.richardsoeteman.net/content/binary/WindowsLiveWriter/UpdateAddingmenuitemsusingtheeventsystem_126B9/EmptynodePicker_273f8b38-a34b-4bb0-80be-d2c832c2a354.jpg" width="301" border="0" /&gt; 
&lt;/p&gt;
&lt;p&gt;
Then I got a little flashback to the level 2 course I attended last November where
Niels told us to check if there was a menu attached to the node (which is not the
case for the pagepicker) before adding menu items to it, otherwise an exception is
thrown what will result in an empty tree. This is what happened in my case. In the
example below I've only added &lt;strong&gt;node.Menu!= &lt;/strong&gt;&lt;span class="kwrd"&gt;&lt;strong&gt;null &lt;/strong&gt;check
and now everything is working fine.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; umbraco.BusinessLogic;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; umbraco.cms.presentation.Trees;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; umbraco.interfaces;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; UnpublishAction&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; &lt;span class="rem"&gt;/// Add unpublish to the menu
item&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; AddUnpublishActionEvent
:ApplicationBase&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; AddUnpublishActionEvent()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; BaseContentTree.BeforeNodeRender += &lt;span class="kwrd"&gt;new&lt;/span&gt; BaseTree.BeforeNodeRenderEventHandler(BaseTree_BeforeNodeRender);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; &lt;span class="rem"&gt;/// Before a menu item gets
rendered we will add the unpublish action if the document is published&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BaseTree_BeforeNodeRender(&lt;span class="kwrd"&gt;ref&lt;/span&gt; XmlTree
sender, &lt;span class="kwrd"&gt;ref&lt;/span&gt; XmlTreeNode node, EventArgs e)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; &lt;span class="rem"&gt;///Only unpublish when published&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;strong&gt;node.Menu!= &lt;span class="kwrd"&gt;null&lt;/span&gt;&lt;/strong&gt; &amp;amp;&amp;amp;
!node.NotPublished.GetValueOrDefault(&lt;span class="kwrd"&gt;true&lt;/span&gt;))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt; &lt;span class="rem"&gt;//Find the publish action and
add 1 for the index&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; index = node.Menu.FindIndex(&lt;span class="kwrd"&gt;delegate&lt;/span&gt;(IAction
a) { &lt;span class="kwrd"&gt;return&lt;/span&gt; a.Alias == &lt;span class="str"&gt;&amp;quot;publish&amp;quot;&lt;/span&gt;;
})+1;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 29: &lt;/span&gt; &lt;span class="rem"&gt;//Insert unpublish action&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 30: &lt;/span&gt; node.Menu.Insert(index, UnpublishAction.Instance);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 31: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 32: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 33: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 34: &lt;/span&gt;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 35: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
&lt;a href="http://www.richardsoeteman.net/downloads/Umbraco/Unpublishmenuitem.zip" target="_blank"&gt;Download
Source&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Hope it didn't get you into trouble, sorry if it did.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=ec1b9387-aef3-47c9-86d8-eb9cb917baff" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,ec1b9387-aef3-47c9-86d8-eb9cb917baff.aspx</comments>
      <category>Umbraco</category>
    </item>
  </channel>
</rss>