<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!--RSS generated by Windows SharePoint Services V3 RSS Generator on 11/15/2009 10:35:04 AM--><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>thekid.me.uk</title><link>http://blog.thekid.me.uk</link><description>RSS feed for the Posts list.</description><lastBuildDate>Sun, 15 Nov 2009 10:35:04 GMT</lastBuildDate><generator>SharePoint CKS:EBE</generator><ttl>60</ttl><image><title>thekid.me.uk</title><url>http://blog.thekid.me.uk/_layouts/images/homepage.gif</url><link>http://blog.thekid.me.uk</link></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Thekid" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Missing Create or Extend Web Application in Central Administration</title><link>http://feedproxy.google.com/~r/Thekid/~3/iqPSc6t9ZKs/missing-create-or-extend-web-application-in-central-administration.aspx</link><guid isPermaLink="false">/archive/2009/04/06/missing-create-or-extend-web-application-in-central-administration.aspx</guid><description>&lt;div class="ExternalClass14C39F8660AC49EBA0E444513F4C53A2"&gt;&lt;p&gt;Recently I wanted to create a new web application in SharePoint and so I went to the Central Admin website to create one, but the option was missing. Even though I was logged in as the System Account, the farm administration account I couldn't see the link. If I navigated directly to /_admin/extendvs.aspx I got an access denied message and none of the accounts configured for SharePoint would allow me access.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/MissingCreateorExtendWebApplicationinCen_9DB9/image_4.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border="0" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/MissingCreateorExtendWebApplicationinCen_9DB9/image_thumb_1.png" width="624" height="337"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;So after a lot of head scratching I remembered that I had navigated directly to the administration site directly in an existing browser session and had not used the link from Start Menu. As soon as I navigated from the start menu I realized that I  was using Windows Server 2008 and that Central Admin has to be run with administrator privileges. &lt;/p&gt; &lt;p&gt;As soon as the browser opened the 'Create or Extend Web Application' link appeared and all was good again.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thekid?a=vGKBzkUCyzo:5QDLSnAAezY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thekid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thekid?a=vGKBzkUCyzo:5QDLSnAAezY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thekid?i=vGKBzkUCyzo:5QDLSnAAezY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thekid?a=vGKBzkUCyzo:5QDLSnAAezY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thekid?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thekid?a=vGKBzkUCyzo:5QDLSnAAezY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thekid?i=vGKBzkUCyzo:5QDLSnAAezY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thekid?a=vGKBzkUCyzo:5QDLSnAAezY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thekid?i=vGKBzkUCyzo:5QDLSnAAezY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/iqPSc6t9ZKs" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Mon, 06 Apr 2009 10:57:45 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blog.thekid.me.uk/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blog.thekid.me.uk/archive/tags/WSS/default.aspx">WSS</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2009/04/06/missing-create-or-extend-web-application-in-central-administration.aspx</feedburner:origLink></item><item><title>Features in the new release of ARF</title><link>http://feedproxy.google.com/~r/Thekid/~3/NZ1-jiJ43_I/features-in-the-new-release-of-arf.aspx</link><guid isPermaLink="false">/archive/2009/01/19/features-in-the-new-release-of-arf.aspx</guid><description>&lt;div class="ExternalClass5BA9854A0D09431AB15C30E8EF38ED17"&gt;&lt;p&gt;A new version of ARF has just be released and can be &lt;a href="http://www.spworks.co.uk/downloads/latest.aspx" target="_blank"&gt;downloaded from the SPWorks site&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This version contains numerous new features to make your SharePoint site build simpler and faster. They include&lt;/p&gt; &lt;h3&gt;Added widget functionality&lt;/h3&gt; &lt;p&gt;This allows you to specify small chunks of functionality in an ASCX file. A field control is then added to the page which allows page authors to add a 'widget' to the page. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/FeaturesinthenewreleaseofARF_12CF5/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="191" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/FeaturesinthenewreleaseofARF_12CF5/image_thumb_1.png" width="311" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;By default widget properties are stored in the field control,  but a widget can store it properties in a cookie. This allows anonymous users with the ability to modify the look and feel of controls on the page. To facilitate this widgets also come with a widget edit control.&lt;/p&gt; &lt;p&gt;The ARF solution adds a sample control which shows a block of color. By clicking on edit the color can be changed.&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;ARFField:WidgetField runat=&amp;quot;server&amp;quot; FieldName=&amp;quot;Widgets&amp;quot; &lt;br&gt;       WidgetFolder=&amp;quot;/ARF/Widgets&amp;quot; WidgetList=&amp;quot;ARF Widget List&amp;quot; UseCookieStorage=&amp;quot;true&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;The feature adds a new list called &amp;quot;ARF Widget List&amp;quot;, which defines the widgets available.&lt;/p&gt; &lt;h3&gt;The &lt;font face="Courier New"&gt;&amp;lt;ARF:ListItemXml/&amp;gt;&lt;/font&gt; control can use the query string to get the ItemID&lt;/h3&gt; &lt;p&gt;This allows you to create a dynamic page based on list items. The query string is used to retrieve the item from the list.&lt;/p&gt; &lt;h3&gt;Floating console&lt;/h3&gt; &lt;p&gt;It is now possible to have the ArfConsole float. Its position is remeber across page navigation and it can also be collaped to save screen real estate. &lt;/p&gt; &lt;p&gt;Firstly you would need to register the ASCX control. &lt;br&gt;&lt;font face="Courier New"&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;ARFConsole&amp;quot; TagName=&amp;quot;Console&amp;quot; src=&amp;quot;~/_controltemplates/ARF/ARFConsole.ascx&amp;quot; %&amp;gt;&lt;/font&gt; &lt;/p&gt; &lt;p&gt;Then you can place the console on your page. If it is floating then it does not matter where, otherwise you should be able to place it in the same location as the SiteActions menu.&lt;br&gt;&lt;font face="Courier New"&gt;&amp;lt;ARFConsole:Console runat=&amp;quot;server&amp;quot; IsFloating=&amp;quot;True&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="tre"&gt;Once added you will have a toolbar which can be moved around the page...&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/FeaturesinthenewreleaseofARF_12CF5/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="188" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/FeaturesinthenewreleaseofARF_12CF5/image_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;If you have not used the ARF console control, it is just a direct replacement for the publishing toolbar and makes your master page easier to read by removing all the console markup from it.&lt;/p&gt; &lt;h3&gt;Items can be added to a DropDown directly from a List in a BasicContactForm&lt;/h3&gt; &lt;p&gt;A small piece of functionality which makes a lot of sense. A drop down list on a basic contact form can now be initialised directly from a SharePoint list, without having to write any code.&lt;br&gt; &lt;br&gt;The definition would be....&lt;font face="Courier New"&gt;Category;idCategory;D;&lt;strong&gt;ListNameHere&lt;/strong&gt;&lt;/font&gt;. The list would have to be in the root site collection and is optional.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=jIulMqoW"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=yi0m6nvV"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=yi0m6nvV" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=h4YZ2XmL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=Jp9n24pN"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=Jp9n24pN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=syEf1gce"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=syEf1gce" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/NZ1-jiJ43_I" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Mon, 19 Jan 2009 21:13:41 GMT</pubDate><feedburner:origLink>http://blog.thekid.me.uk/archive/2009/01/19/features-in-the-new-release-of-arf.aspx</feedburner:origLink></item><item><title>Lockdown WSS system pages on public SharePoint sites</title><link>http://feedproxy.google.com/~r/Thekid/~3/F34tWIlugtc/lockdown-wss-system-pages-on-public-sharepoint-sites.aspx</link><guid isPermaLink="false">/archive/2008/11/20/lockdown-wss-system-pages-on-public-sharepoint-sites.aspx</guid><description>&lt;div class="ExternalClass5AEBA0973FB84B68AEF60CCDF229EC0E"&gt;&lt;p&gt;Using WSS on public sites means giving anonymous access to virtually all the pages in your site, including all the different list views and document libraries. People won't be able to do anything they are not allowed to because of security trimming, but they will be able to get to see the standard SharePoint UI. There maybe also implementation details you may not want them to have access to or 'public' content which isn't 'always' public.&lt;/p&gt; &lt;h3&gt;MOSS Lockdown Feature&lt;/h3&gt; &lt;p&gt;MOSS has a feature which provides this functionality, the &lt;a href="http://technet2.microsoft.com/Office/en-us/library/f507f5d6-4c9d-4f98-909f-069c53b9a3f61033.mspx#section6" target="_blank"&gt;ViewFormPagesLockDown&lt;/a&gt; feature. For me there are three problems with this...&lt;/p&gt; &lt;p&gt;1. It only works with MOSS and I want it to work with WSS.&lt;br&gt;2. It does not cover everything I want locked down.&lt;br&gt;3. I don't have any control over it, maybe I want some things still available.&lt;/p&gt; &lt;p&gt;More about this feature is available from...&lt;/p&gt; &lt;p&gt;&lt;a href="http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/securing-moss-2007-publishing-sites.html"&gt;Securing MOSS 2007 Publishing Sites with Lockdown Mode&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/ecm/archive/2007/05/12/anonymous-users-forms-pages-and-the-lockdown-feature.aspx" target="_blank"&gt;Anonymous Users, Forms Pages, and the Lockdown Feature&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Master pages&lt;/h3&gt; &lt;p&gt;Having completed the &lt;a href="http://www.spworks.co.uk" target="_blank"&gt;SPWorks&lt;/a&gt; website using WSS I wanted to restrict access to any of the standard SharePoint pages, whilst still allowing access to the custom webpart pages. It would be easy enough to add a control to the default.master page, but this will un-ghost it and would have to be done for every default.master on each site. The other problem is that this would not work with pages in the 'Layouts' folder which use the application.master page. You can't really change this, without affecting all site collections in the farm.&lt;/p&gt; &lt;p&gt;Realistically I wanted a solution which would work with any of the default SharePoint pages and give me the option as to whether I deny access or not. Fortunately I have found a solution which works for me.&lt;/p&gt; &lt;h3&gt;ASP.Net tagMapping&lt;/h3&gt; &lt;p&gt;One of the great and underused (at least on my part) features of ASP.Net 2.0 is the &lt;font face="Courier New"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms164641.aspx" target="_blank"&gt;&amp;lt;tagMapping&amp;gt;&lt;/a&gt;&lt;/font&gt; section of web.config. From the documentation...&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;quot;Defines a collection of tag types that are remapped to other tag types at compile time&amp;quot;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Essentially this means that you can provide a class which ASP.Net substitutes for the original class when the page is compiled. You can redefine the &lt;font face="Courier New"&gt;&amp;lt;ASP:TextBox/&amp;gt;&lt;/font&gt; if you want, anything which you can...&lt;/p&gt; &lt;p&gt;a) inherit from the original class &lt;em&gt;and&lt;/em&gt; &lt;br&gt;b) is used within a tag on an ASPX page. &lt;/p&gt; &lt;p&gt;This is extremely powerful and provides endless opportunities for customization. My plan was to provide a tagMapping entry which replaced one of the standard SharePoint controls which is included on all the pages I want to secure.&lt;/p&gt; &lt;p&gt;Firstly I looked at the welcome.ascx control as this is on everyone of the standard SharePoint default pages. Unfortunately there are only two controls used within this ASCX and both of them are sealed. Being sealed means you can inherit from them and therefore cannot map them to a different class (Why?).&lt;/p&gt; &lt;p&gt;So next I looked at the SiteActions control, this is on every page too. This is made up from a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.featuremenutemplate.aspx" target="_blank"&gt;&lt;font face="Courier New"&gt;FeatureMenuTemplate&lt;/font&gt;&lt;/a&gt;, which as luck has it is not sealed, so I looked to using this.&lt;/p&gt; &lt;h3&gt;Adding security to the WSS pages&lt;/h3&gt; &lt;p&gt;To add security checking to all the WSS pages I created a class which inherited from the &lt;font face="Courier New"&gt;FeatureMenuTemplate&lt;/font&gt;. The code for this is below.&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SecurityChecker&lt;/span&gt; : &lt;span style="color:#2b91af"&gt;FeatureMenuTemplate&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;{&lt;/p&gt; &lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;protected&lt;/span&gt; &lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; OnPreRender(&lt;span style="color:#2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt; &lt;p style="margin:0px"&gt;    {&lt;/p&gt; &lt;p style="margin:0px"&gt;        CheckSecurity();&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;base&lt;/span&gt;.OnPreRender(e);&lt;/p&gt; &lt;p style="margin:0px"&gt;    }&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CheckSecurity()&lt;/p&gt; &lt;p style="margin:0px"&gt;    {&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;try&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        {&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af"&gt;SPContext&lt;/span&gt;.Current.Web.CurrentUser == &lt;span style="color:blue"&gt;null&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:#2b91af"&gt;SPUtility&lt;/span&gt;.HandleAccessDenied(&lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;Please login&amp;quot;&lt;/span&gt;));&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;if&lt;/span&gt; (!&lt;span style="color:#2b91af"&gt;SPContext&lt;/span&gt;.Current.Web.UserIsSiteAdmin &amp;amp;&amp;amp; !&lt;span style="color:#2b91af"&gt;SPContext&lt;/span&gt;.Current.Web.UserIsWebAdmin)&lt;/p&gt; &lt;p style="margin:0px"&gt;            {&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;if&lt;/span&gt; (!&lt;span style="color:#2b91af"&gt;SPContext&lt;/span&gt;.Current.Web.IsCurrentUserMemberOfGroup(&lt;span style="color:#2b91af"&gt;SPContext&lt;/span&gt;.Current.Web.AssociatedMemberGroup.ID))&lt;/p&gt; &lt;p style="margin:0px"&gt;                    &lt;span style="color:#2b91af"&gt;SPUtility&lt;/span&gt;.HandleAccessDenied(&lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;You do not have access to this page&amp;quot;&lt;/span&gt;));&lt;/p&gt; &lt;p style="margin:0px"&gt;            }&lt;/p&gt; &lt;p style="margin:0px"&gt;        }&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt; ex)&lt;/p&gt; &lt;p style="margin:0px"&gt;        {&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:#2b91af"&gt;Log&lt;/span&gt;.Debug(ex.ToString());&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:#2b91af"&gt;SPUtility&lt;/span&gt;.HandleAccessDenied(&lt;span style="color:blue"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;(&lt;span style="color:#a31515"&gt;&amp;quot;You do not have access to this page&amp;quot;&lt;/span&gt;));&lt;/p&gt; &lt;p style="margin:0px"&gt;        }&lt;/p&gt; &lt;p style="margin:0px"&gt;    }&lt;/p&gt; &lt;p style="margin:0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;In this class we check if the user is logged in, if they are not an Administrator and ultimately if they are a member of the site. We then use &lt;font face="Courier New"&gt;HandleAccessDenied&lt;/font&gt; to get them to either log in, or send them to the standard SharePoint access denied page. &lt;/p&gt; &lt;p&gt;This class is then mapped to the original SharePoint &lt;font face="Courier New"&gt;FeatureMenuTemplate&lt;/font&gt; class in web.config...&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;pages&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;...&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;namespaces .../&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tagMapping&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;tagType&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;System.Web.UI.WebControls.SqlDataSource, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&lt;/span&gt;&amp;quot;&lt;br&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;mappedTagType&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;Microsoft.SharePoint.WebControls.SPSqlDataSource, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;    &lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;tagType&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;Microsoft.SharePoint.WebControls.FeatureMenuTemplate,Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c&lt;/span&gt;&amp;quot;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;strong&gt;&lt;span style="color:blue"&gt;        &lt;/span&gt;&lt;span style="color:red"&gt;mappedTagType&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;ARF.Web.Controls.SecurityChecker, ARF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=fed9cbb14b1dc0f0&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tagMapping&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;pages&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Here we see replacing the &lt;font face="Courier New"&gt;FeatureMenuTemplate&lt;/font&gt; with the &lt;a href="http://www.spworks.co.uk/arf/default.aspx" target="_blank"&gt;ARF&lt;/a&gt; version called &lt;font face="Courier New"&gt;SecurityChecker&lt;/font&gt;. Now our class will be used and we can check the security.&lt;/p&gt; &lt;p&gt;Now whenever a page is displayed which has the SiteActions menu on it the security will be checked and as the SiteActions menu is on every page all pages will be checked. This example is part of ARF, the source for which can be &lt;a href="http://www.spworks.co.uk/downloads/latest.aspx" target="_blank"&gt;downloaded from the ARF website&lt;/a&gt;.&lt;/p&gt; &lt;h3&gt;A note of caution&lt;/h3&gt; &lt;p&gt;I am using this with ARF, which has a panel which prevents its child controls from being rendered. I am using this to prevent the SiteActions control being rendered for anyone but site authors in the anonymous master page. Using this prevents the above code being called on the anonymous pages and ensures people still have access to the pages I want them to.&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;arf:ARFPanel&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;server&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;AuthorsOnly&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;True&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ARFConsole:Console&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;server&lt;/span&gt;&amp;quot;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;arf:ARFPanel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;In order to use this WSS security lock down technique you would also need to implement this kind of solution.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=PM8CNowA"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=qRNA1xNn"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=qRNA1xNn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=854cNgRK"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=LV7DbiIX"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=LV7DbiIX" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=ypipmRFv"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=ypipmRFv" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/F34tWIlugtc" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Thu, 20 Nov 2008 23:08:00 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/Code/default.aspx">Code</category><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blog.thekid.me.uk/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blog.thekid.me.uk/archive/tags/WSS/default.aspx">WSS</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2008/11/20/lockdown-wss-system-pages-on-public-sharepoint-sites.aspx</feedburner:origLink></item><item><title>SharePoint Live Authentication and Custom Discussion Forums</title><link>http://feedproxy.google.com/~r/Thekid/~3/bW5x0gI7BD0/sharepoint-live-authentication-and-custom-discussion-forums.aspx</link><guid isPermaLink="false">/archive/2008/11/19/sharepoint-live-authentication-and-custom-discussion-forums.aspx</guid><description>&lt;div class="ExternalClass4595A45328964BB4A305E96EE11E4C2A"&gt;&lt;p&gt;I have released a new version of &lt;a href="http://www.spworks.co.uk/arf/default.aspx" target="_blank"&gt;ARF&lt;/a&gt;, which includes implementations of a Windows Live Authentication provider for SharePoint and an XML/XSLT implementation of SharePoint discussion forums. Both of these features are being used on the &lt;a href="http://www.spworks.co.uk/home/sharepoint-consultancy.aspx" target="_blank"&gt;SPWorks website&lt;/a&gt; to provide the &lt;a href="http://www.spworks.co.uk/support/forums.aspx" target="_blank"&gt;discussion forums for ARF&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;You can now signup to the SPWorks site and ask question about the ARF framework. Signup is simple, just sign in with your LiveID and complete your profile. The profile on the site is completely separate to your LiveID profile allowing you to use a different email if you require.&lt;/p&gt; &lt;h3&gt;SharePoint Live Authentication&lt;/h3&gt; &lt;p&gt;Based on the &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=CKS&amp;amp;ReleaseId=7746" target="_blank"&gt;CKS:WLA&lt;/a&gt; SharePoint provider by &lt;a href="http://blog.solanite.com/keith/default.aspx" target="_blank"&gt;Keith Bunge,&lt;/a&gt; the provider allows you to use Live Authentication to authenticate with SharePoint. Once authenticated the user can be assigned to groups and acts like any other Forms based authentication on SharePoint.&lt;/p&gt; &lt;p&gt;Working slightly different to the CKS:WLA, the ARF provider directly uses the &lt;font face="Courier New"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.siteuserinfolist.aspx" target="_blank"&gt;SiteUserInfoList&lt;/a&gt;&lt;/font&gt; to store the user details. This works well as there are no passwords to store and makes user management easier.&lt;/p&gt; &lt;h3&gt;ARF Discussion Forums&lt;/h3&gt; &lt;p&gt;ARF now provides classes which give you easy access to the standard SharePoint discussion forums. As with all things ARF you are provided with XML, allowing you to render the forums using XSLT.&lt;/p&gt; &lt;p&gt;There are classes which list available forums, threads within each forum and posts within each thread. All are controlled by query string parameters. &lt;/p&gt; &lt;p&gt;ARF also provides a form to allow users to create new discussions or reply to current ones. This form can work anonymously or can enforce login prior to submitting a response.&lt;/p&gt; &lt;p&gt;Demonstration, source and installs available&lt;/p&gt; &lt;p&gt;As always with ARF the source and WSP installs are available for download. You can also see both features available at the &lt;a href="http://www.spworks.co.uk/home/sharepoint-consultancy.aspx" target="_blank"&gt;SPWorks website&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=Qjt7tKiq"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=UEgletcj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=UEgletcj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=NV36Cl6M"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=fUCnO1Bw"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=fUCnO1Bw" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=O0pH79In"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=O0pH79In" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/bW5x0gI7BD0" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Wed, 19 Nov 2008 13:32:11 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/Free Stuff/default.aspx">Free Stuff</category><category domain="http://blog.thekid.me.uk/archive/tags/Projects/default.aspx">Projects</category><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blog.thekid.me.uk/archive/tags/WSS/default.aspx">WSS</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2008/11/19/sharepoint-live-authentication-and-custom-discussion-forums.aspx</feedburner:origLink></item><item><title>Remove 'init.js' and 'control.css' from your public SharePoint site</title><link>http://feedproxy.google.com/~r/Thekid/~3/C__L8bC2wOE/remove-init-js-and-control-css-from-your-public-sharepoint-site.aspx</link><guid isPermaLink="false">/archive/2008/11/10/remove-init-js-and-control-css-from-your-public-sharepoint-site.aspx</guid><description>&lt;div class="ExternalClass8DB7749B0A934247A94AA9C6EBD61D09"&gt;
&lt;p&gt;Most of the SharePoint websites I work on do not expose any of the standard SharePoint functionality. They do not use webparts and so do not require any of the SharePoint javascript functionality.&lt;/p&gt;
&lt;p&gt;SharePoint includes files to support the client side functionality of its controls, init.js, core.js, controls.css and core.css. These files are pretty large and in the interest of &lt;a href="http://blog.thekid.me.uk/archive/2008/09/03/using-page-trace-to-reduce-your-viewstate-in-sharepoint.aspx" target="_blank"&gt;increasing the speed of loading your page&lt;/a&gt; its best to remove them, assuming they are not being used.&lt;/p&gt;
&lt;p&gt;So a tip for your SharePoint publishing site is to remove them, but keep them available to your authors. You can do this using the &lt;font face="Courier New"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.authoringcontainer.aspx" target="_blank"&gt;AuthoringContainer&lt;/a&gt;&lt;/font&gt; control.&lt;/p&gt;
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;
&lt;p&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;PublishingWebControls&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;AuthoringContainer&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;AuthoringContainer1&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;DisplayAudience&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;AuthorsOnly&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;SharePoint&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;CssRegistration&lt;/span&gt; &lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="background:#ffee62"&gt;&amp;lt;%&lt;/span&gt; $SPUrl:~sitecollection/Style Library/~language/Core Styles/controls.css &lt;span style="background:#ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;SharePoint&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ScriptLink&lt;/span&gt; &lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;init.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Sharepoint&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;CssLink&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;PublishingWebControls&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;AuthoringContainer&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;By wrapping these controls with a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.authoringcontainer.aspx" target="_blank"&gt;SharePoint AuthoringContainer&lt;/a&gt; you can speed up the load time of your publishing site to your visitors, but keep the authoring functionality available to your site authors.&lt;/p&gt;
&lt;p&gt;Sometimes I have also included the PlaceHolderAdditionalPageHead to ensure other unwanted js or css files are excluded.&lt;/p&gt;
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;
&lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ContentPlaceHolder&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;PlaceHolderAdditionalPageHead&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;h3&gt;Another quick tip&lt;/h3&gt;
&lt;p&gt;Sometimes your custom CSS will not work well with the SharePoint field controls and so you need to fix the look and feel. This is important to make the editing experience as good as possible, ensuring the authors are happy. Personally I like to keep the default CSS specific to viewing the site and not try to have one CSS file for both viewing and authoring.&lt;/p&gt;
&lt;p&gt;By using the SharePoint &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.editmodepanel.aspx" target="_blank"&gt;EditModePanel&lt;/a&gt; you can include a separate stylesheet, specifically designed to override any styles affecting the authoring look and feel. This makes the authoring experience much more usable, does not compromise your  original CSS and is only included when editing a page.&lt;/p&gt;
&lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt;
&lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;PublishingWebControls&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;EditModePanel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;link&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;rel&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;href&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;/Style Library/ARF_editing.css&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;PublishingWebControls&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;EditModePanel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=X7wDCqpM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=8ncF0rKl"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=8ncF0rKl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=1iGdaZjY"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=BQXo1PJ7"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=BQXo1PJ7" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=5DtYGWEy"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=5DtYGWEy" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/C__L8bC2wOE" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Mon, 10 Nov 2008 10:42:00 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/Publishing/default.aspx">Publishing</category><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blog.thekid.me.uk/archive/tags/Tips/default.aspx">Tips</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2008/11/10/remove-init-js-and-control-css-from-your-public-sharepoint-site.aspx</feedburner:origLink></item><item><title>MSDN Ramp Up - SharePoint for Developers Track</title><link>http://feedproxy.google.com/~r/Thekid/~3/Wzv9tgqNs4g/msdn-ramp-up-sharepoint-for-developers-track.aspx</link><guid isPermaLink="false">/archive/2008/11/06/msdn-ramp-up-sharepoint-for-developers-track.aspx</guid><description>&lt;div class="ExternalClassD4F007C140DE4BF1974B22AAB177FC91"&gt;&lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/MSDNRampUpSharePointforDevelopersTrack_A174/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="63" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/MSDNRampUpSharePointforDevelopersTrack_A174/image_thumb.png" width="155" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/rampup/default.aspx" target="_blank"&gt;Ramp Up&lt;/a&gt; program has just launched a new track for SharePoint developers...&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;Ramp Up is a free, online, community-based learning program, with a number of different tracks that will help you build your portfolio of professional development skills.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The SharePoint track will immerse you in many of the developer-centric capabilities of Microsoft Office SharePoint Server.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;Level 1: Web Parts&lt;/strong&gt;&lt;br&gt;Did you know that in SharePoint you can build pages as easy as in ASP.NET - and allow end users to create dashboards? Web parts allow for creating components of Web user interface that can be reused on multiple Web pages. These are introduced in ASP.NET and built on in SharePoint where they can be added to pages by end users and managed by IT Professionals. In this topic you will learn about building simple Web parts for SharePoint and how to connect them back to SharePoint site data.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Level 2: Data Lists&lt;/strong&gt;&lt;br&gt;Did you know that SharePoint developers can work with data from lists that users get access to too? Data lists provide data storage for end users in SharePoint. End users can create lists with schema all through the SharePoint user interface and they can create, edit, and view the data. All of this data can be programmatically accessed by developers and this topic is all about that.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Level 3: Event Handlers&lt;/strong&gt;&lt;br&gt;Did you know that SharePoint developers can automatically process data that your users upload via a spreadsheet? Event handlers (or event receivers) are custom code that runs on the SharePoint server in response to something that happens on the server. Event handlers can be useful for running business logic in response to data being added to the site. This topic shows how to create simple event handlers and investigates ways that event handlers can be used in SharePoint.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Level 4: Workflow&lt;/strong&gt;&lt;br&gt;Did you know that you can write WF workflows in SharePoint without having to worry about storage, persistence, or how to interact with the user? Workflow in SharePoint allows for implementation of processes that require interaction such as email approvals or form completion by people in your organization. This topic shows you how to create simple workflows in SharePoint using Visual Studio that involve approvals from people by email and for meeting room resource bookings with an administrator.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Level 5: Silverlight Web Parts&lt;/strong&gt;&lt;br&gt;Did you know that you can build rich Internet applications with SharePoint? Silverlight is a new Web user interface technology from Microsoft that allows for each implementation of animations and videos. This topic shows how a SharePoint user interface can be enhanced by using Silverlight in Web parts as part of a SharePoint site.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Visit the &lt;a href="http://www.myrampup.com/ " target="_blank"&gt;Ramp Up site&lt;/a&gt; and sign up for free. You can also access the &lt;a href="http://social.microsoft.com/forums/en-US/rampup/threads/ " target="_blank"&gt;forums for the Ramp Up program&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=0XGgLw4n"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=RrvB9klW"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=RrvB9klW" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=ApieMfyn"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=S9kAHD6e"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=S9kAHD6e" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=eRtjSm9e"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=eRtjSm9e" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/Wzv9tgqNs4g" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Thu, 06 Nov 2008 11:22:35 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/Development/default.aspx">Development</category><category domain="http://blog.thekid.me.uk/archive/tags/Free Stuff/default.aspx">Free Stuff</category><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blog.thekid.me.uk/archive/tags/Tools/default.aspx">Tools</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2008/11/06/msdn-ramp-up-sharepoint-for-developers-track.aspx</feedburner:origLink></item><item><title>Creating a feedback or contact form for a SharePoint website</title><link>http://feedproxy.google.com/~r/Thekid/~3/ptsmuSXlR9Y/creating-a-feedback-or-contact-form-for-a-sharepoint-website.aspx</link><guid isPermaLink="false">/archive/2008/11/04/creating-a-feedback-or-contact-form-for-a-sharepoint-website.aspx</guid><description>&lt;div class="ExternalClass7AE559AF68D04124BE156DA909CA2E1F"&gt;&lt;p&gt;One of the normal requirements for a public website is some kind of feedback or contact form. Whilst this is not the most difficult thing to do, it's handy when you can create a fully accessible feedback form, with validation and the ability to update a list without having to write any code. &lt;a href="http://www.spworks.co.uk/arf/default.aspx" target="_blank"&gt;ARF&lt;/a&gt; provides you with a free solution to this problem, without having to write any code.&lt;/p&gt; &lt;h3&gt;ARF Contact Form&lt;/h3&gt; &lt;p&gt;ARF provides a basic contact form control which provides you with some basic functionality for your form. The control knows how to update a specified list with the submitted values. The &lt;font face="Courier New"&gt;BasicContactForm&lt;/font&gt; control is a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.templatebasedcontrol.aspx" target="_blank"&gt;templated control&lt;/a&gt;, which means that you can specify your own HTML layout and the underlying functionality will still work.&lt;/p&gt; &lt;p&gt;This approach also allows you use any ASP.Net or SharePoint controls you wish in the template. This includes SharePoint field controls or ASP.Net validation controls.&lt;/p&gt; &lt;h3&gt;An Example&lt;/h3&gt; &lt;p&gt;The &lt;a href="http://www.spworks.co.uk/home/sharepoint-consultancy.aspx" target="_blank"&gt;SPWorks website&lt;/a&gt; uses this functionality for its newsletter sign up form, the ASP code for which is below.&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ARF&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;BasicContactForm&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;FieldDefinitions&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Title;idEmail;T&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ContactListName&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;ARFNewsContacts&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;template&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idThankyouPanel&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Visible&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;false&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Thankyou, you have been subscribed&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idErrorPanel&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Visible&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;false&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Sorry, we encountered an error subscribing you.&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;You have not been subscribed&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idIntroPanel&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt; &lt;span style="color:red"&gt;class&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;newsletter&amp;quot;&amp;gt;&lt;/span&gt;To stay informed about the ARF framework, signup for the newsletter.&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idFormPanel&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Label&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;AssociatedControlID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idEmail&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Text&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Enter your email address&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;CssClass&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;label&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;textbox&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idEmail&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;CssClass&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;newsletter&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Button&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idOK&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Text&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Subscribe&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;cssclass&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;signup-button&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;      &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;   &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;template&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ARF&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;BasicContactForm&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;br&gt;This definition updates a simple list called 'ARFNewsContacts' with the email address entered. It also specifies via the &lt;font face="Courier New"&gt;FieldDefinitions&lt;/font&gt; attribute how to update the list, in this case update the 'Title' column with the value from the control with an ID of 'idEmail' which is a text value ('T'). Possible values here are T (for text), C (for checkbox) and D (for drop down list).&lt;/p&gt; &lt;p&gt;You will also note the different panels, these are optional. The contact form control allows you to specify the different panels which can be used during the process of submission. Initially the 'idIntroPanel' and the 'idFormPanel' will be shown, with the other two hidden. After the form is submitted the intro and form panels will be hidden and either the 'idThankyouPanel' or the 'idErrorPanel' will be shown, depending on if it succeeded or not.&lt;/p&gt; &lt;p&gt;These panels can contain whatever you like, generally they would have a HTML field control so that the author can modify the text. When the page is being edited all panels are visible.&lt;/p&gt; &lt;h3&gt;Creating a feedback form&lt;/h3&gt; &lt;p&gt;Firstly you will need to ensure you have &lt;a href="http://www.spworks.co.uk/downloads/notes.aspx" target="_blank"&gt;ARF deployed&lt;/a&gt; on your site.&lt;/p&gt; &lt;p&gt;Next create your custom SharePoint list to hold the feedback data.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/CreatingafeedbackorcontactformforaShareP_1427F/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="145" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/CreatingafeedbackorcontactformforaShareP_1427F/image_thumb_1.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;You can now create a publishing page layout for your feedback form.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/CreatingafeedbackorcontactformforaShareP_1427F/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="174" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/CreatingafeedbackorcontactformforaShareP_1427F/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Once this is created you can add the ARF &lt;font face="Courier New"&gt;BasicContactForm&lt;/font&gt; to the PlaceholderMain placeholder within your layout...below is the &lt;a href="http://www.spworks.co.uk/about/contact.aspx" target="_blank"&gt;contact form on the SPWorks website&lt;/a&gt;.&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ARF&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;BasicContactForm&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;                      &lt;span style="color:red"&gt;ContactListName&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;&amp;lt;Your List Name&amp;gt;&amp;quot;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;                      &lt;span style="color:red"&gt;FieldDefinitions&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Message;idMessage;T,Title;idSubject;T,ContactName;idName;T,ContactEmail;idEmail;T,Category;idCategory;D&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;template&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Visible&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idThankyouPanel&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ARFFields&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;RichTextField&lt;/span&gt; &lt;span style="color:red"&gt;FieldName&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;HtmlOne&lt;/span&gt;&lt;span style="color:red"&gt;unat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Visible&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idErrorPanel&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;h3&lt;/span&gt; &lt;span style="color:red"&gt;style&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:red"&gt;color&lt;/span&gt;:&lt;span style="color:blue"&gt;red&amp;quot;&amp;gt;&lt;/span&gt;Whoops &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;h3&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                Failed to send the message, use the back button and try again!&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;a&lt;/span&gt; &lt;span style="color:red"&gt;href&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;#&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;onclick&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;history.go(-1);&amp;quot;&amp;gt;&lt;/span&gt;Go Back&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;a&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;p&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Visible&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idIntroPanel&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;ARFFields&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;RichTextField&lt;/span&gt; &lt;span style="color:red"&gt;FieldName&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;HtmlTwo&lt;/span&gt;&lt;span style="color:red"&gt;unat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Visible&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idFormPanel&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt; &lt;span style="color:red"&gt;class&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;solbox form&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;style&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:red"&gt;width&lt;/span&gt;:&lt;span style="color:blue"&gt;630px&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;AssociatedControlID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idSubject&amp;quot;&amp;gt;&lt;/span&gt;        &lt;/p&gt; &lt;p style="margin:0px"&gt;                    Subject&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idSubject&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;size&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;141&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;maxlength&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;400&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;associatedcontrolid&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idName&amp;quot;&amp;gt;&lt;/span&gt;        &lt;/p&gt; &lt;p style="margin:0px"&gt;                    Name&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idName&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;size&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;41&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;maxlength&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;400&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;associatedcontrolid&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idEmail&amp;quot;&amp;gt;&lt;/span&gt;        &lt;/p&gt; &lt;p style="margin:0px"&gt;                    E-mail address&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idEmail&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;size&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;41&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;maxlength&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;400&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;associatedcontrolid&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idCategory&amp;quot;&amp;gt;&lt;/span&gt;        &lt;/p&gt; &lt;p style="margin:0px"&gt;                    Category&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DropDownList&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idCategory&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Comment&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Question&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Support&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;Commercial&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;ListItem&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DropDownList&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;AssociatedControlID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idMessage&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;style&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:red"&gt;width&lt;/span&gt;:&lt;span style="color:blue"&gt;300px&lt;/span&gt;;&lt;span style="color:red"&gt;margin-bottom&lt;/span&gt;:&lt;span style="color:blue"&gt;3px&lt;/span&gt;;&lt;span style="color:blue"&gt;&amp;quot;&amp;gt;&lt;/span&gt;        &lt;/p&gt; &lt;p style="margin:0px"&gt;                    Comments and Questions&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;label&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;TextMode&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Multiline&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;rows&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;10&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idMessage&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Style&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:red"&gt;width&lt;/span&gt;:&lt;span style="color:blue"&gt;600px&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;br&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;                &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;button&lt;/span&gt; &lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;Text&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;Send&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;idOK&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;style&lt;/span&gt;&lt;span style="color:blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:red"&gt;float&lt;/span&gt;:&lt;span style="color:blue"&gt;right&lt;/span&gt;;&lt;span style="color:red"&gt;width&lt;/span&gt;:&lt;span style="color:blue"&gt;100px&lt;/span&gt;;&lt;span style="color:red"&gt;height&lt;/span&gt;:&lt;span style="color:blue"&gt;24px&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;            &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;div&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;        &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Panel&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;template&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;ARF&lt;/span&gt;&lt;span style="color:blue"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;BasicContactForm&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Make sure you get the &lt;font face="Courier New"&gt;FieldDefinitions&lt;/font&gt; correct as ARF uses these to update the list with the correct values. The format is...&lt;/p&gt; &lt;p&gt;&amp;lt;Column Name&amp;gt;;&amp;lt;Control ID&amp;gt;;&amp;lt;Control Type&amp;gt;, &amp;lt;Column Name&amp;gt;;&amp;lt;Control ID&amp;gt;;&amp;lt;Control Type&amp;gt;, .....&lt;/p&gt; &lt;p&gt;This allows you to create any number of columns in your list and associate them with controls on your form. This provides a great deal of flexibility in that you can collect whatever information you require and are not limited to a fixed number of fields. The only requirement is that the OK/Submit button has and ID of 'idOK'.&lt;/p&gt; &lt;p&gt;You can also use the standard &lt;a href="http://msdn.microsoft.com/en-us/library/aa479013.aspx" target="_blank"&gt;ASP.Net validating server controls&lt;/a&gt; to provide validation for your form and ensure that it has been completed correctly.&lt;/p&gt; &lt;h3&gt;Feedback notification&lt;/h3&gt; &lt;p&gt;Once you have your list and contact form its just a question of subscribing to alerts on the SharePoint list. This way you will be notified every time your site gets feedback or a contact request.&lt;/p&gt; &lt;h3&gt;Extending the control&lt;/h3&gt; &lt;p&gt;All the controls in &lt;a href="http://www.spworks.co.uk/arf/" target="_blank"&gt;ARF&lt;/a&gt; can be extended and overrriden. This allows you to re-used the ARF functionality, but providing your own implementation where required. The &lt;font face="Courier New"&gt;BasicContactForm&lt;/font&gt; (and its parent class) allows you to completely override the action when the button is pressed and you can also re-used all the base functionality of updating a list if required.&lt;/p&gt; &lt;p&gt;Also this control is not only for feedback or contact forms, it could be used for a variety of common forms which require user input. As long as the results need to be stored in a list this control will work for you.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=VGYhBl2f"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=z6I7iya5"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=z6I7iya5" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=oH6t9oXs"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=FbWB7651"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=FbWB7651" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=dhjal7KM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=dhjal7KM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/ptsmuSXlR9Y" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Tue, 04 Nov 2008 23:52:53 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/Samples/default.aspx">Samples</category><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blog.thekid.me.uk/archive/tags/WSS/default.aspx">WSS</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2008/11/04/creating-a-feedback-or-contact-form-for-a-sharepoint-website.aspx</feedburner:origLink></item><item><title>A tip when looking at the SharePoint content DB</title><link>http://feedproxy.google.com/~r/Thekid/~3/X-kZG822HIA/a-tip-when-looking-at-the-sharepoint-content-db.aspx</link><guid isPermaLink="false">/archive/2008/11/03/a-tip-when-looking-at-the-sharepoint-content-db.aspx</guid><description>&lt;div class="ExternalClassF1671522E11E41FFA7F4E940E6D684C3"&gt;
&lt;h3&gt;The Problem&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AtipwhenlookingattheSharePointcontentDB_10248/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="113" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AtipwhenlookingattheSharePointcontentDB_10248/image_thumb.png" width="273" align="left" border="0"&gt;&lt;/a&gt;Sometimes its just easier to fire up SQL Management Studio and have a quick look at the database to find out what's going on. Today I had that situation, I wanted to dele a content type and SharePoint kept telling me it was in use, but gave no clue as to where. &lt;/p&gt;
&lt;p&gt;I deleted everything I could, even from the 'recycle bin', but could not find that last little reference that was stopping me. So I decided to have a look in the DB, just so I could find the reference it and remove it.&lt;/p&gt;
&lt;p&gt;I knew the content type ID was &lt;br&gt;0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39007A160D85AE2686478FD51B418A09F22D01&lt;br&gt;and so hoped I could look at the DB for that ID and find out what was using it. However, if you look at the ContentTypeUsage table the ContentTypeId is stored as &amp;lt;Binary data&amp;gt;??&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AtipwhenlookingattheSharePointcontentDB_10248/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="249" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AtipwhenlookingattheSharePointcontentDB_10248/image_thumb_1.png" width="527" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;How frustrating, I just wanted to see the ID, or write a query to find the correct entries.&lt;/p&gt;
&lt;h3&gt;The Solution&lt;/h3&gt;
&lt;p&gt;It turns out that there is a great little function in SQL to turn the &amp;lt;Binary data&amp;gt; in to a nice readable and queryable string.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;sys.fn_varbintohexstr(&lt;em&gt;column&lt;/em&gt;) &lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Using this function you can easily see the &amp;lt;Binary data&amp;gt;...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AtipwhenlookingattheSharePointcontentDB_10248/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="313" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AtipwhenlookingattheSharePointcontentDB_10248/image_thumb_2.png" width="531" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;You can then write a query like this...&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;SELECT  SiteId, sys.fn_varbintohexstr(ContentTypeId) AS ID, WebId, ListId, IsFieldId, Class&lt;br&gt;FROM    ContentTypeUsage&lt;br&gt;WHERE   (sys.fn_varbintohexstr(ContentTypeId) LIKE '0x01004d5a79bafa4a4576b79c56ff3d0d662d%')&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Which will help you find out where your content type is being referenced.&lt;/p&gt;
&lt;p&gt;And my problem? Well it turned out the content type was still being referenced in one of the Pages document libraries. Once I removed the content type from that library I was able to delete the site content type.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=KanpaGqI"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=Z6sCqoss"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=Z6sCqoss" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=3xsxHa2v"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=wtUiUVS6"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=wtUiUVS6" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=F34P9ITd"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=F34P9ITd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/X-kZG822HIA" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Mon, 03 Nov 2008 18:16:00 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/Development/default.aspx">Development</category><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blog.thekid.me.uk/archive/tags/Tips/default.aspx">Tips</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2008/11/03/a-tip-when-looking-at-the-sharepoint-content-db.aspx</feedburner:origLink></item><item><title>Adding an 'Up Folder' button to a SharePoint List View Webpart</title><link>http://feedproxy.google.com/~r/Thekid/~3/WiGVyuYHYH8/adding-an-up-folder-button-to-a-sharepoint-list-view-webpart.aspx</link><guid isPermaLink="false">/archive/2008/11/03/adding-an-up-folder-button-to-a-sharepoint-list-view-webpart.aspx</guid><description>&lt;div class="ExternalClass502EA671A3114E37899387057D02B970"&gt;&lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AddinganUpFolderbuttontoaSharePointListV_13FDE/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height="75" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AddinganUpFolderbuttontoaSharePointListV_13FDE/image_thumb.png" width="239" align="left" border="0"&gt;&lt;/a&gt; A little while ago I was asked if it was possible to add an 'Up Folder' button so that users could navigate back to the parent folder in a ListView webpart. I knew you could easily add a button to the ListView toolbar and adding the functionality to go to to the parent folder couldn't be that difficult so I said yes. However, it wasn't as straight forward as I would have hoped.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;h3&gt;Adding the toolbar button&lt;/h3&gt; &lt;p&gt;Adding the button to the toolbar is pretty straight forward, you just need a feature with a &lt;a href="http://blog.thekid.me.uk/archive/2008/04/29/sharepoint-custom-actions-in-a-list-view-webpart.aspx" target="_blank"&gt;CustomAction&lt;/a&gt;, which in turn adds the button...&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;CustomAction Title=&amp;quot;Up Folder&amp;quot;&lt;br&gt;              Location=&amp;quot;ViewToolbar&amp;quot;&lt;br&gt;              Id=&amp;quot;TheKid.UpFolder&amp;quot;&lt;br&gt;              Sequence=&amp;quot;100&amp;quot;&lt;br&gt;              RegistrationType=&amp;quot;ContentType&amp;quot;&lt;br&gt;              RegistrationId=&amp;quot;0x01&amp;quot;&lt;br&gt;              Description=&amp;quot;Navigates up a folder in a ListView Webpart&amp;quot;&lt;br&gt;              ControlAssembly=&amp;quot;TheKid.CustomActions.Backup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=919ab618f7ce98cf&amp;quot;&lt;br&gt;              ControlClass=&amp;quot;TheKid.CustomActions.Backup.Action&amp;quot; /&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;br&gt;This is using a class which inherits from &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.splinkbutton.aspx" target="_blank"&gt;SPLinkButton&lt;/a&gt; and displays the button on the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.listviewwebpart.aspx" target="_blank"&gt;ListViewWebPart&lt;/a&gt; toolbar. This works no problem and we can then write some code to navigate the 'Up Folder' functionality.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;NOTE: In the &lt;font face="Courier New"&gt;CustomAction&lt;/font&gt; above we are using &lt;font face="Courier New"&gt;RegistrationType='ContentType'&lt;/font&gt; and &lt;font face="Courier New"&gt;RegistrationId=&amp;quot;0x01&amp;quot;&lt;/font&gt;. This is going to register this button for every content type (essentially every list &amp;amp; document library), so if you want to restrict this functionality you can by changing these values.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;h3&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AddinganUpFolderbuttontoaSharePointListV_13FDE/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height="137" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AddinganUpFolderbuttontoaSharePointListV_13FDE/image_thumb_1.png" width="427" border="0"&gt;&lt;/a&gt; &lt;/h3&gt; &lt;h3&gt;Formatting the link&lt;/h3&gt; &lt;p&gt;The ListViewWebPart uses post-backs to change the folder displayed, in particular it uses a javascript function called EnterFoler to perform the postback. This function takes one parameter which is the formatted URL for the folder to which you wish to navigate. The URL should be the current URL with three parameters, the RootFolder, the Folder Content Type ID and the View Guid.&lt;/p&gt; &lt;p&gt;So to format the link we need to know the parent folder URL, which you would have thought you could get in code no problem...apparently not. I could not find anything which would give me access to the current folder of the ListView in order to workout the parent folder. Unfortunately I had to resort to reflection to get this information, not something I generally like doing and I wouldn't recommend it...but when needs must!!&lt;/p&gt; &lt;p&gt;The ListViewWebPart contains a private variable called 'rootFolder' that contains the current folder the webpart is displaying, as this was exactly what I needed I used that...&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;object&lt;/span&gt; GetPrivateFieldValue(&lt;span style="color:blue"&gt;object&lt;/span&gt; obj, &lt;span style="color:blue"&gt;string&lt;/span&gt; fieldName)&lt;/p&gt; &lt;p style="margin:0px"&gt;{&lt;/p&gt; &lt;p style="margin:0px"&gt;    &lt;span style="color:#2b91af"&gt;FieldInfo&lt;/span&gt; fi = obj.GetType().GetField(fieldName,&lt;/p&gt; &lt;p style="margin:0px"&gt;                            System.Reflection.&lt;span style="color:#2b91af"&gt;BindingFlags&lt;/span&gt;.Instance | System.Reflection.&lt;span style="color:#2b91af"&gt;BindingFlags&lt;/span&gt;.NonPublic);&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;    &lt;span style="color:blue"&gt;return&lt;/span&gt; fi.GetValue(obj);&lt;/p&gt; &lt;p style="margin:0px"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;This code can be used to obtain the value of the private variable contained within the ListViewWebPart. This I used to not only get the 'rootFolder', but also a variable called 'folderCtId' which holds the content type ID (it's always been blank for me??).&lt;/p&gt; &lt;p&gt;With these two bits of information I was able to build the URL so that when the button was clicked it would navigate the ListView up to the parent folder...&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new"&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt; sCurrentUrl = &lt;span style="color:#2b91af"&gt;HttpContext&lt;/span&gt;.Current.Request.Url.ToString();&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;if&lt;/span&gt; (sCurrentUrl.Contains(&lt;span style="color:#a31515"&gt;&amp;quot;?&amp;quot;&lt;/span&gt;)) sCurrentUrl = sCurrentUrl.Substring(0, sCurrentUrl.IndexOf(&lt;span style="color:#a31515"&gt;&amp;quot;?&amp;quot;&lt;/span&gt;));&lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;&lt;br&gt;string&lt;/span&gt; sCTID = (&lt;span style="color:blue"&gt;string&lt;/span&gt;)GetPrivateFieldValue(lv, &lt;span style="color:#a31515"&gt;&amp;quot;folderCtId&amp;quot;&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt; sStart = ((sNewRootFolder == &lt;span style="color:#a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;) ? &lt;span style="color:#a31515"&gt;&amp;quot;?&amp;quot;&lt;/span&gt; : &lt;span style="color:#2b91af"&gt;SPHttpUtility&lt;/span&gt;.EcmaScriptStringLiteralEncode(sCurrentUrl &lt;br&gt;                 + &lt;span style="color:#a31515"&gt;&amp;quot;?RootFolder=&amp;quot;&lt;/span&gt; + sNewRootFolder) + &lt;span style="color:#a31515"&gt;&amp;quot;&amp;amp;&amp;quot;&lt;/span&gt;);&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p style="margin:0px"&gt;sStart = &lt;span style="color:#2b91af"&gt;SPHttpUtility&lt;/span&gt;.EcmaScriptStringLiteralEncode(sCurrentUrl + &lt;span style="color:#a31515"&gt;&amp;quot;?RootFolder=&amp;quot;&lt;/span&gt; + sNewRootFolder) + &lt;span style="color:#a31515"&gt;&amp;quot;&amp;amp;&amp;quot;&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt; sNavigateUrl = sStart&lt;/p&gt; &lt;p style="margin:0px"&gt;                      + &lt;span style="color:#a31515"&gt;&amp;quot;FolderCTID=&amp;quot;&lt;/span&gt; + &lt;span style="color:#2b91af"&gt;SPHttpUtility&lt;/span&gt;.EcmaScriptStringLiteralEncode(sCTID)&lt;/p&gt; &lt;p style="margin:0px"&gt;                      + &lt;span style="color:#a31515"&gt;&amp;quot;&amp;amp;View=&amp;quot;&lt;/span&gt; + &lt;span style="color:#2b91af"&gt;SPHttpUtility&lt;/span&gt;.EcmaScriptStringLiteralEncode(lv.ViewGuid)&lt;/p&gt; &lt;p style="margin:0px"&gt;                      + &lt;span style="color:#a31515"&gt;&amp;quot;&amp;amp;Key=&amp;quot;&lt;/span&gt; + lv.StorageKey.ToString();&lt;/p&gt; &lt;p style="margin:0px"&gt; &lt;/p&gt; &lt;p style="margin:0px"&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;javascript:EnterFolder('&amp;quot;&lt;/span&gt; + sNavigateUrl + &lt;span style="color:#a31515"&gt;&amp;quot;');return false&amp;quot;&lt;/span&gt;;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;br&gt;Here you see the URL being constructed with the required QueryString parameters. You will also see that I have added a 'Key' parameter, this was to ensure the button would work on a page with multiple ListViewWebParts. This 'Up Folder' button will work even when there are multiple webparts for the same document library...&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AddinganUpFolderbuttontoaSharePointListV_13FDE/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height="480" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/AddinganUpFolderbuttontoaSharePointListV_13FDE/image_thumb_2.png" width="608" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h3&gt;Download and Install&lt;/h3&gt; &lt;p&gt;You can &lt;a href="http://blog.thekid.me.uk/Media/TheKid.CustomActions.Backup.zip" target="_blank"&gt;download the full source&lt;/a&gt; for the project, or you can &lt;a href="http://blog.thekid.me.uk/Media/TheKid.CustomActions.Backup.wsp" target="_blank"&gt;download the WSP&lt;/a&gt; to deploy directly onto your site.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=vhitvjX3"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=q2sCxHPm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=q2sCxHPm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=Hq9z9xkz"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=sMHkZEQw"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=sMHkZEQw" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=6cfi4kON"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=6cfi4kON" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/WiGVyuYHYH8" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Mon, 03 Nov 2008 09:28:37 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/Development/default.aspx">Development</category><category domain="http://blog.thekid.me.uk/archive/tags/Samples/default.aspx">Samples</category><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blog.thekid.me.uk/archive/tags/Tips/default.aspx">Tips</category><category domain="http://blog.thekid.me.uk/archive/tags/WSS/default.aspx">WSS</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2008/11/03/adding-an-up-folder-button-to-a-sharepoint-list-view-webpart.aspx</feedburner:origLink></item><item><title>Silverlight, SharePoint and ARF</title><link>http://feedproxy.google.com/~r/Thekid/~3/extJRSkFZz8/silverlight-sharepoint-and-arf.aspx</link><guid isPermaLink="false">/archive/2008/10/28/silverlight-sharepoint-and-arf.aspx</guid><description>&lt;div class="ExternalClassFD251335E472497AA95689553E926E87"&gt;&lt;p&gt;At a recent SharePoint architects meeting at Microsoft, Tony &amp;amp; Tony from &lt;a href="http://www.ascentium.com" target="_blank"&gt;Acentium&lt;/a&gt; demonstrated some Silverlight integration with SharePoint. This inspired me to see how easy it would be to use Silverlight with the &lt;a href="http://www.spworks.co.uk/arf/default.aspx" target="_blank"&gt;ARF framework&lt;/a&gt;.&lt;/p&gt; &lt;h3&gt;Silverlight &amp;amp; XAML&lt;/h3&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163404.aspx" target="_blank"&gt;Silverlight uses Xaml&lt;/a&gt; to produce the UI and XAML is just XML markup. Using XAML you can create a variety of effects, animations and layouts which can make your website more dynamic.&lt;/p&gt; &lt;p&gt;Silverlight is just an &amp;lt;object&amp;gt; tag in the page and so is really another HTML tag, just like any other. This can easily be added to the SharePoint page, either in the page layout or dynamically by another control.&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;object data=&amp;quot;data:application/x-silverlight,&amp;quot; type=&amp;quot;application/x-silverlight-2&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;48&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;param name=&amp;quot;source&amp;quot; value=&amp;quot;/_layouts/ARF/ARF.Silverlight.App.xap&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;param name=&amp;quot;onerror&amp;quot; value=&amp;quot;onSilverlightError&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;param name=&amp;quot;background&amp;quot; value=&amp;quot;white&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;param name=&amp;quot;minRuntimeVersion&amp;quot; value=&amp;quot;2.0.31005.0&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;param name=&amp;quot;autoUpgrade&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;param name=&amp;quot;initParams&amp;quot; value=&amp;quot;xamlContainerID=idMenu&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;a href=&amp;quot;&lt;/font&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807"&gt;&lt;font face="Courier New"&gt;http://go.microsoft.com/fwlink/?LinkID=124807&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;quot; style=&amp;quot;text-decoration: none;&amp;quot;&amp;gt;&lt;br&gt;        &amp;lt;img src=&amp;quot;&lt;/font&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=108181"&gt;&lt;font face="Courier New"&gt;http://go.microsoft.com/fwlink/?LinkId=108181&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;quot; alt=&amp;quot;Get Microsoft Silverlight&amp;quot; style=&amp;quot;border-style: none&amp;quot;&amp;gt;&lt;br&gt;    &amp;lt;/a&amp;gt;&lt;br&gt;&amp;lt;/object&amp;gt;&lt;br&gt;&amp;lt;iframe style=&amp;quot;visibility:hidden;height:0;width:0;border:0px&amp;quot;&amp;gt; &amp;lt;/iframe&amp;gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;As the ARF framework is based around XML and XSLT it sounded like it fit in very well with Silverlight and XAML.&lt;br&gt;&lt;/p&gt; &lt;h3&gt;ARF and XAML&lt;/h3&gt; &lt;p&gt;ARF uses XSLT to produce the HTML and so there is no reason why it cannot XAML instead of HTML. By changing the XSLT used by the ARF controls to produce XAML its possible to output the XAML directly in the page. Once its in the page we can get the Silverlight control to dynamically load the XAML and display the results.&lt;/p&gt; &lt;p&gt;In order to achieve this I have added a new control to the ARF deployment. This control is packaged in to a XAP file and deployed to the _layouts folder. This can then be loaded when displaying Silverlight control using ARF. This control can then be rendered by the XSLT along with the XAML which will produce the UI.&lt;/p&gt; &lt;p&gt;Below is an example of a dynamic Silver light menu control.&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;param name=&amp;quot;initParams&amp;quot; value=&amp;quot;xamlContainerID=idMenu&amp;quot;/&amp;gt;&lt;br&gt;....&lt;br&gt;&amp;lt;xml id=&amp;quot;idMenu&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br&gt;   &amp;lt;xsl:apply-templates select=&amp;quot;Items&amp;quot;/&amp;gt;&lt;br&gt;&amp;lt;/xml&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;br&gt;Here we are passing parameters to the Silverlight control, telling it the ID of the control on the page which contains the XAML. The ARF Silverlight control will look for this ID, load the XAML and display the UI. It will also hookup event handling for any Buttons found in the XAML, allowing them to navigate to the supplied URL.&lt;/p&gt; &lt;h3&gt;How it works in ARF&lt;/h3&gt; &lt;p&gt;By way of a demonstration I have added some Silverlight navigation to the &lt;a href="http://www.spworks.co.uk" target="_blank"&gt;SPWorks&lt;/a&gt; website.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/SilverlightSharePointandARF_D319/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="106" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/SilverlightSharePointandARF_D319/image_thumb_1.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The links allow you to turn Silverlight on or off. This is done by using one of the ARF features, the PathManager control.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.thekid.me.uk/Media/WindowsLiveWriter/SilverlightSharePointandARF_D319/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height="230" alt="image" src="http://blog.thekid.me.uk/Media/WindowsLiveWriter/SilverlightSharePointandARF_D319/image_thumb_2.png" width="132" align="right" border="0"&gt;&lt;/a&gt; The PathManager is a special control in ARF as it does not generate and UI or XML, it is just there to modify the path of the XSLT. This allows you to create your layouts using XSL found in the 'XSL Library', but then later modify where the XSL is actually loaded from dynamically at runtime. &lt;/p&gt; &lt;p&gt;In the case of the &lt;a href="http://www.spworks.co.uk" target="_blank"&gt;SPWorks website&lt;/a&gt; we are using a cookie to store if Silverlight is on or not. The cookie is then used to load the XSL from a different location. The image shows the XSL for Silverlight is contained in a sub-folder of the main 'XSL Library'.&lt;/p&gt; &lt;p&gt;Using this technique you can easily change the way your site is rendered, just by providing different XSL for the different situations.&lt;/p&gt; &lt;p&gt;The PathManager is fully extendable and so you can provide your own implementation. This way you can switch XSL locations dependant on your own criteria, possibly for different browsers or languages.&lt;/p&gt; &lt;p&gt;To see how the XAML is produced you can &lt;a href="http://www.spworks.co.uk/MediaDownloads/mainNav.zip" target="_blank"&gt;download the XSL for the SPWorks navigation&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Also, just for completeness, this could have been achieved another way with ARF. It is possible to get ARF to switch the master page used based upon a cookie value. I could have done this and modified the XSL location directly on the controls in the new master page. In this situation that didn't seem to be the best solution, but it would have worked just as well.&lt;/p&gt; &lt;h3&gt;ARF and its releases&lt;/h3&gt; &lt;p&gt;A &lt;a href="http://www.spworks.co.uk/Downloads/default.aspx" target="_blank"&gt;new release of ARF is available&lt;/a&gt; for download containing this new Silverlight control and XAP file. Feel free to use in your own projects as the Silverlight control is not dependant on the ARF framework.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Just a note about the ARF releases. ARF is released as and when new functionality or fixes are added. This way we hope to be able to respond to bugs and feature requests quickly. For each release there will be a WSP and the corresponding source. We recommend that you only use the latest version when starting a new project, when it contains a bug fix that you need or there is new functionality which will help your project.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Thekid?a=hatCDrz3"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=vgN4UibC"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=vgN4UibC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=WHgGVPxK"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=aleqvvLW"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=aleqvvLW" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Thekid?a=5tZRSLx1"&gt;&lt;img src="http://feeds.feedburner.com/~f/Thekid?i=5tZRSLx1" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Thekid/~4/extJRSkFZz8" height="1" width="1"/&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vincent Rothwell</dc:creator><pubDate>Tue, 28 Oct 2008 14:55:06 GMT</pubDate><category domain="http://blog.thekid.me.uk/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blog.thekid.me.uk/archive/tags/Projects/default.aspx">Projects</category><category domain="http://blog.thekid.me.uk/archive/tags/Publishing/default.aspx">Publishing</category><category domain="http://blog.thekid.me.uk/archive/tags/SharePoint/default.aspx">SharePoint</category><feedburner:origLink>http://blog.thekid.me.uk/archive/2008/10/28/silverlight-sharepoint-and-arf.aspx</feedburner:origLink></item></channel></rss>
