<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The blog of whall &#187; catapult systems</title>
	<atom:link href="http://whall.org/blog/tag/catapult-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://whall.org/blog</link>
	<description>Come on in and stay a while... laugh a little.  Maybe even think.</description>
	<lastBuildDate>Mon, 21 May 2012 04:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>How to recover if you&#8217;ve edited MySite in FrontPage</title>
		<link>http://whall.org/blog/2007/11/29/how-to-recover-if-youve-edited-mysite-in-frontpage/</link>
		<comments>http://whall.org/blog/2007/11/29/how-to-recover-if-youve-edited-mysite-in-frontpage/#comments</comments>
		<pubDate>Thu, 29 Nov 2007 21:54:32 +0000</pubDate>
		<dc:creator>whall</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[catapult systems]]></category>
		<category><![CDATA[edited mysite in frontpage]]></category>
		<category><![CDATA[frontpage 2003]]></category>
		<category><![CDATA[matthew mcdermott]]></category>
		<category><![CDATA[revert mysite]]></category>
		<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false">http://whall.org/blog/2007/11/29/how-to-recover-if-youve-edited-mysite-in-frontpage/</guid>
		<description><![CDATA[This is yet another in an apparent series of articles on SharePoint.  And, like some of the more recent articles, this one requires a tip of my hat to Matthew McDermott of Catapult Systems for helping us tackle this with a million times more safety than would normally occur if we were attempting these actions on our [...]]]></description>
			<content:encoded><![CDATA[<p align="left">This is yet another in an apparent <a target="_blank" href="http://whall.org/blog/category/technical/sharepoint-technical/">series of articles on SharePoint</a>.  And, like some of the more recent articles, this one requires a tip of my hat to <a target="_blank" href="http://blogs.catapultsystems.com/matthew/default.aspx">Matthew McDermott</a> of <a target="_blank" href="http://www.catapultsystems.com/">Catapult Systems</a> for helping us tackle this with a million times more safety than would normally occur if we were attempting these actions on our own.</p>
<p align="center"><img border="0" width="200" src="http://whall.org/blog/files/catapult-systems.jpg" alt="catapult systems" height="55" /><br />
<strong>Use Them.  Really.</strong></p>
<p align="left">With Sharepoint, there&#8217;s this thing called &#8220;MySite&#8221;.  It&#8217;s a personalized, customizable, directory-enabled site for users.  It&#8217;s really cool &#8211; most of the information comes from Active Directory, like phone number, email address, reporting structure, etc. and it can show you the files you&#8217;ve been working on (anywhere in the company) and give you document libraries to store personal and project-based documents.</p>
<p align="center"><img border="0" width="450" src="http://whall.org/blog/files/mysite-generic.jpg" alt="mysite generic wayne hall" height="230" /></p>
<ol>
<li><strong>Private and Public Views</strong><br />
When a user looks at their own MySite, they can switch between these two views.  The above is an example of a &#8220;public&#8221; view &#8211; normally if I look at my own MySite, I don&#8217;t want to look at my own picture.  Well, I *do*, but I don&#8217;t want everyone to know that.  The Public view is what everyone else sees about me, and the Private view is customizable and presentable to me and me alone.  I might put my calendar on there, or pictures of my kids&#8230; it&#8217;s a drag and drop kind of workspace, like the Yahoo and Google&#8217;s of the world where you can put whatever you want wherever you want.</li>
<li><strong>Active Directory info</strong><br />
Most of the time, our corporate directory is up to date with reporting structure, phone numbers, email, etc.  SharePoint pulls this info straight out of Active Directory so I don&#8217;t have to keep and maintain yet another set of information on employees.  It also has neat dropdowns that let me schedule meetings, use VOIP to call an end user, do instant messaging, email them right from the page, and see their presence info (ie, at their desk, in a meeting, etc).  It even lets me know if they&#8217;re free in the next 8 hours or what office they&#8217;re from.           <img border="0" width="251" src="http://whall.org/blog/files/sharepoint-presence.jpg" alt="sharepoint presence outlook integration" height="265" /></li>
<li><strong>Shared Lists<br />
</strong>Each employee can use the web to store documents, lists, or have private documents.   They can create new websites without knowing any HTML or coding, and collaborate with other employees easily.</li>
<li><strong>Recent Documents</strong><br />
This is really cool &#8211; since SharePoint indexes not only itself but also other fileshares throughout the company, it can know what YOU have modified or own, and shows the recent documents not just on the SharePoint server but any file server in the company.  When other people view your site, they can see the documents you&#8217;ve been working on that THEY have access to, again increasing collaboration.  This is cool for system admins who have access to EVERYTHING, and then we can watch people make their resumes.  Ok, I&#8217;m kiddding there a little.  Just a little.</li>
<li><strong>Shared Workspaces</strong><br />
If the employee happens to have other sites they made with other employees, they can show up here, giving kind of an automatic bookmark</li>
</ol>
<p>Now, none of this is new.  This is from a product called SharePoint 2003, which you can probably guess is about 4 years old now.  Microsoft has released SharePoint 2007 (aka &#8220;MOSS&#8221;) and it improves a lot of this.</p>
<p>Why am I telling you about old stuff?  Well, for one, it&#8217;s still in use at a lot of places.  And secondly, if one of your SharePoint administrators inadvertently edits the MySite in FrontPage and breaks it, you just might want to know how to recover.</p>
<p>That&#8217;s what this article is about.  In the extended entry, so&#8217;s I don&#8217;t bore most of you all.  See how I put YOU first?</p>
<p><span id="more-1779"></span></p>
<p>First off, you should probably read about the difference (and performance difference) of <a target="_blank" href="http://mindsharpblogs.com/todd/archive/2005/07/21/626.aspx">ghosted vs unghosted pages in SharePoint</a>.  The simple essence of it is that once you edit a SharePoint page in FrontPage, you UNghost it.  That means a series of potential issues with the page, although it feels cool to edit the page and make little changes.</p>
<p>Well, many admins new to SharePoint don&#8217;t realize this.  They also don&#8217;t realize one very very important tidbit about MySite &#8211; when you edit it in FrontPage, it affects ALL MySites, not just your own.</p>
<p>That&#8217;s the biggie.</p>
<p>Oh, and throw in the fact that once you edit a page in FrontPage, there&#8217;s no GUI or built-in way of going back.  You can&#8217;t &#8220;revert&#8221; a site back to the state before you edited it unless you restore.</p>
<p>So in this article I show you what Matt taught me about some low-level surgery you can do on your SharePoint portal content database to re-ghost the page.</p>
<blockquote><p>WARNING: you need to make a backup before attempting any of these steps.  Surely if you have enough admin control of your SQL Server and Sharepoint Portal Server, then you know enough to have backups before you go tinkering around with the guts and brains of the system.  You don&#8217;t tug on Superman&#8217;s cape, you don&#8217;t spit into the wind, you don&#8217;t make registry edits without at least three backups and you DON&#8217;T MESS WITH SQL QUERY ANALYZER WITHOUT A BACKUP!</p></blockquote>
<p>Ok, with the disclaimer out of the way, this article shows you how to fix it.</p>
<p>Here&#8217;s an example of our MySite after an admin edited it with FrontPage and removed some fonts, removed the picture and other modifications:</p>
<p align="center"><img border="0" width="450" src="http://whall.org/blog/files/mysite-before2.jpg" alt="mysite before frontpage" height="260" /> </p>
<p>Le EWWWW!</p>
<p>Let&#8217;s go over some basics now &#8212; as we said, when you edit a page in FrontPage, it UNGHOSTS it.  You can tell if a page is ghosted or unghosted by looking in the content database</p>
<p align="center"><img border="0" width="450" src="http://whall.org/blog/files/sqa-query1.jpg" alt="sql query analyzer sharepoint leafname default.aspx content dirname" height="159" /></p>
<p align="left">This query is totally safe.  We&#8217;re just displaying rows in the database, if they exist, that match the criteria.  We&#8217;re looking in the content database (for mine, it&#8217;s called MegaPath1_SITE &#8211; yours WILL be different, but you&#8217;re looking for the one that ends in _SITE).  You can drop that down from the menu so you&#8217;re on the right database.  We&#8217;re looking for entries that have a DirName of MySite, a LeafName of default.aspx (this is the Private version of MySite; we&#8217;d use Public.aspx for the public version) and if content is not null. </p>
<p align="left">If MySite has been edited (ie, unghosted), you&#8217;ll see a result similar to the following:</p>
<p align="center"><img border="0" width="450" src="http://whall.org/blog/files/sqa-mysite.jpg" alt="mysite query results" height="33" /></p>
<p align="left">You can scroll to the right to see the dates and stuff just to make sure, but this is telling us that it&#8217;s been edited.  When this data isn&#8217;t here, SharePoint will pull the site from the filesystem like it should, but when the data is there, it pulls it from the database (slower, less easy to migrate, &#8220;bad&#8221;, etc).</p>
<p align="left">If MySite has NOT been edited (ie, ghosted), then you won&#8217;t get any results.  Quel frommage.</p>
<p align="left">Now to undo the damage.  The following code is how you set content back to null</p>
<p align="center"><img border="0" width="363" src="http://whall.org/blog/files/sqa-mysite-fix.jpg" alt="sql code to fix unghosted mysite " height="174" /></p>
<p align="left"> STOP.  LOOK.</p>
<p align="left">This is SQL that will CHANGE YOUR DATABASE.  If you don&#8217;t know what you&#8217;re doing, <u>find someone who does</u>.</p>
<p align="left">In the above example, I went to one of my draft content databases (DraftMeg1_SITE), and we&#8217;re updating the docs table and setting &#8220;content&#8221; to null for default.aspx.</p>
<p align="left">Once you execute this (again, be <u>sure</u> you know what you&#8217;re doing and that you have a backup), you can re-execute the select statement and make sure nothing is in the results.</p>
<p align="left">Now, when we go check our MySite, we can see that it&#8217;s back to default.  The following example is for Public.aspx instead of default.aspx.</p>
<p align="center"><img border="0" width="450" src="http://whall.org/blog/files/mysite-after.jpg" alt="mysite after fixing content database ghost unghost frontpage 2003" height="269" /></p>
<p align="left">Who *is* that handsome devil?</p>
<p align="left">So now it&#8217;s back to defaults! YAY!</p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://whall.org/blog/2007/11/29/how-to-recover-if-youve-edited-mysite-in-frontpage/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Creating a &#8220;semi-advanced search&#8221; web part for SharePoint 2003, Part 1</title>
		<link>http://whall.org/blog/2007/11/21/creating-a-semi-advanced-search-web-part-for-sharepoint-2003-part-1/</link>
		<comments>http://whall.org/blog/2007/11/21/creating-a-semi-advanced-search-web-part-for-sharepoint-2003-part-1/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 21:51:45 +0000</pubDate>
		<dc:creator>whall</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[advanced search]]></category>
		<category><![CDATA[catapult systems]]></category>
		<category><![CDATA[cewp]]></category>
		<category><![CDATA[content editor web part]]></category>
		<category><![CDATA[employee search]]></category>
		<category><![CDATA[matthew mcdermott]]></category>
		<category><![CDATA[people finder]]></category>
		<category><![CDATA[sharepoint 2003]]></category>
		<category><![CDATA[sharepoint search]]></category>
		<category><![CDATA[todd bleeker]]></category>

		<guid isPermaLink="false">http://whall.org/blog/2007/11/21/creating-a-semi-advanced-search-web-part-for-sharepoint-2003-part-1/</guid>
		<description><![CDATA[I love our little set up.  We pay a consultant to come here and fix SharePoint stuff for us, and since we paid for his time, we own the resulting work.  And then *I* get to blog about it.  I figure it&#8217;s a fair trade &#8211; he does the work, I get the credit.  Isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I love our little set up.  We pay <a target="_blank" href="http://blogs.catapultsystems.com/matthew/default.aspx">a consultant</a> to come here and fix SharePoint stuff for us, and since we paid for his time, we own the resulting work.  And then *I* get to blog about it.  I figure it&#8217;s a fair trade &#8211; he does the work, I get the credit.  Isn&#8217;t that the way life is supposed to work?</p>
<p>By the way, if you need SharePoint help, consider engaging <a target="_blank" href="http://www.catapultsystems.com">Catapult Systems</a> &#8211; top notch help, let me tell you.  In particular, <a target="_blank" href="http://blogs.catapultsystems.com/matthew/default.aspx">Matt McDermott</a> has been a fantastic resource many times for our company.  I think his full name is Matthew, but he goes by Matt.  I keep forgetting to ask him where he keeps the excess &#8220;hew&#8221;. </p>
<p align="center"><a rel="attachment wp-att-1763" target="_blank" href="http://whall.org/blog/2007/11/21/creating-a-semi-advanced-search-web-part-for-sharepoint-2003-part-1/catapult-systems-logo/"><img src="http://whall.org/blog/wp-content/uploads/2007/11/catapult-systems.jpg" alt="Catapult Systems Logo" /></a><br />
<strong>Use them.  Really.</strong></p>
<p>So maybe we&#8217;ll change our relationship to this: HE does the work but *I* explain it to the masses.   That&#8217;s what this entry is &#8211; a technical explanation of something we solved in SharePoint &#8211; namely, how to do something really cool with search.</p>
<p>First, a quick introduction.  <a target="_blank" href="http://microsoft.com/sharepoint">SharePoint</a> is a <a target="_blank" href="http://microsoft.com">Microsoft</a> product that gives companies a great intranet tool, collaboration platform, document search, a portal, and a ton of other great things.  I depend on it daily, as do many groups at our company.</p>
<p>One of the recent projects we engaged Matt for was to help us with the technical side of rebranding our intranet.  There are many things you can do out-of-the-box, but some of the ones we wanted to do weren&#8217;t so easy.  And one of the things that kept eluding me was how to get a better &#8220;Search&#8221; web part on our main home page.  We didn&#8217;t want the generic search that it includes at the top of the typical SharePoint area:</p>
<p align="center"><img src="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-1.jpg" alt="sharepoint generic search" /></p>
<p>And we didn&#8217;t want the overkill &#8220;Advanced search web part&#8221; that is on the main built-in search page:</p>
<p align="center"><a href="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-2.jpg" title="Sharepoint Advanced Search Web Part"></a></p>
<p align="center"><a href="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-2.jpg" title="Sharepoint Advanced Search Web Part"><img src="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-2.thumbnail.jpg" alt="Sharepoint Advanced Search Web Part" /></a><br />
(click to enlarge) </p>
<p>But instead, we wanted something between the two and that could fit nicely on the right side in its own Web Part Zone, plus give employees two main functions: an easy and smart Employee Lookup and a quick search of documents both in SharePoint and on the file shares throughout the company: </p>
<p align="center"><a href="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-3.jpg" title="Intranet Mockup with semi-advanced search web part"><img src="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-3.thumbnail.jpg" alt="Intranet Mockup with semi-advanced search web part" /></a> <br />
(click to enlarge)</p>
<p>So Matt helped us out.  I&#8217;ll put the rest of the technical details in the extended entry below for those of you who want to know the solution.  And get a few laughs.  And it might cure acne, but I haven&#8217;t told the FDA about that yet.</p>
<p><span id="more-1759"></span></p>
<p>For those of you not familiar with the Content Editor Web Part, let me do a cursory introduction.  This little gem (aka CEWP) lets you put any HTML source in a web part and stick it anywhere on the page.  Mostly this is good for putting static text, colors, or generic HTML somewhere, but it can be far more powerful.  You can use CSS, javascript, and other tools to really accomplish a ton of things.</p>
<p>If you want to know more about CEWP, take a look at <a target="_blank" href="http://mindsharpblogs.com/todd/articles/793.aspx">one of many blog postings</a> by <a target="_blank" href="http://mindsharpblogs.com/todd/">Todd Bleeker</a>.  Great stuff there by a very talented guy.</p>
<p>The first piece to tackle for this more intelligent search part is to have a Better Employee Lookup Tool or BELT for short.  That way I can tell our end users to BELT our employees.  HAHA.  Anyway, when you use the built-in SharePoint search tool to look for people, the results mix up both people and documents unless you manually pick the &#8220;People&#8221; content source, which &#8212; let&#8217;s face it, most users aren&#8217;t going to go around and customize their search parameters.  They just want to find what they&#8217;re looking for, thankyouverymuch.</p>
<p>So your normal search for people using the built-in search might look something like this:</p>
<p align="center"><a href="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-4.jpg" title="typical people search results using built-in sharepoint search"><img src="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-4.thumbnail.jpg" alt="typical people search results using built-in sharepoint search" /></a><br />
(click to enlarge)</p>
<p>What I&#8217;ve found is that it will put a nice little star (indicating it&#8217;s a best bet) if it&#8217;s an exact match of the name of someone (or alias), but this doesn&#8217;t help much if you only know the first name.  Or how to spell the last name.  I don&#8217;t want all that clutter.  I just want to find a specific person.  Quickly.  Heaven help the poor soul who tries to search with just a first name.</p>
<p>So we started with the &#8220;People Finder&#8221;.   </p>
<p align="center"><img src="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-people-finder.jpg" alt="People Finder sharepoint search" /></p>
<p>It&#8217;s a CEWP that just takes a single line as input, and people can type in a first name, last name, nickname/alias and it gives ONLY people objects in the result.  This is sooo much better.  Now when I search for just &#8220;Wayne&#8221; I only get two results, and they&#8217;re both people objects:</p>
<p align="center"><img src="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-results-wayne.jpg" alt="sharepoint people finder search results wayne" /></p>
<p>One of them is not me, so the other guy&#8217;s gotta go.  Can only have one &#8220;Wayne&#8221; at my company, you know. </p>
<p>So, how&#8217;d we* do it?</p>
<p>Here&#8217;s a dirty little secret about SharePoint search &#8211; <em>you can pass parameters to it via the URL</em>.</p>
<p>Now, all the parameters are not documented (as far as I can tell) but you can use something like <a target="_blank" href="http://fiddler2.com/fiddler2/">Fiddler</a> or other development tools to reverse engineer what parameters are being sent, and then you can craft a nifty url that looks like a form post.</p>
<p>What does this mean?  It means you can structure a custom SQL query, pass it along to search.aspx in URL parameters instead of form values, and it all works awesomelike!  BWUAAHAHAHAHAHA!</p>
<p>The CEWP allows us to use javascript, remember?  With fiddler, we* found out that the &#8220;w&#8221; parameter functions like a where clause.  So we* can put all that stuff together so it looks like this:<br />
<code>function DoWildPeopleSearch()<br />
{<br />
  var url = "http://mega/Search.aspx?w=CONTAINS(%22urn:schemas-microsoft-com:sharepoint:portal:profile:AccountName%22,%20'%22__searchterm__*%22')%20OR%20CONTAINS(%22urn:schemas-microsoft-com:sharepoint:portal:profile:FirstName%22,%20'%22__searchterm__*%22')%20OR%20CONTAINS(%22urn:schemas-microsoft-com:sharepoint:portal:profile:LastName%22,%20'%22__searchterm__*%22')%20OR%20CONTAINS(%22urn:schemas-microsoft-com:sharepoint:portal:profile:PreferredName%22,%20'%22__searchterm__*%22')%20AND%20(%22DAV:contentclass%22='urn:content-class:SPSPeople')";<br />
url = url.replace(/__searchterm__/g, document.all["txtWildPeopleFinder"].value);<br />
window.location=url;<br />
}</code></p>
<p>(you would replace &#8220;mega&#8221; with your portal name)</p>
<p>See what we&#8217;re* doing?  We&#8217;re* making a url that consists of referencing the Search.aspx and then giving it a &#8220;where&#8221; clause (aka the &#8220;w&#8221; parameter).  We* look to see if the AccountName, FirstName, LastName *or* PreferredName contains the phrase entered.  Oh, and we* also say *AND* the class has to be SPSPeople, which is the class of objects in the Profile Database.</p>
<p>The rest of the CEWP is visible in the exported .dwp file that I&#8217;ll make available to you all.</p>
<p><a href="http://whall.org/blog/wp-content/uploads/2007/11/wildcard-people-finder.dwp" title="Wildcard People Finder Web Part">Wildcard People Finder Web Part</a></p>
<p>Basically you can download this and import it onto one of your SharePoint pages and try it out.   Note that you WILL need to edit it to put in your portal server&#8217;s name where &#8220;mega&#8221; is.  Just go to Modify Web Part &#8211;&gt; View HTML Source and make your changes. </p>
<p>Well, this concludes Part 1.  I&#8217;ll put the document search section in another post for Part 2.  It was a little trickier because instead of just making a where clause, we* needed to reverse engineer more of the search form so we* could put in source, document types and a date search along with keywords:</p>
<p align="center"><img src="http://whall.org/blog/wp-content/uploads/2007/11/sp-search-5.jpg" alt="sharepoint search document piece" /></p>
<p>So in that entry I&#8217;ll likely detail how we* reverse engineered the form. </p>
<p>* And by &#8220;we&#8221; I mean Matt did the work and I watched.  And ate some breakfast.  It was good (the breakfast).</p>
]]></content:encoded>
			<wfw:commentRss>http://whall.org/blog/2007/11/21/creating-a-semi-advanced-search-web-part-for-sharepoint-2003-part-1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
