<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Jonathan Mast's Blog</title><link>http://www.jonathanpmast.com:80/blog</link><description>Jonathan Mast's Blog</description><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/JPMObasNStuff" /><feedburner:info uri="jpmobasnstuff" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>SharePoint App Development Getting Started Resources</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/fDEP_hWVDLE/sharepoint-app-development-getting-started-resources</link><description>&lt;p&gt;I started to put together a parking lot of links and resources for App development in SharePoint.&amp;nbsp; Then I figured that a blog post is as good of a place as any.&lt;/p&gt; &lt;p&gt;MSDN hosts a series of pretty good docs for folks that are basically starting from scratch.&amp;nbsp; It can be found here: &lt;a title="http://msdn.microsoft.com/en-us/library/jj163230(v=office.15)" href="http://msdn.microsoft.com/en-us/library/jj163230(v=office.15)"&gt;http://msdn.microsoft.com/en-us/library/jj163230(v=office.15)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;From there they break the docs down into various sections:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/jj163980(v=office.15)" target="_blank"&gt;Getting Started&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/jj164080(v=office.15)" target="_blank"&gt;Design and Architecture (hosting model, data access, UX)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/jj163794(v=office.15)" target="_blank"&gt;Developing (AuthZ/AuthN, App Manifests, More Data and UX, Licensing)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/jj164070(v=office.15)" target="_blank"&gt;Publishing (more licensing, the SharePoint Store/Marketplace, App Catalogs, Getting Paaaaiiiiiid)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/jj163785(v=office.15)" target="_blank"&gt;Tools (Visual Studio 2012 Goodies)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;These are a good beginning for folks looking at doing app development on the SharePoint platform. To do anything interesting inside of SharePoint, you’ll need to get up to speed on all of the client APIS (&lt;a href="http://msdn.microsoft.com/en-us/library/jj164022(v=office.15)" target="_blank"&gt;REST&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/jj163201(v=office.15)" target="_blank"&gt;JS&lt;/a&gt; and/or .&lt;a href="http://msdn.microsoft.com/en-us/library/fp179912(v=office.15)" target="_blank"&gt;NET&lt;/a&gt; CSOM). Remember, no SharePoint App code runs on the SharePoint servers themselves. Code either runs on the client (JavaScript in the browser) or on a server that you bring to the party.&lt;/p&gt; &lt;p&gt;If you’ve ever looked into app development inside of Facebook, the SharePoint model is very similar. You are either working with pages that are hosted off premise in your environment and have SharePoint-y widgets on them, or you are working with pages hosted in the SharePoint environment that have no access to server side APIs, or you are dropping an App Part onto a SharePoint page which basically surfaces one of the previous two patterns through an iFrame.&lt;/p&gt; &lt;p&gt;I haven’t seen anywhere yet where they really depict a &lt;strong&gt;great&lt;/strong&gt; use case for an app. Most of the conceptual examples that are provided surround apps that bring Bing maps into the browser or office doc. That being said, I’m certain the use case is out there and I’m really interested to see what developers do with this development model. &lt;/p&gt; &lt;p&gt;Between Apps and the advancements in Search I think people will be solving a lot more and different problems on the 2013 platform.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/fDEP_hWVDLE" height="1" width="1"/&gt;</description><pubDate>Thu, 09 Aug 2012 19:53:10 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/sharepoint-app-development-getting-started-resources</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/sharepoint-app-development-getting-started-resources</feedburner:origLink></item><item><title>Rackspace and SharePoint911</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/3LOM9qkAofk/rackspace-and-sharepoint911</link><description>&lt;p&gt;This morning Rackspace announced the acquisition of SharePoint911. Being an employee of SharePoint911 (and now Rackspace), this has a pretty direct effect on me &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.jonathanpmast.com/Media/Default/Windows-Live-Writer/RackSpace--SharePoint911-Yum_BD5/wlEmoticon-smile_2.png"&gt;&lt;/p&gt; &lt;h3&gt;TL.DR: &lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Rackspace Acquired SharePoint911 Today  &lt;li&gt;&lt;a href="http://www.rackspace.com/blog/welcome-sharepoint911-to-the-rackspace-family/" target="_blank"&gt;Here’s a post on Rackspace’s blog about the news.&lt;/a&gt; There’s a lot of good details on how the two companies are coming together on that page (including a FAQ)  &lt;li&gt;&lt;a href="http://www.sharepoint911.com/AboutSP911/Pages/About-Rackspace.aspx" target="_blank"&gt;Here’s a post on the SharePoint911 web site about the news&lt;/a&gt;, FAQ there too  &lt;li&gt;&lt;a href="http://www.rackspace.com/blog/newsarticles/rackspace-acquires-sharepoint911-to-provide-industry-leading-sharepoint-expertise/" target="_blank"&gt;Here’s a press release from Rackspace&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.wsj.com/venturecapital/2012/02/16/rackspace-buys-up-sharepoint911-to-gird-for-cloud-fight/" target="_blank"&gt;Here’s the WSJ Article&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;img src="https://public.bay.livefilestore.com/y1pQeMIhP2rln9YW9o_sMeyJ1rn0jVOA1braiPRcTEauzuJFim879-yEnAT9p6P5UIyp-An8qX9qLw8Afh1dWwQjQ/maddy%20molly%20racker1.jpg?psid=11B137F!532&amp;amp;parid=B41532F7551B137F!531" width="568" height="381"&gt;&lt;/p&gt; &lt;p&gt;For the World of SharePoint, I think this is a pretty big deal. The level of support and service that we’re going to be able to offer our clients (&lt;strong&gt;ALL&lt;/strong&gt; of our clients) is going to be unprecedented. But I’ll let the sales people tell that story.  &lt;p&gt;There’s a few defining qualities of our team that really make me proud to be a part of the SharePoint911 family: we make a personal commitment to quality, the customer, and the community. We all take a great deal of pride in our personal reputation in the professional circles in which we participate, and we pour that pride into our work everyday regardless of the audience. The fact that Rackspace recognized our group as the one team in the world that can help to elevate their SharePoint organization to the level they desire--For me, personally—I take a great deal of pride in the fact that I was (and continue to be) a part of that team.&lt;/p&gt; &lt;p&gt;We first learned about the potential for joining the Rackspace family back in late December, within a few days we had our whole team in San Antonio to check things out. Obviously, it didn’t become official until this morning when the news was released. We’ve been sitting on the secret for an awful long time! &lt;/p&gt; &lt;p&gt;My four year old still isn’t exactly sure what to think about Daddy’s headquarters having a huge playground slide for getting downstairs. I’m excited to now be a part of the Rackspace family with the rest of my SharePoint911 colleagues.&lt;/p&gt; &lt;p&gt;It feels like we’ve been in hurry-up-and-wait mode now for two months. I can’t wait to get moving with the new group &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.jonathanpmast.com/Media/Default/Windows-Live-Writer/RackSpace--SharePoint911-Yum_BD5/wlEmoticon-smile_2.png"&gt;&lt;/p&gt; &lt;p&gt;Now I just need to find more desk space for the office…&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/3LOM9qkAofk" height="1" width="1"/&gt;</description><pubDate>Thu, 16 Feb 2012 21:41:10 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/rackspace-and-sharepoint911</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/rackspace-and-sharepoint911</feedburner:origLink></item><item><title>SharePoint Project Deployment Error: Error occurred in deployment step 'Recycle IIS Application Pool': The local SharePoint server is not available. Check that the server is running and connected to the SharePoint farm.</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/wJ26IOCGjzc/sharepoint-project-deployment-error-error-occurred-in-deployment-step-recycle-iis-application-pool-the-local-sharepoint-server-is-not-available.-check-that-the-server-is-running-and-connected-to-the-sharepoint-farm</link><description>&lt;p&gt;If you build your development environment on a single server then chances are your dev account is an admin (or your developing as a domain admin) and so you’ll never run into this.&amp;nbsp; But if you have a more realistic development environment—which is never a bad thing—you may be google-binging this error and now you’re here &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.jonathanpmast.com/Media/Default/Windows-Live-Writer/SharePoint-Project-Deployment-Error-Err_B29A/wlEmoticon-smile_2.png"&gt;&lt;/p&gt; &lt;p&gt;This shows up because the account under which the VS2010 process is running doesn’t have access to the appropriate databases to install your visual studio 2010 package.&amp;nbsp; Since it is a development environment and we don’t care too much about permissions, I would just go ahead and make sure the user is a local admin on the SharePoint 2010 Server (which you should be developing on) and that your user is a db_owner on both the SharePoint Config and Content Database that you are developing against.&lt;/p&gt; &lt;p&gt;Also make sure VS2010 is running as Administrator.&lt;/p&gt; &lt;p&gt;If you care about permissions then we’ll just pretend you probably shouldn’t actually be doing any development against the server.&amp;nbsp; You can try making sure that your user has the &lt;a href="http://technet.microsoft.com/en-us/library/ee806878.aspx#section3" target="_blank"&gt;appropriate permissions to administer the server via PowerShell&lt;/a&gt;.&amp;nbsp; Even if this doesn’t get your deployment story complete in Visual Studio, it isn’t much to get a PowerShell script together that does the deployment itself.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/wJ26IOCGjzc" height="1" width="1"/&gt;</description><pubDate>Tue, 24 Jan 2012 17:54:50 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/sharepoint-project-deployment-error-error-occurred-in-deployment-step-recycle-iis-application-pool-the-local-sharepoint-server-is-not-available.-check-that-the-server-is-running-and-connected-to-the-sharepoint-farm</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/sharepoint-project-deployment-error-error-occurred-in-deployment-step-recycle-iis-application-pool-the-local-sharepoint-server-is-not-available.-check-that-the-server-is-running-and-connected-to-the-sharepoint-farm</feedburner:origLink></item><item><title>Visual Studio 2010 SharePoint Error:The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/a3EJAVvvBSg/Visual-Studio-2010-SharePoint-ErrorThe-specified-path-file-name-or-both-are-too-long-The-fully-qualified-file-name-must-be-less-than-260-characters-and-the-directory-name-must-be-less-than-248-characters</link><description>&lt;p&gt;I think a lot of people probably see this error at some point in time and they always assume it has something to do with the name of the project or the name of the feature.&amp;#160; What is really happening here is that one of the file names within the package manifest is just too long.&amp;#160; It can be any file… whether its deployed to a Mapped Folder, the Features folder, or whatever.&amp;#160; What I typically do is go into Visual Studio, click on the option to show all files in Solution Explorer:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jonathanpmast.com/Media/Default/Images/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.jonathanpmast.com/Media/Default/Images/image_thumb_2.png" width="416" height="69" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;And then find the pkgobj folder.&amp;#160; From there you can drill into the Debug/Release (depending on your build config) folder and sort through the various xml and element manifests to find some particularly offensive filenames.&amp;#160; A good place to start would be the generated Package_Manifest.xml file.&amp;#160; A lot of times if you have a particularly long project name then you can get stuck with stupid paths deploying to ControlTemplates (visual web part) folders and the like.&lt;/p&gt;  &lt;p&gt;Also, I would always organize your SharePoint projects somewhere not in the default My Documents folder in Visual Studio.&amp;#160; Put them somewhere off of a drive root.&amp;#160; In my VMs, I like to have a separate virtual external drive that I put all of my project work on.&amp;#160; So for example all of my projects come in at something like: F:\projects\&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/a3EJAVvvBSg" height="1" width="1"/&gt;</description><pubDate>Wed, 21 Sep 2011 17:21:39 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Visual-Studio-2010-SharePoint-ErrorThe-specified-path-file-name-or-both-are-too-long-The-fully-qualified-file-name-must-be-less-than-260-characters-and-the-directory-name-must-be-less-than-248-characters</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Visual-Studio-2010-SharePoint-ErrorThe-specified-path-file-name-or-both-are-too-long-The-fully-qualified-file-name-must-be-less-than-260-characters-and-the-directory-name-must-be-less-than-248-characters</feedburner:origLink></item><item><title>Getting Microsoft SharePoint Foundation 2010 (WSS 4.0)</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/3KtkEHzR6to/Getting-Microsoft-SharePoint-Foundation-2010-(WSS-40)</link><description>&lt;div class="wlWriterHeaderFooter" style="float:right; margin:0px; padding:0px 0px 4px 8px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://www.jonathanpmast.com/blog/post/2010/04/28/Getting-Microsoft-SharePoint-Foundation-2010-(WSS-40).aspx";digg_title = "Getting Microsoft SharePoint Foundation 2010 (WSS 4.0)";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;It took me about five minutes to find the link to this download (which was about 5 minutes longer than I expected it to take).&amp;#160; Figured I’d posit it here in case anyone else was looking…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=49c79a8a-4612-4e7d-a0b4-3bb429b46595" target="_blank"&gt;Link Here&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/3KtkEHzR6to" height="1" width="1"/&gt;</description><pubDate>Sun, 28 Aug 2011 08:34:03 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Getting-Microsoft-SharePoint-Foundation-2010-(WSS-40)</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Getting-Microsoft-SharePoint-Foundation-2010-(WSS-40)</feedburner:origLink></item><item><title>Getting REST (ADO.NET Data Services) working in SharePoint 2010 Tech Preview</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/CSXmLkdK8jQ/Getting-REST-(ADONET-Data-Services)-working-in-SharePoint-2010-Tech-Preview</link><description>&lt;p&gt;This post applies to the Tech Preview version of SharePoint 2010, which happens to be the one I'm working with until we get our hands on beta 2.&lt;/p&gt;
&lt;p&gt;In either case (TP or Beta 2) if you want to take advantage of the REST data feeds and/or the Client Object Model, ADO .NET Data Services will need to be installed before* (&amp;lt;-- that asterix means there's a caveat, because I got it to work w/out having it installed before) SharePoint 2010 (either Foundation or Server) is installed.&lt;/p&gt;
&lt;p&gt;The biggest difference b/w the TP and Beta 2 versions of 2010 are the fact that TP targets Data Services CTP1 (from March 2009) and Beta 2 targets CTP2 (From September-ish).&amp;nbsp; I had installed the CTP 2 and then installed SP Foundation 2010, didn't work.&amp;nbsp; Then I had to uninstall ADO.NET DS CTP2, reboot, reinstall CTP1 and run a repair on my SPoint Foundation install.&amp;nbsp; Then it worked!&lt;/p&gt;
&lt;p&gt;&lt;img src="/Media/Default/Images/2009%2f10%2fadonetDSspworking.jpg" alt="" width="657" height="409" /&gt;&lt;/p&gt;
&lt;p&gt;BTW, all of this is running on Windows 7 ;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/CSXmLkdK8jQ" height="1" width="1"/&gt;</description><pubDate>Fri, 26 Aug 2011 11:44:20 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Getting-REST-(ADONET-Data-Services)-working-in-SharePoint-2010-Tech-Preview</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Getting-REST-(ADONET-Data-Services)-working-in-SharePoint-2010-Tech-Preview</feedburner:origLink></item><item><title>Quick Tip: Creating a Custom SharePoint HttpHandler (ASHX) using Replacement Tokens</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/IZmeaq2wVoA/Quick-Tip-Creating-a-Custom-SharePoint-HttpHandler-(ASHX)-using-Replacement-Tokens</link><description>&lt;p&gt;I’ve done this a few times recently, thought it would be good to share.&lt;/p&gt;  &lt;p&gt;Since 2007 we’ve known that there was a handy little pattern for &lt;a href="http://msdn.microsoft.com/en-us/library/bb457204(office.12).aspx" target="_blank"&gt;creating and deploying an HttpHandler within the SharePoint Environment&lt;/a&gt;.&amp;#160; This same pattern holds in 2010.&amp;#160; In this post I’m going to show how to create the httphandler in Visual Studio 2010, and also show you how to wire up the Class attribute in your .ashx file using Visual Studio 2010 replacement tokens.&lt;/p&gt;  &lt;p&gt;In Visual Studio 2010 you would go about this by following theses steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Creating an Empty SharePoint Project &lt;/li&gt;    &lt;li&gt;Add an application page to the project, but give it a .ashx extension &lt;/li&gt;    &lt;li&gt;delete the filename.designer.cs file &lt;/li&gt;    &lt;li&gt;delete all the markup from the .aspx page &lt;/li&gt;    &lt;li&gt;remove the generated Page_Load method from filename.cs codebehind &lt;/li&gt;    &lt;li&gt;make sure filename.cs has using statements for “System.Web” and “System.Runtime.Interopservices” &lt;/li&gt;    &lt;li&gt;Inside Visual Studio go to the Tools menu and choose “Create GUID” &lt;/li&gt;    &lt;li&gt;Select “5. [Guid(xxxx-xxx….)]” &lt;/li&gt;    &lt;li&gt;Select Copy and close the Create GUID window &lt;/li&gt;    &lt;li&gt;Now paste that line right above your public class declaration inside of filename.cs      &lt;br /&gt;At this point your filename.cs code file should look something like:             &lt;pre class="brush: csharp"&gt;[Guid(&amp;quot;61e934b3-6e24-4da4-93f4-0768fb0c468c&amp;quot;)] 
public class handler : IHttpHandler 
{ 
	public bool IsReusable { get { return true; } } 
	public void ProcessRequest(HttpContext context) { } 
} &lt;/pre&gt;

    &lt;br /&gt;

    &lt;br /&gt;Note above something that I believe is important: the GUID you have should be converted to lowercase (select it in Visual Studio and hit ctrl+u)

    
  &lt;/li&gt;

  &lt;li&gt;Now the next step is to wire the markup in the .ashx file up to our class that gets built into the Assembly.&amp;#160; Open up the .ashx file and paste this single line into the file: 
    &lt;br /&gt;

    

    &lt;pre class="brush: xml"&gt;
    &amp;lt;%@ WebHandler 
    Class=&amp;quot;$SharePoint.Type.61e934b3-6e24-4da4-93f4-0768fb0c468c.AssemblyQualifiedName$&amp;quot; 
    %&amp;gt;&lt;/pre&gt;

    &lt;br /&gt;

    &lt;br /&gt;Note above that the GUID in the token should match the GUID on your class declaration from step 10.&amp;#160; This should have been generated during step 9.

    
  &lt;/li&gt;

  &lt;li&gt;
    &lt;p class="brush: xml"&gt;The last step is to make sure that visual studio pays attention to your .ashx files for token replacement.&amp;#160; I could walk you through this step by step but there are clear instruction on MSDN &lt;a href="http://msdn.microsoft.com/en-us/library/ee231545.aspx" target="_blank"&gt;here&lt;/a&gt;&amp;#160; The final section in that document refers to “Adding Extensions to the Token Replacement File Extensions List “.&amp;#160; Follow the steps in that section.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p class="brush: xml"&gt;Now you should be all set with token replacements in your .ashx files!&amp;#160; If you want to test this, right click your project in Visual Studio and choose “Package”.&amp;#160; Navigate in the file system to &amp;lt;Project Directory&amp;gt;\pkg\&amp;lt;Debug|Release&amp;gt;\Project Name\Layouts\&amp;lt;path to ashx file&amp;gt; and open up the .ashx file.&amp;#160; You should see the appropriate class/assembly reference!&lt;/p&gt;

&lt;p class="brush:xml"&gt;Hope it helps!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/IZmeaq2wVoA" height="1" width="1"/&gt;</description><pubDate>Wed, 24 Aug 2011 14:50:29 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Quick-Tip-Creating-a-Custom-SharePoint-HttpHandler-(ASHX)-using-Replacement-Tokens</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Quick-Tip-Creating-a-Custom-SharePoint-HttpHandler-(ASHX)-using-Replacement-Tokens</feedburner:origLink></item><item><title>SharePoint Saturday Columbus Redux and Presentation Follow Up</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/O_BvC5exhvQ/SharePoint-Saturday-Columbus-Redux-and-Presentation-Follow-Up</link><description>&lt;p&gt;I spent a few minutes researching the word “Redux” to try to figure out whether or not the title of this post would be an appropriate use for it.&amp;#160; I think I’m at least pretty close.&amp;#160; It sounded like a cool word, anyway, and I wasn’t really willing to give that up.&lt;/p&gt;  &lt;p&gt;This past Saturday, I had the pleasure of presenting what I termed “Another SharePoint JQuery Session (UX)” at SharePoint Saturday Columbus.&amp;#160; I opened the session by answering (or attempting to answer) the question of Why?—why would we choose to build solutions using JavaScript, JQuery, and JQuery UI?&lt;/p&gt;  &lt;p&gt;I provided some bullets and slides, which you are free to review (PDF attached… somewhere in this post), but it all basically boiled down to the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;JavaScript is pretty powerful, and its here to stay (I like to use the analogy: JavaScript is like a cockroach that’s awesome—it just never seems to die no matter what people try to do to kill it) &lt;/li&gt;    &lt;li&gt;JQuery is a solid, third part library that really increases performance and developer productivity on the web platform.&amp;#160; It gives us a “method to our madness” for implementing large, advanced JavaScript applications. &lt;/li&gt;    &lt;li&gt;&lt;a title="jquery ui is hawt!" href="http://jqueryui.com/" target="_blank"&gt;JQuery UI&lt;/a&gt; is a great solution for doing robust, cross platform User Interfaces.&amp;#160; It also gives us ThemeRoller support so that we can provide one “branding” solution for any JQuery UI implementations &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Next, I gave a brief demo of &lt;a href="http://balsamiq.com/" target="_blank"&gt;Balsamiq&lt;/a&gt; Mockups as I constructed a quick visualization of what our content rotator would look like within a SharePoint web page.&amp;#160; Balsamiq was kind enough to donate a free copy of their tool to my session, which I raffled off after the session broke.&lt;/p&gt;  &lt;p&gt;Next, I rolled into Demo mode and presented two sample solutions using JQuery, JQuery Templates, and JQuery UI.&amp;#160; The first sample was a basic Content Rotator, I broke it down into three steps:&amp;#160; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;First, we showed how the the JQuery UI Tabs control can be used to transform plain old html into a tabbed container that rotated from one selection to the next every five seconds.&amp;#160; We did this in two lines of JavaScript, but had static html in for this demo.&amp;#160; &lt;/li&gt;    &lt;li&gt;Then, we moved on to make the solution more dynamic: instead of transforming static html, we generated the html dynamically using JQuery Templates with some static JavaScript arrays that we initialized in our JavaScript file.&amp;#160; &lt;/li&gt;    &lt;li&gt;The last step, then, was to replace the static arrays with dynamic data that we pulled out of SharePoint.&amp;#160; To solve this solution, we used the JQuery &lt;a href="http://api.jquery.com/jQuery.getJSON/" target="_blank"&gt;$.getJSON&lt;/a&gt; method to retrieve JSON data from a SharePoint Announcements list and transposed it into the same array structure that we had in demo 2.&amp;#160; Suddenly, we had a content rotator that was being driven out of rich html content within SharePoint!&amp;#160; And we did it all in 100% JavaScript. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;In the second demo I showed how, with a little bit of JavaScript and C#, you could build a rich Multiple File Upload Page right into SharePoint.&amp;#160; I referred to it as “the big finish”, though I’m not sure it impressed as much as I would had hoped.&amp;#160; &lt;/p&gt;  &lt;p&gt;For this demo, I utilized the JavaScript component known as &lt;a href="http://plupload.com" target="_blank"&gt;Plupload&lt;/a&gt;.&amp;#160; It is a rich asynchronous File Upload utility that has no server side dependencies.&amp;#160; It provides a JQuery UI widget for ThemeRoller support and is 100% “theme-able” besides. It’s a fabulous tool that I’ve used for multiple client solutions.&amp;#160; &lt;/p&gt;  &lt;p&gt;To make my life easier, I did build an HttpHandler that I deployed the _layouts folder for this solution.&amp;#160; This allowed me to POST each file to a static URL and then let some simple C# code add the file and attach my metadata, this reduced my JavaScript code surface significantly.&amp;#160; Uploading the files using an out of the box component like the SharePoint Web Services or WebDAV can be done, but would take a significant amount of additional JavaScript code and I was trying to minimize my surface area as much as possible for demo purposes.&amp;#160; &lt;/p&gt;  &lt;p&gt;To make the demo a little more fancy, I showed how the &lt;a title="JQuery is teh awesome" href="http://jquery.com" target="_blank"&gt;JQuery&lt;/a&gt; UI AutoComplete widget worked by allowing the user to attach a “Level of Awesome” to each file that they uploaded.&amp;#160; The Awesome Level was automatically tagged onto each document that the user uploaded in a column I created on my Document Library.&lt;/p&gt;  &lt;p&gt;Then I closed up shop and had some great individual questions relating to JQuery and future-proofing the code and exploring the differences between fetching the data asynchronously using the REST APIs, and generating the static html on the server using ASP.NET.&lt;/p&gt;  &lt;p&gt;If you attended my session, I would really love to hear your feedback.&amp;#160; Please comment here, send me an email, tweet me… whatever.&amp;#160; I really enjoyed this session and feel like it’s one that I can make more engaging and interesting.&amp;#160; Also, if you run a User Group or are involved in any other community events, please let me know if you think this would be a worthwhile session.&amp;#160; I would love to submit it anywhere it makes sense.&lt;/p&gt;  &lt;p&gt;The deck and code samples can be downloaded from my SkyDrive, (link below).&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="https://skydrive.live.com/embedicon.aspx/SPSColumbus?cid=b41532f7551b137f&amp;amp;sc=documents" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/O_BvC5exhvQ" height="1" width="1"/&gt;</description><pubDate>Tue, 23 Aug 2011 22:28:01 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/SharePoint-Saturday-Columbus-Redux-and-Presentation-Follow-Up</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/SharePoint-Saturday-Columbus-Redux-and-Presentation-Follow-Up</feedburner:origLink></item><item><title>How To: Remove Orphaned Web Application Pool Objects from Central Admin</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/TWocEOqrVDs/How-To-Remove-Orphaned-Web-Application-Pool-Objects-from-Central-Admin</link><description>&lt;p&gt;First the long story of how I got here, if you don’t care about it, just skip the next three paragraphs, if you don’t know what a paragraph is, just &lt;a href="#howtoremoveorphanedwebapppool"&gt;click here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I came upon a scenario in my development VM where my Visual Studio environment would throw the following error every time it tried to do any type of deployment/retraction from the IDE: “Error Recycling AppPool, Win32: The system cannot find the path specified.”&amp;#160; The odd thing was that it only occurred for a specific web application, VS worked fine deploying/retracting to the other environments.&lt;/p&gt;  &lt;p&gt;After piddling around the internet, I couldn’t find anyone that had this issue.&amp;#160; So I was on my own from a troubleshooting perspective.&amp;#160; Based on the error message, I figured that the issue had to do with the fact that the COM API (which is what VS uses to recycle the App Pool) couldn’t access the given Web Application’s App Pool to recycle it.&amp;#160; So at first I looked into permissions… verified that the Administrator had the appropriate permissions around the Web Application and inside the VM.&amp;#160; No luck.&amp;#160; Then it came to me that I recently switched that Web App to a different Application Pool.&amp;#160; In a development environment, having too many app pools can harm performance, so I recently consolidated.&amp;#160; Low and behold, when I switched the web site in IIS to a different app pool, I also deleted it from IIS.&amp;#160; That would make sense then that it can’t find the path specified… since the Web Application doesn’t exist.&amp;#160; The issue here then was that SharePoint still thought the Web App was associated with an Application Pool that didn’t exist.&amp;#160; I navigated to the Configure Service Accounts Page (Security –&amp;gt; Configure Service Accounts) and found the orphaned Web Application Pool in my drop down list.&amp;#160; Well that’s a bummer.&amp;#160; At this point it was getting way too “Admin-y” for me, and &lt;a href="http://www.amazon.com/Professional-SharePoint-2010-Administration-Klindt/dp/0470533331/ref=sr_1_3?ie=UTF8&amp;amp;qid=1312217018&amp;amp;sr=8-3" target="_blank"&gt;I have some colleagues that know a thing or two about Administering SharePoint.&lt;/a&gt;Fortunately, Todd was able to point me to &lt;a href="http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=276" target="_blank"&gt;his blog post&lt;/a&gt; where he covers this topic in serious detail.&amp;#160; After getting the SPWebApplication pointing to the correct App Pool, I was in good shape.&amp;#160; Visual Studio was able to deploy and retract and do all the cool things that we SharePoint Developers now take for granted.&amp;#160; (Honestly, having it now work was a little like being in the desert without water.)&lt;/p&gt;  &lt;p&gt;For completeness sake, I took a peak at the Configure Service Accounts page again and found that orphaned web application pool was still showing up in there.&amp;#160; So SharePoint didn’t delete it automatically.&amp;#160; &lt;strong&gt;Makes sense, once its deleted there’s no getting it back (this is emboldened on purpose, because I want to make sure you understand what’s happening with the following set of instructions)&lt;/strong&gt;.&amp;#160; And that brings us to the main (and shortest) part of the post…&lt;/p&gt;  &lt;p&gt;&lt;a name="howtoremoveorphanedwebapppool"&gt;The collection of&lt;/a&gt; “Web Application Pool” objects is stored within the Web Application SPWebService object inside the SharePoint APIs.&amp;#160; So to remove one, we need to get to that service, its collection of Application Pools, and delete the one we want.&amp;#160; Powershell, here we come:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jonathanpmast.com/Media/Default/Images/image_1.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.jonathanpmast.com/Media/Default/Images/image_thumb_1.png" width="659" height="234" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Three steps:    &lt;br /&gt;1) Get the WebService for any Web Application, List all of its ApplicationPools, and get the GUID of the one we want to delete.     &lt;br /&gt;2) Same Get-SPWebApplication “blah”.WebService.ApplicationPools construct, except this time we want to call Remove, and pass in the Guid we found on the command before.     &lt;br /&gt;3) Now its deleted!&amp;#160; &lt;strong&gt;FOREVER (see previous emboldened text)&lt;/strong&gt; so make sure you meant to do it!&amp;#160; We confirm this by running the first command over again… you can also navigate to the Configure Service Accounts page and verify that it’s not there anymore.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/TWocEOqrVDs" height="1" width="1"/&gt;</description><pubDate>Mon, 01 Aug 2011 13:10:09 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/How-To-Remove-Orphaned-Web-Application-Pool-Objects-from-Central-Admin</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/How-To-Remove-Orphaned-Web-Application-Pool-Objects-from-Central-Admin</feedburner:origLink></item><item><title>Rendering Display/Html Values for SharePoint List Items</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/ZBeGil8kcpM/Rendering-DisplayHtml-Values-for-SharePoint-List-Items</link><description>&lt;div class="wlWriterHeaderFooter" style="float: right; margin: 0px; padding: 0px 0px 4px 8px;"&gt;
&lt;script type="text/javascript"&gt;// &lt;![CDATA[
digg_url = "http://www.jonathanpmast.com/blog/post/2010/05/11/Rendering-DisplayHtml-Values-for-SharePoint-List-Items.aspx";digg_title = "Rendering Display/Html Values for SharePoint List Items";digg_bgcolor = "#FFFFFF";digg_skin = "normal";
// ]]&gt;&lt;/script&gt;
&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;// &lt;![CDATA[
digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;
// ]]&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;I see this all the time in the forums, and rather than just reply to the thread over and over again with the same content, I&amp;rsquo;m just going to provide some implementation details here.&lt;/p&gt;
&lt;p&gt;Every &lt;a title="MSDN SPField Class" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.aspx" target="_blank"&gt;SPField&lt;/a&gt; class in SharePoint implements a method for rendering a value of that particular field to html and/or display.&amp;nbsp; This functionality is implemented using methods (&lt;a title="MSDN SPField.GetFieldValueAsHtml" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.getfieldvalueashtml.aspx" target="_blank"&gt;GetFieldValueAsHtml&lt;/a&gt; and &lt;a title="MSDN SPField.GetFieldValueAsText" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.getfieldvalueastext.aspx" target="_blank"&gt;GetFieldValueAsText&lt;/a&gt;) found in the base &lt;a title="MSDN SPField Class" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.aspx" target="_blank"&gt;SPField&lt;/a&gt; class, and every class that inherits &lt;a title="MSDN SPField Class" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.aspx" target="_blank"&gt;SPField&lt;/a&gt; in the SharePoint APIs.&amp;nbsp; Because these methods are marked as virtual on the &lt;a title="MSDN SPField Class" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.aspx" target="_blank"&gt;SPField&lt;/a&gt; class, the runtime will always execute the lowest level of inheritance for child classes.&amp;nbsp; (So, since SPFieldDateTime inherits &lt;a title="MSDN SPField Class" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.aspx" target="_blank"&gt;SPField&lt;/a&gt;, if it overrides &lt;a title="MSDN SPField.GetFieldValueAsHtml" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.getfieldvalueashtml.aspx" target="_blank"&gt;GetFieldValueAsHtml&lt;/a&gt; , and you call &lt;a title="MSDN SPField Class" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.aspx" target="_blank"&gt;SPField&lt;/a&gt;.&lt;a title="MSDN SPField.GetFieldValueAsHtml" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.getfieldvalueashtml.aspx" target="_blank"&gt;GetFieldValueAsHtml&lt;/a&gt;, it will call the implementation found in the SPFieldDateTime class.&lt;/p&gt;
&lt;p&gt;Usage of these methods is very simple: you pass a reference to field on a specific &lt;a title="MSDN SPListItem Class" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.aspx" target="_blank"&gt;SPListItem&lt;/a&gt;, and it spits back a string with the appropriate display output.&amp;nbsp; This is an extremely valuable pattern when you are trying to render values from SharePoint Lists in custom web parts and application pages.&lt;/p&gt;
&lt;p&gt;Take, for example, the following console application.&amp;nbsp; It works with a DateTime field on a Tasks list (Due Date) and a calculated column that I created (DueDatePlus5) that simply adds 5 to the Due Date.&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;class Program 
{ 
    static void Main(string[] args) 
    { 
        using (SPSite site = new SPSite(@"http://dev/")) 
        { 
            using (SPWeb web = site.OpenWeb()) 
            { 
                // get the list 
                SPList taskList = web.Lists["Tasks"]; 
                SPListItem item = taskList.GetItemById(1); 
                Output(item, "Due Date"); 
                Console.WriteLine(); 
                Output(item, "DueDatePlus5"); 
                Console.ReadLine(); 
            } 
        } 
    } 

    static void Output(SPListItem Item, string ColumnDisplayName) 
    { 
        // get the field 
        SPField field = Item.Fields[ColumnDisplayName];            
        object value = Item[field.Id]; 
        Console.WriteLine(@"To String: " + value.ToString()); 
        Console.WriteLine(@"GetFieldValueAsHtml: " + field.GetFieldValueAsHtml(value)); 
        Console.WriteLine(@"GetFieldValueAsText: " + field.GetFieldValueAsText(value)); 
    } 
}&lt;/pre&gt;
&lt;p&gt;Here is the output that the program spits out:&lt;/p&gt;
&lt;p&gt;To String: 2/25/2010 12:00:00 AM &lt;br /&gt;GetFieldValueAsHtml: 2/24/2010 &lt;br /&gt;GetFieldValueAsText: 2/24/2010&lt;/p&gt;
&lt;p&gt;To String: datetime;#2010-03-02 00:00:00 &lt;br /&gt;GetFieldValueAsHtml: 3/1/2010 &lt;br /&gt;GetFieldValueAsText: 3/1/2010&lt;/p&gt;
&lt;p&gt;Notice how it formats the data nicely for rendering inside of a web page, particularly for the calculated column.&amp;nbsp; MUCH easier than parsing out the string value.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/ZBeGil8kcpM" height="1" width="1"/&gt;</description><pubDate>Wed, 05 Jan 2011 17:13:18 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Rendering-DisplayHtml-Values-for-SharePoint-List-Items</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Rendering-DisplayHtml-Values-for-SharePoint-List-Items</feedburner:origLink></item><item><title>SharePoint 2010 PowerShell: Upload Files, Preserve Create and Modified Dates</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/vxqRv9YFJhI/SharePoint-2010-PowerShell-Upload-Files-Preserve-Create-and-Modified-Dates</link><description>&lt;div class="wlWriterHeaderFooter" style="float: right; margin: 0px; padding: 0px 0px 4px 8px;"&gt;
&lt;script type="text/javascript"&gt;// &lt;![CDATA[
digg_url = "http://www.jonathanpmast.com/blog/post/2010/09/02/SharePoint-2010-PowerShell-Upload-Files-Preserve-Create-and-Modified-Dates.aspx";digg_title = "SharePoint 2010 PowerShell: Upload Files, Preserve Create and Modified Dates";digg_bgcolor = "#FFFFFF";digg_skin = "normal";
// ]]&gt;&lt;/script&gt;
&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;// &lt;![CDATA[
digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;
// ]]&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;Not sure why one might want to do this.&amp;nbsp; Test data, maybe.&amp;nbsp; Or maybe if you wanted to do a site migration the hard way and write a PowerShell script to migrate the content.&lt;/p&gt;
&lt;p&gt;In any case, a friend of mine recently asked how one might go about uploading files to a SharePoint document library via PowerShell, while maintaining the files Created and Modified date.&amp;nbsp; I don&amp;rsquo;t think he realizes that files inside of SharePoint actually have two Created/Modified dates: one for the file itself (just like it does on a file system) and a second for its metadata (like any other list item).&amp;nbsp; So you actually need to add the file to the folder, then update the SPFile object&amp;rsquo;s list item.&lt;/p&gt;
&lt;p&gt;At any rate, here&amp;rsquo;s the script to do it &lt;span style="text-decoration: line-through;"&gt;(using c# formatting since BEDN doesn&amp;rsquo;t have a PS formatter to my knowledge).&lt;/span&gt; &lt;em&gt;Edit: Syntax Highlighter found powershell :)&lt;/em&gt;&lt;/p&gt;
&lt;pre class="brush:ps"&gt;#Add-PsSnapin Microsoft.SharePoint.Powershell &amp;lt;- load this so you can u se the Get-SPWeb cmdlet
$DLPath = "/Docs"; # The server relative path to the document library
$WebLocation = "http://localhost/"; # The url of the site containing the DL
$FolderPath = "C:\somefiles\"; # Local path to the folder containing files
$username = "mastdemo\administrator"; # username of the user to assign to created/modifed
start-spassignment -global # &amp;lt; - this is so our SPWeb's don't get disposed right away
$web = Get-SPWeb $WebLocation; # get the SPWeb object
$docLibFolder = $web.GetFolder($DLPath); # get the folder in the document library
$files = Get-ChildItem $FolderPath; # get the SPFileInfo objects from the local folder
$spuser = $web.AllUsers[$username]; # get the SPUser from the Site Collection

foreach($file in $files)
{
    "Uploading "+$file.FullName;
    $bytes = Get-Content -Path $file.FullName -Encoding Byte; # Get Byte[] of the file
    if($bytes) #can't upload empty files    
    {
        #using this add method: http://msdn.microsoft.com/en-us/library/ms439259.aspx
        $spfile = $docLibFolder.Files.Add($file,$bytes,$spuser,$spuser, 
					  $file.CreationTime, $file.LastWriteTime);
        
        #synch the items created and modified date
        $spfile.Item["Created"] = $file.CreationTime;
        $spfile.Item["Modified"] = $file.LastWriteTime;
        $spfile.Item.UpdateOverwriteVersion(); 
        # ^ this update command is important, the 
	#standard Update won't let you edit Created/Modified        
        "Succesfully Uploaded "+$file.FullName+" to "+$WebLocation+$spfile.url;
    }
    else
    {
        $file.FullName+" is empty!"
    }
    
}

stop-spassignment -global #&amp;lt;- this is so our SPWeb object gets disposed.
 &lt;/pre&gt;
&lt;p&gt;Comments welcome if you think I should have done something better, or differently.&lt;/p&gt;
&lt;p&gt;If you like you can just download the ps1 file right here:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/vxqRv9YFJhI" height="1" width="1"/&gt;</description><pubDate>Tue, 04 Jan 2011 23:12:02 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/SharePoint-2010-PowerShell-Upload-Files-Preserve-Create-and-Modified-Dates</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/SharePoint-2010-PowerShell-Upload-Files-Preserve-Create-and-Modified-Dates</feedburner:origLink></item><item><title>SharePoint 2010 ECMAScript/Javascript Intellisense in Visual Studio</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/VT5TAdpKJrk/SharePoint-2010-ECMAScriptJavascript-Intellisense-in-Visual-Studio</link><description>&lt;div class="wlWriterHeaderFooter" style="float: right; margin: 0px; padding: 0px 0px 4px 8px;"&gt;
&lt;script type="text/javascript"&gt;// &lt;![CDATA[
digg_url = "http://www.jonathanpmast.com/blog/post/2010/09/07/SharePoint-2010-ECMAScriptJavascript-Intellisense-in-Visual-Studio.aspx";digg_title = "SharePoint 2010 ECMAScript/Javascript Intellisense in Visual Studio";digg_bgcolor = "#FFFFFF";digg_skin = "normal";
// ]]&gt;&lt;/script&gt;
&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;// &lt;![CDATA[
digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;
// ]]&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;If you are a developer and live somewhere not under a rock, you know that Visual Studio now supports intellisense (and has since late in the VS2008 lifecycle).&lt;/p&gt;
&lt;p&gt;This is pretty sweet for developing with frameworks like jQuery and (hence this post) the SharePoint Client Object Models.&amp;nbsp; If you are in an external .js file (which is where I like to put most of my scripts) then you simply need a few lines of code at the top:&lt;/p&gt;
&lt;pre class="brush:xml"&gt;
/// &amp;lt;reference path="C:\Program Files\Common Files\Microsoft Shared\Web 
                        Server Extensions\14\TEMPLATE\LAYOUTS\MicrosoftAjax.js" /&amp;gt;
/// &amp;lt;reference path="C:\Program Files\Common Files\Microsoft Shared\Web 
                        Server Extensions\14\TEMPLATE\LAYOUTS\SP.debug.js" /&amp;gt;
/// &amp;lt;reference path="C:\Program Files\Common Files\Microsoft Shared\Web 
                        Server Extensions\14\TEMPLATE\LAYOUTS\SP.Core.debug.js" /&amp;gt;
/// &amp;lt;reference path="C:\Program Files\Common Files\Microsoft Shared\Web
                        Server Extensions\14\TEMPLATE\LAYOUTS\SP.UI.Dialog.debug.js" /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;This will get you most of the intellisense that you care about&amp;hellip; if something looks like its missing&amp;hellip; make sure you are referencing the correct .js files&amp;hellip; a list for the appropriate ones by class/namespace can be found &lt;a title="ECMAScript Class Library (SharePoint 2010)" href="http://msdn.microsoft.com/en-us/library/ee538253.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cheers.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;edit: fixed the code not showing up&amp;hellip; twice&amp;hellip; ok, I had to break it up on multiple lines so it could be read, but... it works...&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/VT5TAdpKJrk" height="1" width="1"/&gt;</description><pubDate>Tue, 04 Jan 2011 23:09:21 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/SharePoint-2010-ECMAScriptJavascript-Intellisense-in-Visual-Studio</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/SharePoint-2010-ECMAScriptJavascript-Intellisense-in-Visual-Studio</feedburner:origLink></item><item><title>How To: Disable “New Folder” button in the SharePoint 2010 Ribbon via Feature</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/slOiOZAVUiM/How-To-Disable-e2809cNew-Foldere2809d-button-in-the-SharePoint-2010-Ribbon-via-Feature</link><description>&lt;p&gt;I dug through this thanks to a post on the MSDN forums… thought I would copy the results of my findings here.&lt;/p&gt;  &lt;p&gt;Basically the use case is: for some reason you want to enable Folders within lists and document libraries, but maybe you don’t want users to be able to create the Folders.&amp;#160; (We won’t talk about why Folders are generally a bad idea in SharePoint Lists and Document Libraries &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.jonathanpmast.com/Media/Default/Images/wlEmoticon-smile.png" /&gt; ).&amp;#160; But lets say that your folders are being created some other way… programmatically or via Workflow.&lt;/p&gt;  &lt;p&gt;Its pretty simple to write a custom action that removes the new folder button for any List… it looks something like this:&lt;/p&gt;  &lt;pre class="brush: xml"&gt;&amp;lt;CustomAction
    Id=&amp;quot;Remove.ListItem.NewFolder&amp;quot;
    Location=&amp;quot;CommandUI.Ribbon&amp;quot;&amp;gt;
    &amp;lt;CommandUIExtension&amp;gt;
      &amp;lt;CommandUIDefinitions&amp;gt;
        &amp;lt;CommandUIDefinition
          Location=&amp;quot;Ribbon.ListItem.New.NewFolder&amp;quot; /&amp;gt;
      &amp;lt;/CommandUIDefinitions&amp;gt;
    &amp;lt;/CommandUIExtension&amp;gt;
&amp;lt;/CustomAction&amp;gt;&lt;/pre&gt;

&lt;p&gt;But what if you also want to disable the New Folder Button for Document Libraries?&amp;#160; In this case you need a similar custom action as above, but you a different Location and to Register it directly to the Document Content Type:&lt;/p&gt;

&lt;pre class="brush: xml"&gt;&amp;lt;CustomAction
    Id=&amp;quot;Remove.Document.NewFolderButton&amp;quot;
    Location=&amp;quot;CommandUI.Ribbon&amp;quot; RegistrationId=&amp;quot;0x0101&amp;quot; 
    RegistrationType=&amp;quot;ContentType&amp;quot;&amp;gt;
    &amp;lt;CommandUIExtension&amp;gt;
      &amp;lt;CommandUIDefinitions&amp;gt;
        &amp;lt;CommandUIDefinition
          Location=&amp;quot;Ribbon.Documents.New.NewFolder&amp;quot; /&amp;gt;
      &amp;lt;/CommandUIDefinitions&amp;gt;
    &amp;lt;/CommandUIExtension&amp;gt;
&amp;lt;/CustomAction&amp;gt;&lt;/pre&gt;

&lt;p&gt;Note the RegistrationType and RegistrationId—0x0101 is the ContentTypeId for the generic “Document” content type.&lt;/p&gt;

&lt;p&gt;So, if you wanted to disable the New Folder Button for all Lists and Libraries, you’d have an elements definition in your feature like so:&lt;/p&gt;

&lt;pre class="brush: xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;Elements xmlns=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&amp;gt;
  &amp;lt;CustomAction
    Id=&amp;quot;Remove.ListItem.NewFolder&amp;quot;
    Location=&amp;quot;CommandUI.Ribbon&amp;quot;&amp;gt;
    &amp;lt;CommandUIExtension&amp;gt;
      &amp;lt;CommandUIDefinitions&amp;gt;
        &amp;lt;CommandUIDefinition
          Location=&amp;quot;Ribbon.ListItem.New.NewFolder&amp;quot; /&amp;gt;
      &amp;lt;/CommandUIDefinitions&amp;gt;
    &amp;lt;/CommandUIExtension&amp;gt;
  &amp;lt;/CustomAction&amp;gt;
  &amp;lt;CustomAction
    Id=&amp;quot;Remove.Document.NewFolderButton&amp;quot;
    Location=&amp;quot;CommandUI.Ribbon&amp;quot; RegistrationId=&amp;quot;0x0101&amp;quot; 
    RegistrationType=&amp;quot;ContentType&amp;quot;&amp;gt;
    &amp;lt;CommandUIExtension&amp;gt;
      &amp;lt;CommandUIDefinitions&amp;gt;
        &amp;lt;CommandUIDefinition
          Location=&amp;quot;Ribbon.Documents.New.NewFolder&amp;quot; /&amp;gt;
      &amp;lt;/CommandUIDefinitions&amp;gt;
    &amp;lt;/CommandUIExtension&amp;gt;
  &amp;lt;/CustomAction&amp;gt;
&amp;lt;/Elements&amp;gt;&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/slOiOZAVUiM" height="1" width="1"/&gt;</description><pubDate>Mon, 03 Jan 2011 15:23:10 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/How-To-Disable-e2809cNew-Foldere2809d-button-in-the-SharePoint-2010-Ribbon-via-Feature</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/How-To-Disable-e2809cNew-Foldere2809d-button-in-the-SharePoint-2010-Ribbon-via-Feature</feedburner:origLink></item><item><title>Cincy SPUG–Jan 6 Presentation</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/FCTgMf0_t4w/Cincy-SPUGe28093Jan-6-Presentation</link><description>&lt;p&gt;I wanted to get this out before the holiday season start.&amp;#160; But hopefully we see everyone out for the next Cincinnati SharePoint Users Group.&amp;#160; The meeting is on January 6 at Max Train.&amp;#160; I’m really excited about January’s topic as well, we’ll be hearing about SharePoint BI from a close personal friend and former colleague of mine, &lt;a title="BI Nerd" href="http://www.tavislovell.com/" target="_blank"&gt;Tavis Lovell&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Here’s the abstract and speaker bio from the &lt;a href="http://cincyspug.securespsites.com/default.aspx" target="_blank"&gt;CincySPUG Web Site&lt;/a&gt;:&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;SharePoint 2010 and Business Intelligence &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You’ve got data, probably lots and lots of data across multiple systems. Your end users however want timely access to information to make effective decisions and to monitor and analyze performance. Join us for a high level overview and demonstration of what SharePoint 2010 has to offer end users who have Business Intelligence needs. Topics covered will be:&lt;/p&gt;  &lt;p&gt;• Excel Services &lt;/p&gt;  &lt;p&gt;• PowerPivot&lt;/p&gt;  &lt;p&gt;• Visio Services&lt;/p&gt;  &lt;p&gt;• Reporting Services (SharePoint Integrated Mode)&lt;/p&gt;  &lt;p&gt;• Performance Point Dashboards&lt;/p&gt;  &lt;p&gt;Presenter: Tavis Lovell   &lt;br /&gt;Tavis Lovell is a Practice consultant with Ascendum Solutions, specializing in SQL Server (Integration Services, Reporting Services, Analysis Services) and database design related to transactional or BI implementations on the Microsoft stack. Tavis is also involved with using SharePoint 2010 for content delivery as it relates to Business Intelligence. When he’s not trying to help the world make better decisions, he spends his time either pretending he’s Jimi Hendrix, or falling down the sides of mountains on a snowboard&lt;/p&gt;  &lt;p&gt;   &lt;hr /&gt;&lt;/p&gt;  &lt;p&gt;I look forward to seeing everyone there for some pizza and learnin’!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/FCTgMf0_t4w" height="1" width="1"/&gt;</description><pubDate>Wed, 29 Dec 2010 23:37:49 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Cincy-SPUGe28093Jan-6-Presentation</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Cincy-SPUGe28093Jan-6-Presentation</feedburner:origLink></item><item><title>Obligatory Happy Holiday Post (with some large-ish announcements)</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/Mc0IFb1tLXQ/Obligatory-Happy-Holiday-Post-(with-some-large-ish-announcements)</link><description>&lt;p&gt;I love the Holiday season.&amp;nbsp; I think I especially love the emotional aspect of the December holidays.&amp;nbsp; I have two young children and this was really the first year that my oldest (3.5) really &amp;ldquo;got&amp;rdquo; the whole Santa and gift giving dynamic.&amp;nbsp; It was the best Christmas morning I&amp;rsquo;ve ever had in my life.&amp;nbsp; I&amp;rsquo;m a little sad that I have to wait another 365 days until the next one.&lt;/p&gt;
&lt;p&gt;I think its a pretty human thing to do: always look forward to the &amp;ldquo;next thing&amp;rdquo;.&amp;nbsp; To me, this feels a little bit like wishing your life away&amp;mdash;sometimes it&amp;rsquo;s hard to slow down and really embrace the experience of Right Now.&amp;nbsp; That&amp;rsquo;s the other reason that I really enjoy the Holiday season: it&amp;rsquo;s always a time of sensible Reflection and anticipatory New Beginnings.&lt;/p&gt;
&lt;p&gt;That was the segue into a couple/few announcements:&lt;/p&gt;
&lt;p&gt;#1: In a couple of days I will be joining &lt;a href="www.sharepoint911.com" target="_blank"&gt;SharePoint 911&lt;/a&gt; as SharePoint consultant.&amp;nbsp; It was a difficult decision to move on from my current employer here in the Greater Cincinnati Area, Ascendum Solutions.&amp;nbsp; Ascendum is an awesome organization to work for&amp;mdash;I enjoyed the hell out of&amp;nbsp; my time there.&amp;nbsp; The experience and education I walked away with there is indispensable.&amp;nbsp; At the same time, &lt;a href="www.twitter.com/shanescows" target="_blank"&gt;Shane&lt;/a&gt; (who runs SharePoint911 with his wife) and I have been friends for a long time (even before he was a SharePoint rock star), and the &lt;a href="http://www.sharepoint911.com/OurTeam/Pages/TheTeam.aspx" target="_blank"&gt;team he&amp;rsquo;s put together at SharePoint911&lt;/a&gt;&amp;nbsp;is second to none.&amp;nbsp; I can&amp;rsquo;t wait to contribute to this organization.&amp;nbsp; This leads me to&amp;hellip;&lt;/p&gt;
&lt;p&gt;#2: I should be held accountable if this space isn&amp;rsquo;t much more active in the very near future.&amp;nbsp; One of the things that so attracted to work with SharePoint911 was the organization&amp;rsquo;s commitment to the technical (specifically SharePoint) community.&amp;nbsp; So I expect to much more active here, as well as the other common haunts of the SharePoint community.&amp;nbsp; I have also been taking an active leadership role at the Cincinnati SharePoint User Group (web site in transition and URL forthcoming) as the Membership Coordinator.&amp;nbsp; The technical community is truly something I&amp;rsquo;m passionate about, and have been for a long time, and the opportunity to become even more active in that respect is one in which I hope to take full advantage.&lt;/p&gt;
&lt;p&gt;#3: Ironically, this blog will probably contain a little more than just SharePoint.&amp;nbsp; If you know me or have seen me speak/write in other venues, you know that I have a little bit of a propensity for development activities.&amp;nbsp; For me, this is mostly a learning exercise.&amp;nbsp; See, I don&amp;rsquo;t particularly &lt;em&gt;like&lt;/em&gt; to develop, it just happens that I learn the most when I&amp;rsquo;m digging into the details of the SharePoint APIs.&amp;nbsp; I often wonder how many people realize that about 95% of SharePoint runs on the same object model and API code that is exposed to the SharePoint Developers and Admin (yes, I wrote Admin&amp;mdash;Powershell, remember?).&amp;nbsp; Expect to see a lot of "SharePoint + 1" here.&amp;nbsp; Silverlight, JQuery, etc.&lt;/p&gt;
&lt;p&gt;Also, since I hate having multiple of just about anything, I won&amp;rsquo;t be housing a separate &amp;ldquo;personal&amp;rdquo; web site--I will be paring down the categories on this blog (going from umpteen to, um, three I think).&amp;nbsp; That way if you want to ignore my personal mumbo jumbo, like how awesome my kids are :) you can just follow the technical categories.&amp;nbsp; I use twitter primarily for reach into the technical community, so you will find my technical post/articles blasted there.&lt;/p&gt;
&lt;p&gt;I think that&amp;rsquo;s it for now, here&amp;rsquo;s a summary:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Holidays = Awesome&lt;/li&gt;
&lt;li&gt;Me = On SharePoint911 Team (New &amp;amp; Awesome)&lt;/li&gt;
&lt;li&gt;This blog = More active (&amp;amp; Awesome, hopefully)&lt;/li&gt;
&lt;li&gt;This blog = some rehashing.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.twitter.com/jonathanpmast" target="_blank"&gt;Follow me on twitter&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Be Sure to Drink your Ovaltine.&amp;nbsp; Just kidding.&amp;nbsp; Watched &lt;em&gt;A Christmas Story&lt;/em&gt; like 5 times today.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Edit: wife read this and pointed out some data ommisions (like a reference to her, which is solved with this edit comment) and some grammar mistakes.&amp;nbsp; Fixed, I think.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/Mc0IFb1tLXQ" height="1" width="1"/&gt;</description><pubDate>Tue, 28 Dec 2010 17:36:29 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Obligatory-Happy-Holiday-Post-(with-some-large-ish-announcements)</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Obligatory-Happy-Holiday-Post-(with-some-large-ish-announcements)</feedburner:origLink></item><item><title>Upgrade to 2.0 Complete… Comments Enabled</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/QlxFbkbjY7k/Upgrade-to-20-Completee280a6-Comments-Enabled</link><description>&lt;div class="wlWriterHeaderFooter" style="float:right; margin:0px; padding:0px 0px 4px 8px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://www.jonathanpmast.com/blog/post/2010/12/12/Upgrade-to-20-Completee280a6-Comments-Enabled.aspx";digg_title = "Upgrade to 2.0 Complete… Comments Enabled";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;That took less time then I thought it would… &lt;/p&gt;  &lt;p&gt;:)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/QlxFbkbjY7k" height="1" width="1"/&gt;</description><pubDate>Tue, 14 Dec 2010 05:48:11 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Upgrade-to-20-Completee280a6-Comments-Enabled</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Upgrade-to-20-Completee280a6-Comments-Enabled</feedburner:origLink></item><item><title>Blog cleanup in Progress</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/YWbdvbRCHrs/Blog-cleanup-in-Progress</link><description>&lt;div class="wlWriterHeaderFooter" style="float:right; margin:0px; padding:0px 0px 4px 8px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://www.jonathanpmast.com/blog/post/2010/12/11/Blog-cleanup-in-Progress.aspx";digg_title = "Blog cleanup in Progress";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;I’ll apologize to anyone that finds there way to this blog.&amp;#160; If you follow my (or SharePoint 911’s) twitter feed, you’ll know that I’ve got some changes coming up that will make this space (I hope) a little more managed.&lt;/p&gt;  &lt;p&gt;So I’m trying to get it cleaned up and/or ready to go.&amp;#160; I will be moving to Blog Engine .NET 2.0 in the near future.&amp;#160; If you commented on any of my posts: I’m sorry, but your comment was lost long with the other 25000 of spam I blanket deleted out of the database.&amp;#160; Comments have also been disabled until I find a Captcha or some other solution to filter out the blog engine .net mega spam.&amp;#160; I was getting submitted comments almost as quickly as I could delete them.&amp;#160; Which is freaking annoying.&lt;/p&gt;  &lt;p&gt;I’ve also noticed that my categories are getting a little out of control.&amp;#160; I’ll be pruning that list a bunch in the short term.&amp;#160; And relying a great deal more on tags.&amp;#160; Just an FYI.&amp;#160; :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/YWbdvbRCHrs" height="1" width="1"/&gt;</description><pubDate>Tue, 14 Dec 2010 05:47:16 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Blog-cleanup-in-Progress</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Blog-cleanup-in-Progress</feedburner:origLink></item><item><title>SharePoint Designer -- Failed to Load Workflow (re-post)</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/zrioicRo0Xk/SharePoint-Designer-Failed-to-Load-Workflow</link><description>&lt;p&gt;&lt;em&gt;Repost from my March 7, 2008, my old blog that was attacked and conquered by spam.&amp;#160; I’ll do one of these every day or two while I continue to progress some new content around SharePoint and Silverlight.&amp;#160; Stay tuned!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Today an associate and I struggled through an extremely frustrating problem with SharePoint Designer.&amp;#160; For some reason whenever he opened SPD and tried to create a new workflow on any portal, the application failed to start and would throw the mentioned error: &amp;quot;Failed to Load Workflow&amp;quot;.&amp;#160; Verbose as usual.&lt;/p&gt;  &lt;p&gt;The typical solution found via a cursory Google search offered a solution that involved deleting the 12.x.x.x folder out of the SharePoint designer folder within the user's application data.&amp;#160; This did not resolve our problem, which was disappointing.&lt;/p&gt;  &lt;p&gt;The solution, which I realized way too late, had to do with trust level found in the .NET 2.0 Configuration (the MMC snap-in, found in Administrative Tools).&amp;#160; We go .NET Framework 2.0 Configuration &amp;gt; Runtime Security Policy.&amp;#160; Choose &amp;quot;Adjust Zone Security&amp;quot;.&amp;#160; Went to Intranet, pushed the slider up to full trust.&amp;#160; Restarted SPD, worked.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blu1.storage.msn.com/y1p5j2w8jDHBg4nY9vVGf0bRsm2ZCzLTPkI_q9ocLpJolCfLQ5LzD4JBVYXPvV4Om4XCiH6fPoP3GJ8QnKFvu64yTa17r85pErY?PARTNER=WRITER"&gt;&lt;img border="0" alt="security_adjustment_spd" align="left" src="http://blu1.storage.msn.com/y1p5j2w8jDHBg5DqIzGA-DcUyhomezo6Ml9pEcmPy7Nix84v4C60XKHuPXdMm_NIsiuAh5oGrmCaKSg5h1ghQenadOWtdSenUut?PARTNER=WRITER" width="330" height="312" /&gt;&lt;/a&gt; I'm assuming this has to do with the fact that the User Settings are being redirected to an file share elsewhere on the network and when SPD tries to hit that proxy assembly inside the 12.x.x.x folder, it wasn't getting the access that it needed.&amp;#160; This was pretty frustrating, since my associate was having this problem and it was not present at all for any of the other three members of the team using SPD (including myself).&amp;#160; It wasn't until the very last minute that I realized we had made this configuration change in the .NET 2.0 Configuration MMC for the other users.&amp;#160; Argh, frustrating, but at least its another hurdle I won't have to bother jumping next time!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/zrioicRo0Xk" height="1" width="1"/&gt;</description><pubDate>Thu, 09 Dec 2010 17:18:59 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/SharePoint-Designer-Failed-to-Load-Workflow</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/SharePoint-Designer-Failed-to-Load-Workflow</feedburner:origLink></item><item><title>Solution Package Retraction and SharePoint Feature Receiver: Uninstalling Event (Debugging)</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/sTCFZV97RWc/Solution-Package-Retraction-and-SharePoint-Feature-Receiver-Uninstalling-Event-(Debugging)</link><description>&lt;div class="wlWriterHeaderFooter" style="float:right; margin:0px; padding:0px 0px 4px 8px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://www.jonathanpmast.com/blog/post/2010/02/01/Solution-Package-Retraction-and-SharePoint-Feature-Receiver-Uninstalling-Event-(Debugging).aspx";digg_title = "Solution Package Retraction and SharePoint Feature Receiver: Uninstalling Event (Debugging)";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;One of the pet projects that I’m working on involves provisioning a document library to the RootWeb of a Site Collection and provisioning an Excel document to use as a template for some OpenXML SDK work I’m messing with (future post on this coming).&amp;#160; Anyway, the document library is really there just to provide a single xslx file as a template for some other code in the feature; so if the feature gets uninstalled, I want the document library to get uninstalled (deleted).&amp;#160; Deleting the document library is pretty straightforward, no problems there.&amp;#160; &lt;/p&gt;  &lt;p&gt;The problem comes in when as administrator chooses to just retract/delete a solution package prior to deactivating the feature.&amp;#160; In this case features are never actually deactivated, they’re just deleted.&amp;#160; This means that the Deactivating event will never fire on your SPFeatureReceiver class.&amp;#160; The Uninstalling event will fire, however there’s no access to the SPFeature.Parent from the SPFeatureReceiverProperties object (its null)… which makes sense, its being retracted for the entire web application, not just the particular site/web.&amp;#160; For those curious, if you want to debug the Uninstalling event: 1) it fires when the solution package is retracted (not removed) and 2) you need to attach to the owstimer.exe process, not w3wp.&amp;#160; If you don’t see owstimer.exe in the attach to processes window, you need to check the box that says “Show Processes from All Users”&lt;/p&gt;  &lt;p&gt;A solution for force deactivating a feature can be found at this &lt;a href="http://social.msdn.microsoft.com/forums/en-US/sharepointdevelopment/thread/bf966167-8075-4b25-b627-ca6aeb34103a/" target="_blank"&gt;post&lt;/a&gt; on the msdn forums; though I tend to disagree with MSFT on this in that I think you should just recommend users to follow best practices and deactivate features manually prior to solution package retraction.&amp;#160; This is where the &lt;a href="http://channel9.msdn.com/learn/courses/SharePoint2010Developer/SharePoint2010DeveloperRoadmap/SharePoint2010IntegrationwithPowerShell/" target="_blank"&gt;PowerShell integration for SharePoint 2010&lt;/a&gt; will really come in handy as the cleanup code found in that post should really be in a Command Line App or, better yet, a Powershell integration.&lt;/p&gt;  &lt;p&gt;Sidebar: I’ve turned comment moderation on and I’ll be honest that I don’t have a ton of time to actually moderate them.&amp;#160; I do love comments, but in the meantime if you have any questions about stuff I put on this space, feel free to email me at jpm at jonathanpmast dot com.&amp;#160; Apparently the spammer are better at indexing my site than search engines… (prolly my fault at not being an SEO samurai)&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Edit: grammar, spelling fail&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/sTCFZV97RWc" height="1" width="1"/&gt;</description><pubDate>Fri, 10 Sep 2010 17:21:38 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Solution-Package-Retraction-and-SharePoint-Feature-Receiver-Uninstalling-Event-(Debugging)</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Solution-Package-Retraction-and-SharePoint-Feature-Receiver-Uninstalling-Event-(Debugging)</feedburner:origLink></item><item><title>Weird Device Icon for my Jump Drive</title><link>http://feedproxy.google.com/~r/JPMObasNStuff/~3/a3TP3gFwASA/Weird-Device-Icon-for-my-Jump-Drive</link><description>&lt;p&gt;So today I was certain that I was attacked by some weird computer virus.&amp;nbsp; I was trying to map a network printer at our office and I was looking at my devices and saw this:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="/Media/Default/Images/2009%2f10%2fwtf_usb_jumpdrive.jpg" alt="" width="591" height="386" /&gt;&lt;/p&gt;
&lt;p&gt;And as you might expect, it completely freaked me out.&amp;nbsp; Turns out I had my USB drive plugged in (one of those Attache` 8GB drives).&amp;nbsp; And this thing shows up as a device in there.&lt;/p&gt;
&lt;p&gt;Blood pressure returns to normal...&lt;/p&gt;
&lt;p&gt;&lt;em&gt;edit: i spel gud&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JPMObasNStuff/~4/a3TP3gFwASA" height="1" width="1"/&gt;</description><pubDate>Fri, 10 Sep 2010 17:21:18 GMT</pubDate><guid isPermaLink="false">http://www.jonathanpmast.com:80/blog/Weird-Device-Icon-for-my-Jump-Drive</guid><feedburner:origLink>http://www.jonathanpmast.com:80/blog/Weird-Device-Icon-for-my-Jump-Drive</feedburner:origLink></item></channel></rss>
