<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5315518645187518264</id><updated>2011-09-05T09:15:13.921-04:00</updated><category term='Export'/><category term='Webparts'/><category term='MediaPlayer'/><category term='Shared'/><category term='Errors'/><category term='Publishing Pages'/><category term='SharePoint'/><category term='URL'/><category term='Import'/><category term='SPWeb'/><category term='Administrative'/><category term='ElevatedPrivilages'/><category term='CSV'/><category term='Gotchas'/><category term='Search'/><category term='MPEG'/><category term='Variations'/><category term='Mappings'/><category term='Profiles'/><category term='Flash'/><category term='Alternate Access Mappings'/><category term='Operations'/><category term='WMA'/><category term='Console'/><category term='Scopes'/><category term='Moss'/><category term='Missing'/><category term='MOV'/><category term='Services'/><category term='Lists'/><title type='text'>Inside SharePoint</title><subtitle type='html'>A Blog for those interested in what makes SharePoint tick</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-4417258781484617695</id><published>2009-01-05T23:05:00.004-05:00</published><updated>2009-01-05T23:24:54.485-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moss'/><category scheme='http://www.blogger.com/atom/ns#' term='Variations'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Publishing Pages'/><category scheme='http://www.blogger.com/atom/ns#' term='Webparts'/><title type='text'>Sharepoint Variations</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Over the October - December, 2008 time frame, I finally a project that involved variations. I had poked around in the Publishing variations class a little and saw some cool stuff there, but was never able to find any really good posts or webparts that peeked my interest enough to pull me away from my current work load. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Then I got lucky enough to be involved in a project where Variations were a prime need. First, a little info about variations:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Variations are part of a Publishing Site. In the site collection settings of a publishing site, you can see the controls at the bottom of the right most column. These settings include:&lt;/span&gt; &lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Variations &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Variation Labels&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Variation Logs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Translatable Columns&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Interestingly enough, using variations and creating the heirarchy in Sharepoint creates links to the sites on the quick launch, but does not expose the Variations control, which you have to manually uncomment out in the VariationsLabelMenu.ascx page in ControlTemplates. This control exposes a dropdownlist that contains the list variations and a post back to load the selected variation type. (Note: Exploring the code behind this control in the Mircosoft.Sharepoint.Publishing.VariationsLabelEcbMenu class can teach you a lot about how Sharepoint handles Variation Labels and navigation.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;More Later...&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-4417258781484617695?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/4417258781484617695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=4417258781484617695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/4417258781484617695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/4417258781484617695'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2009/01/sharepoint-variations.html' title='Sharepoint Variations'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-2337594929920582854</id><published>2009-01-05T23:00:00.003-05:00</published><updated>2009-01-05T23:04:46.851-05:00</updated><title type='text'>Been Busy....</title><content type='html'>&lt;span style="color:#000000;"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;I hope that other MS Sharepoint architects and developers are finding this a golden era of business. I have been so remarkably busy, I never am able to find any time to sit down and jot in my Blog. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Its been over a year and a half since my last post, and in that time I have worked on over 10 projects. I hope to finally add some tips and tricks I have picked up along the way to this blog.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Stay Tuned...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;JMC&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-2337594929920582854?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/2337594929920582854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=2337594929920582854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/2337594929920582854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/2337594929920582854'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2009/01/been-busy.html' title='Been Busy....'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-3375230215561080217</id><published>2007-07-18T22:10:00.000-04:00</published><updated>2007-07-18T22:32:14.214-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moss'/><category scheme='http://www.blogger.com/atom/ns#' term='Errors'/><category scheme='http://www.blogger.com/atom/ns#' term='Gotchas'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SPWeb'/><category scheme='http://www.blogger.com/atom/ns#' term='Webparts'/><title type='text'>Trying to use a closed/disposed webpart.</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Coming from a C++ background, I am a stickler for making sure my objects are disposed. I also know that cetain SP objects are extremely heavy, and should always be tossed when you are done with them. These objects include &lt;span style="color:#cc6600;"&gt;SPWeb and SPSite&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;An error I know some developers run into is  "&lt;span style="color:#cc6600;"&gt;Trying to use an SPWeb object that has been closed or disposed and is no longer valid&lt;/span&gt;." Let me try to shed some light on this, and also point out the correct way to create these objects.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;There are 2 common ways to get our hands on an SPWeb object. One way is to use the SPSite.OpenWeb() method and the other is to use the SPContext.Current.Web method. Both of these methods will return to you the current Web, but the difference is that OpenWeb will return a Web object in a different memory space and CurrentWeb will return the Web object using the current memory space and thread.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;As .net 2.0 developers, we are told to wrap our disposable objects in Using clauses, or (correctly) to use try/finally. The problem is that when you dispose of the &lt;span style="color:#cc6600;"&gt;SPWeb&lt;/span&gt; object after you gained a pointer to it from the SPContext, you are disposing of the object being used to render the page. Seldomly, Sharepoint recovers from the error, and goes on it's merry way. But more likely, the page will not render, and you will get the error. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;As a best practice, if I am only going to fetch and display data, I use the &lt;span style="color:#cc6600;"&gt;SPContext&lt;/span&gt; object and do not dispose of the object, and when I plan on modifying or changing data, I use OpenWeb and dispose. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;We all know that SharePoint tries to cover errors, and if a webpart function catches the error, but does not display it, then you can run into a situation where a container page is failing for an unknown reason. Your best bet is to try to add/remove the webparts on the page until the offensive webpart is discovered.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;My friend Eric Stallworth points out that Microsoft covers this in this article&lt;/span&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms778813.aspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://msdn2.microsoft.com/en-us/library/ms778813.aspx&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-3375230215561080217?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/3375230215561080217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=3375230215561080217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/3375230215561080217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/3375230215561080217'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2007/07/trying-to-use-closeddisposed-webpart.html' title='Trying to use a closed/disposed webpart.'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-1117981731773610678</id><published>2007-06-16T15:11:00.000-04:00</published><updated>2007-06-16T15:31:20.550-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Moss'/><category scheme='http://www.blogger.com/atom/ns#' term='Administrative'/><category scheme='http://www.blogger.com/atom/ns#' term='Shared'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Scopes'/><category scheme='http://www.blogger.com/atom/ns#' term='Missing'/><category scheme='http://www.blogger.com/atom/ns#' term='Services'/><title type='text'>And Now Another Word Form Our Administrator</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;I see a whole lots of posts concerning the search drop down box missing some of the defined scopes from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SharedServices&lt;/span&gt;. I recently ran into the problem on our farm and I thought I would pass along the fix.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The best place to start is to ensure that you actually have a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SearchCenter&lt;/span&gt; site installed on the site. Without this, there will be no place &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;fo&lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;r the&lt;/span&gt; scoped searches to land, and the scopes will not show up. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Once you have ensured that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SearchCenter&lt;/span&gt; is installed, then go to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SharedServices&lt;/span&gt; and make sure that the scopes are there. With MOSS, you will usually get two defined scopes out of the box, All Sites and People. Make sure that the scopes are there and that there is data in them.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;If 1 and 2 are &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;ok&lt;/span&gt; then next go to the base site for your collection. Log in as the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SysAdmin&lt;/span&gt; and click on &lt;span style="color:#cc6600;"&gt;"Site Settings - Modify All Site Settings"&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;From All Settings, find the &lt;span style="color:#cc6600;"&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;Search&lt;/span&gt; Scopes&lt;/span&gt; link in the &lt;span style="color:#cc6600;"&gt;Site Collection Administration&lt;/span&gt; column and click on it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Sometimes &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;SharePoint&lt;/span&gt; loses the scoping information, if it has lost it for your site collection, you will see your two scopes here in the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;category&lt;/span&gt; of &lt;span style="color:#cc6600;"&gt;Unused Scopes&lt;/span&gt;. In order to reset your scopes correctly, click on the &lt;span style="color:#cc6600;"&gt;"New Display Group"&lt;/span&gt; button on the menubar.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;In order for the Scopes to show up in the Search Drop Down, place &lt;span style="color:#cc6600;"&gt;"Search Dropdown"&lt;/span&gt; in the Title box here. Place a description in the next field. Now check both of the scope &lt;span style="color:#cc6600;"&gt;"Display"&lt;/span&gt; checkboxes and select a position for each (usually it is All Sites (1) and People(2). Make the default scope &lt;span style="color:#cc6600;"&gt;"All Sites"&lt;/span&gt; and click on "OK"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;When you return to the view you will see your defined scopes in the new Category: &lt;span style="color:#cc6600;"&gt;"Display Group: Search Dropdown(2)"&lt;/span&gt;. And when you go to your site you will see that the scopes are now part of the dropdown box.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;To set up Advanced Search, create another Display Group. In this group place &lt;span style="color:#cc6600;"&gt;"Advanced Search"&lt;/span&gt; in the title and check on &lt;span style="color:#cc6600;"&gt;"All Sites"&lt;/span&gt; and make &lt;span style="color:#cc6600;"&gt;"All Sites"&lt;/span&gt; the default, BOOM! Advanced search shows up.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Hopes this helps some of you frustrated Sharepoint people&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;JMC&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-1117981731773610678?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/1117981731773610678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=1117981731773610678' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/1117981731773610678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/1117981731773610678'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2007/06/and-now-another-word-form-our.html' title='And Now Another Word Form Our Administrator'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-8875963136290065085</id><published>2007-06-12T15:55:00.001-04:00</published><updated>2007-06-12T16:13:08.016-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alternate Access Mappings'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Operations'/><category scheme='http://www.blogger.com/atom/ns#' term='Mappings'/><category scheme='http://www.blogger.com/atom/ns#' term='URL'/><title type='text'>And Now A Word From Our Administrator...</title><content type='html'>&lt;span style="font-family:verdana;font-size:130%;color:#cc6600;"&gt;&lt;strong&gt;Alternate Access Mappings&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:Verdana;font-size:130%;color:#cc6600;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#000000;"&gt;What is it all about? &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;Many installations of SharePoint will not work in Browsers if the site is not trusted. Trust works at the domain level. When you create a SharePoint site, often times you have "http:/servername/pages/default.aspx" &lt;/span&gt;as your url. But you want to show "http:/mymoss.domain.com/pages/default.aspx" as your url. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;In order to do this you have to modify the farm's AAM settings. These settings are located on the Operations tab in Central Admin.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;When you open AAM you will see a list of all the sites in the farm and the default http for each site. Now lets say you want to use "intranet.domain.com" as the url for all users connecting to the site from the intranet. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Click on the site you want to add a mapping for, then click on "Edit Public Zone URLs". In the next screen you will see 5 defined zones and any defined mappings for these zones. Usually only the default zone will have a value.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;In the intranet zone text box add "http://intranet.domain.com" and click on save, then reset iis. Now any user that connects to the server from the intranet will have the new url in their browser address. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;As an added benefit, you can set one of four different security levels on each AAM Zone. So lets say you do not want people from the internet to be able to create or edit items on the Farm, you set the extranet url and then in admin set all users that connect to ReadOnly.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;JMC&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-8875963136290065085?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/8875963136290065085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=8875963136290065085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/8875963136290065085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/8875963136290065085'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2007/06/and-now-word-from-our-administrator.html' title='And Now A Word From Our Administrator...'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-5943838019107566432</id><published>2007-06-12T12:54:00.001-04:00</published><updated>2007-06-12T15:48:53.553-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lists'/><category scheme='http://www.blogger.com/atom/ns#' term='Export'/><category scheme='http://www.blogger.com/atom/ns#' term='Import'/><category scheme='http://www.blogger.com/atom/ns#' term='CSV'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Console'/><title type='text'>SharePoint List Importer/Exporter: Part II</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Once I had the settings from the XML file, I placed all the settings into a dictionary object for easy access. Next I had some code that checks to see if we are creating a new list or just adding to a current one. This uses the typical site/web setup.&lt;br /&gt;&lt;br /&gt;I check the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;listname&lt;/span&gt; against the site to see if the list already exists. If the list exists, I check to see if I am creating folders and set the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;EnableFolderCreation&lt;/span&gt; property if I am.&lt;br /&gt;&lt;br /&gt;If the list does not exist, I create it and set some properties.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#cc6600;"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SPList&lt;/span&gt; list = null;&lt;br /&gt;if(web.Lists[inputs.ListName] != null){&lt;br /&gt;list = web.Lists[inputs.ListName];&lt;br /&gt;list.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;EnableFolderCreation&lt;/span&gt; = (inputs.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;GetItemType&lt;/span&gt; == &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ItemType&lt;/span&gt;.Folders inputs.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;GetItemType&lt;/span&gt; == &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ItemType&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;FoldersAndItems&lt;/span&gt; ? true : false);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Guid&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;guid&lt;/span&gt; = web.Lists.Add(inputs.ListName, inputs.ListTitle.Replace("_", " "), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;SPListTemplateType&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;CustomGrid&lt;/span&gt;);&lt;br /&gt;list = web.Lists[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;guid&lt;/span&gt;];&lt;br /&gt;list.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;EnableVersioning&lt;/span&gt; = true;&lt;br /&gt;list.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;OnQuickLaunch&lt;/span&gt; = true;&lt;br /&gt;list.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;ReadSecurity&lt;/span&gt; = 1;&lt;br /&gt;list.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;WriteSecurity&lt;/span&gt; = 2;&lt;br /&gt;list.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;EnableFolderCreation&lt;/span&gt; = (inputs.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;GetItemType&lt;/span&gt; == &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;ItemType&lt;/span&gt;.Folders inputs.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;GetItemType&lt;/span&gt; == &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;ItemType&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;FoldersAndItems&lt;/span&gt; ? true : false);&lt;br /&gt;}&lt;br /&gt;web.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;AllowUnsafeUpdates&lt;/span&gt; = true;&lt;br /&gt;list.Update();&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Now I have the list object that I am going to be writing my folders and items to. I next call my import routine.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Part of this import routine if reading from the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;CSV&lt;/span&gt; files. You could &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_26"&gt;alternatively use another SharePoint list or multiple lists as your import source. For the purpose of this demo I will not display the code to parse out a CSV file because are alot of sites out there that will show you haw to do that. For the import, we need to set our fields for the list. So to start the import, I read the 3 header lines from the file and then call a routine to create the fields in the list.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;I placed the header data into 3 generic lists and interate through them. First I check to see if the list already contains a definition for the current field; if it does not, I add the field to the list definition by defining name, type and required.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;color:#cc6600;"&gt;for (int y = 0; y &lt;= flds.Count - 1; y++) { string fld = flds[y].Replace(" ", ""); if (!list.Fields.ContainsField(flds)) { try { list.Fields.Add(fld, typs[y], reqs[y]); } catch { continue; } } } web.AllowUnsafeUpdates = true; list.Update();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;I run the same process using the item field information. This ensures that all the fields are in the list.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;Now the list is ready to receive the data, so the next step is to place all the data for the items into a container for quick reference. I placed the entire file into DataTable.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;Next I stream in the folder CSV file. I read each line into an array called values. Then&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt; we compute the url for the list items using...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;span style="color:#cc6600;"&gt;string url = string.Format("{0}/{1}", list.ParentWeb.Url, list.RootFolder.Url);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;The xml settings included a node for formatting the name/title, i do this on the first line, creating essentially a computed field.&lt;br /&gt;&lt;span style="color:#cc6600;"&gt;string name = String.Format("{0}-{1} {2}", values[0], values[1], values[2]).Trim();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;span style="color:#000000;"&gt;Now we can loop through the folders definitions in the stream. Make sure you set the second value in the Add Method to &lt;/span&gt;&lt;span style="color:#cc6600;"&gt;SPFileSystemObjectType.Folder &lt;/span&gt;&lt;span style="color:#000000;"&gt;or else you will create items. I had placed all the field names into a list previously called fflds, so now I loop through the list and set the value for each field in the form. Finally I set the title field and save the new list folder.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;while (values = csv.GetLine())&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;span style="color:#cc6600;"&gt;SPListItem item = list.Items.Add(url, SPFileSystemObjectType.Folder, name);&lt;br /&gt;for (int i = 0; i &lt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;span style="color:#cc6600;"&gt;item.Update();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;span style="font-family:verdana;font-size:85%;color:#000000;"&gt;After the list folder has been created, now I go to the items datatable and filter it on the key field in the list folder, matching against the items. Then I loop through each item DataRow in the filtered view and add the item and set its field values. Notice that when I create the item, I set the item url to the folder url. I then save each item and loop back to get the next folder.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;span style="font-family:verdana;font-size:85%;color:#cc6600;"&gt;dt.DefaultView.RowFilter = GetFilter(item, fflds, keyStr, keys);&lt;br /&gt;for (int o = 0; o &lt; item_url =" string.Format(" folderitem =" list_items.Add(item_url," i =" 0;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;The whole process runs in under 1 minute for 3000 folders with mixed items. Even though I know there are some $$$ tools out there that can do this. For those of you without the budget this is a good place to start on your own list importer. If you would like me to send you the source for this part of the application, just send me an email. :)&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;In the next version I will tackle exporting complex lists into a format that is digestable by other applications.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;JMC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span class="blsp-spelling-corrected"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-5943838019107566432?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/5943838019107566432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=5943838019107566432' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/5943838019107566432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/5943838019107566432'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2007/06/sharepoint-list-importerexporter-part.html' title='SharePoint List Importer/Exporter: Part II'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-6672399002698800480</id><published>2007-06-08T10:30:00.000-04:00</published><updated>2007-06-12T12:54:03.626-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lists'/><category scheme='http://www.blogger.com/atom/ns#' term='Export'/><category scheme='http://www.blogger.com/atom/ns#' term='Import'/><category scheme='http://www.blogger.com/atom/ns#' term='CSV'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Console'/><title type='text'>SharePoint List Importer/Exporter: Part I</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Most companys I work with aleady have some form of Intra/Inter net already in place, that they want to port over to SharePoint. These installations often take the form of a threaded discussion forum or database.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I must admit I am not entirely happy with the way lists and items are displayed in Sharepoint&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;But that is another topic.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I did see a need to import folders and items into a list. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;So I created an import utility to read a list of items from a CSV file and store them in a data table. Then I streamed in a CSV file with a list of folders, matched on a key value and created the folder and added the items into it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I started by exporting a view of folders to a CSV file. I included the key field and about 4 columns of data. Then I filtered the view on items and exported the items to a CSV, once again adding the key field and some columns.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I created a small xml settings file:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;color:#cc6600;"&gt;&lt;actiondefinition desc="EXAMPLE - Import Folders and Items into new List" run="false"&gt;&lt;url&gt;&amp;lt;ActionDefinition Run="false" Desc="EXAMPLE - Import Folders and Items into new List"&amp;gt;&lt;br /&gt;&amp;lt;Url&amp;gt;http://moss/docs/&amp;lt;/Url&amp;gt;&lt;br /&gt;&amp;lt;ListName&amp;gt;My List&amp;lt;/ListName&amp;gt;&lt;br /&gt;&amp;lt;ListTitle&amp;gt;My Folders and Items&amp;lt;/ListTitle&amp;gt;&lt;br /&gt;&amp;lt;FilePath&amp;gt;C:\folders.csv&amp;lt;/FilePath&amp;gt;&lt;br /&gt;&amp;lt;SubFilePath&amp;gt;C:\items.csv&amp;lt;/SubFilePath&amp;gt;&lt;br /&gt;&amp;lt;KeyColumn&amp;gt;FolderID&amp;lt;/KeyColumn&amp;gt;&lt;br /&gt;&amp;lt;LinkFormat&amp;gt;href={0} class='link'{1}&amp;lt;/LinkFormat&amp;gt;&lt;br /&gt;&amp;lt;RunAction&amp;gt;Imports&amp;lt;/RunAction&amp;gt;&lt;br /&gt;&amp;lt;CreateType&amp;gt;FolderItems&amp;lt;/CreateType&amp;gt;&lt;br /&gt;&amp;lt;/ActionDefinition&amp;gt;&lt;/actiondefinition&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;The file specifies the action: Import or Export; the url of the list (in this case I am creating a new list called 'My List'); the paths to the files, the keycolumn name in the files; and some formatting information.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;The only formatting I had to do in the ffiles was to add 3 lines to the top of the file. These lines defined FieldName, FieldType and Required. So my folders file looked like...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#cc6600;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;FolderID,Field1,Field2,Field3&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;,Field3&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#cc6600;"&gt;Number,Text,Text,Text,Text&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#cc6600;"&gt;true,false,false,false,false&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#cc6600;"&gt;1102,Michael,J.,Meyer,"Accounting Services"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#cc6600;"&gt;1112,Tim,,Meyer,"Professional Services"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;I created a small console application that reads from the xml settings and loads the settings&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;The code that processes the information I will include in Part 2....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;JMC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-6672399002698800480?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/6672399002698800480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=6672399002698800480' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/6672399002698800480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/6672399002698800480'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2007/06/sharepoint-list-importerexporter-part-i.html' title='SharePoint List Importer/Exporter: Part I'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-106386572107395395</id><published>2007-06-03T22:49:00.000-04:00</published><updated>2007-06-03T23:15:25.901-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Profiles'/><category scheme='http://www.blogger.com/atom/ns#' term='ElevatedPrivilages'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Webparts'/><title type='text'>Profile Properties Webpart</title><content type='html'>&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;There is something innately wrong with working on weekends. When I started working with MOSS back in July, I was fearful that perhaps it would not catch on. I don't feel that way anymore....&lt;br /&gt;&lt;br /&gt;I do not have a whole lot of time to post, but I feel compelled to share the knowledge. My current consulting project has over exposed me to all the workings of people and profiles. At the height of the design, we were importing from three sources.&lt;br /&gt;&lt;br /&gt;Other developers and users often ask me about the data we store for each user, and how they can view this information. Since I am not partial to giving out the server settings password, I created a small webpart that can be placed on a page and set to a user's id to display that user's information. &lt;/span&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial ms;font-size:85%;"&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#de7008;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;using System;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Web.UI.WebControls.WebParts;&lt;br /&gt;using System.Xml.Serialization;&lt;br /&gt;using Microsoft.Office.Server;&lt;br /&gt;using Microsoft.Office.Server.UserProfiles;&lt;br /&gt;using Microsoft.SharePoint;&lt;br /&gt;using Microsoft.SharePoint.WebControls;&lt;br /&gt;using Microsoft.SharePoint.WebPartPages;&lt;br /&gt;&lt;br /&gt;namespace ProfileProperties&lt;br /&gt;{&lt;br /&gt;    [Guid("1fe9ec91-b377-4421-bc00-7cbc39ce3061")]&lt;br /&gt;    public class ProfileProperties : System.Web.UI.WebControls.WebParts.WebPart&lt;br /&gt;    {&lt;br /&gt;        PeopleEditor editor = null;&lt;br /&gt;        private Dictionary&lt;string,&gt; _userProperties = new Dictionary&lt;string,&gt;(50);&lt;br /&gt;        private string _user_account_info = string.Empty;&lt;br /&gt;        [Personalizable(PersonalizationScope.Shared), WebBrowsable(true),&lt;br /&gt;           WebDisplayName("Account Info"),&lt;br /&gt;           WebDescription("The account of the profile to return.")]&lt;br /&gt;        public string AccountInfo&lt;br /&gt;        {&lt;br /&gt;            get { return _user_account_info; }&lt;br /&gt;            set { _user_account_info = value; }&lt;br /&gt;        }&lt;br /&gt;        public ProfileProperties()&lt;br /&gt;        {&lt;br /&gt;            this.ExportMode = WebPartExportMode.All;&lt;br /&gt;        }&lt;br /&gt;        internal void GetUserProfileProperties() {&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                Queue&lt;string&gt; profileFlds = GetPropertyFieldList();&lt;br /&gt;                UserProfileManager mgr = new UserProfileManager();&lt;br /&gt;                UserProfile profile = mgr.GetUserProfile(_user_account_info);&lt;br /&gt;                foreach (string fld in profileFlds)&lt;br /&gt;                {&lt;br /&gt;                    try&lt;br /&gt;                    {&lt;br /&gt;                        _userProperties.Add(fld, profile[fld].Value.ToString());&lt;br /&gt;                    }&lt;br /&gt;                    catch&lt;br /&gt;                    {&lt;br /&gt;                        continue;//lame I know, but its only an example&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            catch {}&lt;br /&gt;        }&lt;br /&gt;        internal Queue&lt;string&gt; GetPropertyFieldList() {&lt;br /&gt;            Queue&lt;string&gt; profileFlds = new Queue&lt;string&gt;(50);&lt;br /&gt;            using (SPSite site = SPContext.Current.Site)&lt;br /&gt;            {&lt;br /&gt;                try&lt;br /&gt;                {&lt;br /&gt;                    ServerContext context = ServerContext.GetContext(site);&lt;br /&gt;                    UserProfileConfigManager configManager = new UserProfileConfigManager(ServerContext.Current);&lt;br /&gt;                    Microsoft.Office.Server.UserProfiles.PropertyCollection propColl = configManager.GetProperties();&lt;br /&gt;                    foreach (Property property in propColl)&lt;br /&gt;                    {&lt;br /&gt;                        profileFlds.Enqueue(property.Name);&lt;br /&gt;                    }&lt;br /&gt;                    return profileFlds;&lt;br /&gt;                }&lt;br /&gt;                catch&lt;br /&gt;                {&lt;br /&gt;                    return null;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        protected override void OnPreRender(EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            base.OnPreRender(e);&lt;br /&gt;            if (!string.IsNullOrEmpty(_user_account_info))&lt;br /&gt;            {&lt;br /&gt;                SPSecurity.CodeToRunElevated mf = new SPSecurity.CodeToRunElevated(GetUserProfileProperties);&lt;br /&gt;                SPSecurity.RunWithElevatedPrivileges(mf);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        protected override void RenderContents(HtmlTextWriter writer)&lt;br /&gt;        {&lt;br /&gt;            int x = 0;&lt;br /&gt;            foreach (KeyValuePair&lt;string,&gt; prop in _userProperties) {&lt;br /&gt;                writer.Write(string.Format(@"{0}. {1} = {2}",++x, prop.Key,prop.Value));&lt;br /&gt;            }&lt;br /&gt;            editor.RenderControl(writer);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;The code also utilizes the elevated privilages property for webparts that is new to MOSS. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;This allows the webpart to go to the profile manager and get the field list before finding the specified profile and displaying the values.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-106386572107395395?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/106386572107395395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=106386572107395395' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/106386572107395395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/106386572107395395'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2007/06/profile-properties-webpart.html' title='Profile Properties Webpart'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-9132011129368820697</id><published>2007-06-01T13:34:00.000-04:00</published><updated>2007-06-01T21:37:20.911-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moss'/><category scheme='http://www.blogger.com/atom/ns#' term='MediaPlayer'/><category scheme='http://www.blogger.com/atom/ns#' term='WMA'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MPEG'/><category scheme='http://www.blogger.com/atom/ns#' term='MOV'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Webparts'/><title type='text'>MediaPlayer Webpart</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Situation: &lt;/strong&gt;&lt;br /&gt;Customer wants to play media files in a structured way on a webpage, without popping up external viewers. The media files will be attached to pages in a list. Normally you would have to click on the attachment and launch a the viewer. This webpart plays the attached file embedded into the page.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Constraints:&lt;/strong&gt;&lt;br /&gt;Must be able to define player window size.&lt;br /&gt;Must be able to handle multiple media types including .mov, .wma, .avi, .mpeg and flash.&lt;br /&gt;Must be able to define control settings for each media type.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;br /&gt;&lt;/strong&gt;Lets start with putting together the webpart class for this control.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#cc6600;"&gt;using Microsoft.SharePoint;&lt;br /&gt;using Microsoft.SharePoint.WebControls;&lt;br /&gt;using Microsoft.SharePoint.WebPartPages;&lt;br /&gt;&lt;br /&gt;namespace MediaPlayer&lt;br /&gt;{&lt;br /&gt;public class MediaPlayer : System.Web.UI.WebControls.WebParts.WebPart&lt;br /&gt;{&lt;br /&gt;private string _media_string = string.Empty;&lt;br /&gt;private string _media_file = string.Empty;&lt;br /&gt;private string _control_width = string.Empty;&lt;br /&gt;private string _control_height = string.Empty;&lt;br /&gt;[Personalizable(PersonalizationScope.Shared), WebBrowsable(true),&lt;br /&gt;WebDisplayName("Media File"),&lt;br /&gt;WebDescription("The location of the media file.")]&lt;br /&gt;public string MediaFile&lt;br /&gt;{&lt;br /&gt;get { return _media_file; }&lt;br /&gt;set { _media_file = value; }&lt;br /&gt;}&lt;br /&gt;[Personalizable(PersonalizationScope.Shared), WebBrowsable(true),&lt;br /&gt;WebDisplayName("Control Width"),&lt;br /&gt;WebDescription("The width of the control.")]&lt;br /&gt;public string ControlWidth&lt;br /&gt;{&lt;br /&gt;get { return _control_width; }&lt;br /&gt;set { _control_width = value; }&lt;br /&gt;}&lt;br /&gt;[Personalizable(PersonalizationScope.Shared), WebBrowsable(true),&lt;br /&gt;WebDisplayName("Control Height"),&lt;br /&gt;WebDescription("The height of the control.")]&lt;br /&gt;public string ControlHeight&lt;br /&gt;{&lt;br /&gt;get { return _control_height; }&lt;br /&gt;set { _control_height = value; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;For lack of space, I will not include the editorpart code that I created for the control. In order to meet a constraint, I used the webpart properties to place default settings that the admin could set on the page and then placed similar settings in the editorpart so that the page creator could override the default settings.&lt;br /&gt;Now that we have out class and properties defined, lets render our control. Inside our class lets add...&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#cc6600;"&gt;protected override void CreateChildControls()&lt;br /&gt;{&lt;br /&gt;MediaFile = GetMediaFile();&lt;br /&gt;_media_string = BuildMediaString();&lt;br /&gt;base.CreateChildControls();&lt;br /&gt;}&lt;br /&gt;protected override void RenderContents(HtmlTextWriter writer)&lt;br /&gt;{&lt;br /&gt;writer.Write(_media_string);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Now to the meat of the solution. We are going to generate our own html for this solution. In this way we can ensure exactly what is going to be writen to the browser. I would also like to mention that I am not including any of the browser variant code for other DOMs, you can figure that out :) Lets tackle embedding WMV. You can find the object/embed definitions for all media types at their associated owners sites.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff6600;"&gt;&lt;span style="color:#cc6600;"&gt;internal string BuildMediaString()&lt;br /&gt;{&lt;br /&gt;StringBuilder sb = new StringBuilder (500);&lt;br /&gt;if (string.IsNullOrEmpty(MediaFile))&lt;br /&gt;{&lt;br /&gt;sb.Append("No media file defined");&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;string[] tArr = MediaFile.Split((char)'.');&lt;br /&gt;string type = tArr[tArr.GetUpperBound(0)];&lt;br /&gt;switch (type.ToLower())&lt;br /&gt;{&lt;br /&gt;case "wmv":&lt;br /&gt;sb.AppendFormat(&lt;br /&gt;@"&amp;lt;object&lt;br /&gt;style=""width:{0}px;height:{1}px""&lt;br /&gt;classid=""CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95""&lt;br /&gt;standby=""Loading Microsoft® Windows® Media Player components...""&lt;br /&gt;type=""application/x-oleobject"" _ codebase=""http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112""&gt;&lt;br /&gt;&amp;lt;param name=""filename"" value=""{2}""&gt;&lt;br /&gt;&amp;lt;param name=""autoStart"" value=""true""&gt;&lt;br /&gt;&amp;lt;param name=""showControls"" value=""false""&gt;&lt;br /&gt;&amp;lt;param name=""showstatusbar"" value=""true""&gt;&lt;br /&gt;&amp;lt;param name=""autorewind"" value=""true""&gt;&lt;br /&gt;&amp;lt;param name=""showdisplay"" value=""false""&gt;&lt;br /&gt;&amp;lt;embed&lt;br /&gt;src=""{2}""&lt;br /&gt;width=""{0}""&lt;br /&gt;height=""{1}""&lt;br /&gt;type=""application/x-mplayer2""&lt;br /&gt;autostart=""1""&lt;br /&gt;showcontrols=""0""&lt;br /&gt;showstatusbar=""1""&lt;br /&gt;autorewind=""1""&lt;br /&gt;showdisplay=""0""&gt;&lt;br /&gt;&amp;lt;/embed&gt;&lt;br /&gt;&amp;lt;/object&gt;&lt;br /&gt;", ControlWidth, ControlHeight, MediaFile);&lt;br /&gt;break;&lt;br /&gt;case("avi")...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This HTML creates an object on the page and embeds the movie at the height and width specified in the webpart settings.&lt;br /&gt;&lt;br /&gt;We find out what media type has been requested by splitting the file name or url and using the last index as our media type. For instance if the location is "mysite/lists/Videos/Attachments/my.big.movie.wmv, our array will contain "wmv" in bucket three.&lt;br /&gt;&lt;br /&gt;You can redefine the object / embed settings for the control to match your desired look, feel and interactivity.&lt;br /&gt;&lt;br /&gt;JMC &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-9132011129368820697?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/9132011129368820697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=9132011129368820697' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/9132011129368820697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/9132011129368820697'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2007/06/mediaplayer-webpart.html' title='MediaPlayer Webpart'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5315518645187518264.post-7105135213446898794</id><published>2007-06-01T10:52:00.000-04:00</published><updated>2007-06-01T13:31:14.913-04:00</updated><title type='text'>Welcome to Inside Sharepoint!</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Finally...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;I can not express how many times I have tried to get my blog up and running. But I am sure you can agree, sometimes there just are not enough minutes in a day.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;So here it is, my blog for sharing my SharePoint 2007 Portal and WSS experiences, delights and frustrations. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;In the SharePoint world, I like to touch everything... front end, back end, css, javascript, controls, assemblies, services, bdc, infopath, profiles, enterprise search, templates... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;I must admit though I enjoy getting dirty and cracking into the SDK whenever I get a chance. I enjoy building webparts, solutions and applications, and while MOSS comes with a tremendous amount of built in functionality, users always seem to want more. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;The number one frustration vented to me is "Well SharePoint gives us 75% of what we need, but we REALLY need the other 25%". Sometimes a simple compromise can be met, other times a small extension or customization can accomplish the other 25%. And then there are times when architecting a custom solution is the only way to fix the situation. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;"&gt;I gotta admit these are the situations I enjoy the most. :)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5315518645187518264-7105135213446898794?l=insidesharepoint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://insidesharepoint.blogspot.com/feeds/7105135213446898794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5315518645187518264&amp;postID=7105135213446898794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/7105135213446898794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5315518645187518264/posts/default/7105135213446898794'/><link rel='alternate' type='text/html' href='http://insidesharepoint.blogspot.com/2007/06/finally.html' title='Welcome to Inside Sharepoint!'/><author><name>John M. Cass</name><uri>http://www.blogger.com/profile/11846359934741924927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
