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

<channel>
	<title>Black Ninja Software</title>
	<atom:link href="http://blackninjasoftware.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blackninjasoftware.com</link>
	<description>SharePoint and SQL Server Consulting, Business Intelligence and Reporting, ASP.NET Vancouver</description>
	<lastBuildDate>Wed, 02 May 2012 00:21:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Minor Glitch With Contact Form</title>
		<link>http://blackninjasoftware.com/2012/04/16/minor-glitch-with-contact-form/</link>
		<comments>http://blackninjasoftware.com/2012/04/16/minor-glitch-with-contact-form/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 19:13:16 +0000</pubDate>
		<dc:creator>black ninja</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Contact Form 7]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1421</guid>
		<description><![CDATA[We discovered a minor problem with our contact form this morning after recently upgrading to WordPress 3.3.1. Submits via our Contact Form no longer worked and threw an error. The plugin we use for sending emails via our contact form is called Contact Form 7. We thought perhaps an upgrade to the most recent version [...]]]></description>
			<content:encoded><![CDATA[<p>We discovered a minor problem with our contact form this morning after recently upgrading to <strong>WordPress 3.3.1</strong>. Submits via our <a href="http://blackninjasoftware.com/contact">Contact Form</a> no longer worked and threw an error. The plugin we use for sending emails via our contact form is called <strong>Contact Form 7</strong>. We thought perhaps an upgrade to the most recent version would solve the issue, but it did not.</p>
<p>Looking into the <strong>WP-Mail-SMTP</strong> plugin, which sets up email routing through our gmail domain account, it seemed that the port for <strong>smtp.gmail.com</strong> was not set correctly. The port setting for TLS/STARTTLS should have been <strong>587</strong> not <strong>465</strong>. A quick change to the settings, and we can now confirm that the contact form is working correctly.</p>
<p>We&#8217;re not entirely sure how this setting may have changed on us, expect that maybe it was related to the upgrade.</p>
<p>Supported Links: <a href="http://angstrey.com/index.php/2009/04/22/how-to-send-e-mail-with-wordpress-from-godaddy-windows-hosting/">http://angstrey.com/index.php/2009/04/22/how-to-send-e-mail-with-wordpress-from-godaddy-windows-hosting/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2012/04/16/minor-glitch-with-contact-form/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Black Ninjas at Rails Conf 2012</title>
		<link>http://blackninjasoftware.com/2012/03/14/black-ninjas-at-rails-conf-2012/</link>
		<comments>http://blackninjasoftware.com/2012/03/14/black-ninjas-at-rails-conf-2012/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 23:33:21 +0000</pubDate>
		<dc:creator>black ninja</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1402</guid>
		<description><![CDATA[A short update that the Ruby on Rails crew at Black Ninja Software will be at Rails Conf this year in Austin! We do have an opening for a Ruby on Rails developer so feel free to send us an email or tweet your plans, we&#8217;d love to meet up. Follow c0deNinja or matthewcarriere to [...]]]></description>
			<content:encoded><![CDATA[<p>A short update that the <strong>Ruby on Rails</strong> crew at <a href="http://www.blackninjasoftware.com">Black Ninja Software</a> will be at Rails Conf this year in <strong>Austin</strong>! We do have an opening for a Ruby on Rails developer so feel free to send us an email or tweet your plans, we&#8217;d love to meet up.</p>
<p>Follow <a href="https://twitter.com/intent/follow?original_referer=http%3A%2F%2Fplatform.twitter.com%2Fwidgets%2Ffollow_button.1331751378.html&#038;region=follow_link&#038;screen_name=c0deNinja&#038;source=followbutton&#038;variant=2.0">c0deNinja</a> or <a href="https://twitter.com/intent/follow?original_referer=http%3A%2F%2Fplatform.twitter.com%2Fwidgets%2Ffollow_button.1331751378.html&#038;region=follow_link&#038;screen_name=matthewcarriere&#038;source=followbutton&#038;variant=2.0">matthewcarriere</a> to get in touch.</p>
<p>Also check our our <a href="http://blackninjasoftware.com/ruby-on-rails-developer/">Ruby on Rails</a> job posting to learn more about this job opening. We&#8217;re looking for any type of applicants, the focus for us will be technical ability and fit within the team.</p>
<p>See you all there!</p>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2012/03/14/black-ninjas-at-rails-conf-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tribute to Steve Jobs</title>
		<link>http://blackninjasoftware.com/2011/10/06/tribute-to-steve-jobs/</link>
		<comments>http://blackninjasoftware.com/2011/10/06/tribute-to-steve-jobs/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 19:38:22 +0000</pubDate>
		<dc:creator>black ninja</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Steve Jobs]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1398</guid>
		<description><![CDATA[From all of us here at Black Ninja Software, we want to thank you Steve. Thank you for making products that are not only delightful to use, but that solve problems we didn&#8217;t even know we had. Thank you for seeing the future as you felt it should be and for having the fortitute, perserverence [...]]]></description>
			<content:encoded><![CDATA[<p>From all of us here at Black Ninja Software, we want to thank you Steve.</p>
<p>Thank you for making products that are not only delightful to use, but that solve problems we didn&#8217;t even know we had.</p>
<p>Thank you for seeing the future as you felt it should be and for having the fortitute, perserverence and discipline to make it happen.</p>
<p>And finally, thank you for inspiring all of us to get up each morning and ask ourselves: &#8220;if today were the last day of my life, would i want to do what i am about to do today?&#8221;.</p>
<p>You&#8217;ve had a profound impact on our lives, and for that we will be eternally grateful.</p>
<p>In tribute:</p>
<p>Robert Scoble: <a href="http://www.businessinsider.com/my-apology-to-tim-cook-and-remembering-steve-jobs-2011-10">http://www.businessinsider.com/my-apology-to-tim-cook-and-remembering-steve-jobs-2011-10</a></p>
<p>FreshBooks: <a href="http://www.freshbooks.com/blog/2011/10/06/a-good-sign-of-vision-is-that-no-one-else-can-see-it/">http://www.freshbooks.com/blog/2011/10/06/a-good-sign-of-vision-is-that-no-one-else-can-see-it/</a></p>
<p>“My job is not to be easy on people. My jobs is to take these great people we have and to push them and make them even better.” – <a href="http://allaboutstevejobs.com/being/3-work/3-work.html" target="_blank">All About Steve Jobs</a></p>
<p>“You can’t just ask customers what they want and then try to give that to them. By the time you get it built, they’ll want something new.” – <a href="http://www.inc.com/magazine/19890401/5602.html" target="_blank">Inc. Magazine</a></p>
<p>&#8220;Stay hungry, stay foolish.&#8221; &#8211; Steve Jobs</p>
<p>Rest in peace Steve, we will surely miss you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2011/10/06/tribute-to-steve-jobs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Use Modal Dialog in Sharepoint 2010</title>
		<link>http://blackninjasoftware.com/2011/01/21/how-to-use-modal-dialog-in-sharepoint-2010/</link>
		<comments>http://blackninjasoftware.com/2011/01/21/how-to-use-modal-dialog-in-sharepoint-2010/#comments</comments>
		<pubDate>Sat, 22 Jan 2011 01:36:19 +0000</pubDate>
		<dc:creator>princess</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1234</guid>
		<description><![CDATA[Modal dialogs are really fun to work with but can be frustrating to implement if you don’t know what&#8217;s required to work with them. If you have a Java background you will be amazed with how SharePoint deals with modal dialogs. The concept is almost the same but you need a slightly different approach to [...]]]></description>
			<content:encoded><![CDATA[<p>Modal dialogs are really fun to work with but can be frustrating to implement if you don’t know what&#8217;s required to work with them. If you have a Java background you will be amazed with how SharePoint deals with modal dialogs. The concept is almost the same but you need a slightly different approach to implement it.</p>
<p>Modal dialogs in SharePoint 2010 use the client library <strong>SP.UI.ModalDialog</strong> and <strong>showModalDialog</strong>. We can do the following within the context of a page without leaving the page:</p>
<ul>
<li>
      Add and Edit metadata
</li>
<li>
     Perform administrative task
</li>
<li>
     Attach documents/files
</li>
</ul>
<p>The following step-by-step instructions show you how to implement a modal dialog in your server side pages:</p>
<ol>
<li>
Create a hyperlink that will be responsible for triggering your modal. Set the onclick attribute as follows:
</li>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;#&quot; onclick=&quot;javascript:openDialog(); return false;&quot;&gt;Open Attach File&lt;/a&gt;</pre></div></div>

<li>
Implement the <strong>openDialog</strong> function in javascript.
</li>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
    <span style="color: #003366; font-weight: bold;">function</span> openDialog<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> options <span style="color: #339933;">=</span> 
        <span style="color: #009900;">&#123;</span>
	    url<span style="color: #339933;">:</span> http<span style="color: #339933;">:</span><span style="color: #006600; font-style: italic;">//server/_layouts/AttachFile.aspx?ListId={0F42F104-538C-4F3C-8098-0DD93C8CD779}&amp;ItemId=246&amp;Source=http%3A%2F%2Fdeadmines%2Fsites%2Fhorizon%2FLists%2FYear%2520End%2FMy%2520Inbox%2520%2520All%2520lists.aspx,</span>
	    width<span style="color: #339933;">:</span> <span style="color: #CC0000;">800</span><span style="color: #339933;">,</span>
	    height<span style="color: #339933;">:</span> <span style="color: #CC0000;">600</span><span style="color: #339933;">,</span>
	    title<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Attach File&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
	SP.<span style="color: #660066;">UI</span>.<span style="color: #660066;">ModalDialog</span>.<span style="color: #660066;">showModalDialog</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>To be more dynamic&#8230;</p>
<p>Hard coding the <strong>url</strong> is not recommended because it is really hard to maintain. There are lots of ways to make your code dynamic and this is only one of them. We could have also leveraged the url query strings that contain most of this information.</p>
<li>
   Create hidden fields to store the information you will need to modify the <strong>url</strong>.
</li>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">    &lt;input type=&quot;hidden&quot; id=&quot;listId&quot; runat=&quot;server&quot; /&gt;
    &lt;input type=&quot;hidden&quot; id=&quot;itemId&quot; runat=&quot;server&quot; /&gt;
    &lt;input type=&quot;hidden&quot; id=&quot;sourceUrl&quot; runat=&quot;server&quot; /&gt;
    &lt;input type=&quot;hidden&quot; id=&quot;webUrl&quot; runat=&quot;server&quot; /&gt;</pre></div></div>

<li>
   Setup the hidden fields in your <strong>Page_Load</strong> event.
</li>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">        listId<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> list<span style="color: #008000;">.</span><span style="color: #0000FF;">ID</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        itemId<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> listItem<span style="color: #008000;">.</span><span style="color: #0000FF;">ID</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        sourceUrl<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> list<span style="color: #008000;">.</span><span style="color: #0000FF;">DefaultViewUrl</span><span style="color: #008000;">;</span>
        webUrl<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> web<span style="color: #008000;">.</span><span style="color: #0000FF;">Url</span><span style="color: #008000;">;</span></pre></div></div>

<li>
   Use the hidden fields in the javascript function you wrote above.
</li>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
    <span style="color: #003366; font-weight: bold;">function</span> openDialog<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> options <span style="color: #339933;">=</span> 
        <span style="color: #009900;">&#123;</span>
	    url<span style="color: #339933;">:</span>  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#&lt;%= webUrl.ClientID %&gt;&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;/_layouts/AttachFile.aspx?ListId=&quot;</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#&lt;%= listId.ClientID 
                     %&gt;&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;&amp;ItemId=&quot;</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#&lt;%= itemId.ClientID %&gt;&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;&amp;Source=&quot;</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#&lt;%= 
                     sourceUrl.ClientID %&gt;&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	    width<span style="color: #339933;">:</span> <span style="color: #CC0000;">800</span><span style="color: #339933;">,</span>
	    height<span style="color: #339933;">:</span> <span style="color: #CC0000;">600</span><span style="color: #339933;">,</span>
	    title<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Attach File&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
	SP.<span style="color: #660066;">UI</span>.<span style="color: #660066;">ModalDialog</span>.<span style="color: #660066;">showModalDialog</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

</ol>
<p>I will end my blog by quoting one of my favorite programming quotes by C.A.R. Hoare:</p>
<blockquote><p>There are two ways of coding. On way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2011/01/21/how-to-use-modal-dialog-in-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Identify if SharePoint &#8220;Person or Group&#8221; Field Entry is User or Group</title>
		<link>http://blackninjasoftware.com/2011/01/13/how-to-identify-if-sharepointperson-or-group-field-entry-is-user-or-group/</link>
		<comments>http://blackninjasoftware.com/2011/01/13/how-to-identify-if-sharepointperson-or-group-field-entry-is-user-or-group/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 18:01:17 +0000</pubDate>
		<dc:creator>donabel</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1175</guid>
		<description><![CDATA[In a lot of our custom forms, we use EnsureUser to verify if a user is exists in the SharePoint site or not and if not, EnsureUser takes care of setting them up for us. According to MS: Checks whether the specified login name belongs to a valid user of the website, and if the [...]]]></description>
			<content:encoded><![CDATA[<p>In a lot of our custom forms, we use <strong>EnsureUser</strong> to verify if a user is exists in the SharePoint site or not and if not, EnsureUser takes care of setting them up for us. According to <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.ensureuser.aspx">MS</a>:</p>
<blockquote><p>Checks whether the specified login name belongs to a valid user of the website, and if the login name does not already exist, adds it to the website.</p></blockquote>
<p>When working with Person or Group columns, often times we use EnsureUser, however, if the Person or Group column you&#8217;re reading from could potentially contain a group, the EnsureUser call will fail. So we need a way to determine if what&#8217;s stored in a Person or Group column is a <strong>User</strong> or a <strong>Group</strong> entity. </p>
<p>This is what we came up with, it works well for us:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//SPPrincipalInfo provides access to information about the current principal.  </span>
SPPrincipalInfo principalInfo <span style="color: #008000;">=</span> SPUtility<span style="color: #008000;">.</span><span style="color: #0000FF;">ResolveWindowsPrincipal</span><span style="color: #008000;">&#40;</span>site<span style="color: #008000;">.</span><span style="color: #0000FF;">WebApplication</span>, lookup<span style="color: #008000;">.</span><span style="color: #0000FF;">LookupValue</span>, SPPrincipalType<span style="color: #008000;">.</span><span style="color: #0000FF;">All</span>, <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//if this is null, then we assume it's a SharePoint group</span>
<span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>principalInfo <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #008080; font-style: italic;">//Checks whether the specified login name belongs to a valid user.</span>
     SPUser user <span style="color: #008000;">=</span> web<span style="color: #008000;">.</span><span style="color: #0000FF;">EnsureUser</span><span style="color: #008000;">&#40;</span>lookup<span style="color: #008000;">.</span><span style="color: #0000FF;">LookupValue</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
     ddlPoss<span style="color: #008000;">.</span><span style="color: #0000FF;">Items</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FindByValue</span><span style="color: #008000;">&#40;</span>user<span style="color: #008000;">.</span><span style="color: #0000FF;">ID</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Selected</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0600FF; font-weight: bold;">else</span>
<span style="color: #008000;">&#123;</span>
     SPGroup group <span style="color: #008000;">=</span> web<span style="color: #008000;">.</span><span style="color: #0000FF;">Groups</span><span style="color: #008000;">&#91;</span>lookup<span style="color: #008000;">.</span><span style="color: #0000FF;">LookupValue</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
     ddlPoss<span style="color: #008000;">.</span><span style="color: #0000FF;">Items</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FindByValue</span><span style="color: #008000;">&#40;</span>group<span style="color: #008000;">.</span><span style="color: #0000FF;">ID</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Selected</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2011/01/13/how-to-identify-if-sharepointperson-or-group-field-entry-is-user-or-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resolution: Windows 7 User Cannot Connect to SharePoint (WSS v3.0) Site</title>
		<link>http://blackninjasoftware.com/2011/01/12/resolution-windows-7-user-cannot-connect-to-sharepoint-wss-v3-0-site/</link>
		<comments>http://blackninjasoftware.com/2011/01/12/resolution-windows-7-user-cannot-connect-to-sharepoint-wss-v3-0-site/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 01:34:57 +0000</pubDate>
		<dc:creator>donabel</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1173</guid>
		<description><![CDATA[One of our users had recently: been migrated from one domain (OldDomain) to another domain (NewDomain) upgraded from Windows XP to Windows 7 Our grief started when he could not log into our SharePoint site anymore. When he tried to log in, he would either: get prompted to authenticate, then get an error page saying [...]]]></description>
			<content:encoded><![CDATA[<p>One of our users had recently:</p>
<ul>
<li>
been migrated from one domain (OldDomain) to another domain (NewDomain)
</li>
<li>
upgraded from Windows XP to Windows 7
</li>
</ul>
<p>Our grief started when he could not log into our SharePoint site anymore. When he tried to log in, he would either:</p>
<ul>
<li>
get prompted to authenticate, then get an error page saying &#8220;Connection was reset&#8221;, or
</li>
<li>
not get prompted at all, but get a &#8220;Connection was reset&#8221; error
</li>
</ul>
<p>We further verified this error by running both FireBug and Fiddler. </p>
<p>Initially we were thinking it must be the domain change; technically that&#8217;s the biggest change. We were also not able to ping the SharePoint site URL, but oddly we could ping the IP address of the site. This led us to think that this could be DNS related. </p>
<p>We went on a wild goose chase as to what domain-related problem it could have been, including:</p>
<ul>
<li>
flushing dns (flushdns)
</li>
<li>
refreshing DNS suffix search list
</li>
<li>
checking that user&#8217;s domain privileges, group policies
</li>
<li>
etc
</li>
</ul>
<p>We also did try other general non-domain-related possible fixes, like:</p>
<ul>
<li>
turning off firewall
</li>
<li>
adding site to Intranet Zone
</li>
<li>
adding site to Trusted Sites
</li>
<li>
allowing JavaScript, cookies in site
</li>
<li>
etc
</li>
</ul>
<p>Unfortunately we did not get any resolution, and we were not making any progress with this issue. </p>
<p>We also knew it was not a credentials issue as the user <strong>could still connect</strong> to our SharePoint site <strong>using another laptop running Windows XP</strong>. So, it&#8217;s not the domain name change after all. The culprit then had to be Windows 7.</p>
<p>Thank goodness we came across this post: <a href="http://social.msdn.microsoft.com/Forums/en/sharepoint2010general/thread/bc216eb7-d556-4819-8d96-8e14ee988f24">http://social.msdn.microsoft.com/Forums/en/sharepoint2010general/thread/bc216eb7-d556-4819-8d96-8e14ee988f24</a> (Thank you <a href="http://social.msdn.microsoft.com/profile/michada/?type=forum">MichAda</a>!)</p>
<p>The resolution is to change <strong>Network security: LAN Manager authentication level</strong> in Windows 7&#8242;s <strong>Local Security Policy</strong> to <strong>Send LM &#038; NTLM &#8211; use NTLMv2 session security if negotiated</strong>:</p>
<ol>
<li>
Start > Run > C:\Windows\system32\secpol.msc
</li>
<li>
Go to Local Policies > Security Option
</li>
<li>
Change  &#8220;Network security: LAN Manager authentication level&#8221; to &#8220;Send LM &#038; NTLM &#8211; use NTLMv2 session security if negotiated&#8221;
</li>
<li>
Apply the changes, and test again
</li>
</ol>
<p>We thought this was it! We tested on Firefox, and everything was back to normal in FIREFOX. Unfortunately, not everything was in happy land with IE. No matter what we did, we could not authenticate the user in IE. After a bit more fiddling around, this is what we found as a fix:</p>
<ol>
<li>
In IE, purposely sign out by clicking &#8220;Sign In as Different User&#8221;
</li>
<li>
Log in using the old domain (OldDomain\UserName)
</li>
<li>
After successfully signing in, &#8220;Sign In as Different User&#8221; again
</li>
<li>
Log in using the new domain (NewDomain\UserName)
</li>
</ol>
<p>Not sure why that works. Maybe somehow the old credentials are still what IE remembers. At this point, we&#8217;re just happy the user can sign in again and work with SharePoint.</p>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2011/01/12/resolution-windows-7-user-cannot-connect-to-sharepoint-wss-v3-0-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Training Classes Posted for the New Year</title>
		<link>http://blackninjasoftware.com/2011/01/05/sharepoint-training-classes-posted-for-the-new-year/</link>
		<comments>http://blackninjasoftware.com/2011/01/05/sharepoint-training-classes-posted-for-the-new-year/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 18:37:16 +0000</pubDate>
		<dc:creator>black ninja</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1166</guid>
		<description><![CDATA[Happy new year! I hope the holiday break was a good one. Everyone here at Black Ninja was able to take some time off to spend with family and we thoroughly enjoyed it. After all that rest and relaxation, we are ready to roll for the new year. We&#8217;ve started by posting a new set [...]]]></description>
			<content:encoded><![CDATA[<p>Happy new year! I hope the holiday break was a good one. Everyone here at Black Ninja was able to take some time off to spend with family and we thoroughly enjoyed it. After all that rest and relaxation, we are ready to roll for the new year.</p>
<p>We&#8217;ve started by posting a new set of training dates for our SharePoint and SQL Server courses. In particular, we&#8217;re offering <a href="http://blackninjasoftware.com/wp-content/uploads/2009/04/BlackNinja-Training-SharePoint-Designer-2007-3-Day.pdf">SharePoint Designer 2007</a> and <a href="http://blackninjasoftware.com/wp-content/uploads/2009/04/BlackNinja-Training-SharePoint-Operations.pdf">SharePoint 2007 Operations</a> training again this January. Both of these classes just met with huge success this past December. The material is custom written by us and packed with industry experience making it a huge hit among students.</p>
<p>Our training classes are held in our very comfortable <a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=302-145+west+15th+street,+north+vancouver&#038;sll=37.0625,-95.677068&#038;sspn=48.374125,76.640625&#038;ie=UTF8&#038;hq=&#038;hnear=145+W+15+St,+North+Vancouver,+Greater+Vancouver+Regional+District,+British+Columbia+V7M+1R6,+Canada&#038;ll=49.321038,-123.072796&#038;spn=0.009441,0.018711&#038;z=16&#038;layer=c&#038;cbll=49.322098,-123.074385&#038;panoid=ejzLUreZZTVM278iXfwFmw&#038;cbp=12,191.39,,0,-6.66">North Vancouver offices</a>, we provide coffees/teas and plenty of snacks. Most of our trainers are Microsoft Certified, and those who aren&#8217;t we consider to be SharePoint Superstars. We are passionate technology professionals who love to teach and educate on the areas we&#8217;ve focused our expertise on.</p>
<p>If you&#8217;re interested in attending a class with us, don&#8217;t hesitate to give us a call or email your inquiries. We look forward to seeing you in one of our classes!</p>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2011/01/05/sharepoint-training-classes-posted-for-the-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmatically and Selectively Revoke SharePoint Item-Level Permissions Using PowerShell</title>
		<link>http://blackninjasoftware.com/2010/06/20/programmatically-and-selectively-revoke-sharepoint-item-level-permissions-using-powershell/</link>
		<comments>http://blackninjasoftware.com/2010/06/20/programmatically-and-selectively-revoke-sharepoint-item-level-permissions-using-powershell/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 09:36:09 +0000</pubDate>
		<dc:creator>donabel</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1095</guid>
		<description><![CDATA[I&#8217;ve been using PowerShell more and more lately, and liking it more and more as I use it. Here&#8217;s another one you might find useful &#8211; programmatically and selectively revoking item-level permissions. For this scenario, the SharePoint list already has inheritance broken. Now we have to loop through the versions of SharePoint list items, and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using PowerShell more and more lately, and liking it more and more as I use it. </p>
<p>Here&#8217;s another one you might find useful &#8211; programmatically and selectively revoking item-level permissions. For this scenario, the SharePoint list already has inheritance broken. Now we have to loop through the versions of SharePoint list items, and check a people/group column called Participant. A participant would have had read/contribute permissions before, but after the list item has been verified, we don&#8217;t want the participants changing any of the values anymore.</p>
<p>We will start with the typical loading of the DLL, and creating a handle to our SharePoint site:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;">#Load the SharePoint DLL</span>
<span style="color: #000000;">&#91;</span><span style="color: #008080;">System.Reflection.Assembly</span><span style="color: #000000;">&#93;</span>::<span style="color: #800000;">LoadWithPartialName</span><span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;Microsoft.SharePoint&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out-Null</span>
<span style="color: #800080;">$SiteURL</span> <span style="color: pink;">=</span> <span style="color: #800080;">$server</span>;
&nbsp;
<span style="color: #008000;">#make sure we're using the system account token</span>
<span style="color: #800080;">$TmpSite</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.SharePoint.SPSite<span style="color: #000000;">&#40;</span><span style="color: #800080;">$SiteURL</span><span style="color: #000000;">&#41;</span>;
<span style="color: #800080;">$SysToken</span> <span style="color: pink;">=</span> <span style="color: #800080;">$TmpSite</span>.SystemAccount.UserToken;
&nbsp;
<span style="color: #800080;">$SPSite</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.SharePoint.SPSite<span style="color: #000000;">&#40;</span><span style="color: #800080;">$SiteURL</span><span style="color: pink;">,</span><span style="color: #800080;">$SysToken</span><span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #008000;">#if we want to get additional info about SPSite, code is below</span>
<span style="color: #008000;">#$SPSite.AllWebs | Format-Table Url, ID, Name, AllUsers</span>
&nbsp;
<span style="color: #800080;">$SPWeb</span> <span style="color: pink;">=</span> <span style="color: #800080;">$SPSite</span>.OpenWeb<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #800080;">$SPWeb</span>.AllowUnsafeUpdates <span style="color: pink;">=</span> <span style="color: #800080;">$true</span>;
&nbsp;
<span style="color: #800080;">$MyList</span> <span style="color: pink;">=</span> <span style="color: #800080;">$SPWeb</span>.Lists<span style="color: #000000;">&#91;</span><span style="color: #800000;">&quot;My Sample List&quot;</span><span style="color: #000000;">&#93;</span>;</pre></td></tr></table></div>

<p>Now let&#8217;s get only verified items from our list:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="powershell" style="font-family:monospace;">&nbsp;
<span style="color: #008000;">#note your ending herestring must NOT have a space before it.</span>
<span style="color: #008000;">#also, this &quot;Project Audited&quot; field is really a boolean, </span>
<span style="color: #008000;">#but using the Integer works</span>
<span style="color: #800080;">$CAML</span> <span style="color: pink;">=</span> <span style="color: pink;">@</span><span style="color: #800000;">&quot;
&lt;Where&gt;
     &lt;Eq&gt;
        &lt;FieldRef Name='Project_x0020_Verified' /&gt;
        &lt;Value Type='Integer'&gt;1&lt;/Value&gt;
     &lt;/Eq&gt;
  &lt;/Where&gt;
&quot;</span><span style="color: pink;">@</span>
&nbsp;
<span style="color: #800080;">$SPQuery</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.SharePoint.SPQuery;
<span style="color: #800080;">$SPQuery</span>.Query <span style="color: pink;">=</span> <span style="color: #800080;">$CAML</span>;
&nbsp;
<span style="color: #800080;">$itemCollection</span> <span style="color: pink;">=</span> <span style="color: #800080;">$null</span>;
<span style="color: #800080;">$itemCollection</span> <span style="color: pink;">=</span> <span style="color: #800080;">$MyList</span>.GetItems<span style="color: #000000;">&#40;</span><span style="color: #800080;">$SPQuery</span><span style="color: #000000;">&#41;</span>;
<span style="color: #800080;">$listItem</span> <span style="color: pink;">=</span> <span style="color: #800080;">$null</span>;</pre></td></tr></table></div>

<p>Now the bulk of the work is as follows:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</pre></td><td class="code"><pre class="powershell" style="font-family:monospace;">&nbsp;
<span style="color: #0000FF;">if</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$ItemCollection</span>.Count <span style="color: #FF0000;">-gt</span> <span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$listItem</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$itemCollection</span><span style="color: #000000;">&#41;</span>
   <span style="color: #000000;">&#123;</span>
&nbsp;
        <span style="color: #800080;">$ID</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$listItem</span><span style="color: #000000;">&#91;</span><span style="color: #800000;">&quot;ID&quot;</span><span style="color: #000000;">&#93;</span>
        <span style="color: #800080;">$ProjectVerified</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$listItem</span><span style="color: #000000;">&#91;</span><span style="color: #800000;">&quot;Project Verified&quot;</span><span style="color: #000000;">&#93;</span>
&nbsp;
        <span style="color: #008000;">#now I want to display the roles before I revoke, </span>
        <span style="color: #008000;">#so I can verify the changes visually</span>
        <span style="color: #008000;">#assume in here you already created a new file for </span>
        <span style="color: #008000;">#this process, and gave it a handle $logfile</span>
        <span style="color: #800000;">&quot;Roles BEFORE revoke : &quot;</span>  <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out<span style="color: #FF0000;">-File</span></span> <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800080;">$logfile</span> <span style="color: #008080; font-style: italic;">-Append</span>
        <span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$role</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$roles</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #800080;">$msg</span> <span style="color: pink;">=</span>  <span style="color: #800000;">&quot;Role : ID &quot;</span> <span style="color: pink;">+</span> <span style="color: #800080;">$role</span>.Member.ID.ToString<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">+</span> <span style="color: #800000;">&quot; : Name  &quot;</span> <span style="color: pink;">+</span>  <span style="color: #800080;">$role</span>.Member.Name
            <span style="color: #800080;">$msg</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out<span style="color: #FF0000;">-File</span></span> <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800080;">$logfile</span> <span style="color: #008080; font-style: italic;">-Append</span>
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #008000;">#get the item versions (SPListItemVersionCollection)</span>
        <span style="color: #800080;">$itemVersionCollection</span> <span style="color: pink;">=</span> <span style="color: #800080;">$listItem</span>.Versions;
&nbsp;
        <span style="color: #008000;">#need to check current permissions</span>
        <span style="color: #008000;">#we'll store all Participants in an array first and evaluate later</span>
        <span style="color: #800080;">$Participants</span> <span style="color: pink;">=</span> <span style="color: pink;">@</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
        <span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$currentVersion</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$itemVersionCollection</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #800080;">$SPFieldUserValue</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.SharePoint.SPFieldUserValue<span style="color: #000000;">&#40;</span><span style="color: #800080;">$SPWeb</span><span style="color: pink;">,</span> <span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$currentVersion</span><span style="color: #000000;">&#91;</span><span style="color: #800000;">&quot;Participant&quot;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span>;
            <span style="color: #800080;">$Participants</span> <span style="color: pink;">+=</span> <span style="color: #800080;">$SPFieldUserValue</span>.User.LoginName
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #008000;">#now, we just want to get the unique people from the version, </span>
        <span style="color: #008000;">#so we don't unnecessarily revoke</span>
        <span style="color: #800080;">$Participants</span> <span style="color: pink;">=</span> <span style="color: #800080;">$Participants</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">SELECT</span> <span style="color: #008080; font-style: italic;">-Unique</span>
&nbsp;
        <span style="color: #008000;">#let's now revoke permissions for every participant</span>
        <span style="color: #008000;">#that has ever been involved in any version of this item</span>
        <span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$Participant</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$Participants</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #800080;">$user</span> <span style="color: pink;">=</span> <span style="color: #800080;">$SPWeb</span>.AllUsers<span style="color: #000000;">&#91;</span><span style="color: #800080;">$Participant</span><span style="color: #000000;">&#93;</span>;
            <span style="color: #800080;">$listItem</span>.RoleAssignments.Remove<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#91;</span>Microsoft.SharePoint.SPUser<span style="color: #000000;">&#93;</span><span style="color: #800080;">$user</span><span style="color: #000000;">&#41;</span>;
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #008000;">#confirm</span>
        <span style="color: #800000;">&quot;Roles AFTER revoke : &quot;</span>  <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out<span style="color: #FF0000;">-File</span></span> <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800080;">$logfile</span> <span style="color: #008080; font-style: italic;">-Append</span>
        <span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$role</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$roles</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #800080;">$msg</span> <span style="color: pink;">=</span>  <span style="color: #800000;">&quot;Role : ID &quot;</span> <span style="color: pink;">+</span> <span style="color: #800080;">$role</span>.Member.ID.ToString<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">+</span> <span style="color: #800000;">&quot; : Name  &quot;</span> <span style="color: pink;">+</span>  <span style="color: #800080;">$role</span>.Member.Name
            <span style="color: #800080;">$msg</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out<span style="color: #FF0000;">-File</span></span> <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800080;">$logfile</span> <span style="color: #008080; font-style: italic;">-Append</span>
        <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #000000;">&#125;</span> 
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>And <strong>very very important</strong>, do not forget to <strong>dispose</strong> the SPWeb and SPSite objects you created. It&#8217;s VERY bad to not dispose it, as it will definitely slow down your site, one way or another. Believe me, you don&#8217;t want to learn this the hard way.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$SPWeb</span>.Dispose<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #800080;">$SPSite</span>.Dispose<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #800080;">$TmpSite</span>.Dispose<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</pre></td></tr></table></div>

<p>Done. Happy times.</p>
<p>-<a href="http://www.sqlmusings.com" target="_blank"> Donabel (@sqlbelle)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2010/06/20/programmatically-and-selectively-revoke-sharepoint-item-level-permissions-using-powershell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Leverage 960.gs for Page Layout</title>
		<link>http://blackninjasoftware.com/2010/04/18/leverage-960-gs-for-page-layout/</link>
		<comments>http://blackninjasoftware.com/2010/04/18/leverage-960-gs-for-page-layout/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 18:15:31 +0000</pubDate>
		<dc:creator>shereen</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1046</guid>
		<description><![CDATA[The 960 grid system is a great tool for streamlining your web development effort by providing a convention around the most commonly used dimensions, based on a width of 960 pixels. You can learn more about this system at 960.gs, or you can experiment with the HTML LAYOUT Generator. What I wanted to address in [...]]]></description>
			<content:encoded><![CDATA[<p>The 960 grid system is a great tool for streamlining your web development effort by providing a convention around the most commonly used dimensions, based on a width of 960 pixels. You can learn more about this system at <a href="http://960.gs">960.gs</a>, or you can experiment with the <a href="http://headless-studios.com/960.ls/">HTML LAYOUT Generator</a>.</p>
<p>What I wanted to address in this article was some basic CSS/HTML techniques that integrate the core concepts of the 960 grid system to easily allow you to achieve beautifully laid out web pages.</p>
<p>Here at <a href="http://www.blackninjasoftware.com">Black Ninja</a>, we do a fair bit of site design and so we wanted to build a consistent framework that we use across all our sites. It had to be flexible, easy to understand and powerful for customization.</p>
<p>Let&#8217;s get into some specific examples so that we can see the types of options and flexibility we have when trying to layout our pages and the content within them.</p>
<p>To setup our scenario, what we really wanted with this layout was a centered fixed width design, that when resized, had the effect of expanding the area around our content, but did not alter the content itself. We wanted to avoid fluidity that was hard to predict. We also don’t feel that pages need to necessarily scale for every resolution. A 27” monitor has a lot of real estate for web page viewing, but do users actually use the full screen width when viewing their pages?</p>
<p>For example, compare sites like <a href="http://chapters.indigo.ca">chapters.indigo.ca</a> and <a href="amazon.ca">amazon.ca</a>. Both have the same function, but their layout is entirely different. Amazon has content areas within the center that expand and shrink as you resize your browser window. The Chapters website content is centered and does not alter in anyway. The only thing that changes is the white space around the main content. The Chapters effect is what I’m going to demonstrate here.</p>
<p><a href="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-10.36.44-AM.png"><img src="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-10.36.44-AM-300x264.png" alt="Screen shot 2010-04-18 at 10.36.44 AM" title="Chapters" width="300" height="264" class="alignnone size-medium wp-image-1047" /></a></p>
<p><a href="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-17-at-9.28.54-AM.png"><img src="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-17-at-9.28.54-AM-300x288.png" alt="Screen shot 2010-04-17 at 9.28.54 AM" title="Amazon" width="300" height="288" class="alignnone size-medium wp-image-1051" /></a></p>
<p>Let&#8217;s start by creating a new page, we&#8217;ll call it index.html and we&#8217;ll insert a header, main content area and a footer:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;title&gt;960.gs Demo&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
&lt;div id=&quot;header&quot;&gt;
	this is my header
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;main&quot;&gt;
  this is my main content area
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;footer&quot;&gt;
  this is my footer
&lt;/div&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>If we save the page and open it in a browser, we should see:</p>
<p><a href="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-10.50.02-AM.png"><img src="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-10.50.02-AM-300x227.png" alt="Screen shot 2010-04-18 at 10.50.02 AM" title="Screen shot 2010-04-18 at 10.50.02 AM" width="300" height="227" class="alignnone size-medium wp-image-1058" /></a></p>
<p>Starting with the header, we&#8217;re going to want to center this, and have control over the style of both the centered content and the wrapper content. In order to achieve this, I’m going to add a div inside the header div, and i’m going to apply some styles to both:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;title&gt;960.gs Demo&lt;/title&gt;
&lt;style&gt;
body {
	margin: 0;
	text-align: left;
	padding: 0;
	font: normal 14px/16px &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
	background: #FFF;
	color: #333;
}
&nbsp;
#header {
	background-color:#FFF;
}
&nbsp;
#header-inner {
	margin: 0 auto;
	width: 940px;
	height: 30px;
	padding: 10px 20px;
	background-color:#333;
	color:#FFF;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
&lt;div id=&quot;header&quot;&gt;
	&lt;div id=&quot;header-inner&quot;&gt;
	    this is my header content
	&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;main&quot;&gt;
  this is my main content area
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;footer&quot;&gt;
  this is my footer
&lt;/div&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>So the two key pieces to the above code is the <strong>#header</strong> and <strong>#header-inner</strong> styles. The <strong>margin:0 auto</strong> gives us the effect of centering our div. We set our width of 940px, the height we want to size our header to, and some extra padding so everything isn’t packed so close together. The background colors for both #header and #header-inner are entirely up to you. If you’d like the two to blend, set the colors to be the same. If you want a contrast effect, make them different. And here is the effect:</p>
<p><a href="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.00.52-AM.png"><img src="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.00.52-AM-300x227.png" alt="Second Draft" title="Second Draft" width="300" height="227" class="alignnone size-medium wp-image-1060" /></a></p>
<p>Let&#8217;s make a minor change to the #header class and set the background color to be the same as our #header-inner:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#header</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#333</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Save and reload:</p>
<p><a href="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.05.26-AM.png"><img src="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.05.26-AM-300x227.png" alt="Third Draft" title="Third Draft" width="300" height="227" class="alignnone size-medium wp-image-1062" /></a></p>
<p>So now as the window is resized, the content within the center remains at 940px and won’t change at all.</p>
<p>Let’s apply this same concept to the content area of our site. First, let’s throw some dummy content in there:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;title&gt;960.gs Demo&lt;/title&gt;
&lt;style&gt;
body {
	margin: 0;
	text-align: left;
	padding: 0;
	font: normal 14px/16px &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
	background: #FFF;
	color: #333;
}
#header {
	background-color:#333;
}
&nbsp;
#header-inner {
	margin: 0 auto;
	width: 940px;
	height: 30px;
	padding: 10px 20px;
	background-color:#333;
	color:#FFF;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
&lt;div id=&quot;header&quot;&gt;
	&lt;div id=&quot;header-inner&quot;&gt;
	    this is my header content
	&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;main&quot;&gt;
  &lt;div id=&quot;main-inner&quot;&gt;
		&lt;p class=&quot;lead&quot;&gt;Let's talk about our site a little bit.&lt;/p&gt;
		&lt;div class=&quot;leftcol&quot;&gt;
			&lt;h3&gt;More data&lt;/h3&gt;
			&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;					
		&lt;/div&gt;
		&lt;div class=&quot;rightcol&quot;&gt;
			&lt;h3&gt;Some data&lt;/h3&gt;
			&lt;p&gt;&lt;a href=&quot;http://tenderapp.com&quot;&gt;Duis aute irure dolor&lt;/a&gt; in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
		&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;footer&quot;&gt;
  this is my footer
&lt;/div&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>We should see:</p>
<p><a href="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.07.10-AM.png"><img src="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.07.10-AM-300x227.png" alt="Fourth Draft" title="Fourth Draft" width="300" height="227" class="alignnone size-medium wp-image-1063" /></a></p>
<p>Once the dummy content is in there, we can properly style our main content divs. The left and right col divs both get a width of 470px, had we wanted to make this content area 3 divs instead of two, we could have set them to 300px each.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;title&gt;960.gs Demo&lt;/title&gt;
&lt;style&gt;
body {
	margin: 0;
	text-align: left;
	padding: 0;
	font: normal 14px/16px &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
	background: #FFF;
	color: #333;
}
#header {
	background-color:#333;
}
&nbsp;
#header-inner {
	margin: 0 auto;
	width: 940px;
	height: 30px;
	padding: 10px 20px;
	background-color:#333;
	color:#FFF;
}
&nbsp;
#headline {
	background: #FFF;
}
&nbsp;
#main {
	background-color: #FFF;
}
&nbsp;
#main-inner {
	margin: 0 auto;
	width: 940px;
	height: 450px;
	background-color: #FFF;
}
&nbsp;
div.leftcol {
	width: 470px;
	float: left;
}
&nbsp;
div.rightcol {
	width: 470px;
	float: right;
}
&nbsp;
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
&lt;div id=&quot;header&quot;&gt;
	&lt;div id=&quot;header-inner&quot;&gt;
	    this is my header content
	&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;main&quot;&gt;
  &lt;div id=&quot;main-inner&quot;&gt;
		&lt;p class=&quot;lead&quot;&gt;Let's talk about our site a little bit.&lt;/p&gt;
		&lt;div class=&quot;leftcol&quot;&gt;
			&lt;h3&gt;More data&lt;/h3&gt;
			&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;					
		&lt;/div&gt;
		&lt;div class=&quot;rightcol&quot;&gt;
			&lt;h3&gt;Some data&lt;/h3&gt;
			&lt;p&gt;&lt;a href=&quot;http://tenderapp.com&quot;&gt;Duis aute irure dolor&lt;/a&gt; in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;footer&quot;&gt;
  	this is my footer
&lt;/div&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p><a href="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.09.42-AM.png"><img src="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.09.42-AM-300x227.png" alt="Fifth Draft" title="Fifth Draft" width="300" height="227" class="alignnone size-medium wp-image-1064" /></a></p>
<p>And finally, our footer, we need to style it properly so it takes it’s correct position on the page:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;title&gt;960.gs Demo&lt;/title&gt;
&lt;style&gt;
body {
	margin: 0;
	text-align: left;
	padding: 0;
	font: normal 14px/16px &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
	background: #FFF;
	color: #333;
}
#header {
	background-color: #333;
}
&nbsp;
#header-inner {
	margin: 0 auto;
	width: 940px;
	height: 30px;
	padding: 10px 20px;
	background-color: #333;
	color:#FFF;
}
&nbsp;
#headline {
	background: #FFF;
}
&nbsp;
#main {
	background-color: #FFF;
}
&nbsp;
#main-inner {
	margin: 0 auto;
	width: 940px;
	height: 450px;
	background-color: #FFF;
}
&nbsp;
div.leftcol {
	width: 470px;
	float: left;
}
&nbsp;
div.rightcol {
	width: 470px;
	float: right;
}
&nbsp;
#footer {
  	border-top: 1px solid #dbdbdb;
}
&nbsp;
#footer-inner {
	font-size: 12px;
	margin: 0 auto;
	width: 940px;
	height: 100px;
}
&nbsp;
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
&lt;div id=&quot;header&quot;&gt;
	&lt;div id=&quot;header-inner&quot;&gt;
	    this is my header content
	&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;main&quot;&gt;
  &lt;div id=&quot;main-inner&quot;&gt;
		&lt;p class=&quot;lead&quot;&gt;Let's talk about our site a little bit.&lt;/p&gt;
		&lt;div class=&quot;leftcol&quot;&gt;
			&lt;h3&gt;More data&lt;/h3&gt;
			&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;					
		&lt;/div&gt;
		&lt;div class=&quot;rightcol&quot;&gt;
			&lt;h3&gt;Some data&lt;/h3&gt;
			&lt;p&gt;&lt;a href=&quot;http://tenderapp.com&quot;&gt;Duis aute irure dolor&lt;/a&gt; in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;div id=&quot;footer&quot;&gt;
  	&lt;div id=&quot;footer-inner&quot;&gt;
		this is my footer
	&lt;/div&gt;
&lt;/div&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>And our final result is:<br />
<a href="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.13.02-AM.png"><img src="http://blackninjasoftware.com/wp-content/uploads/2010/04/Screen-shot-2010-04-18-at-11.13.02-AM-300x227.png" alt="Final Draft" title="Final Draft" width="300" height="227" class="alignnone size-medium wp-image-1066" /></a></p>
<p>And that&#8217;s it. I hope that clearly demonstrates how easy it is to layout your pages. Please post a comment if you have any modifications to suggest or questions about the above code.</p>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2010/04/18/leverage-960-gs-for-page-layout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Books &#8211; Which Ones to Buy?</title>
		<link>http://blackninjasoftware.com/2010/04/07/sharepoint-2010-books-which-ones-to-buy/</link>
		<comments>http://blackninjasoftware.com/2010/04/07/sharepoint-2010-books-which-ones-to-buy/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 19:18:20 +0000</pubDate>
		<dc:creator>donabel</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://blackninjasoftware.com/?p=1037</guid>
		<description><![CDATA[As many of you are already aware, SharePoint 2010 is on it&#8217;s way to becoming an official release, May 12, to be exact. There are a slew of books that are in the works and we found ourselves wondering which ones we should pre-order for our already overflowing bookshelves. We order books on an almost [...]]]></description>
			<content:encoded><![CDATA[<p>As many of you are already aware, SharePoint 2010 is on it&#8217;s way to becoming an official release, May 12, to be exact. There are a slew of books that are in the works and we found ourselves wondering which ones we should pre-order for our already overflowing bookshelves.</p>
<p>We order books on an almost weekly basis here at <a href="http://blackninjasoftware.com" target="_blank">Black Ninja</a> so it&#8217;s about that time where we need to prepare for the 2010 releases. Here is a list of the ones we found to be most interesting and that we&#8217;ve already pre-ordered:</p>
<ul>
<li>&#8220;Professional SharePoint 2010 Development&#8221; &#8211; <strong>Tom Rozzo</strong> &#8211; <span style="color: #0000ff;"><strong><span style="color: #ff6600;">April 23</span></strong></span> Release
<ul>
<li>We do a lot of custom SharePoint development here at <a href="http://blackninjasoftware.com">Black Ninja</a>, so this book was a must have. We&#8217;ve attended plenty of Tom&#8217;s sessions at various conferences in the past, and he definitely knows his stuff. The fact that&#8217;s it set to release pretty soon was also a factor; we&#8217;d like to get our hands on a 2010 development book as soon as possible.</li>
</ul>
</li>
<li>&#8220;Professional SharePoint 2010 Administration&#8221; &#8211; <strong><a href="http://www.toddklindt.com/blog/default.aspx" target="_blank">Todd Klindt</a></strong> &#8211; <strong><span style="color: #ff6600;">June 17</span></strong> Release
<ul>
<li>This book is equally important as the development book in our eyes because administration is such a crucial component for any successful SharePoint deployment. We&#8217;re a fan of Todd&#8217;s work and already own <a href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-0470168358.html" target="_blank">Real World SharePoint 2007</a> on which he was a contributing author.</li>
</ul>
</li>
<li>&#8220;Beginning SharePoint 2010 Development&#8221; &#8211; <strong><a href="http://blogs.msdn.com/steve_fox/default.aspx" target="_blank">Steve Fox</a></strong> &#8211; <span style="color: #ff6600;"><strong>May 20</strong></span> Release
<ul>
<li>This was another close release date and having an extra development book around the office wasn&#8217;t going to hurt anything. We&#8217;ve also used Steve Fox&#8217;s articles on more than one occasion, and look forward to reading this book.</li>
</ul>
</li>
<li>&#8220;Professional Workflow 4 in Sharepoint 2010: Real World Business Workflow Solutions&#8221; &#8211; <strong><a href="http://paulgalvin.spaces.live.com/default.aspx" target="_blank">Paul J. Galvin</a></strong> &#8211; <strong><span style="color: #ff6600;">August 3</span></strong> Release
<ul>
<li>Workflows are another huge part of what we do here at Black Ninja. Our aim was to get at least 1 development book, 1 SharePoint Designer book and 1 Workflow book. This was our pick for workflow book.</li>
</ul>
</li>
<li>&#8220;SharePoint Designer 2010 Unleashed&#8221; &#8211; <strong><a href="http://www.kathyhughes.com/default.aspx" target="_blank">Kathy Hughes</a></strong> &#8211; <strong><span style="color: #ff6600;">September 27</span></strong> Release
<ul>
<li>We spend a fair bit of time tinkering with SharePoint Designer as well. We&#8217;ve even taught 5-day classes that cover this product from beginning to end. We are very eager to sit down and play around with some of the real world examples this book promises to cover.</li>
</ul>
</li>
<li>&#8220;SharePoint Developer&#8217;s Guide: SharePoint Foundation 2010&#8243; &#8211; <strong><a href="http://sharepoint.mindsharpblogs.com/Todd/default.aspx" target="_blank">Todd C. Bleeker</a></strong> &#8211; <span style="color: #ff6600;"><strong>June 1</strong></span> Release
<ul>
<li>Todd C. Bleeker wrote this book, enough said.</li>
</ul>
</li>
</ul>
<p>As you can see, we tried to go with books of authors we knew and were fairly active in the community. We&#8217;ve also tried to balance the administration/designer/development roles because we often have to put on all three hats. If anyone else has any books suggestions to go along with this, please contribute to the comments below!</p>
]]></content:encoded>
			<wfw:commentRss>http://blackninjasoftware.com/2010/04/07/sharepoint-2010-books-which-ones-to-buy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

