<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rssdatehelper="urn:rssdatehelper"><channel><title>Latest wiki updates</title><link>http://our.umbraco.org</link><pubDate></pubDate><generator>umbraco</generator><description>New page updates on the umbraco documentation wiki</description><language>en</language><item><title>GetMembersByGroupName</title><link>http://our.umbraco.org/wiki/reference/code-snippets/getmembersbygroupname</link><pubDate>Mon, 15 Mar 2010 12:44:24 GMT</pubDate><guid>http://our.umbraco.org/wiki/reference/code-snippets/getmembersbygroupname</guid><content:encoded><![CDATA[ <p>This is a code snippet you can use in your own project to use as a fucntion to use in your custom XSLT Extension library, that allows you to list members and their properties out to XML. If you have improvements to this code feel free to edit this page and update the example code.<br />Warren :)</p>
<pre>public static XPathNodeIterator GetMembersByGroupName(string groupName)<br />{<br />&nbsp;&nbsp;&nbsp; XmlDocument membersXML = new XmlDocument();<br />&nbsp;&nbsp;&nbsp; membersXML.LoadXml("&lt;members&gt;&lt;/members&gt;");<br /><br />&nbsp;&nbsp;&nbsp; try<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MemberGroup membGroup = MemberGroup.GetByName(groupName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //For each member in a specific member group<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (Member memb in membGroup.GetMembers())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //The current member object - get the XML<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //New XMLNode for &lt;member&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlNode membNode = membersXML.CreateElement("member");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //memberID attribute<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlAttribute membAttrID = membersXML.CreateAttribute("memberID");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; membAttrID.Value = memb.Id.ToString();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; membNode.Attributes.Append(membAttrID);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach(Property prop in memb.getProperties)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Property node<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlNode propNode = membersXML.CreateElement(prop.PropertyType.Alias);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Set the value<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; propNode.InnerText = prop.Value.ToString();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Append Property node to member node<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; membNode.AppendChild(propNode);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Append to &lt;members&gt; root node<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; membersXML.SelectSingleNode("/members").AppendChild(membNode);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return membersXML.CreateNavigator().Select("//members");<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; catch (Exception ex)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; membersXML.LoadXml("&lt;response&gt;&lt;success&gt;false&lt;/success&gt;&lt;error&gt;" + ex.Message.ToString() + "&lt;/error&gt;&lt;/response&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return membersXML.CreateNavigator().Select("/response");<br />&nbsp;&nbsp;&nbsp; }<br />}</pre>
<p>Here is some example XML this will produce:</p>
<pre>&lt;members&gt;<br />&nbsp; &lt;member memberID="1214"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;active&gt;0&lt;/active&gt;<br />&nbsp;&nbsp;&nbsp; &lt;profilePhoto&gt;/media/4427/warren-buckley.jpg&lt;/profilePhoto&gt;<br />&nbsp;&nbsp;&nbsp; &lt;title&gt;Mr&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp; &lt;firstName&gt;Warren&lt;/firstName&gt;<br />&nbsp;&nbsp;&nbsp; &lt;surname&gt;Buckley&lt;/surname&gt;<br />&nbsp;&nbsp;&nbsp; &lt;street&gt;Down a Road&lt;/street&gt;<br />&nbsp;&nbsp;&nbsp; &lt;zip&gt;1234&lt;/zip&gt;<br />&nbsp;&nbsp;&nbsp; &lt;country&gt;UK&lt;/country&gt;<br />&nbsp;&nbsp;&nbsp; &lt;phone&gt;123456&lt;/phone&gt;<br />&nbsp;&nbsp;&nbsp; &lt;summary&gt;This is my summary about Warren Buckley here :)&lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp; &lt;receiveEmailUpdates&gt;0&lt;/receiveEmailUpdates&gt;<br />&nbsp; &lt;/member&gt;<br />&nbsp; &lt;member memberID="2564"&gt;.......<br />&lt;/members&gt;<br /></pre>
<p>A quick example usage:</p>
<pre>&lt;xsl:variable name="users" select="Your.Library:GetMembersByGroupName('myMemberGroup')"/&gt;<br /><br />&lt;xsl:for-each select="$users//member"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select="concat(firstName, ' ', surname)" /&gt;&lt;br/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;a href="/view-profile.aspx?id={@memberID}"&gt;View Profile&lt;/a&gt;<br />&lt;/xsl:for-each&gt;<br /></pre>]]></content:encoded></item><item><title>Reading RSS Feeds, Aggregating and Sorting</title><link>http://our.umbraco.org/wiki/how-tos/xslt-useful-tips-and-snippets/reading-rss-feeds,-aggregating-and-sorting</link><pubDate>Sun, 14 Mar 2010 06:59:31 GMT</pubDate><guid>http://our.umbraco.org/wiki/how-tos/xslt-useful-tips-and-snippets/reading-rss-feeds,-aggregating-and-sorting</guid><content:encoded><![CDATA[ <p>Here's a quick summary of how to read multiple RSS feeds, merge them, sort them and then output the first 30 items.&nbsp; </p>
<h2>Preparation </h2>
<ol>
<li>Set up a doc type named 'RssFeed'&nbsp;with a property&nbsp;called 'url' (textstring)</li>
<li>Create RSS Feed nodes in the Content section with your chosen feed urls</li>
<li>Create an XSLT macro with the code that follows.</li>
<li>Add xmlns:msxsl="urn:schemas-microsoft-com:xslt" to namespace on the top of XSLT page.</li>
</ol>
<h2>XSLT</h2>
<p>Just put this into an&nbsp;&lt;xsl:template&gt; <span style="COLOR: #2b91af; FONT-SIZE: x-small"><span style="COLOR: #2b91af; FONT-SIZE: x-small"><span style="COLOR: #333333; FONT-SIZE: small">and it will output the first 30 items.</span></span></span></p>
<pre>&lt;!-- Find all RSS Feed nodes, create new XML tree with all rss nodes merged into the 'container' node --&gt;<br />&lt;xsl:variable name="rssFeeds"&gt;<br />&nbsp;&lt;container&gt;<br />&nbsp;&nbsp; &lt;xsl:for-each select="$currentPage/ancestor-or-self::root//node [@nodeTypeAlias='Feed Item']"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:variable name="url" select="string(data[@alias='url'])" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Is the url populated? --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:if test="string-length($url) &amp;gt; 0"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Import the feed--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:copy-of select="umbraco.library:GetXmlDocumentByUrl( $url )"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsl:if&gt;<br />&nbsp;&nbsp; &lt;/xsl:for-each&gt;<br />&nbsp;&lt;/container&gt;<br />&lt;/xsl:variable&gt;</pre>
<pre>&lt;!-- Iterate through the container doc --&gt;<br />&lt;xsl:for-each select="msxsl:node-set($rssFeeds)/container/rss/channel/item"&gt;<br />&nbsp;<br />&nbsp;&lt;!-- Sort the items --&gt;<br />&nbsp;&lt;xsl:sort select="pubDate" order="descending"/&gt;</pre>
<pre>&nbsp;&lt;!-- Only output the first 30 items --&gt;<br />&nbsp;&lt;xsl:if test="position() &amp;lt;= 30"&gt;<br />&nbsp;&nbsp; &lt;h1&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;a&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:attribute name="href"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select="link/text()"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsl:attribute&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select="title/text()"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/a&gt;<br />&nbsp;&nbsp; &lt;/h1&gt;<br />&nbsp;&nbsp; &lt;p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select="description/text()" /&gt;<br />&nbsp;&nbsp; &lt;/p&gt;<br />&nbsp;&lt;/xsl:if&gt;<br />&nbsp;<br />&lt;/xsl:for-each&gt;</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded></item><item><title>Run the scheduler at certain times</title><link>http://our.umbraco.org/wiki/how-tos/run-the-scheduler-at-certain-times</link><pubDate>Thu, 11 Mar 2010 13:35:53 GMT</pubDate><guid>http://our.umbraco.org/wiki/how-tos/run-the-scheduler-at-certain-times</guid><content:encoded><![CDATA[ <p><span style="color: #000000; font-family: 'Times New Roman'; line-height: normal; font-size: medium;">
</span></p>
<div style="margin: 0px; padding: 0.6em; background-color: #ffffff; font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: 19px; font-size-adjust: none; font-stretch: normal;">
<p>Umbraco has a built in scheduler function. Here are some notes about how to use the scheduler for tasks at certain times.</p>
<p>In the file <strong>/config/umbracoSettings.config</strong> there's a commented setting that if active runs every x seconds:</p>
<div id="_mcePaste">
<pre style="font-family: Consolas,Monaco,'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: 18px; font-size-adjust: none; font-stretch: normal;">&lt;!-- add tasks that should be called with an interval (seconds) --&gt;
&lt;!-- &nbsp; &nbsp;&lt;task log="true" alias="test60" interval="60" url="http://localhost/umbraco/test.aspx"/&gt;--&gt;</pre>
</div>
<p>If you uncomment it and set a real url to your site Umbraco will open that address at the specified interval.</p>
<pre style="font-family: Consolas,Monaco,'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: 18px; font-size-adjust: none; font-stretch: normal;">&lt;task log="true" alias="test60" interval="60" url="http://www.mysite.com/runscheduler.aspx"/&gt;</pre>
<p>Note that log="true", if you have problems with the scheduler you should have a look in the umbracoLog table, it will have a row for every time. When the scheduler is running properly you can disable logging if you like to reduce clutter in the log.</p>
<p>Now if you <strong>add a page at the specified address with a template that contains a macro</strong>, the macro will run each minute. But how to control certain tasks to be executed at certain times? Say that you need some statistics to be sent each day at 8:00, or once a week or something like that.</p>
<p>Here is one example of an XSLT that will send an email at certain times ('Run once every hour at hh:00', 'Run once a day at 8:00' and 'Run each first 5 days of the week, at 8:00'):</p>
<pre style="font-family: Consolas,Monaco,'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: 18px; font-size-adjust: none; font-stretch: normal;">&lt;xsl:template match="/"&gt;<br />&lt;xsl:variable name="sendFromAddress" select="'website@mycompany.com'"/&gt;<br />&lt;xsl:variable name="sendToAddress" select="'admin@mycompany.com'"/&gt;<br /><br />&lt;!-- This sample is made for scheduling each 60 seconds --&gt;<br />&lt;xsl:variable name="minuteInHour" select="Exslt.ExsltDatesAndTimes:minuteinhour()"/&gt;<br />&lt;xsl:variable name="hourInDay" select="Exslt.ExsltDatesAndTimes:hourinday()"/&gt;<br />&lt;xsl:variable name="dayInWeek" select="Exslt.ExsltDatesAndTimes:dayinweek()"/&gt;<br /><br />&lt;!-- Run once every hour at hh:00 --&gt;<br />&lt;xsl:if test="$minuteInHour=0"&gt;<br />&lt;xsl:value-of select="umbraco.library:SendMail($sendFromAddress, $sendToAddress, 'Triggered by site schedule', 'Run once every hour at hh:00', false())"/&gt;<br />&lt;/xsl:if&gt;<br /><br />&lt;!-- Run once every day at 8:00 --&gt;<br />&lt;xsl:if test="$hourInDay=8 and $minuteInHour=0"&gt;<br />&lt;xsl:value-of select="umbraco.library:SendMail($sendFromAddress, $sendToAddress, 'Triggered by site schedule', 'Run once a day at 8:00', false())"/&gt;<br />&lt;/xsl:if&gt;<br /><br />&lt;!-- Run once every day at 8:00 the first 5 days in the week (depends on "first day of the week" in global settings) --&gt;<br />&lt;xsl:if test="$dayInWeek&amp;lt;6 and $hourInDay=8 and $minuteInHour=0"&gt;<br />&lt;xsl:value-of select="umbraco.library:SendMail($sendFromAddress, $sendToAddress, 'Triggered by site schedule', 'Run each first 5 days of the week, at 8:00', false())"/&gt;<br />&lt;/xsl:if&gt;<br /><br />&lt;/xsl:template&gt;<br /></pre>
</div>
<p>If you dont like the scheduler to run as often as each minute you can increase the number of seconds in settings. But one has to have in mind that the scheduler does not start at 00:00, but rather whenever the the app pool starts. Therefore, if you run it each 10 minutes you will need to round the minute like this:</p>
<pre style="font-family: Consolas,Monaco,'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: 18px; font-size-adjust: none; font-stretch: normal;">&lt;xsl:variable name="minuteInHour" select="floor(Exslt.ExsltDatesAndTimes:minuteinhour() div 10)*10"/&gt;<br />&lt;!-- minuteInHour will be 0,10,20,30,40 or 50 --&gt;<br /></pre>
<p>Also have in mind that if the app pool is not running, neither will the sceduler. So for the scheduler to run good you will need to make sure your site is active.</p>
<p>You could use a ping'er for that - yeah yet another schedule, but not from the same web server...</p>
<p>For the SendMail function to work you will need to set the Smtp settings in your Web.config.</p>]]></content:encoded></item><item><title>Getting Started with Umbraco: Whats Next After You Install</title><link>http://our.umbraco.org/wiki/how-tos/getting-started-with-umbraco-whats-next-after-you-install</link><pubDate>Tue, 09 Mar 2010 18:03:14 GMT</pubDate><guid>http://our.umbraco.org/wiki/how-tos/getting-started-with-umbraco-whats-next-after-you-install</guid><content:encoded><![CDATA[ <p>So you&rsquo;ve finished your first installation of Umbraco, perhaps to your local PC to try it out. Now you're wondering, &ldquo;What Next?"</p>
<p>This guide will help you get started with setting up a website in Umbraco. This document is based on my experience with learning and using the free version of Umbraco 4.0.3.&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="COLOR: #06c">What is Umbraco?</span></h2>
<p><strong>5-minute Video Introduction:&nbsp;<span style="FONT-WEIGHT: normal">http://umbraco.org/documentation/videos/getting-started/what-is-umbraco</span></strong></p>
<h2><span style="FONT-SIZE: medium"><span style="FONT-SIZE: 14px; FONT-WEIGHT: normal"><span style="FONT-SIZE: large"><span style="FONT-SIZE: 18px"><strong><br /></strong></span></span></span></span></h2>
<h2><span style="COLOR: #06c">Installation</span></h2>
<p>There are plenty of documents about installing Umbraco, so I won&rsquo;t cover the details here. </p>
<p>If you are trying out Umbraco for the first time, you may want to install it to your local PC.&nbsp;</p>
<p>To find more documents on installing Umbraco, see the home page of this wiki. There are also PDFs about installation on the Umbraco download page itself http://umbraco.codeplex.com/releases/</p>
<p>As of this writing, I haven't seen one install guide that contains everthing I would want in such a document. I recommend you look at several to get all the information you can.</p>
<p>You may find my own install notes helpful - see the last section in this document.</p>
<h2><span style="COLOR: #06c">Setting up an Umbraco Web Site</span>&nbsp;</h2>
<h3>The Admin Page</h3>
<p>After you have successfully installed Umbraco, you will probably be looking at the default admin page. (I don&rsquo;t know the official name for this page, so I will call it the &ldquo;admin page.&rdquo;)</p>
<p>If you are not on the admin page, point your browser to http://&lt;YourSite&gt;/umbraco/umbraco.aspx. On my local installation, I use http://localhost:81/umbraco/umbraco.aspx (I set up Umbraco to use port 81). If you are not logged in, this URL will first redirect you to the login page.&nbsp;&nbsp;</p>
<p>The Umbraco admin page has three main panes: Content (top left), Sections (bottom left), and the main panel (large panel on the right).</p>
<p>The Content panel on a default empty install will show a only Content folder with the Recycle Bin folder under it.&nbsp;</p>
<h3>The Runway Demo Site</h3>
<p>If you did not choose install Runway as part of your Umbraco install, I recommend you install it when learning Umbraco. Runway is a bare bones demo website that will show you an example of how to set things up using best practices.&nbsp;</p>
<p>If you want an even more fleshed out site, you can install the Creative Website Starter (CWS) at&nbsp; http://our.umbraco.org/projects/creative-website-starter-(cws). The CWS&nbsp;package contains a detailed document on how to install and set up CWS.&nbsp;</p>
<p>To install Runway, go here: Umbraco admin page &gt; Sections panel &gt; Developer &gt; Packages &gt; Install Runway link &gt; Install Runway button &gt; click Yes &gt; check Accept License &gt; Install Package button. Do not close the page until the install is complete.</p>
<p>The Install Runway link under the projects folder appears to be hard-coded into Umbraco, so it&rsquo;s always available to install if you want.</p>
<p>It is also easy to uninstall Runway if you ever want to:&nbsp;</p>
<p>To uninstall Runway: Admin page &gt; Sections panel &gt; Developer &gt; Packages &gt; Installed Packages &gt; Runway link &gt; Uninstall Package button &gt; Confirm Uninstall button.</p>
<p>&nbsp;</p>
<h2><span style="COLOR: #06c">Basic Concepts</span></h2>
<p>The core concepts about an Umbraco website are Document Types, Templates, and macros.</p>
<h3>Document Types</h3>
<p>Before you can create a web page in Umbraco, you must first create a Document Type. Then when you do create the web page, you will specify which Document Type it is based on. </p>
<p>The Document Type defines the data that a web page will use. It also defines the interface you will see when creating the web page. A Document Type specifies which kind of data, fields (web controls), and content can go on the web page. Document Type does not have anything to do with web page presentation or layout - that is handled in Templates, which are described in a different section below.</p>
<p>To go to your Document Types:</p>
<p>Go to Umbraco admin page &gt; Sections panel &gt; Settings &gt; Document Types folder &gt; expand the folder. If you installed Runway, you will see two document types already created, Runway Homepage and Runway Textpage.</p>
<p>To create a Document Type:</p>
<ol>
<li>Go to Umbraco admin page &gt; Sections panel &gt; Settings.</li>
<li>Right-click on the Document Types folder and enter a name such as &ldquo;test.&rdquo;</li>
</ol>
<p>To set up a Document Type:</p>
<p>Access the Document Type by clicking on it in the Settings panel (go to admin page &gt; Sections panel &gt; Settings). In the main panel (on the right in your browser) you will see the tabs where you define that type.</p>
<ul>
<li><strong>Info </strong>tab sets such things as the Document Type&nbsp;name and which templates it can use.</li>
<li><strong>Structure </strong>tab sets which child Document Types can be created under this one.</li>
<li><strong>Generic Properties</strong> tab is where you specify what kind of content can go on web pages that are based on this Document Type. These Properties determine which fields and controls can appear on your web page. If you do not set any Properties, web pages using this Document Type will be blank.&nbsp;For example, if you want even just simple text on a web page, you must first add a new Property for it. To do this, in the Type drop down list on the Property page, set either Textbox Multiple (multi-line textbox) or Rich Text Box.&nbsp;</li>
<li><strong>Tabs </strong>tab is where you specify the tabs that will show up when you create a web page based on this Document Type. After you create a tab, you can assign Properties to it in the Properties tab.</li>
</ul>
<p>To learn more, watch the free video about Document Types:&nbsp;http://umbraco.tv/documentation/videos/for-site-builders/foundation/document-types</p>
<h3>Web Pages</h3>
<p>As described above, web pages in Umbraco are based on Document Types. Before you can create a web page, you must have a Document Type for the type of page you want.&nbsp;</p>
<p>To see to your web pages: Admin page &gt; Sections panel &gt; Content. Web pages will appear as nodes in the Content panel.&nbsp;</p>
<p>To create a web page:</p>
<ol>
<li>If you do not yet have any web pages, create one by right-clicking on Content and choosing Create.</li>
<li>Enter a name for the page and click Create. The page will show up under the Content folder (refresh your browser page if you need to).</li>
<li>Click on your new page. In the right panel, you will see the tabs that allow you to set the content that will appear on the page.</li>
<li>Enter the content for the page, by entering content in the tabs in the main panel. If you want your page to contain more types of content than are allowed here, you must edit the Document Template which is used by the page. To see which Document Type the page uses, go to the Properties tab for the web page.</li>
<li>When you&rsquo;re done, click the &ldquo;save and publish&rdquo; button in the tool bar.</li>
<li>To see how your page looks in Umbraco, go to the Properties tab for that page, then click the "Link to Document" URL at the bottom of the tab.</li>
</ol>
<p><span style="LINE-HEIGHT: normal; FONT-WEIGHT: bold">Templates</span></p>
<p>Templates define the layout and presentation of a web page.&nbsp;Templates are where you define the design and layout, which CSS to use for the page, etc.&nbsp;</p>
<p>When you create a Document Type, by default a Template is also created for that Document Type.&nbsp;</p>
<p>Templates are actually .NET Master Pages. If you don&rsquo;t know how Master Pages are used in a .NET website, you should learn about them. See http://www.asp.net/(S(sf10gzjodvrpce55el2p5cnk))/learn/master-pages/&nbsp;</p>
<p>Templates can be based on other templates.</p>
<p>To go to your Templates: Admin page &gt; Sections panel &gt; Settings &gt; Templates folder.</p>
<p>To learn more, watch the free video about Templates:&nbsp;http://umbraco.tv/documentation/videos/for-site-builders/foundation/templates</p>
<h3>Macros</h3>
<p>Macros are used to get data from Umbraco and display it. For example, site maps, navigation, and news lists. This can be done using XSLT. Umbraco includes several pre-built XSLT macros, and you can also create your own.</p>
<p>Macros can also be used to wrap .NET user controls or custom controls, to include those in your web page. </p>
<p>For more information see the video http://umbraco.org/documentation/videos/for-site-builders/foundation/what-are-macros</p>
<p>&nbsp;</p>
<h2 style="MARGIN-TOP: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 3px; COLOR: #333333; FONT-SIZE: 18px; FONT-WEIGHT: bold"><span style="COLOR: #06c">More Info</span></h2>
<p>&nbsp;</p>
<p><strong>How -To Videos</strong></p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">There are free videos at http://umbraco.tv/</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">To get started watch the following videos, which are part of the free "Foundation" series:</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">&nbsp;</p>
<ul>
<li><strong>Document Types:</strong> http://umbraco.tv/documentation/videos/for-site-builders/foundation/document-types</li>
<li><strong>Templates:</strong> http://umbraco.tv/documentation/videos/for-site-builders/foundation/templates</li>
</ul>
<p>&nbsp;</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">Outside the Foundation series, it appears most of the other Umbraco TV videos are not free. But a one-month subscription is very reasonable (about US $25). You will pay using PayPal.</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">&nbsp;</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px"><strong>Umbraco Forum</strong></p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">I have found the forum very helpful. I usually get a response within an hour or two.</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">http://our.umbraco.org/forum</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">&nbsp;</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px"><strong>Other Useful Guides</strong></p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">A Complete Newbie's Guide To Umbraco&nbsp;</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">http://our.umbraco.org/wiki/how-tos/a-complete-newbie's-guide-to-umbraco</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">&nbsp;</p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px"><strong>Wikipedia article for Umbraco</strong></p>
<p style="LINE-HEIGHT: 18px; MARGIN-TOP: 7px; FONT-FAMILY: Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 15px; COLOR: #333333; FONT-SIZE: 14px">http://en.wikipedia.org/wiki/Umbraco</p>
<p>&nbsp;</p>
<h2><span style="COLOR: #06c">Notes about my first installation</span></h2>
<h3>My first local install</h3>
<p>I did my first ever Umbraco install as a local installation on Windows Vista PC. I installed using the Microsoft Web App Gallery, http://www.microsoft.com/web/gallery/Umbraco%20CMS.aspx</p>
<p>The install process completed successfully, but Umbraco did not work until I went through the following document, http://umbraco.codeplex.com/releases/view/33743#DownloadId=95707</p>
<p>I went through the steps in this document, skipped steps I thought I could, and got it working. My main problem seemed to be setting the correct permissions on the Umbraco folders.</p>
<h3 style="FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #333333; FONT-SIZE: 14px; FONT-WEIGHT: bold">My first real website install, on a shared-hosted site</h3>
<p>My company has several small shared-hosted websites. I am installing Umbraco to use for one of them.</p>
<p>I found the following document helpful:&nbsp;<span style="LINE-HEIGHT: normal; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 10px"><a href="../../install-and-setup/installing-umbraco-4-on-reliablesitenet-(or-similar-hosts)">http://our.umbraco.org/wiki/install-and-setup/installing-umbraco-4-on-reliablesitenet-(or-similar-hosts)</a></span></p>
<p><span style="LINE-HEIGHT: normal; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 10px"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #333333; FONT-SIZE: 14px">I FTP'ed the Umbraco install archive (Umbraco 4.0.3) to my site's root directory. The Umbraco install files are found at&nbsp;http://umbraco.codeplex.com/releases/</span></span></p>
<p><span style="LINE-HEIGHT: normal; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 10px"><span style="LINE-HEIGHT: 18px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #333333; FONT-SIZE: 14px">I had to ask my hosting company to unzip the file for me.</span></span></p>
<p>I ran the Umbraco install by going to &lt;mysiteURL&gt;/default.aspx. I got to page 2 of the install, where you enter in your database connection information. Upon submit I got an error that Umbraco could not write to my web.config. So I asked my hosting company to fix the permissions.</p>
<p>Then I got through the rest of the install pages. However, at the very end I got the following ASP.NET error:</p>
<blockquote>
<p>Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that &lt;machineKey&gt; configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.</p>
</blockquote>
<p>My host told me to fix this by doing the following, which worked:</p>
<p>&nbsp;</p>
<blockquote>
<p>Intermittent ASP.NET sessions: The cause of this intermittency is the recycling of the application pool where your site lives.</p>
<p>The best way of handling this issue is configuring your application to use "Out of Process" sessions, which is very easily accomplished by configuring the web.config in the following way:</p>
<p><em>&lt;configuration&gt;<br />&nbsp;&nbsp; &lt;system.web&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;sessionState mode="StateServer" cookieless="false" timeout="20" stateConnectionString="tcpip=127.0.0.1:42424" /&gt;<br />&nbsp;&nbsp; &lt;/system.web&gt;<br />&lt;/configuration&gt;</em></p>
<p>&nbsp;</p>
</blockquote>
<p>&nbsp;</p>]]></content:encoded></item><item><title>Medium Trust with Umbraco 4.0.x</title><link>http://our.umbraco.org/wiki/install-and-setup/medium-trust-with-umbraco-40x</link><pubDate>Mon, 08 Mar 2010 23:31:05 GMT</pubDate><guid>http://our.umbraco.org/wiki/install-and-setup/medium-trust-with-umbraco-40x</guid><content:encoded><![CDATA[ <p>Umbraco being open-source and all, I've taken it upon myself to attempt to get Umbraco running in Medium Trust (shared hosting accounts). We're in an economic downturn (I'm in the UK and we're still in recession, while everyone else recovers) and I've had to downscale from a dedicated server to using shared hosting so it was a choice between hacking away at Umbraco source code or reverting to DotNetNuke with it's not-so-nice skinning API...</p>
<p>Enough pre-amble. Here's the issues I came up against and how I fixed them.</p>
<ol>
<li><strong>Problem: </strong>ImageManipulation library doesn't run in Medium Trust because it makes use of unsafe methods.<br /><strong>Solution:</strong> Download updated <a href="http://codebetter.com/blogs/brendan.tompkins/archive/2007/06/14/gif-image-color-quantizer-now-with-safe-goodness.aspx">ImageQuantization library by Brendan Tompkins</a>, remove all but three files - Quantizer.cs, OctreeQuantizer.cs and PalleteQuantizer.cs. Update namespaces to use umbraco.imaging.ImageManipulation, build, and dump the resulting ImageManipulation.dll into your Umbraco /bin folder. <a href="http://umbraco.codeplex.com/WorkItem/View.aspx?WorkItemId=25788">See here for one I made earlier</a> (download the ImageManipulation.zip file attached to the Codeplex work item).</li>
<li><strong>Problem: </strong>RoleProvider and MemberProvider not working with a horribly generic "Request failed" error.<br /><strong>Solution: </strong>This one's a bit more in-depth. The umbraco.providers namespace has a utility class for shared features amongst all provider classes, called SecUtility, which has a method called GetDefaultAppName(). This attempts to call Process.GetCurrentProcess() which is not allowed under Medium Trust.<br />I tried to add this line of code:<br /><br />if (string.IsNullOrEmpty(applicationVirtualPath) &amp;&amp;&nbsp;<br /><span style="white-space: pre;">	</span>GlobalSettings.UseMediumTrust == false &amp;&amp;<br /><span style="white-space: pre;">	</span>GlobalSettings.ApplicationTrustLevel != AspNetHostingPermissionLevel.Medium) {}<br /><br />However, this still included the line of code Process.GetCurrentProcess() which when built forced the whole compiled library to require Full Trust. Eventually removed the call to GetCurrentProcess and also updated the preceding line to use HostingEnvironment.ApplicationVirtualPath (thanks to Neils for spotting this one). Rebuilt and dumped umbraco.providers.dll into my /bin folder.</li>
<li><strong>Problem: </strong>Another "Request failed" error, this time on the web.config handlers for Umbraco channels.<br /><strong>Solution:</strong> The current XMLRPC.Net module used in Umbaco (version 2.2.x) required FileIOPermission on something outside the application root which is not allowed in Medium Trust. <a href="http://xmlrpcnet.googlecode.com/files/xml-rpc.net.2.4.0.zip">Downloaded and built XMLRPC.Net v2.4.0</a> (which works in Medium Trust), dumped into /bin folder, updated references in source (or you can just add an assemblyBinding redirect in your web.config).</li>
<li><strong>Problem:</strong> Getting a SecurityException during installation, when various steps try to save connection strings and config settings to the web.config.<br /><strong>Solution: </strong>GlobalSettings.SaveSetting() in umbraco.businesslogic was trying to use ConfigurationManager.OpenMappedExeConfiguration(), which attempts to not only load a given .config file, but also all other .config files from which it inherts. For web.config files, this happens to include machine.config, and therefore the library attempts to request Read permission on the machine.config, which fails in Medium Trust, as do any other methods to access configuration files as all web.configs inherit from machine.config. Replaced with a batch of XmlDocument magic for updating appSettings, rebuilt umbraco.businesslogic and dumped into /bin folder.</li>
<li><strong>Problem:</strong> &lt;msxml:script&gt; blocks won't work in Medium Trust.<br /><strong>Solution: </strong><a href="http://msdn.microsoft.com/en-us/library/wk7yxab1.aspx">MSDN explains why &lt;msxml:script&gt; blocks are not allowed in Medium Trust</a> as they potentially become a security vulnerability. This is a major problem for Umbraco as a lot of people use these extensions to write utility helpers for their XSLT macros, including XSLTsearch. What's even more confusing is that Microsoft claim that use of the AddExtensionObject requires full trust (which isn't true cause I've tested umbraco.library functions using Blog4Umbraco XSLT macros and they work just fine so AddExtensionObject must be working).<br />The workaround is to have all XSLT helper methods declared as .NET assemblies (which is allowed under Medium Trust) - however, not everyone wants to be forced to use a compiled assembly. Here's the trick - all files inside the App_Code directory of your web application are compiled at runtime, it's the only place in a .NET application where dynamic compilation really occurs unless you are still using .as*x.cs files, in which case, shame on you for not using good coding practices and severely reducing your website disk space footprint. However, if it's just .cs and .vb files, how can these be turned into assemblies that can then be accessed as XSLT extension objects?<br />One line of code in macro.cs in umbraco,presentation does the trick:<br /><br />Assembly.Load("__code")<br /><br />This will load the App_Code classes and treat them as precompiled assemblies. A little more work and this now allows you to create any code file in your App_Code folder which at runtime will be XSLT extension-accessible providing you add a new attribute, [XsltExtension()], to your class.<br />For your class and code to be usable as XSLT extension methods, your class must have:
<ul>
<li>A zero-parameter constructor like so:<br />
<br />
namespace MyNamespace {<br /><span style="white-space: pre;">	</span>[XsltExtension]<br />
<span style="white-space: pre;">	</span>public class MyClass {<br />
<span style="white-space: pre;">	</span><span style="white-space: pre;">	</span>public MyClass() { }<br />
<span style="white-space: pre;">	</span><span style="white-space: pre;">	</span>// Helper methods here<br />
<span style="white-space: pre;">	</span>}<br />
}</li>
<li>Helper methods <strong>must</strong> be <strong>public static</strong>. Your class <strong>must not be static!</strong></li>
</ul>
</li>
Your extension class and methods will then be accessible using xmlns:myprefix="urn:MyNamespace.MyClass" and you can call the public methods using &lt;xsl:value-of select="myprefix:MyFunction()" /&gt;. Don't forget to also update your exclude-result-prefixes="msxml umbraco.library myprefix" so you don't get namespace declarations in your output which will then break your X/HTML compliance. :-)
<br />
<li><strong>Problem:</strong> SQL Installer fails with the error "Cannot upgrade" when starting from a blank database.<br /><strong>Solution:</strong>&nbsp;I finally managed to get the Umbraco SqlInstaller to pick up the updated database script (old version was 4.0.0.5, Umbraco 4.0.3 uses 4.0.0.12). Rebuilt and tested to work AOK, although I have since discovered (thanks to Doug Robar) that VistaDB requires Full Trust so Medium Trust will only function with SQL Server or MySQL (which most shared hosting accounts should offer so most users should be OK).</li>
<li><strong>Problem:</strong>&nbsp;After installing Blog4Umbraco (the install process works just fine on Medium Trust), I get a "Request failed" when I go to the content root of my site and it attempts to load CreatePost.ascx.<br /><strong>Solution:&nbsp;</strong>I'm still working on this one, although I think it has something to do with a bit of code trying to change a QueryString value.</li>
</ol>
<p>Kudos to Brendan Tompkins for refactoring his ImageQuantization library to not use unsafe methods, and Charles Cook for fixing XMLRPC.Net so it works in Medium Trust.<br />You can download a build of Umbraco 4.0.3 Medium Trust <a href="../../projects/umbraco-403-medium-trust">here</a>. Standard MIT license and no disclaimers are made as to fitness for purpose or suitability etc. etc. All modifications I have made to Umbraco have been submitted as patches to the Codeplex project.</p>]]></content:encoded></item><item><title>Settings in root node and value from recursive search</title><link>http://our.umbraco.org/wiki/how-tos/xslt-useful-tips-and-snippets/settings-in-root-node-and-value-from-recursive-search</link><pubDate>Fri, 05 Mar 2010 13:23:10 GMT</pubDate><guid>http://our.umbraco.org/wiki/how-tos/xslt-useful-tips-and-snippets/settings-in-root-node-and-value-from-recursive-search</guid><content:encoded><![CDATA[ <p>I find these small xslt-snippets very useful</p>
<p>First, it's nice to put <strong>global settings as properties in the site root node</strong> document type. And get them from there whenever needed like this:</p>
<pre>&lt;xsl:variable name="siteRootNode" select="$currentPage/ancestor-or-self::node [@level=1]"/&gt;<br />Value from root node:&lt;xsl:value-of select="$siteRootNode/data[@alias='EditorEmailAddress']"/&gt;<br /></pre>
<p>(If site root node is at level 1).</p>
<p>Another nice thing is to set <strong>reference names for nodes</strong> so that one does not need to hard code the node id in xslt. I do this by adding a extra property to my nodes, property name xsltNodeName. In that node I set a node name that should not be changed by editors or writers. And when I need it I call it using:</p>
<pre>&lt;xsl:value-of select="umbraco.library:GetXmlAll()//node [string(data[@alias='xsltNodeName'])='TheName'] /@id"/&gt;</pre>
<p>This code is used to <strong>get a property value recursively</strong>, "if the value is not found on this node, go up one step at a time until it's found"</p>
<pre>Value from recursive search:&lt;xsl:value-of select="$currentPage/ancestor-or-self::node [string(data[@alias='EditorEmailAddress'])!=''] [position()=last()] /data[@alias='EditorEmailAddress']"/&gt;,<br />Found at:&lt;xsl:value-of select="$currentPage/ancestor-or-self::node [string(data[@alias='EditorEmailAddress'])!=''] [position()=last()] /@nodeName"/&gt;<br /></pre>
<p>Also, have a look at this nice post about more ways to do recursive search: http://forum.umbraco.org/yaf_postst2751_XSLT-Tip--Display-a-field-recursively.aspx (from Casey Neehouse).</p>
<p>Note; in a template a property can be sought recursively just like this:</p>
<pre>&lt;umbraco:Item field="EditorEmailAddress" recursive="true" runat="server"&gt;&lt;/umbraco:Item&gt;<br /></pre>
<p>&nbsp;</p>]]></content:encoded></item><item><title>Umbraco powered sites</title><link>http://our.umbraco.org/wiki/about/umbraco-powered-sites</link><pubDate>Wed, 03 Mar 2010 17:06:42 GMT</pubDate><guid>http://our.umbraco.org/wiki/about/umbraco-powered-sites</guid><content:encoded><![CDATA[ <p>Below is a list of sites currently powered by umbraco:</p>
<p><em>Please add your sites to http://umbraco.org/submit as well for the coming showcase section on umbraco.org</em></p>
<p>http://www.secc.co.uk</p>
<p>http://www.hasselblad.co.uk</p>
<p>http://www.nfltips.org</p>
<p>http://www.peugeot.com </p>
<p>http://www.vogue.co.jp </p>
<p>http://www.wired.co.uk</p>
<p>http://www.wired.it</p>
<p>http://www.heinz.com</p>
<p>http://www.fpv.com.au</p>
<p>http://www.mou.dk</p>
<p>http://www.lilje-huset.dk/</p>
<p><a href="http://cntact.dk/">http://cntact.dk/</a></p>
<p><a href="http://www.sandisk.com/">http://www.sandisk.com</a>&nbsp;Site created by Extractable (US)</p>
<p>Sites created by Designit<br />http://nemhandel.dk<br />http://digitaliser.dk<br />http://godtjob.dk<br />http://myebag.dk</p>
<p>Selected umbraco solutions developed by SBBS Solutions AB, Sweden:<br />http://www.abbasite.com (The official ABBA site)<br />http://www.tandlakarforbundet.se/ (The Swedish Dental Association, SDA)<br />http://www.tandlakartidningen.se/ (The Journal of the SDA)<br />http://www.sverigesinformationsforening.se/ (Swedish Public Relations Association)<br />http://www.fexco.se/ http://www.fexco.dk/ http://www.fexco.no/ http://www.fexco.fi/ (Fexco Money Transfer)<br />http://www.veronicamaggio.com (Artist site for Universal Music)<br />http://www.deadbyapril.com (Artist site for Universal Music)</p>
<p>Sites created by The Cogworks Ltd, UK:<br />http://www.barclay.ie&nbsp;(European Crop Protection)<br />http://www.thecogworks.co.uk</p>
<p>Sites created by Guilty People (NL)<br />http://www.johma.nl/<br />http://www.vriendenvanamstel.nl/<br />http://www.brabantsorkest.nl/<br />http://www.dimensio.nl/<br />http://www.sourcy.nl/<br /><a href="http://hema500spel.hema.nl/">HEMA 500 game</a><br />UbachsWisbrun/JWT (working on it now)</p>
<p>Sites created by WhiteSpace Creative (US)<br />http://www.connie-collins.com/<br />http://www.asbindustries.com/</p>
<p>Sites created by Gecko New Media<br />http://www.pindar.com/&nbsp; - International print &amp; media company, printers of the Yellow Pages<br />http://www.ctwo.org.uk/ - Scottish Goverment/EU agricultural initiative<br />http://www.geckonewmedia.com/ - Edinburgh Web Design!<br />http://www.davidboni.com/ - Photographer (flash/iphone site)<br />http://www.yelladworks.com/ - Ad division of Yell.</p>
<p>Sites created by Mirabeau (nl) :</p>
<p>http://www.yer.nl/en-US/homepage.aspx<br /><a href="http://www.probiblio.nl/">http://www.probiblio.nl/</a></p>
<p>Sites created by Orcare:</p>
<p><a href="http://www.bafc.co.uk/">British Airways Flying Club</a><br /><a href="http://www.wycombeairpark.co.uk/">Wycombe Air Park</a><br /><a href="http://www.irap.org/">International Road Assessment Programme</a><br /><a href="http://www.saferoaddesign.com/">UK Campaign for Safe Road Design<br /></a><a href="http://www.saferoaddesign.eu/">European Campaign for Safe Road Design</a><br /><a href="http://www.savant.aecom.com/">Savant UK Construction and Project Management Consultants</a><br /><a href="http://www.vortini.com">Vortini - Sales Force Effectiveness</a><br /><a href="http://www.freeumbracotemplates.co.uk/">FreeUmbracoTemplates.co.uk</a></p>]]></content:encoded></item><item><title>Working in Visual Studio when developing umbraco solutions (2nd Way)</title><link>http://our.umbraco.org/wiki/codegarden-2009/open-space-minutes/working-in-visual-studio-when-developing-umbraco-solutions/working-in-visual-studio-when-developing-umbraco-solutions-(2nd-way)</link><pubDate>Tue, 02 Mar 2010 22:22:41 GMT</pubDate><guid>http://our.umbraco.org/wiki/codegarden-2009/open-space-minutes/working-in-visual-studio-when-developing-umbraco-solutions/working-in-visual-studio-when-developing-umbraco-solutions-(2nd-way)</guid><content:encoded><![CDATA[ <p><span style="font-family: Arial, sans-serif;">Hi,</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">I understand the very first
approach has been&nbsp;discussed in Open Space Session. I haven't attended but
still wish to add my way of using Umbraco with Visual Studio 2008. By this approach, I get everything in one sweet place and I can easily debug my application by Debug-&gt;Attach to process option.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">I won't be talking about
multi-developer environment and steps as that are provided in our first
approach.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><strong><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Steps</span></strong></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">1. Unzip Latest Umbraco package
and point IIS website to that folder (It is still&nbsp;advisable to user IIS
Admin pro for XP users). Follow the installation step and make it up and
running.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">2. I would suggest installing
Runway or web-site package by&nbsp;Warren Buckley.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">3. Create a Web-Application
using Visual Studio 2008 or later version. By default you will get folder and
files given by Web-Application say web.config and bin folder. Now close your
web-application / project in VS2008</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">4. Now go to your Umbraco website
root folder, select all files and folders and copy / paste it to the root
folder of your Visual Studio 2008 web-application. Process will ask do you want
to overwrite. Click yes / all</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">5. Once you copy all the files
and folder of your Umbraco web-site to VS2008 web-application root directory.
Go to IIS and now point your website folder to the new location that we have,
ie your VS2008 web-project root directory.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">6. While Umbraco installation
as per instructions, we have to give NETWORK SERVICE rights to the website, we
need to do the same here. Add NETWORK SERVICE rights to the VS2008
web-application root folder. Later make sure your website is running fine, do
check by logging-in admin mode as well.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">7. Finally open the
Web-Application project in VS2008, and in "Solution Explorer", locate
second icon that says "Show All files". On click, all the files that exist
in web-application project and not included will be shown to you.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">8. Include the following list
of folders to Web-Application project,&nbsp;</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">App_Browsers</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">app_code</span></span></span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">bin</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">config</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">css</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">data </span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">masterpages</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">media</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">scripts</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Umbraco</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">umbraco_client</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">usercontrols</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: .5in; text-indent: -.25in; line-height: 13.5pt; mso-list: l0 level1 lfo1; background: white;"><span style="font-size: 10.5pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; color: #333333;"><span style="mso-list: Ignore;">&middot;<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">xslt. </span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Note: (Umbraco and
umbraco_client folders might take longer time while you include)</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">In the Umbraco, default.aspx is
not linked with default.aspx.cs and designer files. (You can link it, if
required. your call!).</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><strong><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Note:</span></strong><span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">&nbsp;</span></span><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Worth mentioning, when you include data
folder in VS2008, it might have some folders that are named by GUIDs. I would
suggest you to&nbsp;exclude those folders. I have experienced ambiguity
compilation errors on user controls. But after excluding those GUID named
folders from my project, it successfully compiled.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Oh yes, do not forget to
reference cms, businesslogic and umbraco assemblies to VS web-application.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-family: Arial, sans-serif;">For working in team, copy the installed version to all development machines and have a centralized database(Probably this is a good practice rather going for db on each dev machine).</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-family: Arial, sans-serif;">And then you are good to go with your development ;)&nbsp;</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">I have successfully added this
project in SVN-subversion and TFS and able to maintain without any issues.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Release build for same project was
given further by using Publish feature from VS2008.</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">All good!!&nbsp;</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Umbraco remains my favorite CMS
;)</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;">&nbsp;</p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Cheers,</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">Ranjit J. Vaity</span></p>
<p style="margin-top: 5.25pt; margin-right: 0in; margin-bottom: 11.25pt; margin-left: 0in; line-height: 13.5pt; background: white;"><span style="font-size: 10.5pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; color: #333333;">To all Umbraco geeks, If you
have any suggestion, advice or better approach please write back.</span></p>]]></content:encoded></item><item><title>Adding Css and JS using the ClientDependency</title><link>http://our.umbraco.org/wiki/reference/templates/adding-css-and-js-using-the-clientdependency</link><pubDate>Tue, 02 Mar 2010 20:40:15 GMT</pubDate><guid>http://our.umbraco.org/wiki/reference/templates/adding-css-and-js-using-the-clientdependency</guid><content:encoded><![CDATA[ <p>As of version 4.1, the ClientDependencyFramework has been added to Umbraco.</p>
<p>This ensures that only 1 copy of a file is included, even if you have an include in several templates. It is used in the backend to ensure a small footprint.</p>
<p>You can also use it in the front-end yourself. Here's an example how to use it:</p>
<p>&nbsp;</p>
<pre>&lt;%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %&gt;
&lt;%@ Register Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" TagPrefix="CD" %&gt;
&lt;asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server"&gt;
&lt;html&gt;
&lt;head runat="server"&gt;
<span style="white-space: pre;">	</span>&lt;title&gt;Title&lt;/title&gt;
<span style="white-space: pre;">	</span>&lt;CD:CssInclude ID="CssInclude1" runat="server" FilePath="~/Css/Styles.css" /&gt;
<span style="white-space: pre;">	</span>&lt;CD:CssInclude ID="CssInclude2" runat="server" FilePath="~/Css/AnotherStyle.css" /&gt;
<span style="white-space: pre;">	</span>&lt;CD:JsInclude ID="JsInclude1" runat="server" FilePath="~/Scripts/jquery-1.3.1.min.js" /&gt;
<span style="white-space: pre;">	</span>&lt;CD:JsInclude ID="JsInclude2" runat="server" FilePath="~/Scripts/scripts.js" /&gt;
&lt;/head&gt;
&lt;CD:ClientDependencyLoader runat="server" id="Loader" /&gt;
&lt;body&gt;
Your content here
&lt;/body&gt;
&lt;/html&gt;
&lt;/asp:Content&gt;</pre>
<p>&nbsp;</p>]]></content:encoded></item><item><title>How to implement your own 404 handler</title><link>http://our.umbraco.org/wiki/how-tos/how-to-implement-your-own-404-handler</link><pubDate>Sat, 27 Feb 2010 15:01:38 GMT</pubDate><guid>http://our.umbraco.org/wiki/how-tos/how-to-implement-your-own-404-handler</guid><content:encoded><![CDATA[ <p>In some scenarios the build in mechanism for the 404 handlers are not sufficient. But you can easily implement your own 404 handler. Just create a class which implements the umbraco.interfaces.INotFoundHandler interface. This interface defines two properties and one method. Let's assume you have several domains in your umbraco installation: www.domain1.com, www.domain2.com, www.domain3.com, etc. With the standard definitions in the /config/umbracoSettings.config you can only separate by language (en-US, de-DE, etc). In this case you would implement something like this:</p>
<pre>using System.Web;<br />using umbraco.interfaces;<br /><br />namespace MyLibrary.Handlers<br />{<br />    public class MyNotFoundHandler: INotFoundHandler<br />    {<br />        private int redirectId;<br /><br />        public bool Execute(string url)<br />        {<br />            var server = HttpContext.Current.Request.ServerVariables["SERVER_NAME"].ToLower();<br />            if (server == "www.mydomain1.com")<br />            {<br />                redirectId = 1234; // the id of the 404 and search page from domain1.com<br />                return true;<br />            }<br />            if (server == "www.mydomain2.com")<br />            {<br />                redirectId = 5678; // the id of the 404 and search page from domain2.com<br />                return true;<br />            }<br />            return false;<br />        }<br /><br />        public bool CacheUrl<br />        {<br />            get { return false; }<br />        }<br /><br />        public int redirectID<br />        {<br />            get { return redirectId; }<br />        }<br />    }<br />}<br /></pre>
<h2>Explanation:</h2>
<p>The method Execute is the entry point to this handler and gets the requested url. But you can also use the HTTPContext with all the ServerVariables of the HttpRequest. </p>
<p>If the handler finds a solution to redirect to another node you have to set the local redirectId variable which is read by the request handler if the Execute method returns true. If the Execute method returns false the two properties won't be read by the request handler and the next 404handler (if defined in the config) will be called.</p>
<p>You can also define if this url with it's redirected id will be cached or not. </p>
<h2>Configuration:</h2>
<p>Be sure to add the dll to the bin folder and update the <a href="../reference/files-and-folders/files-in-the-config-folder/404handlersconfig">/config/404handlers.config</a>.</p>]]></content:encoded></item></channel></rss>