<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>trentacular</title>
	
	<link>http://trentacular.com</link>
	<description>Trent Foley's Spectacular Technical Blog</description>
	<lastBuildDate>Thu, 05 Aug 2010 00:21:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/trentacular" /><feedburner:info uri="trentacular" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Linq to Entities Wild-card LIKE Extension Method</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/FuoEieaASGs/</link>
		<comments>http://trentacular.com/2010/08/linq-to-entities-wild-card-like-extension-method/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 00:21:05 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=310</guid>
		<description><![CDATA[To build a wildcard-enabled Linq query for Entity Framework, you have several methods available to use from the System.String class that Entity Framework supports and transforms into SQL:

Contains(string value)
StartsWith(string value)
EndsWith(string value)

A simple query example might be:

var q = &#40;from c in db.Customers
         where c.CompanyName.Contains&#40;name&#41;
    [...]]]></description>
			<content:encoded><![CDATA[<p>To build a wildcard-enabled Linq query for Entity Framework, you have several methods available to use from the System.String class that Entity Framework supports and transforms into SQL:</p>
<ul>
<li>Contains(string value)</li>
<li>StartsWith(string value)</li>
<li>EndsWith(string value)</li>
</ul>
<p>A simple query example might be:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">var q <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>from c <span style="color: #0600FF;">in</span> db.<span style="color: #0000FF;">Customers</span>
         where c.<span style="color: #0000FF;">CompanyName</span>.<span style="color: #0000FF;">Contains</span><span style="color: #000000;">&#40;</span>name<span style="color: #000000;">&#41;</span>
         select c<span style="color: #000000;">&#41;</span>
        .<span style="color: #0000FF;">ToList</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>The above example will always search <em>anywhere</em> in CompanyName for a match.  But you need to give your users a little more control over the match method by allowing them to supply wild-card characters at either the start or end of the text to match.  This means you are left to dynamically build your query based on the presence and location of the wild-card characters.</p>
<p>Well my first pass at this resulted in a chunk of code that I really never want to write again.  I therefore rewrote it using Expression Trees so that it could be used in any future query.  Here are the resulting extension methods you are welcome to reuse:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Data</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Data.Objects</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Data.Objects.DataClasses</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Linq</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Linq.Expressions</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Reflection</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">class</span> LinqExtensions
    <span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> IQueryable<span style="color: #008000;">&lt;</span>TSource<span style="color: #008000;">&gt;</span> WhereLike<span style="color: #008000;">&lt;</span>TSource<span style="color: #008000;">&gt;</span><span style="color: #000000;">&#40;</span>
            <span style="color: #0600FF;">this</span> IQueryable<span style="color: #008000;">&lt;</span>TSource<span style="color: #008000;">&gt;</span> source,
            Expression<span style="color: #008000;">&lt;</span>Func<span style="color: #008000;">&lt;</span>TSource, <span style="color: #FF0000;">string</span><span style="color: #008000;">&gt;&gt;</span> valueSelector,
            <span style="color: #FF0000;">string</span> value,
            <span style="color: #FF0000;">char</span> wildcard<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0600FF;">return</span> source.<span style="color: #0000FF;">Where</span><span style="color: #000000;">&#40;</span>BuildLikeExpression<span style="color: #000000;">&#40;</span>valueSelector, value, wildcard<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> Expression<span style="color: #008000;">&lt;</span>Func<span style="color: #008000;">&lt;</span>TElement, <span style="color: #FF0000;">bool</span><span style="color: #008000;">&gt;&gt;</span> BuildLikeExpression<span style="color: #008000;">&lt;</span>TElement<span style="color: #008000;">&gt;</span><span style="color: #000000;">&#40;</span>
            Expression<span style="color: #008000;">&lt;</span>Func<span style="color: #008000;">&lt;</span>TElement, <span style="color: #FF0000;">string</span><span style="color: #008000;">&gt;&gt;</span> valueSelector,
            <span style="color: #FF0000;">string</span> value,
            <span style="color: #FF0000;">char</span> wildcard<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>valueSelector <span style="color: #008000;">==</span> <span style="color: #0600FF;">null</span><span style="color: #000000;">&#41;</span>
                <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> ArgumentNullException<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;valueSelector&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            var method <span style="color: #008000;">=</span> GetLikeMethod<span style="color: #000000;">&#40;</span>value, wildcard<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            value <span style="color: #008000;">=</span> value.<span style="color: #0000FF;">Trim</span><span style="color: #000000;">&#40;</span>wildcard<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
            var body <span style="color: #008000;">=</span> Expression.<span style="color: #0000FF;">Call</span><span style="color: #000000;">&#40;</span>valueSelector.<span style="color: #0000FF;">Body</span>, method, Expression.<span style="color: #0000FF;">Constant</span><span style="color: #000000;">&#40;</span>value<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            var parameter <span style="color: #008000;">=</span> valueSelector.<span style="color: #0000FF;">Parameters</span>.<span style="color: #0000FF;">Single</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF;">return</span> Expression.<span style="color: #0000FF;">Lambda</span><span style="color: #008000;">&lt;</span>Func<span style="color: #008000;">&lt;</span>TElement, <span style="color: #FF0000;">bool</span><span style="color: #008000;">&gt;&gt;</span><span style="color: #000000;">&#40;</span>body, parameter<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF;">private</span> <span style="color: #0600FF;">static</span> MethodInfo GetLikeMethod<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> value, <span style="color: #FF0000;">char</span> wildcard<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            var methodName <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Contains&quot;</span><span style="color: #008000;">;</span>
&nbsp;
            var textLength <span style="color: #008000;">=</span> value.<span style="color: #0000FF;">Length</span><span style="color: #008000;">;</span>
            value <span style="color: #008000;">=</span> value.<span style="color: #0000FF;">TrimEnd</span><span style="color: #000000;">&#40;</span>wildcard<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>textLength <span style="color: #008000;">&gt;</span> value.<span style="color: #0000FF;">Length</span><span style="color: #000000;">&#41;</span>
            <span style="color: #000000;">&#123;</span>
                methodName <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;StartsWith&quot;</span><span style="color: #008000;">;</span>
                textLength <span style="color: #008000;">=</span> value.<span style="color: #0000FF;">Length</span><span style="color: #008000;">;</span>
            <span style="color: #000000;">&#125;</span>
&nbsp;
            value <span style="color: #008000;">=</span> value.<span style="color: #0000FF;">TrimStart</span><span style="color: #000000;">&#40;</span>wildcard<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>textLength <span style="color: #008000;">&gt;</span> value.<span style="color: #0000FF;">Length</span><span style="color: #000000;">&#41;</span>
            <span style="color: #000000;">&#123;</span>
                methodName <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>methodName <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;StartsWith&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">?</span> <span style="color: #666666;">&quot;Contains&quot;</span> <span style="color: #008000;">:</span> <span style="color: #666666;">&quot;EndsWith&quot;</span><span style="color: #008000;">;</span>
                textLength <span style="color: #008000;">=</span> value.<span style="color: #0000FF;">Length</span><span style="color: #008000;">;</span>
            <span style="color: #000000;">&#125;</span>
&nbsp;
            var stringType <span style="color: #008000;">=</span> <span style="color: #008000;">typeof</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF;">return</span> stringType.<span style="color: #0000FF;">GetMethod</span><span style="color: #000000;">&#40;</span>methodName, <span style="color: #008000;">new</span> Type<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">&#123;</span> stringType <span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span></pre></div></div>


<p><a href="http://feedads.g.doubleclick.net/~a/Y4_XcOT7fuF2DeAX7Yo3RbtaMH4/0/da"><img src="http://feedads.g.doubleclick.net/~a/Y4_XcOT7fuF2DeAX7Yo3RbtaMH4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Y4_XcOT7fuF2DeAX7Yo3RbtaMH4/1/da"><img src="http://feedads.g.doubleclick.net/~a/Y4_XcOT7fuF2DeAX7Yo3RbtaMH4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/FuoEieaASGs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2010/08/linq-to-entities-wild-card-like-extension-method/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://trentacular.com/2010/08/linq-to-entities-wild-card-like-extension-method/</feedburner:origLink></item>
		<item>
		<title>Avoiding SOAP Bloat with JSON Services</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/xqoMT2OuM1E/</link>
		<comments>http://trentacular.com/2010/04/avoiding-soap-bloat-with-json-services/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 20:36:12 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[asp.net]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[wcf]]></category>
		<category><![CDATA[asp.net 3.5]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[visual studio 2010]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=290</guid>
		<description><![CDATA[In this post I am going to walk through writing and consuming JSON services using ASP.Net, WCF, and jQuery to request the stock price for a company.
Visual Studio 2010 Web Application Project Template Additions

jQuery Intellisense – let Visual Studio write your jQuery for you
AJAX-enabled WCF Service – item template that auto-generates the web.config entries for [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I am going to walk through writing and consuming JSON services using ASP.Net, WCF, and jQuery to request the stock price for a company.</p>
<h4>Visual Studio 2010 Web Application Project Template Additions</h4>
<ul>
<li>jQuery Intellisense – let Visual Studio write your jQuery for you</li>
<li>AJAX-enabled WCF Service – item template that auto-generates the web.config entries for configuring a JSON service to be consumed and proxied by an ASP.Net ScriptManager</li>
<li>Targeted web.config files – easy way to manage different service endpoints for different environments</li>
</ul>
<h4>What is JSON?</h4>
<p>Java Script Object Notation &#8211; JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the language with no muss or fuss.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> dog <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>color<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;grey&quot;</span><span style="color: #339933;">,</span> <span style="color: #000066;">name</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Spot&quot;</span><span style="color: #339933;">,</span> size<span style="color: #339933;">:</span> <span style="color: #CC0000;">46</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<h4>SOAP Bloat</h4>
<p>SOAP services are extremely verbose. This verbosity enables us to use tools like Visual Studio’s built-in ”Add Service Reference” to auto-generate client proxy classes.  The following examples demonstrate the XML that is used for requesting a stock price and the corresponding response:</p>
<p>Example SOAP Request</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Envelope</span> <span style="color: #000066;">xmlns:soap</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/12/soap-envelope&quot;</span> <span style="color: #000066;">soap:encodingStyle</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/12/soap-encoding&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Body</span> <span style="color: #000066;">xmlns:m</span>=<span style="color: #ff0000;">&quot;http://www.example.org/stock&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;m:GetStockPrice<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;m:StockName<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>GOOG<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/m:StockName<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/m:GetStockPrice<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Envelope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Example SOAP Response</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Envelope</span> <span style="color: #000066;">xmlns:soap</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/12/soap-envelope&quot;</span> <span style="color: #000066;">soap:encodingStyle</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/12/soap-encoding&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Body</span> <span style="color: #000066;">xmlns:m</span>=<span style="color: #ff0000;">&quot;http://www.example.org/stock&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;m:GetStockPriceResponse<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;m:Price<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>534.5<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/m:Price<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/m:GetStockPriceResponse<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Envelope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>The above example when formatted as JSON is as follows:</p>
<p>GET Request</p>
<pre>ticker=GOOG</pre>
<p>JSON Response</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;d&quot;</span><span style="color: #339933;">:</span><span style="color: #CC0000;">534.5</span><span style="color: #009900;">&#125;</span></pre></div></div>

<h4>JSON Enabling a WCF Service</h4>
<ol>
<li>Using the AJAX-enabled WCF Service item template pretty much does it all.  An additional step can be taken to eliminate the need for the additions to the web.config by configuring the channel factory directly on the service declaration (.svc) file:

<div class="wp_syntax"><div class="code"><pre class="asp" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;%</span><span style="color: #006600; font-weight: bold;">@</span> ServiceHost Language<span style="color: #006600; font-weight: bold;">=</span><span style="color: #cc0000;">&quot;C#&quot;</span> Debug<span style="color: #006600; font-weight: bold;">=</span><span style="color: #cc0000;">&quot;true&quot;</span>
    Service<span style="color: #006600; font-weight: bold;">=</span><span style="color: #cc0000;">&quot;Trentacular.JsonWcfDemo.StockPriceService&quot;</span>
    Factory<span style="color: #006600; font-weight: bold;">=</span><span style="color: #cc0000;">&quot;System.ServiceModel.Activation.WebScriptServiceHostFactory&quot;</span>
    CodeBehind<span style="color: #006600; font-weight: bold;">=</span><span style="color: #cc0000;">&quot;StockPriceService.svc.cs&quot;</span> <span style="color: #000000; font-weight: bold;">%&gt;</span></pre></div></div>

</li>
<li>Decorate the operation (service method) with the WebGetAttribute to enable the use of HTTP GET for data retrieval and return the response as JSON :

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #000000;">&#91;</span>WebGet<span style="color: #000000;">&#40;</span>ResponseFormat <span style="color: #008000;">=</span> WebMessageFormat.<span style="color: #0000FF;">Json</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span></pre></div></div>

</li>
</ol>
<p>Our resulting stock price service’s code behind will look like the following:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">    <span style="color: #000000;">&#91;</span>ServiceContract<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">Namespace</span> <span style="color: #008000;">=</span> JsonWcfDemoNamespace.<span style="color: #0000FF;">Value</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
    <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> StockPriceService
    <span style="color: #000000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">// To use HTTP GET, add [WebGet] attribute. (Default ResponseFormat is WebMessageFormat.Json)</span>
        <span style="color: #008080; font-style: italic;">// To create an operation that returns XML,</span>
        <span style="color: #008080; font-style: italic;">//     add [WebGet(ResponseFormat=WebMessageFormat.Xml)],</span>
        <span style="color: #008080; font-style: italic;">//     and include the following line in the operation body:</span>
        <span style="color: #008080; font-style: italic;">//         WebOperationContext.Current.OutgoingResponse.ContentType = &quot;text/xml&quot;;</span>
        <span style="color: #000000;">&#91;</span>OperationContract<span style="color: #000000;">&#93;</span>
        <span style="color: #000000;">&#91;</span>WebGet<span style="color: #000000;">&#40;</span>ResponseFormat<span style="color: #008000;">=</span>WebMessageFormat.<span style="color: #0000FF;">Json</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
        <span style="color: #0600FF;">public</span> StockPrice GetStockPrice<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> ticker<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            ...
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">// Add more operations here and mark them with [OperationContract]</span>
    <span style="color: #000000;">&#125;</span></pre></div></div>

<h4>Converting Text to JSON and Back</h4>
<p><strong>eval()</strong> &#8211; invokes the JavaScript compiler. The compiler will correctly parse the text and produce an object structure. The eval function is very fast. However, it can compile and execute any JavaScript program, so there can be security issues.</p>
<p><strong>JSON.parse()</strong> &#8211; To defend against security issues with the eval function, it is preferred to use a JSON parser. A JSON parser will recognize only JSON text, rejecting all scripts. In browsers that provide native JSON support, JSON parsers are also much faster than eval. It is expected that native JSON support will be included in the next ECMAScript standard.</p>
<h4>jQuery’s $.getJSON() Method</h4>
<p>jQuery provides the getJSON method for easily making calls to services providing JSON-formatted responses and performing the JSON conversion.  Its signature is as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$.<span style="color: #660066;">getJSON</span><span style="color: #009900;">&#40;</span> url<span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> data <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> callback<span style="color: #009900;">&#40;</span>data<span style="color: #339933;">,</span> textStatus<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span></pre></div></div>

<p>url &#8211; A string containing the URL to which the request is sent.</p>
<p>data &#8211; A map or string that is sent to the server with the request.</p>
<p>callback(data, textStatus) &#8211; A callback function that is executed if the request succeeds.</p>
<p>Consuming our stock price service using the getJSON method will look like the following:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$.<span style="color: #660066;">getJSON</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;StockPriceService.svc/GetStockPrice&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> ticker<span style="color: #339933;">:</span> tickerValue <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>data<span style="color: #339933;">,</span> textStatus<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>textStatus <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'success'</span> <span style="color: #339933;">||</span> <span style="color: #339933;">!</span>data.<span style="color: #660066;">d</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#stockPricePanel&quot;</span><span style="color: #009900;">&#41;</span>
            .<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;span class=&quot;error&quot;&gt;Error looking up stock price.  Did you enter a valid ticker?&lt;/span&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> stockPrice <span style="color: #339933;">=</span> data.<span style="color: #660066;">d</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> isIncrease <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>stockPrice.<span style="color: #660066;">Delta</span> <span style="color: #339933;">&gt;=</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> deltaStyle <span style="color: #339933;">=</span> isIncrease <span style="color: #339933;">?</span> <span style="color: #3366CC;">'gain'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'loss'</span><span style="color: #339933;">;</span>
&nbsp;
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#stockPricePanel&quot;</span><span style="color: #009900;">&#41;</span>
            .<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;span class=&quot;price&quot;&gt;'</span> <span style="color: #339933;">+</span> stockPrice.<span style="color: #660066;">Price</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/span&gt;'</span><span style="color: #009900;">&#41;</span>
            .<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;span class=&quot;delta '</span> <span style="color: #339933;">+</span> deltaStyle <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;&gt;'</span> <span style="color: #339933;">+</span> stockPrice.<span style="color: #660066;">Delta</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/span&gt;'</span><span style="color: #009900;">&#41;</span>
            .<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;span class=&quot;percent '</span> <span style="color: #339933;">+</span> deltaStyle <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;&gt;('</span> <span style="color: #339933;">+</span> stockPrice.<span style="color: #660066;">PercentChange</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'%)&lt;/span&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h4>Working with WCF Serialized JSON Dates</h4>
<p>One caveat when working with JSON is that WCF serializes DateTimes to JSON in the format:</p>
<p>/Date({milliseconds since 01/01/1970}-{time zone})/</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://trentacular.com/wp-content/uploads/2010/04/image.png" border="0" alt="image" width="640" height="188" /><br />
Unfortunately, native JSON conversion does not automatically convert the date string to a JavaScript date object.  The following method shows an example of how to convert a JSON date string to a javascript Date object:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> convertJSONToDate<span style="color: #009900;">&#40;</span>json<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span>json.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/\/Date\((.*?)\)\//gi</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;new Date($1)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h4>Download the Demo Application</h4>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://trentacular.com/wp-content/uploads/2010/04/image1.png" border="0" alt="image" width="640" height="195" /><br />
<a href="/wp-content/uploads/2010/04/Trentacular.JsonWcfDemo.zip"><img src="/wp-content/uploads/2010/04/download.png" alt="Download Now" title="Download Now" /></a> <a href="/wp-content/uploads/2010/04/Trentacular.JsonWcfDemo.zip" title="Download Now">Download Now</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/pbGFQgAem0evFZugrrdND0wEXzw/0/da"><img src="http://feedads.g.doubleclick.net/~a/pbGFQgAem0evFZugrrdND0wEXzw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pbGFQgAem0evFZugrrdND0wEXzw/1/da"><img src="http://feedads.g.doubleclick.net/~a/pbGFQgAem0evFZugrrdND0wEXzw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/xqoMT2OuM1E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2010/04/avoiding-soap-bloat-with-json-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trentacular.com/2010/04/avoiding-soap-bloat-with-json-services/</feedburner:origLink></item>
		<item>
		<title>MOSS FullTextSqlQuery API: Little Known Flags on Managed Properties</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/8gS3MKeAFK0/</link>
		<comments>http://trentacular.com/2010/03/moss-fulltextsqlquery-api-little-known-flags-on-managed-properties/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 17:56:55 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[full text search]]></category>
		<category><![CDATA[full text sql]]></category>
		<category><![CDATA[managed property]]></category>
		<category><![CDATA[moss]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=252</guid>
		<description><![CDATA[I just wrapped up a custom implementation of a faceted search web part that uses the MOSS Full Text Sql Query API.  During the development, I ran into issues querying certain multi-valued Managed Properties, specifically Skills and Interests.  In my query, I was using the CONTAINS predicate like such:

SELECT
UserProfile_GUID, PreferredName, JobTitle, Department, WorkPhone, [...]]]></description>
			<content:encoded><![CDATA[<p>I just wrapped up a custom implementation of a faceted search web part that uses the MOSS Full Text Sql Query API.  During the development, I ran into issues querying certain multi-valued Managed Properties, specifically Skills and Interests.  In my query, I was using the CONTAINS predicate like such:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span>
UserProfile_GUID<span style="color: #66cc66;">,</span> PreferredName<span style="color: #66cc66;">,</span> JobTitle<span style="color: #66cc66;">,</span> Department<span style="color: #66cc66;">,</span> WorkPhone<span style="color: #66cc66;">,</span> OfficeNumber<span style="color: #66cc66;">,</span>
AboutMe<span style="color: #66cc66;">,</span> PictureURL<span style="color: #66cc66;">,</span> WorkEmail<span style="color: #66cc66;">,</span> WebSite<span style="color: #66cc66;">,</span> Path<span style="color: #66cc66;">,</span> HitHighlightedSummary<span style="color: #66cc66;">,</span>
HitHighlightedProperties<span style="color: #66cc66;">,</span> Responsibility<span style="color: #66cc66;">,</span> Skills<span style="color: #66cc66;">,</span> SipAddress
<span style="color: #993333; font-weight: bold;">FROM</span> scope<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">WHERE</span> freetext<span style="color: #66cc66;">&#40;</span>defaultproperties<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'+trent'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;scope&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'People'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">AND</span> CONTAINS<span style="color: #66cc66;">&#40;</span>Skills<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'&quot;numchucks&quot;'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">AND</span> CONTAINS<span style="color: #66cc66;">&#40;</span>Skills<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'&quot;rockstar&quot;'</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Use of the CONTAINS predicate was purely due to my need to query multi-valued properties.  If you are not querying a multi-valued property, you may simply use the &#8216;=&#8217; or &#8216;LIKE&#8217; predicates.</p>
<p>It turns out that the CONTAINS predicate will only work against managed properties that have been <em>enabled</em> as <strong>FullTextQueriable</strong>.  I am not aware of a way to enable a property in the SSP Search Settings, so this has to be done using the API.  I ended up including the following method as part of a Web Application scoped Feature Receiver to ensure certain Managed Properties were &#8216;FullTextQueriable&#8217;.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">    <span style="color: #0600FF;">using</span> <span style="color: #008080;">Microsoft.Office.Server</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF;">using</span> <span style="color: #008080;">Microsoft.Office.Server.Search.Administration</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> EnsureFullTextQueriableManagedProperties<span style="color: #000000;">&#40;</span>ServerContext serverContext, <span style="color: #0600FF;">params</span> <span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> managedPropertyNames<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        var schema <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Schema<span style="color: #000000;">&#40;</span>SearchContext.<span style="color: #0000FF;">GetContext</span><span style="color: #000000;">&#40;</span>serverContext<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>ManagedProperty managedProperty <span style="color: #0600FF;">in</span> schema.<span style="color: #0000FF;">AllManagedProperties</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #008000;">!</span>managedPropertyNames.<span style="color: #0000FF;">Contains</span><span style="color: #000000;">&#40;</span>managedProperty.<span style="color: #0000FF;">Name</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
                continue<span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>managedProperty.<span style="color: #0000FF;">FullTextQueriable</span><span style="color: #000000;">&#41;</span>
                continue<span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF;">try</span>
            <span style="color: #000000;">&#123;</span>
                managedProperty.<span style="color: #0000FF;">FullTextQueriable</span> <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
                managedProperty.<span style="color: #0000FF;">Update</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                Log.<span style="color: #0000FF;">Info</span><span style="color: #000000;">&#40;</span>m <span style="color: #008000;">=&gt;</span> m<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Successfully set managed property {0} to be FullTextQueriable&quot;</span>, managedProperty.<span style="color: #0000FF;">Name</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #000000;">&#125;</span>
            <span style="color: #0600FF;">catch</span> <span style="color: #000000;">&#40;</span>Exception e<span style="color: #000000;">&#41;</span>
            <span style="color: #000000;">&#123;</span>
                Log.<span style="color: #0000FF;">Error</span><span style="color: #000000;">&#40;</span>m <span style="color: #008000;">=&gt;</span> m<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Error updating managed property {0}&quot;</span>, managedProperty.<span style="color: #0000FF;">Name</span><span style="color: #000000;">&#41;</span>, e<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #000000;">&#125;</span>
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span></pre></div></div>

<p>So on the same note of Managed Property flags not visible in the SSP Search Settings, you may also want to know about the Retrievable flag.  This flag prevents a Managed Property&#8217;s value from being returned if specified as a column in the SELECT statement.</p>
<p>The following table lists most of the out of the box Managed Properties and their default FullTextQueriable, HasMultipleValues, and Retrievable flag values.</p>
<table class="datatable" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Name</th>
<th>FullTextQueriable</th>
<th>HasMultipleValues</th>
<th>Retrievable</th>
</tr>
<tr class="even">
<td>AboutMe</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Account</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>AccountName</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>AssignedTo</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Assistant</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Author</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Authority</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>BestBetKeywords</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Birthday</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>CachedPath</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>CategoryNavigationUrl</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>CollapsingStatus</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Company</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>contentclass</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>ContentSource</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>ContentType</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Created</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>CreatedBy</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>DataSource</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>DatePictureTaken</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Department</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Description</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>DisplayTitle</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>DocComments</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>DocKeywords</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>DocSignature</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>DocSubject</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>DottedLine</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>EMail</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>EndDate</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Fax</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>FileExtension</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Filename</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>FirstName</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>FollowAllAnchor</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>HighConfidenceDisplayProperty1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceDisplayProperty10</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HighConfidenceDisplayProperty11</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceDisplayProperty12</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HighConfidenceDisplayProperty13</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceDisplayProperty14</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HighConfidenceDisplayProperty15</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceDisplayProperty2</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HighConfidenceDisplayProperty3</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceDisplayProperty4</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HighConfidenceDisplayProperty5</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceDisplayProperty6</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HighConfidenceDisplayProperty7</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceDisplayProperty8</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HighConfidenceDisplayProperty9</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceImageURL</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HighConfidenceMatching</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HighConfidenceResultType</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HireDate</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HitHighlightedProperties</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>HitHighlightedSummary</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>HomePhone</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Interests</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>IsDocument</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>JobTitle</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Keywords</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>LastModifiedTime</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>LastName</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Location</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Manager</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>MemberOf</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Memberships</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>MobilePhone</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>ModifiedBy</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>MySiteWizard</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>NLCodePage</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Notes</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>objectid</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>OfficeNumber</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>OWS_URL</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>PastProjects</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Path</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Peers</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>PersonalSpace</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>PictureHeight</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>PictureSize</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>PictureThumbnailURL</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>PictureURL</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>PictureWidth</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>PreferredName</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Priority</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>ProxyAddresses</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>PublicSiteRedirect</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Purpose</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Rank</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>RankDetail</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Responsibilities</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Schools</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>SID</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>SipAddress</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Site</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>SiteName</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>SiteTitle</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Size</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Skills</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>StartDate</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>Status</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>Title</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>UrlDepth</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr class="even">
<td>UserName</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>UserProfile_GUID</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>WebId</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>WebSite</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>WorkAddress</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>WorkCity</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>WorkCountry</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>WorkEmail</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>WorkId</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>WorkPhone</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr class="even">
<td>WorkState</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
<tr>
<td>WorkZip</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
<td>&nbsp;</td>
<td><img src="/wp-content/uploads/2010/03/icn-checkmark-small.gif" alt="X" /></td>
</tr>
</table>

<p><a href="http://feedads.g.doubleclick.net/~a/Vcj_HnAttZFZxtODZKe1iIW3GfI/0/da"><img src="http://feedads.g.doubleclick.net/~a/Vcj_HnAttZFZxtODZKe1iIW3GfI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Vcj_HnAttZFZxtODZKe1iIW3GfI/1/da"><img src="http://feedads.g.doubleclick.net/~a/Vcj_HnAttZFZxtODZKe1iIW3GfI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/8gS3MKeAFK0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2010/03/moss-fulltextsqlquery-api-little-known-flags-on-managed-properties/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trentacular.com/2010/03/moss-fulltextsqlquery-api-little-known-flags-on-managed-properties/</feedburner:origLink></item>
		<item>
		<title>Productivity: What Causes You Friction?</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/eWVQz7qROVE/</link>
		<comments>http://trentacular.com/2010/02/productivity-what-causes-you-friction/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 23:04:55 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=247</guid>
		<description><![CDATA[As I am waiting for Reflector to load and my browser to unfreeze, I thought maybe if I write down all the things that cause me friction when attempting to be productive, I may just feel a little less frustrated by it all.
So here it goes:

Lotus Notes takes up to 20 seconds to redraw itself [...]]]></description>
			<content:encoded><![CDATA[<p>As I am waiting for Reflector to load and my browser to unfreeze, I thought maybe if I write down all the things that cause me friction when attempting to be productive, I may just feel a little less frustrated by it all.</p>
<p>So here it goes:</p>
<ol>
<li>Lotus Notes takes up to 20 seconds to redraw itself when returning from my VM</li>
<li>SameTime can also take this long</li>
<li>SharePoint Development Requirements &#8211; Lots of RAM and Windows Server OS</li>
<li>SharePoint GAC Deployment &#8211; Recycling of App Pools gets old</li>
<li>Getting distracted writing this blog post after Reflector finished loading 5 minutes ago</li>
<li>Visual Studio Add Reference Dialog (can&#8217;t wait to get my whole team over to VS 2010 to cross this one off the list)</li>
<li>Misleading WCF Add Service Reference Error Messages</li>
<li>Did I mention Lotus Notes</li>
<li>Web Meetings and Teleconferencing</li>
<li>Two-factor authentication with a 5 minute timeout (Explanation: I am working for a defense contractor)</li>
</ol>
<p>On the other hand, there are certain things that just plain allow me to be productive:</p>
<ol>
<li>My Wife Sarah</li>
<li>GMail</li>
<li>Google Reader</li>
<li>Google Chat</li>
<li>Visual Studio Intellisense</li>
<li>FireBug</li>
<li>Notepad++</li>
<li>My Colleague Winston&#8217;s <a href="http://mindtree.winstonfassett.com/">MindTree</a> application</li>
<li>Pencil and Paper (not the name of some app, I mean physical pencil and paper)</li>
<li>Whiteboards</li>
</ol>
<p>So what is causing you friction?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/bZcobP0QC8Wuy7EXrnJNYigLo1g/0/da"><img src="http://feedads.g.doubleclick.net/~a/bZcobP0QC8Wuy7EXrnJNYigLo1g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bZcobP0QC8Wuy7EXrnJNYigLo1g/1/da"><img src="http://feedads.g.doubleclick.net/~a/bZcobP0QC8Wuy7EXrnJNYigLo1g/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/eWVQz7qROVE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2010/02/productivity-what-causes-you-friction/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://trentacular.com/2010/02/productivity-what-causes-you-friction/</feedburner:origLink></item>
		<item>
		<title>Extension Method of the Day: OrderBy with a Descending Flag</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/LwUzNfMvj6o/</link>
		<comments>http://trentacular.com/2010/02/extension-method-of-the-day-orderby-with-a-descending-flag/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 23:52:16 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[collections]]></category>
		<category><![CDATA[extension method]]></category>
		<category><![CDATA[linq]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=241</guid>
		<description><![CDATA[The title should say it all.  Not sure why this didn&#8217;t make it into the System.Linq.Enumerable class, but this seems like a no-brainer.  You need to sort a collection, but whether you sort ascending or descending is determined by a boolean argument instead of having to call a different method for each scenario.  [...]]]></description>
			<content:encoded><![CDATA[<p>The title should say it all.  Not sure why this didn&#8217;t make it into the System.Linq.Enumerable class, but this seems like a no-brainer.  You need to sort a collection, but whether you sort ascending or descending is determined by a boolean argument instead of having to call a different method for each scenario.   Add this to your collection utilities class immediately:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">        <span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
        <span style="color: #008080; font-style: italic;">/// Sorts the elements of a sequence according to a key.</span>
        <span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;exception cref=&quot;System.ArgumentNullException&quot;&gt;source or keySelector is null.&lt;/exception&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;typeparam name=&quot;TSource&quot;&gt;The type of the elements of source.&lt;/typeparam&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;typeparam name=&quot;TKey&quot;&gt;The type of the key returned by keySelector.&lt;/typeparam&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;source&quot;&gt;A sequence of values to order.&lt;/param&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;keySelector&quot;&gt;A function to extract a key from an element.&lt;/param&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;descending&quot;&gt;if set to &lt;c&gt;true&lt;/c&gt;, sorts the elements in descending order; otherwise in ascending order.&lt;/param&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;returns&gt;An System.Linq.IOrderedEnumerable&lt;TElement&gt; whose elements are sorted according to a key.&lt;/returns&gt;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> IOrderedEnumerable<span style="color: #008000;">&lt;</span>TSource<span style="color: #008000;">&gt;</span> OrderBy<span style="color: #008000;">&lt;</span>TSource, TKey<span style="color: #008000;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span> IEnumerable<span style="color: #008000;">&lt;</span>TSource<span style="color: #008000;">&gt;</span> source, Func<span style="color: #008000;">&lt;</span>TSource, TKey<span style="color: #008000;">&gt;</span> keySelector, <span style="color: #FF0000;">bool</span> descending<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>descending<span style="color: #000000;">&#41;</span>
                <span style="color: #0600FF;">return</span> source.<span style="color: #0000FF;">OrderByDescending</span><span style="color: #000000;">&#40;</span>keySelector<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF;">return</span> source.<span style="color: #0000FF;">OrderBy</span><span style="color: #000000;">&#40;</span>keySelector<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">&#125;</span></pre></div></div>


<p><a href="http://feedads.g.doubleclick.net/~a/Quj1Tkwa1zkPzyyfOMipM_z_KEU/0/da"><img src="http://feedads.g.doubleclick.net/~a/Quj1Tkwa1zkPzyyfOMipM_z_KEU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Quj1Tkwa1zkPzyyfOMipM_z_KEU/1/da"><img src="http://feedads.g.doubleclick.net/~a/Quj1Tkwa1zkPzyyfOMipM_z_KEU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/LwUzNfMvj6o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2010/02/extension-method-of-the-day-orderby-with-a-descending-flag/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trentacular.com/2010/02/extension-method-of-the-day-orderby-with-a-descending-flag/</feedburner:origLink></item>
		<item>
		<title>SharePoint: Enabling WebDAV on a Development Server</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/wfkEqXQZ2WA/</link>
		<comments>http://trentacular.com/2010/01/sharepoint-enabling-webdav-on-a-development-server/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 17:13:46 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[webdav]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=238</guid>
		<description><![CDATA[I am currently customizing the display of SharePoint search results for my client and wanted a quick way to do iterative development of the XSLT style sheet used to render the results.  I decided to upload the style sheet to a Document Library in the Search Center site, configure the Core Results Web Part&#8217;s XSL [...]]]></description>
			<content:encoded><![CDATA[<p>I am currently customizing the display of SharePoint search results for my client and wanted a quick way to do iterative development of the XSLT style sheet used to render the results.  I decided to upload the style sheet to a Document Library in the Search Center site, configure the Core Results Web Part&#8217;s XSL Link to point to the url of the style sheet, and use WebDAV to iteratively edit/save the file, having my changes appear instantly in the Core Results Web Part.</p>
<p>What I didn&#8217;t realize is there are some additional steps to take to enable WebDAV for use on my development server (Windows Server 2003 VM).  Here they are in case you are trying to do something similar:</p>
<ol>
<li>Enable WebDAV in IIS (found in the Web Service Extensions section)</li>
<li>Enable and start the WebClient service</li>
</ol>
<p>Apparently in Windows Server 2003, the WebClient service is disabled by default.  In case you are wondering what this service does, here is its description:</p>
<blockquote><p>Enables Windows-based programs to create, access, and modify Internet-based files.  If this service is stopped, these functions will not be available.  If this service is disabled, any services that explicitly depend on it will fail to start.</p></blockquote>
<p>Wahlah, I am now able to access the document library using Windows Explorer with a path like the following:</p>
<p>\\mossdev\sites\SearchCenter\Documents</p>

<p><a href="http://feedads.g.doubleclick.net/~a/xEDb6thI6MVqZgrG3KYHy_ErjHk/0/da"><img src="http://feedads.g.doubleclick.net/~a/xEDb6thI6MVqZgrG3KYHy_ErjHk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/xEDb6thI6MVqZgrG3KYHy_ErjHk/1/da"><img src="http://feedads.g.doubleclick.net/~a/xEDb6thI6MVqZgrG3KYHy_ErjHk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/wfkEqXQZ2WA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2010/01/sharepoint-enabling-webdav-on-a-development-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trentacular.com/2010/01/sharepoint-enabling-webdav-on-a-development-server/</feedburner:origLink></item>
		<item>
		<title>SharePoint “Smart” Editor Parts</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/Zez2OZHfaD4/</link>
		<comments>http://trentacular.com/2009/12/sharepoint-smart-editor-parts/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 00:04:36 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[editorpart]]></category>
		<category><![CDATA[webpart]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=205</guid>
		<description><![CDATA[Stealing the name from Jan Tielens&#8217; SmartPart for SharePoint, I&#8217;ve put together a framework for building &#8220;Smart&#8221; Editor Parts — &#8220;Smart&#8221; Editor Parts being User Controls that serve as Editor Parts.  This blog post is an excerpt from the complete writeup of the framework.
Downloads
SharePoint Smart Editor Parts.docx (~159 KB)
A complete writeup of the SharePoint &#8220;Smart&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Stealing the name from Jan Tielens&#8217; <a title="SmartPart for SharePoint" href="http://www.codeplex.com/smartpart">SmartPart for SharePoint</a>, I&#8217;ve put together a framework for building &#8220;Smart&#8221; Editor Parts — &#8220;Smart&#8221; Editor Parts being User Controls that serve as Editor Parts.  This blog post is an excerpt from the <a title="SharePoint &quot;Smart&quot; Editor Parts" href="http://trentacular.com/wp-content/uploads/2009/12/SharePoint-Smart-Editor-Parts.docx">complete writeup of the framework</a>.</p>
<h3>Downloads</h3>
<p><a title="SharePoint &quot;Smart&quot; Editor Parts" href="http://trentacular.com/wp-content/uploads/2009/12/SharePoint-Smart-Editor-Parts.docx">SharePoint Smart Editor Parts.docx</a> (~159 KB)<br />
<span class="link-description">A complete writeup of the SharePoint &#8220;Smart&#8221; Editor Part framework</span></p>
<p><a title="SharePoint &quot;Smart&quot; Editor Parts Solution" href="http://trentacular.com/wp-content/uploads/2009/12/Trentacular.SharePoint.SmartEditorPart.zip">Trentacular.SharePoint.SmartEditorPart.zip</a> (~ 320 KB)<br />
<span class="link-description">The Visual Studio solution of the SharePoint &#8220;Smart&#8221; Editor Part framework</span><br />
(Requires Visual Studio 2010 and WSPBuilder Extensions 2010)</p>
<h3>Introduction</h3>
<h4>About the SharePoint Web Part Platform</h4>
<p>Windows SharePoint Services 3.0 (WSS) offers a robust platform for hosting Web Parts, providing a Web Part Manager implementation that builds a rich tool pane for configuring the Web Parts.  Out of the box, WSS provides tool panes for customizing the appearance and layout, and will even generate basic fields for custom Web Part properties that are marked with the appropriate attributes.   The following table describes how custom property types are displayed in the property pane:</p>
<table class="datatable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th>Custom Property Type</th>
<th>Generated Property Pane Field</th>
</tr>
<tr class="even">
<td>bool</td>
<td>Check Box</td>
</tr>
<tr>
<td>DateTime</td>
<td>Text Box</td>
</tr>
<tr class="even">
<td>enum</td>
<td>Dropdown List</td>
</tr>
<tr>
<td>int</td>
<td>Text Box</td>
</tr>
<tr class="even">
<td>string</td>
<td>Text Box</td>
</tr>
</tbody>
</table>
<h4>Building Custom Editor Parts</h4>
<p>When a custom property requires a user interface element other than the ones listed above or needs custom validation, you can write a custom Editor Part that inherits from <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.editorpart.aspx">System.Web.UI.WebControls.WebParts.EditorPart</a> and have your Web Part implement <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebeditable.aspx">System.Web.UI.WebControls.WebParts.IWebEditable</a> to create your custom Editor Part.</p>
<p>If you would like to build your custom Editor Part using a User Control, there are a few more steps you will have to take, because the abstract <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.editorpart.aspx">System.Web.UI.WebControls.WebParts.EditorPart</a> base class does not inherit from the <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.usercontrol.aspx">System.Web.UI.UserControl</a> class.  The rest of this guide will walk you through the steps to create a framework for building Editor Parts with User Controls.</p>
<h4>Inheriting from a Web Part Base Class</h4>
<p>Web Parts inheriting from <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.webpart.aspx">Microsoft.SharePoint.WebPartPages.WebPart</a> can also take advantage of this framework with slight modifications to this guide.  You will be creating a base class that inherits from <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpart.aspx">System.Web.UI.WebControls.WebParts.WebPart</a> that will encapsulate the majority of the Editor Part framework and will be used by the example Site Members Web Part.  If you prefer to inherit from <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.webpart.aspx">Microsoft.SharePoint.WebPartPages.WebPart</a>, you may change the base class you will be creating to inherit from this class instead; however, Microsoft recommends that you inherit from <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpart.aspx">System.Web.UI.WebControls.WebParts.WebPart</a> whenever possible.<strong> </strong></p>
<h3>Overview of the User Control Editor Part Framework</h3>
<h4>Overview of Building an Editor Part</h4>
<p>In order for a Web Part to have a custom Editor Part, the Web Part can implement the <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebeditable.aspx">System.Web.UI.WebControls.WebParts.IWebEditable</a> interface.  The abstract <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpart.aspx">WebPart</a> class that is typically used as the base class for custom Web Part implementations already implements the <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebeditable.aspx">IWebEditable</a> interface, which includes two exposed members.  The <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebeditable.webbrowsableobject.aspx">WebBrowsableObject</a> property provides a way for <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.editorpart.aspx">EditorPart</a> controls to get a reference to the associated Web Part.  The <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebeditable.createeditorparts.aspx">CreateEditorParts</a> method is used to create an instance of each custom <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.editorpart.aspx">EditorPart</a> control associated with the Web Part, and return them as a collection.  Custom Web Parts that inherit from the abstract <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpart.aspx">WebPart</a> class need only to override the <em>CreateEditorParts</em> method in order to add additional Editor Parts.</p>
<p>The <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.editorpart.aspx">EditorPart</a> class exposes a property named <em>WebPartToEdit</em> of type <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpart.aspx">WebPart</a> that the Editor Part can use to read and set the configurable properties of the Web Part.  Additionally, two abstract methods <em>SyncChanges</em> and <em>ApplyChanges</em> are exposed that are called by the Web Part framework at the appropriate times when the Editor Part should read or set these properties on the associated Web Part.</p>
<h4>Extending the Editor Part Framework to Support User Controls</h4>
<p>In order to use a User Control as an Editor Part, a generic Editor Part called <em>UserControlEditorPart&lt;T&gt;</em> is needed that will wrap the appropriate User Control.  The <em>UserControlEditorPart&lt;T&gt;</em> will also need to pass the <em>SyncChanges</em> and <em>ApplyChanges</em> method calls along to the User Control.  This can be accomplished by defining an interface to be implemented by the User Control.  This interface will be called <em>IWebPartEditor&lt;T&gt;</em>.</p>
<p>The <em>UserControlEditorPart&lt;T&gt;</em> class is generic because it will inherit from another base class that is also generic called <em>BaseEditorPart&lt;T&gt;</em>.  This base class is extracted so that it can be inherited by both the UserControlEditorPart &lt;T&gt; and any other custom non-User Control Editor Parts.  Its sole purpose is to provide the convenience of casting the <em>WebPartToEdit</em> property of the <em>EditorPart</em> abstract class to the specific Web Part type associated to the <em>EditorPart</em>.</p>
<h4>Enabling Attribute Decorations for Editor Part Associations</h4>
<p>While it is relatively straight-forward to implement the <em>IWebEditable</em> interface’s <em>CreateEditorParts</em> method in a custom Web Part class, the framework additionally abstracts this step away, enabling you to associate Editor Parts to your Web Part using attributes.  This is accomplished by supplying two additional classes: <em>WebEditableWebPart</em> and <em>EditorPartAttribute</em>.</p>
<p>The <em>WebEditableWebPart</em> class is a new base class to be used by your custom Web Parts.  The class inherits from <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpart.aspx">WebPart</a> and overrides the <em>CreateEditorParts</em> method to add any Editor Parts to the Web Part that are specified by the <em>EditorPartAttribute</em> class.</p>
<p>The <em>EditorPartAttribute</em> class is to be applied as a class attribute to a Web Part requiring a custom Editor Part.  The attribute allows for an Editor Part to be specified by either its type or by a virtual path to a User Control that implements <em>IWebPartEditor&lt;T&gt;</em>.</p>
<p><a href="http://trentacular.com/wp-content/uploads/2009/12/UserControlEditorPartFramework.png"><img title="User Control Editor Part Framework Class Diagram" src="http://trentacular.com/wp-content/uploads/2009/12/UserControlEditorPartFramework.png" alt="User Control Editor Part Framework Class Diagram" width="670" /></a></p>
<h4>Using the User Control Editor Part Framework</h4>
<p>With the User Control Editor Part framework in place, there are now just three steps needed in order to create an Editor Part as a User Control:</p>
<ol>
<li>Ensure the Web Part inherits from <em>WebEditableWebPart</em>.  In the case where you are already using a custom base class for your Web Parts, you may simply change your custom base class to inherit from <em>WebEditableWebPart</em>.</li>
<li>Create a User Control that implements <em>IWebPartEditor&lt;T&gt;</em>.</li>
<li>Decorate your Web Part using the <em>EditorPartAttribute</em> class specifying the virtual path to the User Control.</li>
</ol>

<p><a href="http://feedads.g.doubleclick.net/~a/zZkbKR6N6nP9w-CWTVIjL0LJrng/0/da"><img src="http://feedads.g.doubleclick.net/~a/zZkbKR6N6nP9w-CWTVIjL0LJrng/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/zZkbKR6N6nP9w-CWTVIjL0LJrng/1/da"><img src="http://feedads.g.doubleclick.net/~a/zZkbKR6N6nP9w-CWTVIjL0LJrng/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/Zez2OZHfaD4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2009/12/sharepoint-smart-editor-parts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trentacular.com/2009/12/sharepoint-smart-editor-parts/</feedburner:origLink></item>
		<item>
		<title>SharePoint FBA: Basic “All Authenticated Users” Role Provider</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/V_YJYn6Az7g/</link>
		<comments>http://trentacular.com/2009/12/sharepoint-fba-basic-all-authenticated-users-role-provider/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 19:22:29 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[asp.net]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[forms based authentication]]></category>
		<category><![CDATA[role provider]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=198</guid>
		<description><![CDATA[When managing users and groups within a SharePoint Web application configured to use Windows Integrated Authentication,  there is a convenient &#8220;Add all authenticated users&#8221; link that adds a special Active Directory group &#8211; NT AUTHORITY\authenticated users &#8211; to the Users/Groups People Editor.  This group refers to any non-anonymous user, which if you ask me, seems [...]]]></description>
			<content:encoded><![CDATA[<p>When managing users and groups within a SharePoint Web application configured to use Windows Integrated Authentication,  there is a convenient &#8220;Add all authenticated users&#8221; link that adds a special Active Directory group &#8211; <strong>NT AUTHORITY\authenticated users</strong> &#8211; to the Users/Groups People Editor.  This group refers to any non-anonymous user, which if you ask me, seems like a pretty common group to have around.  However, when working within a SharePoint Web application configured to use Forms Based Authentication (FBA), this convenient group is no longer available.</p>
<p>When using FBA, the only &#8220;non-SharePoint&#8221; groups available to us are the roles exposed by an ASP.Net Role Provider.  If you are already using a custom Role Provider and are not able to make changes to it, then you can stop here.  This post is not for you.  If you are like me though, and are using FBA merely for authentication and are leveraging SharePoint for all authorization, then the single &#8220;All Authenticated Users&#8221; role is all I need from my Role Provider.  As a result, there is no need to use a heavy weight Role Provider (i.e., the SQL Role Provider) to accomplish this, but rather roll your own very dumb role provider.  There is only a single method that you will need to implement &#8211; GetRolesForUser &#8211; in which you can assume the user is already authenticated and always return the &#8220;All Authenticated Users&#8221; role for the user.  Here is the Role Provider I am currently using:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Web.Security</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">namespace</span> Trentacular.<span style="color: #0000FF;">Web</span>.<span style="color: #0000FF;">Security</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> SimpleAllAuthenticatedUsersRoleProvider <span style="color: #008000;">:</span> RoleProvider
    <span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">const</span> <span style="color: #FF0000;">string</span> AllAuthenticatedUsersRoleName <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;All Authenticated Users&quot;</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">string</span> ApplicationName <span style="color: #000000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> GetRolesForUser<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> username<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0600FF;">return</span> <span style="color: #008000;">new</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">&#123;</span> AllAuthenticatedUsersRoleName <span style="color: #000000;">&#125;</span><span style="color: #008000;">;</span>
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #008080;">#region Methods Not Implemented</span>
&nbsp;
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> GetAllRoles<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">bool</span> IsUserInRole<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> username, <span style="color: #FF0000;">string</span> roleName<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">bool</span> RoleExists<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> roleName<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> AddUsersToRoles<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> usernames, <span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> roleNames<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> CreateRole<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> roleName<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">bool</span> DeleteRole<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> roleName, <span style="color: #FF0000;">bool</span> throwOnPopulatedRole<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> FindUsersInRole<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> roleName, <span style="color: #FF0000;">string</span> usernameToMatch<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> GetUsersInRole<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> roleName<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> RemoveUsersFromRoles<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> usernames, <span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> roleNames<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> NotImplementedException<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #008080;">#endregion</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>After rolling your own role provider, you will need to register it in the web.config inside the &lt;system.web&gt; section as such:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;roleManager</span> <span style="color: #000066;">enabled</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">defaultProvider</span>=<span style="color: #ff0000;">&quot;SimpleAllAuthenticatedUsersRoleProvider&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;providers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;add</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;SimpleAllAuthenticatedUsersRoleProvider&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;Trentacular.Web.Security.SimpleAllAuthenticatedUsersRoleProvider, Trentacular.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=aaaaaaaaaaaaaaaa&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/providers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/roleManager<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>


<p><a href="http://feedads.g.doubleclick.net/~a/xoxMXA8yYOpmeW_6gjKnfpLnjpg/0/da"><img src="http://feedads.g.doubleclick.net/~a/xoxMXA8yYOpmeW_6gjKnfpLnjpg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/xoxMXA8yYOpmeW_6gjKnfpLnjpg/1/da"><img src="http://feedads.g.doubleclick.net/~a/xoxMXA8yYOpmeW_6gjKnfpLnjpg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/V_YJYn6Az7g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2009/12/sharepoint-fba-basic-all-authenticated-users-role-provider/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trentacular.com/2009/12/sharepoint-fba-basic-all-authenticated-users-role-provider/</feedburner:origLink></item>
		<item>
		<title>Installing SharePoint Server 2010 Beta on Windows 7</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/ZSYwJ78Wbfo/</link>
		<comments>http://trentacular.com/2009/11/installing-sharepoint-server-2010-beta-on-windows-7/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 00:52:17 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[sharepoint 2010]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=189</guid>
		<description><![CDATA[So I am about to install SharePoint Server 2010 Beta on a fresh Windows 7 install.  I am planning on continually updating this post with my progress.  So here goes nothing.
Step 1: Find out what others are saying
http://msdn.microsoft.com/en-us/library/ee554869%28office.14%29.aspx
http://weblogs.asp.net/sharadkumar/archive/2009/10/20/sharepoint-2010-setting-up-development-machine-on-windows-7.aspx
Step 2: Reinstall the correct version of Windows 7
Before getting started or reading any guides, I [...]]]></description>
			<content:encoded><![CDATA[<p>So I am about to install SharePoint Server 2010 Beta on a fresh Windows 7 install.  I am planning on continually updating this post with my progress.  So here goes nothing.</p>
<h4>Step 1: Find out what others are saying</h4>
<p><a href="http://msdn.microsoft.com/en-us/library/ee554869%28office.14%29.aspx">http://msdn.microsoft.com/en-us/library/ee554869%28office.14%29.aspx</a></p>
<p><a href="http://weblogs.asp.net/sharadkumar/archive/2009/10/20/sharepoint-2010-setting-up-development-machine-on-windows-7.aspx">http://weblogs.asp.net/sharadkumar/archive/2009/10/20/sharepoint-2010-setting-up-development-machine-on-windows-7.aspx</a></p>
<h4>Step 2: Reinstall the correct version of Windows 7</h4>
<p>Before getting started or reading any guides, I installed Windows 7 Ultimate <strong>N</strong>, which I now know the Beta only works on non-N versions of Windows 7.  So far off to a great start <img src='http://trentacular.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p><a href="http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/dec7a208-662f-4c4d-bbae-f04f937b2e86">http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/dec7a208-662f-4c4d-bbae-f04f937b2e86</a></p>
<p><a href="http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/cfa12d9f-2253-4d70-9f6a-c73441d43fd5">http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/cfa12d9f-2253-4d70-9f6a-c73441d43fd5</a></p>
<h4>Step 3: Install a butt-load of prereqs</h4>
<p>Stuck to the <a title="MSDN Guide" href="http://msdn.microsoft.com/en-us/library/ee554869%28office.14%29.aspx">MSDN guide</a> and all went well.</p>
<h4>Step 4: Install SharePoint Server 2007</h4>
<p>Make sure to run the setup.exe in the extracted folder created by following the MSDN guide above, not the downloaded .exe.</p>
<h4>Step 5: Configure the SharePoint Farm</h4>
<p>I received the following error:</p>
<p><img class="alignnone size-full wp-image-194" title="SharePoint Configuration Failed" src="http://trentacular.com/wp-content/uploads/2009/11/SharePoint-Configuration-Failed.png" alt="SharePoint Configuration Failed" width="644" height="556" /></p>
<p>Installing the following KB update corrected this problem:</p>
<p><a href="http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=23806">http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=23806</a></p>
<h4>Step 6: Tune SharePoint and SQL Server</h4>
<p>I could use some recommendations for this step.  After completing the installation and creating my first Site Collection, there appears to be 4 IIS Worker Processes and 7 or more Windows Services running related to SharePoint.  I will be experimenting with timeout settings for the application pools and max memory settings for SQL Server and let you know what I come up with.<span class="zem-script more-related more-info pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span> If you&#8217;ve got some insight on tuning, please let me know!</p>
<p><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/64b32d78-2f31-4736-bd46-f7bbde3cab74/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=64b32d78-2f31-4736-bd46-f7bbde3cab74" alt="Reblog this post [with Zemanta]" /></a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/pr1Nwdrj4k2OvfAcaLdKlfwPzAk/0/da"><img src="http://feedads.g.doubleclick.net/~a/pr1Nwdrj4k2OvfAcaLdKlfwPzAk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pr1Nwdrj4k2OvfAcaLdKlfwPzAk/1/da"><img src="http://feedads.g.doubleclick.net/~a/pr1Nwdrj4k2OvfAcaLdKlfwPzAk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/ZSYwJ78Wbfo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2009/11/installing-sharepoint-server-2010-beta-on-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trentacular.com/2009/11/installing-sharepoint-server-2010-beta-on-windows-7/</feedburner:origLink></item>
		<item>
		<title>Galleriffic 2.0</title>
		<link>http://feedproxy.google.com/~r/trentacular/~3/RlZ0d_upwqs/</link>
		<comments>http://trentacular.com/2009/10/galleriffic-2-0/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 16:05:45 +0000</pubDate>
		<dc:creator>Trent</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[photo gallery]]></category>

		<guid isPermaLink="false">http://trentacular.com/?p=184</guid>
		<description><![CDATA[Say hello to Galleriffic 2.0.
For first time readers, Galleriffic is a jQuery photo gallery optimized to handle high volumes of photos while conserving bandwidth.   h0bbel has posted a nice read on some of the benefits of Galleriffic over other photo gallery scripts.
New Features

Keyboard Navigation
Support for synchronized transitions (image cross-fades)
Ability to add or remove images [...]]]></description>
			<content:encoded><![CDATA[<p>Say hello to <a title="Galleriffic" href="http://www.twospy.com/galleriffic/index.html">Galleriffic 2.0</a>.</p>
<p>For first time readers, <a title="Galleriffic" href="http://www.twospy.com/galleriffic/index.html">Galleriffic</a> is a jQuery photo gallery optimized to handle high volumes of photos while conserving bandwidth.   <a href="http://h0bbel.p0ggel.org/why-do-most-jquery-gallery-plugins-suck-your-bandwidth-dry">h0bbel</a> has posted a <a href="http://h0bbel.p0ggel.org/why-do-most-jquery-gallery-plugins-suck-your-bandwidth-dry">nice read</a> on some of the benefits of Galleriffic over other photo gallery scripts.</p>
<h4>New Features</h4>
<ul>
<li>Keyboard Navigation</li>
<li>Support for synchronized transitions (image cross-fades)</li>
<li>Ability to add or remove images after the gallery is initialized</li>
<li>Support for custom hash identifiers (when using history)</li>
<li>Better API to make it easier to customize</li>
<li>Smarter pagination</li>
<li>Integration with the jquery.history plugin for history support</li>
</ul>
<h4>Warnings to users attempting to upgrade from version 1.0</h4>
<ul>
<li>The onChange event in 1.0 has been renamed to onSlideChange.</li>
<li>All transition event handlers have new signatures, so you will need to make sure to update any transition event handlers you have implemented.</li>
<li>Using synchronized transitions requires changes to your stylesheet &#8211; primarily the additional of relative and absolutely positioning so that two images can occupy the same space at the same time.</li>
</ul>
<p>There are now 5 examples, each builds on the previous.  For a visual treat, check out <a title="Galleriffic Visual Treat Example" href="http://www.twospy.com/galleriffic/example-5.html">the last example</a>, whose colors I inverted.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/XCGiceZl3FDf9jvZuUEeXbFnv1A/0/da"><img src="http://feedads.g.doubleclick.net/~a/XCGiceZl3FDf9jvZuUEeXbFnv1A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/XCGiceZl3FDf9jvZuUEeXbFnv1A/1/da"><img src="http://feedads.g.doubleclick.net/~a/XCGiceZl3FDf9jvZuUEeXbFnv1A/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/trentacular/~4/RlZ0d_upwqs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trentacular.com/2009/10/galleriffic-2-0/feed/</wfw:commentRss>
		<slash:comments>516</slash:comments>
		<feedburner:origLink>http://trentacular.com/2009/10/galleriffic-2-0/</feedburner:origLink></item>
	</channel>
</rss>
