<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>novolocus.com &#187; 2008 &#187; April</title>
	<atom:link href="http://www.novolocus.com/2008/04/feed" rel="self" type="application/rss+xml" />
	<link>http://www.novolocus.com</link>
	<description>Whatever Andy Burns is working on...</description>
	<pubDate>Tue, 18 Nov 2008 12:00:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Determining if you&#8217;ve got the Outlook 2003 PIAs installed</title>
		<link>http://www.novolocus.com/2008/04/30/determining-if-youve-got-the-outlook-2003-pias-installed/</link>
		<comments>http://www.novolocus.com/2008/04/30/determining-if-youve-got-the-outlook-2003-pias-installed/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 10:35:26 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Office]]></category>

		<category><![CDATA[Outlook]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=523</guid>
		<description><![CDATA[I&#8217;ve just had to write some instructions about how to check if the Office Primary Interop Assemblies are installed - or more specifically, the Outlook ones. I thought that might be useful&#8230;


Open Control Panel &#62; Add and Remove Programs
Find your Office installation. Click Change.


Choose that you want to Add or Remove Features and click Next

Select [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just had to write some instructions about how to check if the Office Primary Interop Assemblies are installed - or more specifically, the Outlook ones. I thought that might be useful&#8230;</p>
<p><span id="more-523"></span></p>
<ul>
<li>Open <em>Control Panel &gt; Add and Remove Programs</em></li>
<li>Find your Office installation. <strong>Click </strong><em>Change</em>.<br />
<a href="http://www.novolocus.com/wp-content/uploads/2008/04/1.png"><br />
<img class="alignnone size-medium wp-image-524" title="1" src="http://www.novolocus.com/wp-content/uploads/2008/04/1-300x217.png" alt="Add Remove Programs Dialog" width="300" height="217" /></a></li>
<li><strong>Choose </strong>that you want to <em>Add or Remove Features</em> and <strong>click </strong><em>Next</em><br />
<a href="http://www.novolocus.com/wp-content/uploads/2008/04/2.png"><img class="alignnone size-medium wp-image-525" title="Office PIAs step 2" src="http://www.novolocus.com/wp-content/uploads/2008/04/2-300x256.png" alt="Change installation Dialog" width="300" height="256" /></a></li>
<li><strong>Select </strong>that you want to <em>Choose advanced customization of application</em>. <strong>Click </strong><em>Next</em><br />
<a href="http://www.novolocus.com/wp-content/uploads/2008/04/3.png"><img class="alignnone size-medium wp-image-526" title="Office PIAs step 3" src="http://www.novolocus.com/wp-content/uploads/2008/04/3-300x258.png" alt="Choose packages to change dialog" width="300" height="258" /></a></li>
<li><strong>Expand </strong>the Microsoft Office Outlook branch and look at the item <em>.NET Programmability Support</em>. A little hard disk icon means it’s installed, a red cross means it isn’t, and a hard disk with a ‘1’ means that it’s not installed, but will try to install it the first time it’s used. It should look something like this (although the yellowness is to highlight the setting):<br />
<a href="http://www.novolocus.com/wp-content/uploads/2008/04/4.png"><img class="alignnone size-medium wp-image-527" title="Office PIAs step 4" src="http://www.novolocus.com/wp-content/uploads/2008/04/4-300x258.png" alt="Installed Components Dialog" width="300" height="258" /></a></li>
<li><strong>Click </strong><em></em>to exit without installing. To install, you’ll need the appropriate disc.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/30/determining-if-youve-got-the-outlook-2003-pias-installed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Styles in the Summary Links Web Part</title>
		<link>http://www.novolocus.com/2008/04/28/styles-in-summary-links-web-part/</link>
		<comments>http://www.novolocus.com/2008/04/28/styles-in-summary-links-web-part/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 16:05:24 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Branding]]></category>

		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=515</guid>
		<description><![CDATA[So, I&#8217;d been asked to look at building a links menus something like this:

I thought that this was quite nice. I wondered if I could make something similar to this using the Summary Links web part - curiously, it&#8217;s something I&#8217;ve never really used, and I though I remembered seeing that it could show images [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;d been asked to look at building a links menus something like this:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/fakemenu.png"><img class="alignnone size-full wp-image-516" title="fakemenu" src="http://www.novolocus.com/wp-content/uploads/2008/04/fakemenu.png" alt="A Fake Menu with Big Buttons" width="400" height="105" /></a></p>
<p>I thought that this was quite nice. I wondered if I could make something similar to this using the Summary Links web part - curiously, it&#8217;s something I&#8217;ve never really used, and I though I remembered seeing that it could show images too. So, I set up some examples&#8230; <span id="more-515"></span></p>
<p>First off, I looked at the different styles of links you could put in. Interestingly, you can mix these in the one Summary Links Web part:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/different-summary-links-fields.png"><img class="alignnone size-medium wp-image-517" title="different-summary-links-fields" src="http://www.novolocus.com/wp-content/uploads/2008/04/different-summary-links-fields-300x250.png" alt="" width="300" height="250" /></a></p>
<p>Quite a lot of styles! The image I used for m links is the one with orange text saying &#8216;This is an image&#8217; - original, huh? <em>(Note: the second and third links up from the bottom are just Image links. On is clickable and the other isn&#8217;t&#8230; ) </em>None of these are really styled the way I&#8217;d want though.</p>
<p>Next, I took a look at the Group Header Styles:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/different-group-header-fields.png"><img class="alignnone size-medium wp-image-518" title="different-group-header-fields" src="http://www.novolocus.com/wp-content/uploads/2008/04/different-group-header-fields-300x136.png" alt="Example Group Headers" width="300" height="136" /></a></p>
<p>Again, nothing that would obviously do what I wanted - no images for a start. For completeness, I should say that these settings were configured via the &#8216;Configure Styles and Layouts&#8217; option, which opens this dialog:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/summary-links-web-part-options.png"><img class="alignnone size-medium wp-image-519" title="summary-links-web-part-options" src="http://www.novolocus.com/wp-content/uploads/2008/04/summary-links-web-part-options-300x241.png" alt="Configure Styles and Grouping Dialog box" width="300" height="241" /></a></p>
<p>So, what other options? Well, I wondered if I might be able to move things around a bit and use the normal &#8217;styles&#8217; of link through applying a bit of CSS. So, I opened the IE Developers toolbar and started taking a look. I found that I could see the different <em>DIV</em> tags for each link item, and they had different styles applied to them:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/summary-links-web-part-dom-structure.png"><img class="alignnone size-medium wp-image-520" title="summary-links-web-part-dom-structure" src="http://www.novolocus.com/wp-content/uploads/2008/04/summary-links-web-part-dom-structure.png" alt="DOM Structure showing Link Items" width="299" height="236" /></a></p>
<p>Great! What structure is within those items though:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/summary-links-web-part-dom-structure-2.png"><img class="alignnone size-medium wp-image-521" title="summary-links-web-part-dom-structure-2" src="http://www.novolocus.com/wp-content/uploads/2008/04/summary-links-web-part-dom-structure-2.png" alt="Some of the  Link Items expanded" width="229" height="160" /></a></p>
<p>Damn, they&#8217;re all different. Well, that idea bites the dust. I guess that I&#8217;ll have to look at a custom web part.</p>
<p>As a side note, I also discovered that you could have multiple columns. You can&#8217;t have a single Group heading with multiple columns, but you can have Group headings in columns with a single column of links underneath, like so:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/columned.png"><img class="alignnone size-medium wp-image-522" title="columned" src="http://www.novolocus.com/wp-content/uploads/2008/04/columned-300x52.png" alt="Summary Links with 2 Columns showing 2 groups." width="300" height="52" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/28/styles-in-summary-links-web-part/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Self Referencing Lookup columns</title>
		<link>http://www.novolocus.com/2008/04/25/self-referencing-lookup-columns/</link>
		<comments>http://www.novolocus.com/2008/04/25/self-referencing-lookup-columns/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 12:55:33 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Bug]]></category>

		<category><![CDATA[Content Type]]></category>

		<category><![CDATA[Lists]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=510</guid>
		<description><![CDATA[Came across something I&#8217;d not considered - self referencing lookup columns! I was doing some testing, and this totally caught me out (and caused my Outlook plugin to crash and die).
Basically, this is a Lookup column where the List that it is looking up onto is the same as the list where the lookup column [...]]]></description>
			<content:encoded><![CDATA[<p>Came across something I&#8217;d not considered - self referencing lookup columns! I was doing some testing, and this totally caught me out (and caused my Outlook plugin to crash and die).</p>
<p>Basically, this is a <strong>Lookup </strong>column where the <strong>List </strong>that it is looking up onto is the same as the list where the lookup column is in use. In our case we had a list called &#8216;Issues&#8217;, and the lookup was a multi-choice look-up called &#8216;Related Issues&#8217;. It would let a user select things from the Issues list. All in all, a perfectly sensible use of a multiple lookup, and one I&#8217;d not thought of!</p>
<p>However, this in itself wouldn&#8217;t cause my plug-in to suffer an error. The problem was with the data I was getting back from the Web Services I&#8217;m using. I use the <strong>List Webservice</strong>&#8217;s <strong>GetListContentType </strong>method to get information about the Content Type, and I then read the information about the fields. Lookup fields normally come through with an attribute <em><strong>List</strong></em> ; this is the list that&#8217;s being looked up onto, and normally it is a GUID. However, for self-referencing lookup instead of a GUID, you get a string &#8216;<em>Self&#8217;</em>&#8216;. Okay, I can&#8217;t argue that it&#8217;s wrong, but it&#8217;s a smidgen annoying that it is inconsistent. Couldn&#8217;t it just give me the GUID and let me figure out if that&#8217;s the same list? Or use another attribute to denote that it&#8217;s a self-reference?</p>
<p>I don&#8217;t get why this was built that way.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/25/self-referencing-lookup-columns/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What version of the .NET framework do I have installed?</title>
		<link>http://www.novolocus.com/2008/04/24/what-version-of-the-net-framework-do-i-have-installed/</link>
		<comments>http://www.novolocus.com/2008/04/24/what-version-of-the-net-framework-do-i-have-installed/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 15:30:51 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=514</guid>
		<description><![CDATA[I keep having to look this up every couple of months. Microsoft support have described how to find out.  
From the article:
Versions of the .NET Framework
There are currently three released versions of the .NET Framework. The releases have the following  version information.



.NET
Framework
version
Revision
Version


1.0
Original RTM
.NET Framework Service Pack 1
.NET Framework Service Pack 2
.NET Framework Service [...]]]></description>
			<content:encoded><![CDATA[<p>I keep having to look this up every couple of months. <a href="http://support.microsoft.com/kb/318785">Microsoft support have described how to find out</a>.  <span id="more-514"></span></p>
<p>From the article:</p>
<h3 id="tocHeadRef">Versions of the .NET Framework</h3>
<p>There are currently three released versions of the .NET Framework. The releases have the following  version information.</p>
<table class="table" border="0" cellspacing="1">
<tbody>
<tr>
<td><strong>.NET<br />
Framework<br />
version</strong></td>
<td><strong>Revision</strong></td>
<td><strong>Version</strong></td>
</tr>
<tr>
<td><strong>1.0</strong></td>
<td>Original RTM<br />
.NET Framework Service Pack 1<br />
.NET Framework Service Pack 2<br />
.NET Framework Service Pack 3</td>
<td>1.0.3705.0<br />
1.0.3705.209<br />
1.0.3705.288<br />
1.0.3705.6018</td>
</tr>
<tr>
<td><strong>1.1</strong></td>
<td>Original RTM<br />
.NET Framework Service Pack 1<br />
.NET Framework included with Windows Server 2003 32-bit Service Pack 1</td>
<td>1.1.4322.573<br />
1.1.4322.2032<br />
1.1.4322.2300</td>
</tr>
<tr>
<td><strong>2.0</strong></td>
<td>Original RTM</td>
<td>2.0.50727.42</td>
</tr>
</tbody>
</table>
<p><strong>Note</strong> The Microsoft .NET Framework 1.1 is included with the 32-bit version of Microsoft Windows Server 2003.</p>
<p><strong>Note</strong> This information should be used as a general guide for determining which versions of the .NET Framework are installed on a computer. Also note that files that have a later version listed may be files that were shipped as part of a hotfix or a hotfix rollup package. The hotfix .NET Framework file versions are outside the scope of this article.</p>
<h3 id="tocHeadRef">Determine which versions of the .NET Framework are installed on a computer</h3>
<p>The easiest way to determine which versions of the .NET Framework are installed on a computer is to locate the <strong><var>%systemroot%</var>\Microsoft.NET\Framework</strong> folder. You can paste the listed address for the Framework folder into a Windows Explorer address bar to navigate to the Framework folder. The three released versions of the .NET Framework are contained in the following folders:</p>
<table class="list ul" border="0">
<tbody>
<tr>
<td class="bullet">•</td>
<td class="text">v1.0.3705</td>
</tr>
<tr>
<td class="bullet">•</td>
<td class="text">v1.1.4322</td>
</tr>
<tr>
<td class="bullet">•</td>
<td class="text">v2.0.50727</td>
</tr>
</tbody>
</table>
<p><strong>Note</strong> If you see other directories that have a v<var>N</var>.<var>N</var>.<var>NXXXX</var> format that are not listed in this article, the versions may be beta versions or pre-released versions of the .NET Framework. Those versions are outside the scope of this article.</p>
<p>To determine which versions of the .NET Framework are installed on a computer, follow these steps:</p>
<table class="list ol" border="0">
<tbody>
<tr>
<td class="number">1.</td>
<td class="text">Open any one  of the folders in the previous list, and then locate the  Mscorlib.dll file.</td>
</tr>
<tr>
<td class="number">2.</td>
<td class="text">Right-click the file, and then click <strong class="uiterm">Properties</strong>.</td>
</tr>
<tr>
<td class="number">3.</td>
<td class="text">Click the <strong class="uiterm">Version</strong> tab, and then note the file version.</td>
</tr>
<tr>
<td class="number">4.</td>
<td class="text">Use the previous list to determine which version of the .NET Framework is installed on the computer, and then click <strong class="uiterm">OK</strong>.</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/24/what-version-of-the-net-framework-do-i-have-installed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comparison of different ways of putting content into SharePoint &#8216;Pages&#8217;</title>
		<link>http://www.novolocus.com/2008/04/24/comparison-of-different-ways-of-putting-content-into-sharepoint-pages/</link>
		<comments>http://www.novolocus.com/2008/04/24/comparison-of-different-ways-of-putting-content-into-sharepoint-pages/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 13:14:05 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Office]]></category>

		<category><![CDATA[Content Editor]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Document Conversion]]></category>

		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=400</guid>
		<description><![CDATA[Previously I&#8217;ve looked at a couple of ways of entering your data into a Publishing Page. Well, it turns out that really there are 3 ways of putting content in:

Writing content directly using the Content Editor control (the RichHTMLField control)
Writing content in Word 2007 and using the Document Conversion service
Writing content in Word 2007 and [...]]]></description>
			<content:encoded><![CDATA[<p>Previously <a href="http://www.novolocus.com/2008/03/17/modify-the-richhtmlfield-control-on-your-page-layouts/">I&#8217;ve looked at a couple of ways of entering your data into a Publishing Page</a>. Well, it turns out that really there are 3 ways of putting content in:</p>
<ol>
<li>Writing content directly using the Content Editor control (the RichHTMLField control)</li>
<li>Writing content in Word 2007 and using the Document Conversion service</li>
<li>Writing content in Word 2007 and cutting and pasting(!)</li>
</ol>
<p>I decided to test and compare these techniques. For options 2. and 3. I used <a href="http://www.novolocus.com/wp-content/uploads/2008/04/test.docx">this document</a>:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/source-document.png"><img class="alignnone size-medium wp-image-505" title="source-document" src="http://www.novolocus.com/wp-content/uploads/2008/04/source-document-300x125.png" alt="The Source Word 2007 Document" width="300" height="125" /></a></p>
<p>Let&#8217;s look at the results of this and the code that is behind each resulting page&#8230;<span id="more-400"></span></p>
<h2>Authoring Directly with the Content Editor</h2>
<p>Obviously, the styles available in my Content Editor control didn&#8217;t (out of the box) match those I had available in my Word 2007 document. However, <a href="http://www.novolocus.com/2008/03/17/modify-the-richhtmlfield-control-on-your-page-layouts/">you can configure these</a> - I didn&#8217;t bother. Thus, the output for this test was similar but not the same as the test document:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/richtextcontrol.png"><img class="alignnone size-medium wp-image-507" title="richtextcontrol" src="http://www.novolocus.com/wp-content/uploads/2008/04/richtextcontrol-300x127.png" alt="The Results (and Code) from Rich Client Authoring" width="300" height="127" /></a></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/richtextcontrol.txt">The code looks like this.<br />
</a></p>
<p>So, what does this code show us? Well, we can see that our Content Editor Control&#8217;s styles appear in the code as styles - e.g. <em>ms-rteCustom-ArticleHeadLine</em> - and that other changes to the text appear as inline code - e.g. <em>&lt;font color=&#8221;#ff0000&#8243;&gt;</em>.</p>
<p>These inline styles are a problem. You can <a href="http://www.novolocus.com/2008/03/17/modify-the-richhtmlfield-control-on-your-page-layouts/">use a stylesheet to control the look of the styles available in the Content Editor control</a>, but that&#8217;s not true for style code that appears inline. Fortunately, <a href="http://www.novolocus.com/2008/03/17/modify-the-richhtmlfield-control-on-your-page-layouts/">you can prevent other styling options in the Content Editor control</a>. (A lot of information in that article!)</p>
<p>So, we can lock down the styles to prevent users from causing the creation of inline style code, and we can give them a set of styles to use. Thus, we can enforce the use of a consistent set of styles, which is always great if you might want to change the styles you&#8217;re using throughout your site.</p>
<p>The down side of this approach is, well, it&#8217;s not a familiar authoring environment. A lot of content authors won&#8217;t want to learn a new system.</p>
<h2>Author in Word and use the Document Conversion Service</h2>
<p>Microsoft Content Management Server 2002 (MCMS) had an Authoring Connector - a plug-in that let you write your document in Word and convert it to a document. SharePoint 2007 has similar functionality in a feature called either &#8216;Rich Client Authoring&#8217; or &#8216;Smart Client Authoring&#8217;.</p>
<p>Essentially, this lets you convert certain files (.docx, xml, infopath forms) to a publishing Page. There are some limitations to this, such as <a href="http://www.novolocus.com/2008/04/08/document-conversion-service-doesnt-map-column-data-part-i/">what happens to metadata</a>, and <a href="http://www.novolocus.com/2008/04/18/document-conversion-service-and-images/">what happens to embedded content</a>. This last one is particularly relevant as many Word documents do contain images as diagrams, etc.. We&#8217;ll come back to this later.</p>
<p>Anyway, what is the output of the document conversion service when run on our test file?</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/document-conversion.png"><img class="alignnone size-medium wp-image-506" title="document-conversion" src="http://www.novolocus.com/wp-content/uploads/2008/04/document-conversion-300x116.png" alt="The Results (and Code) from Document Conversion" width="300" height="116" /></a></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/documentconversion.txt">The code looks like this.</a></p>
<p>This code contains a series of Paragraph and Span tags for various styles - e.g. <em>Normal-P</em> and <em>Normal-H</em>. The Document conversion service puts the definitions of these styles from the document into another field in the head of the converted HTML page, although defaults are also defined by a standard stylesheet called RCA.css. (Note that in the screenshot above I&#8217;ve told the conversion service not to save the style definitions from the document - though it does retain where in the document the styles are used.)</p>
<p>Again, we also have inline styles from formatting text in Word - but <a href="http://www.novolocus.com/2008/04/01/restrict-or-permit-formatting-changes-in-word-documents/">we can restrict users to only using the predefined styles</a>. These predefined styles are translated to CSS classes. So again, we can force the styles to conform to a particular set, and then define these styles in a CSS stylesheet.</p>
<p>I guess the other point of note is that the actual structure of the HTML involved is quite different to what you&#8217;d create by authoring through the Content Editor control.</p>
<h2>Author in Word then Cut and Paste into the Content Editor Control</h2>
<p>This option took me by surprise a bit, but it makes sense - the authoring is in a familiar environment, and, well, cut and paste isn&#8217;t scary. I cut and pasted the content of my test document into a new page&#8230;</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/cut-and-paste1.png"><img class="alignnone size-medium wp-image-508" title="cut-and-paste1" src="http://www.novolocus.com/wp-content/uploads/2008/04/cut-and-paste1-300x218.png" alt="The Results (and Code) from Cut and Paste from Word" width="300" height="218" /></a></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/copyandpaste.txt">This is what the code looks like.</a></p>
<p>Again, our custom style in our .docx file has been translated to a CSS class. The Heading 1 style has just been translated to a &lt;h1&gt; tag. And the normal paragraphs are &lt;p&gt; tags with a style of <em>MsoNormal</em>.</p>
<p>Again, we&#8217;ve got our inline style, but again, we can prevent this by restricting the word document template to predefined styles.</p>
<p>And again, the structure of the HTML is not the same as either of the two previous methods. My own feeling is that this code is not as neat; I don&#8217;t like the way that the <em>Heading 1</em> and <em>Heading 1 Red</em> styles are translated differently - one into a paragraph, the other into an &lt;h1&gt; tag. But you could define CSS to style this content too.</p>
<h2>Regarding Images</h2>
<p>One issue is images. The Document Conversion Service (bizarrely) doesn&#8217;t handle embedded images. You can work around that though, by linking images into the Word document rather than embedding - just don&#8217;t try and work with them offline!</p>
<p>Similarly, cutting and pasting looses any embedded images (though SharePoint is kind enough to warn you - kudos). And I&#8217;ve not been able to cut and paste with Linked images rather than embedded ones, so in that regard this method is actually a little worse.</p>
<p>I&#8217;ve gotta say, I&#8217;d love the time to have a go at making the document conversion service also store embedded images into a library and map images in the document to those images. Perhaps that&#8217;d make a good codeplex project?</p>
<h2>Final Thoughts</h2>
<p>So, online authoring through the Web Browser is the simplest option and doesn&#8217;t have any pitfalls - but it is most likely to scare/annoy your users. Conversely authoring through Word 2007 will be more familiar (if they aren&#8217;t bewildered by the user interface changes there), but has a number of issues. Users might well get annoyed by having the styles they can use restricted down also.</p>
<p>One final thought - frustratingly, as we&#8217;ve found, all three methods result in different structures of HTML, and require different CSS to style them up. Consequently, I strongly recommend that you find a suitable method <em>and stick to it.</em></p>
<p>I&#8217;ve got to say, I think that I&#8217;ve gone full circle now, and I&#8217;m back to the idea that it&#8217;s just better to author these pages through the Web Browser. The document conversion service not supporting embedded images is a killer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/24/comparison-of-different-ways-of-putting-content-into-sharepoint-pages/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why is Audit in SharePoint Workflows so hard?</title>
		<link>http://www.novolocus.com/2008/04/23/why-is-audit-in-sharepoint-workflows-so-hard/</link>
		<comments>http://www.novolocus.com/2008/04/23/why-is-audit-in-sharepoint-workflows-so-hard/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 08:58:30 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Workflow]]></category>

		<category><![CDATA[K2]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=512</guid>
		<description><![CDATA[Previously I&#8217;d pointed out an article about a problem with SharePoint workflows where the data gets &#8216;disconnected&#8217; from the user interface after a number of days. Robert Bogue wrote a nice summary of it, explaining why it behaves this way and how to get around it. Anyway, I was catching up on my RSS feeds, [...]]]></description>
			<content:encoded><![CDATA[<p>Previously I&#8217;d pointed out an article about <a href="http://www.novolocus.com/2007/10/19/auto-cleanup-of-workflows-in-moss/">a problem with SharePoint workflows</a> where the data gets &#8216;disconnected&#8217; from the user interface after a number of days. Robert Bogue wrote a nice summary of it, explaining <a href="http://www.thorprojects.com/blog/archive/2007/10/16/spworkflowassociation-autocleanupdays.aspx">why it behaves this way and how to get around it</a>. Anyway, I was catching up on my RSS feeds, and I came across a <a href="http://www.thorprojects.com/blog/archive/2008/03/13/what-is-not-a-huge-moss-workflow-issue-take-2.aspx">follow up post</a> that I just had to respond to.</p>
<p>Read his <a href="http://www.thorprojects.com/blog/archive/2008/03/13/what-is-not-a-huge-moss-workflow-issue-take-2.aspx">post first</a>; this is just my thoughts. Done? Good.</p>
<p>Robert Bogue makes some good points. I totally agree with him on the second point - Workflow History isn&#8217;t an Audit. However, this does sort of highlight the crux of the issue - that there is no Audit. One is mentioned in his previous post, but I&#8217;ve never managed to figure out what he meant by that, or to find a decent audit in Workflow that I didn&#8217;t have to build myself. And I just keep thinking that this is something that a plug-in tracking service ought to be able to provide&#8230;</p>
<p>I guess my &#8216;What were they thinking!&#8217; isn&#8217;t that there is the auto-cleanup, but rather why didn&#8217;t Microsoft offer an audit mechanism out of the box. I asked Lawrence Liu about that once at a SUGUK meeting - he said that SharePoint Workflow &#8220;wasn&#8217;t intended to be an enterprise solution&#8221;. Fair enough, if that&#8217;s what they want to do (and to leave space for the likes of K2 and Skelta), but then stop advertising SharePoint as having user configurable workflows.</p>
<p>A number of our customers have gone through the logic of:</p>
<ol>
<li>SharePoint is an Enterprise level system</li>
<li>It has workflow built into it</li>
<li>Therefore we can use workflow to support our enterprise&#8217;s processes</li>
</ol>
<p>They&#8217;re pretty disappointed to discover that it lacks pretty basic things like audit. I can&#8217;t say I blame them either. But I digress.</p>
<p>Regarding his first point about configuring the timeout - writing an application isn&#8217;t a good general option. I&#8217;ve no doubt it works, but SharePoint administrators are necessarily programmers. Even if they are, there&#8217;s no guarantee that they&#8217;re <em>good</em> SharePoint programmers. The setting in the manifest - that I like. Don&#8217;t depend on your users being able to code their own solutions. Further, I don&#8217;t know how this would apply to SharePoint Designer workflows, though personally I steer clear of them.</p>
<p>So yes, I&#8217;d agree with Robert - it&#8217;s not a &#8216;Huge Issue&#8217;, but it is a problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/23/why-is-audit-in-sharepoint-workflows-so-hard/feed/</wfw:commentRss>
		</item>
		<item>
		<title>List Items, Documents and Attached files</title>
		<link>http://www.novolocus.com/2008/04/22/list-items-documents-and-attached-files/</link>
		<comments>http://www.novolocus.com/2008/04/22/list-items-documents-and-attached-files/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 11:10:59 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[Lists]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=495</guid>
		<description><![CDATA[One of our customers is saving Outlook emails into SharePoint; I&#8217;ve written an Outlook plugin to do this. The emails themselves are being saved as .msg files within Document Libraries.

However, they&#8217;d like a nice column with a little Paperclip icon if the Email has attachments. For normal Lists, there is a column like this (provided [...]]]></description>
			<content:encoded><![CDATA[<p>One of our customers is saving Outlook emails into SharePoint; I&#8217;ve written an Outlook plugin to do this. The emails themselves are being saved as .msg files within Document Libraries.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/saved-msg-files-in-library.png"><img class="alignnone size-medium wp-image-499" title="saved-msg-files-in-library" src="http://www.novolocus.com/wp-content/uploads/2008/04/saved-msg-files-in-library-300x53.png" alt="A Document Library containing .MSG files" width="300" height="53" /></a></p>
<p>However, they&#8217;d like a nice column with a little Paperclip icon if the Email has attachments. For normal Lists, there is a column like this (provided that the List allows attachments)&#8230;<span id="more-495"></span></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/normal-list.png"><img class="alignnone size-medium wp-image-498" title="normal-list" src="http://www.novolocus.com/wp-content/uploads/2008/04/normal-list-300x67.png" alt="An Example Standard List" width="300" height="67" /></a></p>
<p>This shows two list items, one of which has attachments, one of which doesn&#8217;t. Indeed, the one with attachments has multiple attachments (a feature that I often forget!)</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/test-listitem.png"><img class="alignnone size-medium wp-image-501" title="test-listitem" src="http://www.novolocus.com/wp-content/uploads/2008/04/test-listitem-300x116.png" alt="An Example List Item" width="300" height="116" /></a></p>
<p>And we can edit these attachments&#8230;</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/edit-test-listitem.png"><img class="alignnone size-medium wp-image-497" title="edit-test-listitem" src="http://www.novolocus.com/wp-content/uploads/2008/04/edit-test-listitem-300x114.png" alt="Editing an Example List Item" width="300" height="114" /></a></p>
<p>Or add attachments to the List Item which doesn&#8217;t have any&#8230;</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/test2-listitem.png"><img class="alignnone size-medium wp-image-500" title="test2-listitem" src="http://www.novolocus.com/wp-content/uploads/2008/04/test2-listitem-300x94.png" alt="Another Example List Item" width="300" height="94" /></a></p>
<p>Okay, so Lists can can List Items with<strong> Zero to Many</strong> attachments. I then went and looked at document library though - and couldn&#8217;t see an &#8216;Attachments&#8217; column&#8230;</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/document-library.png"><img class="alignnone size-medium wp-image-496" title="document-library" src="http://www.novolocus.com/wp-content/uploads/2008/04/document-library-300x59.png" alt="Example Document Library" width="300" height="59" /></a></p>
<p>Trust me, I looked through all the settings and columns available in the views, just in case. The reality is, though, that the reason is pretty obvious - <strong>Documents implicitly have one attachment</strong> - the document itself! Thus an &#8216;Attachments&#8217; would just show a series of little paperclip icons - which isn&#8217;t dreadfully useful&#8230;  &#8230;and this is why Documents libraries and the like doesn&#8217;t show that column.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/22/list-items-documents-and-attached-files/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Accessibility in MOSS&#8230;</title>
		<link>http://www.novolocus.com/2008/04/21/accessibility-in-moss/</link>
		<comments>http://www.novolocus.com/2008/04/21/accessibility-in-moss/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 10:53:32 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Branding]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Accessibility]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=486</guid>
		<description><![CDATA[Recently I had a meeting with HiSoftware about the Accessibility Kit for SharePoint that they&#8217;ve made (and is available on CodePlex), and it was quite interesting. Making a SharePoint system accessible requires knowing how much of the system to make accessible, and to what level of accessibility. As with branding, doing the whole system would [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I had a meeting with <a href="http://www.hisoftware.com/index.html">HiSoftware </a>about the <a href="http://www.hisoftware.com/MOSS/aks.htm">Accessibility Kit for SharePoint</a> that they&#8217;ve made (and is <a href="http://www.codeplex.com/aks">available on CodePlex</a>), and it was quite interesting. Making a SharePoint system accessible requires knowing how much of the system to make accessible, and to what level of accessibility. As with branding, doing the whole system would probably be prohibitively expensive. However, making certain areas (such as a WCM site) accessible is quite feasible.</p>
<p>Even if a SharePoint system is developed to be accessible, there is a governance issue in make sure that new content is also accessible. HiSoftware provide the Accessibility Kit (for free) to help develop an accessible site - though custom work will always be required. They also provide several commercial products to facilitate governance of new content and ensuring that it is accessible. I think that these will be useful sometimes, so it&#8217;s not a bad sales pitch.<span id="more-486"></span>First off it would be good to ask, <a href="http://en.wikipedia.org/wiki/Web_accessibility">what</a> is <a href="http://www.w3.org/WAI/gettingstarted/Overview.html">accessibility</a>? Well, accessibility is making a program or web site work for people with a wide range of interaction devices. At one level, making a website work in Opera is making it more accessible; however, usually accessibility is used to refer to making a website work for users with a range of disabilities. For example, a website that showed a video might have a transcript of the speech, or  images that have &#8220;alternate text&#8221; that screen-readers can read to blind people. <a href="http://www.novolocus.com/2008/03/06/kpi-icons-neatly-designed-for-colour-blindness/">Colour is also an important issue</a> - you’ve got to make sure that a site will work for various different types of colour blindness. So is text size - SharePoint uses a ‘fixed size’ font, so visually impaired users can not make it bigger or smaller in the browser, and this is a big no-no. For example, these images show a typical SharePoint system in IE7 with the text-size in the browser set to biggest and smallest:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/ie-text-small.png"><img class="alignnone size-medium wp-image-487" title="ie-text-small" src="http://www.novolocus.com/wp-content/uploads/2008/04/ie-text-small-300x178.png" alt="Internet Explorer showing SharePoint with a small font" width="300" height="178" /></a></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/ie-text-big.png"><img class="alignnone size-medium wp-image-488" title="ie-text-big" src="http://www.novolocus.com/wp-content/uploads/2008/04/ie-text-big-300x178.png" alt="Internet Explorer showing SharePoint with a large font" width="300" height="178" /></a></p>
<p>As you might notice, some of the content changes size - but more of the text on the page, including all the navigation, doesn’t.</p>
<p>Accessibility is a complex subject as users could use all sorts of weird user interface devices, such as text only browsers, screen-readers, Braille displays, etc.. Consequently, accessibility always has a question of how far you go. <a href="http://www.w3.org/TR/WAI-WEBCONTENT/">Certain ‘levels’ of this are embodied in the WCAG 1.0 ratings</a> ( A, AA, AAA, etc. ) by the <a href="http://www.w3.org/WAI/">WAI.</a></p>
<p>What HiSoftware have done is produce a toolkit that fixes a number of these issues (or, at least, makes it easier for you to fix them).<strong> It isn’t a solution - you don’t just plug it in and suddenly you’re accessible.</strong> In fact, there isn’t anything in it that I don’t think I could program, but their point is simply &#8220;why reinvent the wheel&#8221;. It’s a good point, and I certainly think that we can find a use for it.</p>
<p>The Accessibility Kit is being developed and released in stages. Stages 1 and 2 have been released already:</p>
<ol>
<li>WCM - Accessibility stuff for WCM sites only</li>
<li> Collaboration - Accessibility stuff for collaboration sites (wikis and blogs)</li>
</ol>
<p>Future additions will include an accessible Rich Text Editor control (neither the MOSS or Telerik ones are). This is something of a Holy Grail. The kit itself is open-source (it would be hard for it not to be), and it is free.</p>
<p>One of the things that I took away was how it’s necessary to treat Accessibility like branding - when a customer asks for an accessible SharePoint system, we’ve got to ask &#8220;which bits?&#8221; Building a SharePoint System that is accessible throughout is a massive undertaking. If you can restrict the scope of the bits that need to be accessible, then that’s a good idea. For example, why bother making My Sites accessible if it’s only internal users using them, and there is no internal requirement for accessibility?</p>
<p><strong>There are problem areas that we discussed:</strong></p>
<ul>
<li><strong>Libraries and lists</strong> - as there are some complex user interactions going on in there (List menus, List ordering, Views, View menu, ListItems menu and submenus to name a few)</li>
<li><strong> Administration pages</strong> - the same problem as branding, they’re not really designed to be modified. Note that some ‘Administration’ pages are visible to normal users&#8230;</li>
<li><strong> Web Part Zones</strong> - don’t produce good code for screen-readers and the like.</li>
</ul>
<p>Further, some companies may insist on XHTML-Strict compliance - this isn’t really the same as accessibility, though you can use similar techniques to try and achieve it. With SharePoint this is very hard and (I believe) of limited value.</p>
<p>The biggest thing that got my attention was actually HiSoftware’s sales pitch (but they have a good point - really). Although we can build an accessible site, content will then be authored by the users. It’s unlikely that they know anything about accessibility, let alone how to write so that their site remains accessible. Thus, we need to have some way of ensuring compliance with accessibility rules, guiding users in how to fix content, locating content that needs fixed on the site, etc.. This then brings us into contact then with the world of compliance too - make sure that, for example, rude words aren’t used in the content. HiSoftware produce a number of tools to help do this:</p>
<ul>
<li>A plugin for SharePoint Designer to help designers make accessible pages/page layouts, etc..</li>
<li> A feature for SharePoint to allow content authors to test the pages they’re writing</li>
<li> A program for crawling and checking accessibility and compliance of your site</li>
<li> Processes and workflows to support enforcing compliance (sort of like advanced ‘Content Approval’ workflows, but allowing things like users to pass content to a technical team if they don’t know how to make it comply).</li>
</ul>
<p>See <a href="http://www.hisoftware.com/MOSS/MOSSsolutions.htm">their MOSS solutions page</a> for more details. HiSoftware seem to have come to SharePoint from a website accessibility and compliance management background and have realised that this is something missing in SharePoint 2007&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/21/accessibility-in-moss/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Document Conversion Service and Images</title>
		<link>http://www.novolocus.com/2008/04/18/document-conversion-service-and-images/</link>
		<comments>http://www.novolocus.com/2008/04/18/document-conversion-service-and-images/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 11:45:55 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[Branding]]></category>

		<category><![CDATA[Office]]></category>

		<category><![CDATA[Document Conversion]]></category>

		<category><![CDATA[Pictures]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=477</guid>
		<description><![CDATA[It&#8217;s worth noting, the document conversion service doesn&#8217;t convert embedded images - which is a pain (and why? They&#8217;re available as image files inside the .docx file! Come on Microsoft, that&#8217;s craaaazy!)
Instead, you have to insert them as linked objects :
Objects such as images that you add to your Word 2007 document will not appear [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s worth noting, the <strong>document conversion service doesn&#8217;t convert embedded images</strong> - which is a pain (and why? They&#8217;re available as image files inside the .docx file! Come on Microsoft, that&#8217;s craaaazy!)</p>
<p>Instead, <a href="http://office.microsoft.com/en-us/sharepointserver/HA101637801033.aspx#0">you have to insert them as <em>linked objects </em></a>:</p>
<blockquote><p>Objects such as images that you add to your Word 2007 document will not appear on the converted Web page if they are embedded in the document. To add these objects so that they appear on the converted Web page, first upload these objects to a document library and then insert them as linked objects (from this location) rather than embedded objects in your document.</p></blockquote>
<p><a href="http://office.microsoft.com/en-us/word/HP051898181033.aspx">There are some instructions here</a>, but this is my guide:</p>
<p>First, find your image on your web page. In SharePoint, this might be a Picture Gallery. Copy the image by <strong>Right Click &gt; Copy</strong></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/copy-source-image-from-web-page.png"><img class="alignnone size-medium wp-image-491" title="copy-source-image-from-web-page" src="http://www.novolocus.com/wp-content/uploads/2008/04/copy-source-image-from-web-page-300x191.png" alt="" width="300" height="191" /></a><a href="http://www.novolocus.com/wp-content/uploads/2008/04/copy-source-image-from-web-page.png"> </a></p>
<p>Go to <strong>Word, and Paste &gt; Paste Special&#8230;</strong></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/paste_special_5.png"><img class="alignnone size-medium wp-image-494" title="paste_special_5" src="http://www.novolocus.com/wp-content/uploads/2008/04/paste_special_5.png" alt="The Paste Special Menu" width="248" height="214" /></a></p>
<p>Select that you want <strong>HTML Format </strong>:</p>
<p><img class="aligncenter size-full wp-image-479" title="paste-special-2" src="http://www.novolocus.com/wp-content/uploads/2008/04/paste-special-2.png" alt="" width="499" height="327" /></p>
<p>And congratulations, you&#8217;ve inserted a link to the image on the web server, rather than the image itself:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/04/paste-special-3-result1.png"><img class="alignnone size-medium wp-image-492" title="paste-special-3-result1" src="http://www.novolocus.com/wp-content/uploads/2008/04/paste-special-3-result1-300x242.png" alt="" width="300" height="242" /></a><a href="http://www.novolocus.com/wp-content/uploads/2008/04/paste-special-3-result.png"> </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/18/document-conversion-service-and-images/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Finding Related Pages in SharePoint&#8230;</title>
		<link>http://www.novolocus.com/2008/04/17/finding-related-pages-in-sharepoint/</link>
		<comments>http://www.novolocus.com/2008/04/17/finding-related-pages-in-sharepoint/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 10:13:34 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=468</guid>
		<description><![CDATA[A neat feature of the Publishing features is being able to see the items related to a page. To see this, go the the Site Actions Menu &#62; Manage Site Content and Structure.

You should then see a window like this:

Use the left pane to browse your site collection, and the right one to select the [...]]]></description>
			<content:encoded><![CDATA[<p>A neat feature of the Publishing features is being able to see the items related to a page. To see this, go the the <strong>Site Actions Menu &gt; Manage Site Content and Structure</strong>.</p>
<p><img src="http://www.novolocus.com/wp-content/uploads/2008/04/site-content-and-structure-menu.PNG" alt="Site Action Menu - Manage Site Content and Structure" /></p>
<p>You should then see a window like this:</p>
<p><a title="Site Content and Structure Page" href="http://www.novolocus.com/wp-content/uploads/2008/04/site-content-and-structure.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/site-content-and-structure.thumbnail.PNG" alt="Site Content and Structure Page" width="246" height="167" /></a></p>
<p>Use the left pane to browse your site collection, and the right one to select the item you want to see the related items for.  Then click the &#8216;Related Items&#8217; button:</p>
<p><img src="http://www.novolocus.com/wp-content/uploads/2008/04/site-content-and-structure-related-items-button.PNG" alt="site-content-and-structure-related-items-button.PNG" /></p>
<p>This should then show you the page with a third pane, showing the related items and the nature of their relationship, where they&#8217;re located, and so on&#8230;</p>
<p><a title="Site Content and Structure Page - Showing Related Items" href="http://www.novolocus.com/wp-content/uploads/2008/04/site-content-and-structure-showing-related-items.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/site-content-and-structure-showing-related-items.thumbnail.PNG" alt="Site Content and Structure Page - Showing Related Items" width="254" height="159" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/17/finding-related-pages-in-sharepoint/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web Part for showing subsites</title>
		<link>http://www.novolocus.com/2008/04/16/web-part-for-showing-subsites/</link>
		<comments>http://www.novolocus.com/2008/04/16/web-part-for-showing-subsites/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 16:32:38 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[SharePoint]]></category>

		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=379</guid>
		<description><![CDATA[This is kind of obvious, but why isn&#8217;t there a web part for showing subsites?
Sure, there is the &#8216;Table of Contents&#8217; web part, but annoyingly that shows other things in the site, like lists and libraries, rather than just child sites. And there isn&#8217;t any setting I can find on it to make it behave [...]]]></description>
			<content:encoded><![CDATA[<p>This is kind of obvious, but why isn&#8217;t there a web part for showing subsites?</p>
<p>Sure, there is the &#8216;Table of Contents&#8217; web part, but annoyingly that shows other things in the site, like lists and libraries, rather than just child sites. And there isn&#8217;t any setting I can find on it to make it behave that way - which also seems a pretty obvious feature. So annoying - 90% there, but not quite.</p>
<p>Well <a href="http://blogs.msdn.com/cjohnson/archive/2005/05/12/417078.aspx">Chis Johnson has has the same though and made an example</a>.  I&#8217;m not entirely convinced about creating the output string in the property (that&#8217;s a bit bizarre Chris), but it&#8217;s a good start.</p>
<p>I guess it&#8217;s another <a href="http://www.novolocus.com/2008/04/11/folder-based-navigation-in-sharepoint/">bit of</a> <a href="http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/">a gripe</a> about out-of-box navigation in SharePoint</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/16/web-part-for-showing-subsites/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting ListItems from throughout the Site Collection with SPSiteDataQuery</title>
		<link>http://www.novolocus.com/2008/04/15/getting-listitems-from-throughout-the-site-collection-with-spsitedataquery/</link>
		<comments>http://www.novolocus.com/2008/04/15/getting-listitems-from-throughout-the-site-collection-with-spsitedataquery/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 12:17:05 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Content Rollup]]></category>

		<category><![CDATA[CQWP]]></category>

		<category><![CDATA[SharePoint Development]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=464</guid>
		<description><![CDATA[So, recently I was doing some work with SharePoint Web Services, getting possible values for Lookup fields. One of the functions I was using was GetListItems(), to get the values that the lookup field could take.
The method&#8217;s signature is:
Lists.GetListItems( [List], [ViewName], [Query], [ViewFields], [RowLimit], [QueryOptions], [WebID]);
I&#8217;m not going to talk about most of these parameters [...]]]></description>
			<content:encoded><![CDATA[<p>So, recently <a href="http://www.novolocus.com/2008/04/07/duplicate-rows-from-the-sharepoint-lists-webservice/">I was doing some work with SharePoint Web Services</a>, getting possible values for Lookup fields. One of the functions I was using was <a href="http://msdn2.microsoft.com/en-us/library/lists.lists.getlistitems.aspx"><strong>GetListItems()</strong></a>, to get the values that the lookup field could take.</p>
<p>The method&#8217;s signature is:</p>
<p><code>Lists.GetListItems(<em> [List], [ViewName], [Query], [ViewFields], [RowLimit], [QueryOptions], [WebID]</em>);</code></p>
<p>I&#8217;m not going to talk about most of these parameters - <a href="http://msdn2.microsoft.com/en-us/library/lists.lists.getlistitems.aspx">you can read about them here</a>. For my query, most of these parameters were Null (i.e. they were unused). However, the [List] parameter interested me. It&#8217;s the &#8216;Name&#8217; of the list, though I prefer using a GUID (a unique ID) for the list.</p>
<p>The lookup column I was using was defined in a different site to the one where I was making the <strong>GetListItems </strong>call. I&#8217;d pass the GUID, and get the correct values back. My call actually was:</p>
<p><code>XmlNode resultNode = _lists.GetListItems( listGuid, null, null, viewFields, null, null, null);</code></p>
<p>So, this query was finding the correct list elsewhere in the site collection based only on the GUID. Interesting - I&#8217;m not passing a WebID, and the list is outside the site I&#8217;m currently using the web services of. This set me thinking - clearly the call was selecting by list GUID against a table of all ListItems in the site collection.</p>
<p>I was a little surprised - then it hit me - the Content Query Web Part also does that. But how?</p>
<p>Well, a bit of searching later and I found the <a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spsitedataquery.aspx">SPSiteDataQuery </a>object. The object is used for queries against multiple lists in multiple sites. You can specify the types of list to query, values to filter, order by, display, etc.. I&#8217;m pretty sure that this is what the Content Query Web Part uses.</p>
<p>Neat! Now I just need to find a reason to use it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/15/getting-listitems-from-throughout-the-site-collection-with-spsitedataquery/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Calculated Columns in SharePoint</title>
		<link>http://www.novolocus.com/2008/04/14/calculated-columns-in-sharepoint/</link>
		<comments>http://www.novolocus.com/2008/04/14/calculated-columns-in-sharepoint/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 11:52:57 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Calculated Columns]]></category>

		<category><![CDATA[Lists]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=467</guid>
		<description><![CDATA[I&#8217;ve finally found a good list of all the functions that you can use in SharePoint calculated columns - and I found a good set of examples too. Interesting.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally found <a href="http://blogs.technet.com/collaboration/archive/2008/03/28/functions-for-use-in-a-moss-2007-column-today-me-other.aspx">a good list of all the functions that you can use in SharePoint calculated columns</a> - and <a href="http://office.microsoft.com/en-us/sharepointtechnology/HA101054791033.aspx?pid=CH100650061033">I found a good set of examples too</a>. Interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/14/calculated-columns-in-sharepoint/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Folder based Navigation in SharePoint</title>
		<link>http://www.novolocus.com/2008/04/11/folder-based-navigation-in-sharepoint/</link>
		<comments>http://www.novolocus.com/2008/04/11/folder-based-navigation-in-sharepoint/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 16:04:52 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Breadcrumbs]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Folders]]></category>

		<category><![CDATA[Navigation]]></category>

		<category><![CDATA[Publishing]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=429</guid>
		<description><![CDATA[We have a customer who wants a fairly simple site - all it needs to be is a heirarchy of web pages.
Unfortunately, SharePoint Publishing features don&#8217;t really do this very well. Yes, in a document library it does breadcrumbs as you navigate through folders - but you can&#8217;t really do that with Pages. For a [...]]]></description>
			<content:encoded><![CDATA[<p>We have a customer who wants a fairly simple site - all it needs to be is a heirarchy of web pages.</p>
<p>Unfortunately, SharePoint Publishing features don&#8217;t really do this very well. Yes, in a document library it does breadcrumbs as you navigate through folders - but you can&#8217;t really do that with Pages. For a start, you can&#8217;t put folders in pages libraries!</p>
<p>So, instead, they&#8217;ve got this deep structure of sites - just to get the navigation. The site permissions and features are the same at all levels. This is a real administrative pain - <a href="http://www.novolocus.com/2008/03/29/take-care-when-adding-or-removing-columns-from-site-content-types/">especially if want to change the definition of the content types</a> used in the pages libraries throughout the site.</p>
<p>What would be better would be to have navigation providers which show Folders in the navigation - so that they&#8217;re exposed in the left navigation (and maybe the top - I&#8217;m not sure). You could then enable  folders in your page library. Users would then be able to navigate down through folders and pages. I guess there is a question as to which page should be the &#8216;default&#8217; for a folder (obviously the folder itself isn&#8217;t a page that can be shown) - but perhaps something like just having a convention that the page &#8216;default&#8217; is shown would be enough. Or maybe make it part of the metadata for a &#8216;Publishing Folder&#8217; content type.<br />
This would mean that the whole deep heirarchy and dozens of sites my customer is using could be dealt with in one single site. I can&#8217;t quite believe that nobody had this idea when they were planning the WCM features for MOSS. I don&#8217;t even think it&#8217;d be that hard - I just hope that I get a chance to implement this sometime&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/11/folder-based-navigation-in-sharepoint/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Not impressed with WordPress 2.5</title>
		<link>http://www.novolocus.com/2008/04/10/not-impressed-with-wordpress-25/</link>
		<comments>http://www.novolocus.com/2008/04/10/not-impressed-with-wordpress-25/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 21:23:41 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[General Tech]]></category>

		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=483</guid>
		<description><![CDATA[I&#8217;ve just upgraded to WordPress 2.5 - my blog was complaining that I should upgrade - and it feels rather like a downgrade.
I can deal with the fact that the Admin UI isn&#8217;t as good as it was - although the Dashboard has improved - but authoring posts has got worse:

 Uploading an image - [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just upgraded to WordPress 2.5 - my blog was complaining that I should upgrade - and it feels rather like a downgrade.</p>
<p>I can deal with the fact that the Admin UI isn&#8217;t as good as it was - although the Dashboard has improved - but authoring posts has got worse:</p>
<ul>
<li> Uploading an image - didn&#8217;t work out of the box. I had to install a plugin to make that work. Now it reports that the upload failed, though it succeeded.</li>
<li>Image thumbnailing is not as good - my thumbnails keep getting their left and right edges cut off.</li>
<li>Creating links in the WYSIWYG text editor just shows me a blank box - I have to switch to edit HTML view and put them in there.</li>
</ul>
<p>Come on chaps, this isn&#8217;t release ready - you shouldn&#8217;t have been advising users to upgrade yet. Everyone, steer clear until these issues are fixed. Perhaps it would be a lot easier to <em>not</em> use Flash, eh?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/10/not-impressed-with-wordpress-25/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Document Conversion Service doesn&#8217;t map column data - Part II</title>
		<link>http://www.novolocus.com/2008/04/10/document-conversion-service-doesnt-map-column-data-part-ii/</link>
		<comments>http://www.novolocus.com/2008/04/10/document-conversion-service-doesnt-map-column-data-part-ii/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 10:05:06 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[SharePoint]]></category>

		<category><![CDATA[Content Type]]></category>

		<category><![CDATA[Document Conversion]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/2008/04/10/document-conversion-service-doesnt-map-column-data-part-ii/</guid>
		<description><![CDATA[(For the purposes of this post, I&#8217;ll use Pages with a capital P to mean items in SharePoint of a Page content type, or a child content type of Page. I&#8217;ll also refer to all content types in italics)
Previously, I found that the document conversion service doesn&#8217;t map site column data from the Document type [...]]]></description>
			<content:encoded><![CDATA[<p><em>(For the purposes of this post, I&#8217;ll use Pages with a capital P to mean items in SharePoint of a Page content type, or a child content type of Page. I&#8217;ll also refer to all content types in italics)</em></p>
<p>Previously, <a href="http://www.novolocus.com/2008/04/08/document-conversion-service-doesnt-map-column-data-part-i/">I found that the document conversion service doesn&#8217;t map site column data from the <em>Document</em> type to the <em>Page</em> type</a>. So, what are our options?</p>
<ol>
<li>Get users to fill in the metadata for the converted document</li>
<li>Put the metadata into the Word document</li>
<li>Bespoke coding</li>
<li>Don&#8217;t use the conversion service</li>
</ol>
<p>Let&#8217;s look at each in turn.</p>
<h2>Get users to fill in the metadata for the converted document</h2>
<p>Well, the first option is pretty obvious - get the users to fill in the Site Columns for the converted document&#8217;s <em>Page.</em> In my case, this would mean filling in the AWBText column on the <em>ConvertableDocumentPage </em>type. This will work! Unfortunately this means that the page and document&#8217;s data is not linked - a change in the AWBText field won&#8217;t be replicated between both items, or even just pushed from the <em>ConvertableDocument </em>the next time it&#8217;s converted. That sucks a bit, but this might be a valid option.</p>
<h2>Put the metadata into the Word document</h2>
<p>The second option is quite neat - Word document can have &#8216;Quick Parts&#8217; - some of which are document properties, and this can be connected to the columns of the content type:</p>
<p><a title="Insert a Quick part menu" href="http://www.novolocus.com/wp-content/uploads/2008/04/150-insert-quickpart.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/150-insert-quickpart.thumbnail.PNG" alt="Insert a Quick part menu" /></a></p>
<p>You can put these into the document itself. They&#8217;re like document &#8216;Fields&#8217; in Word pre-2007, but these are much, much better. For a start, you can actually type into the quickpart and it&#8217;ll update the document properties - and when you save the document to SharePoint it&#8217;ll update the columns of the library! Very cool. Anyway, <a href="http://www.novolocus.com/2008/04/08/document-conversion-service-doesnt-map-column-data-part-i/">I updated my Word template from my previous example&#8230;</a></p>
<p><a title="Word document with Quickpart" href="http://www.novolocus.com/wp-content/uploads/2008/04/160-page-template-including-metadata-column-as-content.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/160-page-template-including-metadata-column-as-content.thumbnail.PNG" alt="Word document with Quickpart" /></a></p>
<p>I then created a new document. Note that the AWBText field in the Document Information Panel and the Quick part is linked - I typed in the value in the document and it was reflecting the Document Information Panel.</p>
<p><a title="Example document for Document conversion with QuickPart" href="http://www.novolocus.com/wp-content/uploads/2008/04/160-page-template-including-metadata-column-as-content.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/160-page-template-including-metadata-column-as-content.thumbnail.PNG" alt="Example document for Document conversion with QuickPart" /></a></p>
<p>I then converted these document. This resulted in:</p>
<p><a title="Converted Document - AWBText value in Page content" href="http://www.novolocus.com/wp-content/uploads/2008/04/180-not-filled-awbtext-on-page-but-with-column-in-content.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/180-not-filled-awbtext-on-page-but-with-column-in-content.thumbnail.PNG" alt="Converted Document - AWBText value in Page content" /></a></p>
<p>Okay, so I&#8217;ve scribbled on this a bit. The area outlined in the purple-pink colour is the content of our document that we converted. You can see that this includes the value of the <em>ConvertableDocument</em>&#8217;s  AWBText column. Hurrah! However, above this is the value of the AWBText column on the ConvertableDocumentPage - and it is still empty. In other words, the original document&#8217;s metadata is now in the page content - but it still isn&#8217;t stored against the <em>Page</em> as metadata. This isn&#8217;t really suitable for our customer - they need that column data against the <em>Pages </em>for their navigation. Bah!</p>
<h2>Bespoke Coding</h2>
<p>Okay, I started to wonder if I could fix this via custom code (i.e. some sort of <a href="http://www.codeplex.com/features">Feature</a>). I dug through some of the hidden properties of my source <em>ConvertableDocument </em>and destination <em>ConvertableDocumentPage </em>using <a href="http://www.codeplex.com/spm">SharePoint Manager</a>. I knew that there must be some sort of connection as if you Edit the <em>ConvertableDocumentPage</em> is shows you that is has a source document, and lets you edit that document instead. Therefore, they must know where they came from.</p>
<p>In SharePointManager, I found some interesting fields. The <em>ConvertableDocument </em>content type I&#8217;d created had a property <strong>RcaPageID</strong>, which was a <a href="http://msdn2.microsoft.com/en-us/library/system.guid.aspx">GUID</a>. &#8216;Rca&#8217; stands for &#8216;Rich Client Authoring&#8217;, which is what they seemed to call this page authoring technique until some decided to call it &#8216;<a href="http://blogs.msdn.com/ecm/archive/2006/06/13/629525.aspx">Smart Client Authoring</a>&#8216; instead. Certainly, internally it&#8217;s normally referred to as Rich Client Authoring, or &#8216;Rca&#8217;.</p>
<p>I then checked the <em>ConvertableDocumentPage </em>type, which had a property <strong>RcaSourceDocID </strong>. This was a GUID, and this ID matched the <strong>RcaPageID </strong>of the document we used to create the page. Thus, and I&#8217;m pretty sure about this, it&#8217;s the connection between the source <em>Document </em>and destination <em>Page</em>.</p>
<p>Therefore, I could build an event handler that (when a page is updated or created) gets the Page&#8217;s source document, sees what columns they share, and copies across  the values of those shared columns. Actually, it&#8217;d probably have to exclude some (like title), but you get the idea. Also, it&#8217;d have to run a query across all the documents in the site collection, but I&#8217;m pretty sure that this is possible.</p>
<p>I like this solution, and think it&#8217;s a fairly straight forward, generic candidate for a feature, but unfortunately our  customer is unable to make server configuration changes - like installing new features. So that rules that idea out&#8230; damn.</p>
<h2>Don&#8217;t use the Document Conversion Service</h2>
<p>I know, this seems a bit crazy - but you could author your content in Word and just copy and paste the content into your pages. This is what our customer was doing. I know, it seems a little crazy to me too, but if you <a href="http://www.novolocus.com/2008/04/01/restrict-or-permit-formatting-changes-in-word-documents/">lock down the styles available in a Word template</a>, then the code you&#8217;ll copy will have consistent CSS styles in it, and you can prevent any inline CSS through that restriction too. It has no server footprint and no duplication of metadata - but you still have to store the documents (which might require column data too).</p>
<p>So those were the options I was able to come up with. I like the coding option - an event handler could be a very elegant way of dealing with this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/10/document-conversion-service-doesnt-map-column-data-part-ii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Document Conversion Service doesn&#8217;t map column data - Part I</title>
		<link>http://www.novolocus.com/2008/04/08/document-conversion-service-doesnt-map-column-data-part-i/</link>
		<comments>http://www.novolocus.com/2008/04/08/document-conversion-service-doesnt-map-column-data-part-i/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 08:58:23 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[SharePoint]]></category>

		<category><![CDATA[Document Conversion]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/2008/04/08/document-conversion-service-doesnt-map-column-data-part-i/</guid>
		<description><![CDATA[(For the purposes of this post, I&#8217;ll use Pages with a capital P to mean items in SharePoint of a Page content type, or a child content type of Page. I&#8217;ll also refer to all content types in italics)
One of our customers wants to author their Pages in SharePoint in Word. Sounds like a case [...]]]></description>
			<content:encoded><![CDATA[<p><em>(For the purposes of this post, I&#8217;ll use Pages with a capital P to mean items in SharePoint of a Page content type, or a child content type of Page. I&#8217;ll also refer to all content types in italics)</em></p>
<p>One of our customers wants to author their <em>Pages </em>in SharePoint in Word. Sounds like a case for the Document Conversion Service - author the content in Word, and then convert the <em>Document </em>to a <em>Page</em>. There is a catch though - they&#8217;re wanting to capture some meta-data about the document too, such as business unit, review date, department that &#8216;owns&#8217; the page, etc.. What would the Document Conversion Service do with this information? I didn&#8217;t remember seeing any way of setting up mappings between fields. Would the metadata be copied if both the <em>Document </em>and <em>Page </em>content types shared the same site column?</p>
<p>To find out, I did a bit of testing. Much of what I did was actually stuff like <a href="http://office.microsoft.com/en-us/sharepointdesigner/HA101741281033.aspx">creating a new <em>Page </em>layout</a>, and then <a href="http://office.microsoft.com/en-us/sharepointdesigner/HA101741291033.aspx">customizing it</a>. There are better articles about this that my notes, but I&#8217;ll include all the steps. (I do assume that you have the document conversion service running and enabled on your site collection though.)  I did the following:</p>
<p>I <a href="http://office.microsoft.com/en-us/sharepointtechnology/HA101577691033.aspx">created a new Site Column</a> - I called it AWBText. It was just a text column.</p>
<p>I created a new <em>Document </em>content type which used that new column. I called this content type the <em><strong>ConvertableDocument </strong></em>content type:</p>
<p><a title="The new Document Content Type" href="http://www.novolocus.com/wp-content/uploads/2008/04/10-set-up-document-content-type.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/10-set-up-document-content-type.thumbnail.PNG" alt="The new Document Content Type" /></a></p>
<p>I then created a new Page content type. I called this the <strong><em>ConvertableDocumentPage </em></strong>content type:</p>
<p><a title="Creating a new Page Content type" href="http://www.novolocus.com/wp-content/uploads/2008/04/20-create-page-content-type.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/20-create-page-content-type.thumbnail.PNG" alt="Creating a new Page Content type" /></a></p>
<p>I made sure that that also used the AWBText column - and the out-of-box &#8216;Page Content&#8217; column. This column will hold the content of the converted document. You should probably add another column for holding the style information, but I didn&#8217;t bother (&#8217;cos I didn&#8217;t need it for  the test). <a href="http://msdn2.microsoft.com/en-us/library/bb727372.aspx#MOSS2007CustomMasterPageWCM_HTMLEditorFieldControl">You could create your own</a>, but I chose just to use the same ones as the <em>Article Page</em> content type - after all, the data (page content) is still the same, and this is why different content types can share the same columns.</p>
<p><a title="The new Page content Type" href="http://www.novolocus.com/wp-content/uploads/2008/04/30-set-up-page-content-type.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/30-set-up-page-content-type.thumbnail.PNG" alt="The new Page content Type" /></a></p>
<p>So, now I&#8217;ve got my two content types I&#8217;m going to test with, and they both share the AWBText column. However, the <a href="http://office.microsoft.com/en-us/sharepointdesigner/HA101741281033.aspx"><em>ConvertableDocumentPage </em>content type needs a page layout to</a>, well, define how the <em>ConvertableDocumentPage</em>&#8217;s content will be displayed. I cracked  open SharePoint Designer, opened my site, and created a page layout:</p>
<p><a title="Create a Page Layout - Step 1" href="http://www.novolocus.com/wp-content/uploads/2008/04/40-create-page-layout-1.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/40-create-page-layout-1.thumbnail.PNG" alt="Create a Page Layout - Step 1" width="139" height="90" /></a><a title="Create a Page Layout - Step 2" href="http://www.novolocus.com/wp-content/uploads/2008/04/50-create-page-layout-2.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/50-create-page-layout-2.thumbnail.PNG" alt="Create a Page Layout - Step 2" width="122" height="94" /></a></p>
<p>This gives you a page layout to put your content controls into. We&#8217;ve only got a couple:</p>
<p><a title="Page Content Controls" href="http://www.novolocus.com/wp-content/uploads/2008/04/60-page-content-controls.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/60-page-content-controls.thumbnail.PNG" alt="Page Content Controls" /></a></p>
<p>I created a page layout. Here&#8217;s the code and how it looked in SharePoint designer:</p>
<p><a title="New Page Layout - Code" href="http://www.novolocus.com/wp-content/uploads/2008/04/80-new-pagelayout-code.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/80-new-pagelayout-code.thumbnail.PNG" alt="New Page Layout - Code" /></a><a title="New Page Layout - Design" href="http://www.novolocus.com/wp-content/uploads/2008/04/70-new-pagelayout-design.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/70-new-pagelayout-design.thumbnail.PNG" alt="New Page Layout - Design" /></a></p>
<p>As you can see, I&#8217;m displaying my AWBText field at the top, with the converted content from our converted <em>ConvertableDocument </em>below. Both fields also have labels. I published and approved the layout.</p>
<p>Next, I set up a template Word document - I went to the <em>ConvertableDocument </em>content type&#8217;s advanced settings, and edited the template.</p>
<p><a title="Content Type - Advanced Settings" href="http://www.novolocus.com/wp-content/uploads/2008/04/90-set-a-template-for-the-document-content-type.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/90-set-a-template-for-the-document-content-type.thumbnail.PNG" alt="Content Type - Advanced Settings" /></a></p>
<p>I then just saved the template without making any changes - <a href="http://www.novolocus.com/2008/03/26/missing-content-type-fields-in-the-document-information-panel/">I&#8217;ve found that you need to do this to get the Document information panel </a>to work correctly.</p>
<p>Next up, I set up the document conversion through <em>ConvertableDocument </em>content type&#8217;s settings:</p>
<p><a title="Manage Document Conversions - Step 1" href="http://www.novolocus.com/wp-content/uploads/2008/04/92-manage-document-conversions.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/92-manage-document-conversions.thumbnail.PNG" alt="Manage Document Conversions - Step 1" width="79" height="85" /></a><a title="Manage Document Conversions - Step 2" href="http://www.novolocus.com/wp-content/uploads/2008/04/93-manage-document-conversions.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/93-manage-document-conversions.thumbnail.PNG" alt="Manage Document Conversions - Step 2" width="299" height="77" /></a></p>
<p>Then the complex form of the conversion setup:</p>
<p><a title="Manage Document Conversions - Step 3" href="http://www.novolocus.com/wp-content/uploads/2008/04/94-set-up-conversion-note-no-mapping-of-metadata.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/94-set-up-conversion-note-no-mapping-of-metadata.thumbnail.PNG" alt="Manage Document Conversions - Step 3" /></a></p>
<p>Take a moment to look at that form. I&#8217;ve defined that I want to convert my <em>ConvertableDocument </em>to a page layout of ConvertableDocumentPageLayout - which implies a content type of <em>ConvertablePageLayout</em>. I&#8217;m putting the content of the converted content into the Page Content column, and removing any styles (because, as mentioned above, I don&#8217;t have a suitable column to put the style information into). Note that there are no settings for other data mappings - no columns of the document to columns of the page  mapping.</p>
<p>I saved these settings, added my <em>ConvertableDocument </em>type to a Document Library, and  added my <em>ConvertableDocumentPage </em>type to the &#8216;Pages Library&#8217;. Then I created an example document. Note the Document Information Panel at the top shows my AWBText column (and the Title column), and I&#8217;ve put in some text.</p>
<p><a title="Example document for Document conversion" href="http://www.novolocus.com/wp-content/uploads/2008/04/100-example-document.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/100-example-document.thumbnail.PNG" alt="Example document for Document conversion" /></a></p>
<p>I saved this, and in the document library I chose to convert the document to a web page:</p>
<p><a title="Convert a Document - Step 1" href="http://www.novolocus.com/wp-content/uploads/2008/04/110-choose-to-convert.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/110-choose-to-convert.thumbnail.PNG" alt="Convert a Document - Step 1" width="260" height="112" /></a><a title="Convert a Document - Step 2" href="http://www.novolocus.com/wp-content/uploads/2008/04/120-choose-to-convert-2.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/120-choose-to-convert-2.thumbnail.PNG" alt="Convert a Document - Step 2" /></a></p>
<p>This resulted in a page that looked like:</p>
<p><a title="Converted Document - No AWBText value" href="http://www.novolocus.com/wp-content/uploads/2008/04/130-not-filled-awbtext-on-page.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/130-not-filled-awbtext-on-page.thumbnail.PNG" alt="Converted Document - No AWBText value" /></a></p>
<p>And the document library looked like:</p>
<p><a title="Converted Document in document library - No AWBText value" href="http://www.novolocus.com/wp-content/uploads/2008/04/140-not-filled-awbtext.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/04/140-not-filled-awbtext.thumbnail.PNG" alt="Converted Document in document library - No AWBText value" /></a></p>
<p>So, as we can see, the AWBText column has not been copied across, even though it is the same column. During the configuration process, there was no option to configure mapping of fields. It looks like the Document Conversion Service doesn&#8217;t map column data. In <a href="http://www.novolocus.com/2008/04/10/document-conversion-service-doesnt-map-column-data-part-ii/">Part II</a>, I&#8217;ll look at some options.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/08/document-conversion-service-doesnt-map-column-data-part-i/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Duplicate rows from the SharePoint Lists webservice.</title>
		<link>http://www.novolocus.com/2008/04/07/duplicate-rows-from-the-sharepoint-lists-webservice/</link>
		<comments>http://www.novolocus.com/2008/04/07/duplicate-rows-from-the-sharepoint-lists-webservice/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 11:39:11 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Bug]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/2008/04/07/duplicate-rows-from-the-sharepoint-lists-webservice/</guid>
		<description><![CDATA[Edit: I&#8217;ve since learned more about this behaviour - but it&#8217;s still not very obvious
I found what I can only describe as a but in the Lists.asmx web service in SharePoint. I was using Lists.GetListItems to get a list of the folders in a Document Library, and I found that I was getting one of [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Edit</strong>: <a href="http://www.novolocus.com/2008/06/10/why-i-was-getting-duplicate-rows-from-the-sharepoint-lists-web-service/">I&#8217;ve since learned more about this behaviour </a>- but it&#8217;s still not very obvious</em></p>
<p>I found what I can only describe as a but in the Lists.asmx web service in SharePoint. I was using <strong>Lists.GetListItems</strong> to get a list of the folders in a Document Library, and I found that I was getting one of the folders twice. However, when I looked in SharePoint, there was only one, and my program showed that <em>both</em> these folders were supposed to be at the same URL. WTF?</p>
<p>Naturally, I went back and had a look at the XML I was getting back from the web service. I expected to get two, so I was somewhat surprised to get 3&#8230;</p>
<p><a title="GetListItems Response XML Showing 3 records" href="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitemsresponsexml1.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitemsresponsexml1.thumbnail.PNG" alt="GetListItems Response XML Showing 3 records" width="270" height="77" /></a></p>
<p>As you can see, 2 records have the same URL, the same internal ID (both of which <em>have </em>to be unique!), and the only difference is in the <em>AWBMultiLookup </em>column. This set alarm bells ringing. Firstly, I was surprised to see it in the results. In <strong>GetListItems </strong>you can define the fields you want returned in the responses (the &#8216;view fields&#8217; ). I had only asked for the URL, the &#8216;link file name&#8217; (the item&#8217;s name), and it&#8217;s ID. I&#8217;d expect to get some other details (the web services always seem to include more), but not field data.</p>
<p>Secondly, <em>AWBMultiLookup </em>is a multi-select lookup column. In other words, it looks up data from another list, and you can can select zero to many items from it. For my folder, I&#8217;d selected 2 options from this column (&#8217;A&#8217; and &#8216;C&#8217;), and now I have 2 records with the only difference being the value of the <em>AWBMultiLookup </em>column - &#8216;A&#8217; or &#8216;C&#8217;. On a hunch, I went and selected a third option (&#8217;B'), and my XML I was getting back became:</p>
<p><a title="GetListItems Response XML Showing 4 records" href="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitemsresponsexml2.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitemsresponsexml2.thumbnail.PNG" alt="GetListItems Response XML Showing 4 records" width="270" height="81" /></a></p>
<p>Yup, now I got 3 records with different values of <em>AWBMultiLookup</em>, rather than just the one. Clearly, and incredibly, the web service was returning a seperate &#8216;item&#8217; for each value of the multi-select lookup column that was selected.  I can&#8217;t think of a situation where that would be the desired behaviour - and everywhere else in the system, multiple values are just encoded into one string. Hence, I&#8217;m calling that a bug.</p>
<p>However, this raised a question. Elsewhere in the system I get just the one folder and it was definitely getting the multi-select lookup field correctly. I ran that code and found that the XML I got back was:</p>
<p><a title="Results of GetListItem with a Multiple lookup where all values are returned in one attribute" href="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitemsresponsexml-for-single-item-with-defined-view.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitemsresponsexml-for-single-item-with-defined-view.thumbnail.PNG" alt="Results of GetListItem with a Multiple lookup where all values are returned in one attribute" width="269" height="42" /></a></p>
<p>Yup, you&#8217;ll notice that the results from <strong>GetListItems </strong>this time shows all the values for the multi-select lookup in one attribute. What gives? What&#8217;s different about this query to the other one where multiple items would be returned?</p>
<p>Well, the only difference that seemed like it could be relevant is that this second query requests the &#8216;<em>AWBMultiLookup</em>&#8216; column in the &#8216;view fields&#8217;. I decided that I&#8217;d test this by modifying the view fields for my first query to include the <em>AWBMultiLookup </em>column like so:</p>
<p><a title="View Fields changed to get the multi-select lookup" href="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitems-with-multiple-lookup-in-the-view.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitems-with-multiple-lookup-in-the-view.thumbnail.PNG" alt="View Fields changed to get the multi-select lookup" width="273" height="16" /></a></p>
<p>Having done this, my query now worked as I&#8217;d expected it to in the first place:</p>
<p><a title="GetListItemsResponseXML with defined view including multiple lookup" href="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitemsresponsexml-with-defined-view-including-multiple-lookup.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/03/getlistitemsresponsexml-with-defined-view-including-multiple-lookup.thumbnail.PNG" alt="GetListItemsResponseXML with defined view including multiple lookup" width="274" height="47" /></a></p>
<p>Notice that all values are now encoded in the one attribute, and that I&#8217;m getting the two records I&#8217;d originally expected.</p>
<p>Or course, this doesn&#8217;t help me. When my application is browsing across folders I don&#8217;t actually know what the columns against folder really are, so even if I was happy to request the multi-select lookup fields (despite their being superfluous ), I can&#8217;t, &#8216;cos I don&#8217;t know what they are yet. I&#8217;ve gotta admit, though, that I&#8217;ve lost my temper at whoever made the web services work that way. It&#8217;s worth noting that the SharePoint API doesn&#8217;t behave similarly</p>
<p>One thing I haven&#8217;t checked yet is what happens if you hav many multi-select lookups. Combinatorial explosion anyone?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/07/duplicate-rows-from-the-sharepoint-lists-webservice/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Visual Studio Comments</title>
		<link>http://www.novolocus.com/2008/04/07/visual-studio-comments/</link>
		<comments>http://www.novolocus.com/2008/04/07/visual-studio-comments/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 11:01:40 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[General Tech]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/2008/04/07/visual-studio-comments/</guid>
		<description><![CDATA[I didn&#8217;t realise this, but Visual Studio allows you to see comments beginning TODO, HACK and UNDONE in the task list pane. That&#8217;s really quite neat, though it&#8217;s unfortunate that the list only contains items for files that are currently op open in the IDE. You can also add your own &#8216;tokens&#8217; via the Options [...]]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t realise this, but Visual Studio allows you to see comments beginning TODO, HACK and UNDONE in the task list pane. That&#8217;s really quite neat, though it&#8217;s unfortunate that the list only contains items for files that are currently op open in the IDE. You can also add your own &#8216;tokens&#8217; via the <em>Options &gt; Task List</em> dialog. <a href="http://viswaug.wordpress.com/2007/09/07/task-list-feature-in-visual-studio-2005/">Vish has a pretty good summary</a>. It&#8217;s just a shame that the task list isn&#8217;t for all files, irrespective of whether they&#8217;re open or not. Still, a neat feature that I didn&#8217;t know about.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/07/visual-studio-comments/feed/</wfw:commentRss>
		</item>
		<item>
		<title>You can do a lot with page layouts&#8230;</title>
		<link>http://www.novolocus.com/2008/04/04/you-can-do-a-lot-with-page-layouts/</link>
		<comments>http://www.novolocus.com/2008/04/04/you-can-do-a-lot-with-page-layouts/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 10:04:00 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Branding]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Navigation]]></category>

		<category><![CDATA[Page Layouts]]></category>

		<category><![CDATA[Web Part Zones]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/2008/04/04/you-can-do-a-lot-with-page-layouts/</guid>
		<description><![CDATA[I&#8217;ve been blogging a fair bit lately about Page Layouts - how they affect styles to hide bits of the page, how they are used to replace breadcrumbs and the like - but you can do a heck of a lot with them.
Quite a lot of your default master page is in ContentPlaceHolder controls. Those [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been blogging a fair bit lately about Page Layouts - <a href="http://www.novolocus.com/2008/04/03/pimp-my-sharepoint-part-ii-beyond-just-colours/">how they affect styles to hide bits of the page</a>, <a href="http://www.novolocus.com/2008/03/10/page-layouts-breadcrumbs-and-the-space-above-the-main-content-area-of-a-page/">how they are used to replace breadcrumbs</a> and the like - but you can do a heck of a lot with them.</p>
<p>Quite a lot of your default master page is in ContentPlaceHolder controls. Those ContentPlaceHolder controls have default content - but your page layout can define Content controls which place content into those placeholders, overriding them. Of course, you still need to have all of the appropriate controls on a page - just removing the &#8216;Site Actions&#8217; menu for <em>everyone</em> isn&#8217;t a good idea - but you can do a lot.</p>
<p>This sort of came up at the last SharePoint User Group meeting - Colin Byrne was demonstrating Silverlight in SharePoint (which apparently doesn&#8217;t work all that well yet, but shows promise). One of the demos he has showed replacing the left navigation with a Silverlight control, but used a neww Master Page do to that. I thought of a demo I&#8217;d done recently where I&#8217;d done similar - but with a Page Layout. I used this to replace the left navigation menu with a Web Part Zone:</p>
<p><strong>Normal View</strong></p>
<p><a title="Page Extensively Modified by a Page Layout" href="http://www.novolocus.com/wp-content/uploads/2008/03/page-layout-overrides.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/03/page-layout-overrides.thumbnail.PNG" alt="Page Extensively Modified by a Page Layout" width="218" height="112" /></a></p>
<p><strong>Edit View</strong></p>
<p><a title="Page Extensively Modified by a Page Layout - Edit View" href="http://www.novolocus.com/wp-content/uploads/2008/03/page-layout-overrides-edit.PNG"><img src="http://www.novolocus.com/wp-content/uploads/2008/03/page-layout-overrides-edit.thumbnail.PNG" alt="Page Extensively Modified by a Page Layout - Edit View" width="223" height="130" /></a></p>
<p>Believe it or not, this is actually the default master with a particular Page Layout that I made, and the &#8216;Simple&#8217; theme applied. Actually, there are lots of bits of the page modified by the Page Layout. The &#8216;Site Actions&#8217; menu and Top Navigation Bar have been moved up, for example. The Left navigation has been replaced by a Web Part Zone, and I&#8217;ve dropped a Content Query Web Part in there for a giggle. And the Search box has been moved down the page too.</p>
<p>You could do all of this with a Master Page of course - and in real life, you&#8217;d probably want to for most of those modifications. For some things, though, like replacing certain navigation controls (which is what some of the out-of-box page layouts do with title breadcrumbs) then I think that a page layout might be exactly what you want - so that you can have different forms of navigation for different pages using the same Master Page.</p>
<p>Anyway, I was surprised by how easy it was to do this. Given that the Master Page defines default content, much of what I did was just copy that default content into the Content control for the location that I wanted to put the control into - and voila!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/04/04/you-can-do-a-lot-with-page-layouts/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
