<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Fear and Loathing : SharePoint</title><link>http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx</link><description>Tags: SharePoint</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>SharePoint Wednesday CodePlex Roundup #4</title><link>http://weblogs.asp.net/bsimser/archive/2009/12/31/sharepoint-wednesday-codeplex-roundup-4.aspx</link><pubDate>Thu, 31 Dec 2009 07:57:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7296029</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7296029</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7296029</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/12/31/sharepoint-wednesday-codeplex-roundup-4.aspx#comments</comments><description>&lt;p&gt;When last we met the Swine Trek, that scientific genius Dr. Strangepork was trying to fix Captain Link Hearthrobs lighter. Oh wait, wrong show. Sorry about that. &lt;/p&gt;  &lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/blog92pigsinspace_60B2F951.jpg" style="border-width: 0px; display: inline;" title="blog-92-pigs-in-space" alt="blog-92-pigs-in-space" mce_src="http://weblogs.asp.net/blogs/bsimser/blog92pigsinspace_60B2F951.jpg" border="0" height="301" width="404"&gt; &lt;/p&gt;  &lt;p&gt;This is actually the last installment of the SharePoint Wednesday CodePlex Roundup series for 2009. Yes, I skipped last week as I had to “family” things. Go figure. So this last installment is a doozy and full of fun frolicking women and gratuitous reviews of 15 new CodePlex projects for the last two weeks. Blast off!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Discussion Column for MOSS 2007&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Selyutin Nickolay is back again this week (as he seems to be every week) with a new feature. This time it’s another field type for tracking comments. Again, a real winner here and something useful for anyone's SharePoint setup.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/discussion5_584F23FA.png" style="border: 0px none ; display: inline;" title="discussion5" alt="discussion5" mce_src="http://weblogs.asp.net/blogs/bsimser/discussion5_584F23FA.png" border="0" height="215" width="404"&gt; &lt;/p&gt;  &lt;p&gt;&lt;i&gt;What it does&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;It’s a custom field type that gets added to any list or library and allows users to enter comments. Not only can you enter regular comments but it also supports rich text formatting (if you configure the column that way) so you can add bold highlighting and rich formatting to your comments. It tracks the comment and keeps a running total of it so each time you edit the list item you can add new comments. Comments are tagged with the users name and a time/date stamp. When the comment column is added to a view, you can hover over the field and display a tooltip of the comments.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;How it works&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Simple custom field type. It’s very similar in nature to the comments field that you find in Issue lists where you can add comments to an item each time you edit it (I wouldn’t be surprised if he just modeled it on that and made some changes to be more UI friendly, like adding rich text support).&lt;/p&gt;  &lt;p&gt;Like any custom field you create the template in an .ascx file that’s used during rendering on the Create Column page of a list (this file is deployed to the CONTROLTEMPLATES folder and automatically marked as safe). The rest is made up of an XML markup file that describes the field (and includes the rendering of it in list views) and an assembly to control the field itself. As the code is compiled and there’s Russian resources in the .DLL file I’m unable to browse the source and the source code for the field isn’t available. However it does work as designed and I haven’t seen any ill-effects from it.&lt;/p&gt;  &lt;p&gt;The tooltip uses Walter Zorn’s JavaScript Tooltip (&lt;a href="http://www.walterzorn.com" title="http://www.walterzorn.com" mce_href="http://www.walterzorn.com"&gt;http://www.walterzorn.com&lt;/a&gt;) but I do caution you this is a hefty .js file to load so I wouldn’t be putting this column on high-traffic sites. Combined with SharePoint and any other JavaScript you might have going, the tooltip code (weighing in at 37k) is a bit of a load.&lt;/p&gt;  &lt;p&gt;Like any controls or web parts I review here, I do actually run them through &lt;a href="http://code.msdn.microsoft.com/SPDisposeCheck" mce_href="http://code.msdn.microsoft.com/SPDisposeCheck"&gt;SPDisposeCheck&lt;/a&gt; just to see if there’s any glaring errors or issues. There are 4 warnings for SPWeb objects not released that came back but checking the column in a test environment didn’t seem to confirm that (SPDisposeCheck can create false positives depeneding on how the objects are created). Without the source code I can’t confirm these but they don’t appear to be manifesting themselves in the column from what I can tell.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Bottom Line&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Another great component from Mr. Nickolay. This is the third for him in a row and they’ve all been solid and useful. I do find it bothersome when people list source code as the type of archive but when you download it it’s just the WSP file and setup program. So there’s no source code available for this. Hopefully he’ll change this habit and start checking in the source code (or at least provide a zip file of it). In addition, I admire the fact he makes use of already existing JavaScript rather than re-inventing the wheel (like the tooltips) but I would recommend either scaling this practice down or at the very least compressing the payload using a JavaScript compressor like the one at &lt;a href="http://javascriptcompressor.com/" title="http://javascriptcompressor.com/" mce_href="http://javascriptcompressor.com/"&gt;http://javascriptcompressor.com/&lt;/a&gt;. It won’t lighten the load on the rendering of the page (the same amount of JavaScript still has to be interpreted and run) but at least it lightens the download. Still, the web parts and custom field types are a welcome change and definitely something to add to your SharePoint setup.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mossdiscussion.codeplex.com/" mce_href="http://mossdiscussion.codeplex.com/"&gt;Project Link&lt;/a&gt;&amp;nbsp; &lt;br&gt;&lt;a href="http://mossdiscussion.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles" mce_href="http://mossdiscussion.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Fusion Charts for SharePoint&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This zipped by my radar a few days ago via Twitter and it looked pretty slick. Then I found out it was a CodePlex project. Bonus! Even better, it made this weeks review. Sweet. Fusion Charts for SharePoint (FCS) provides a set of 22 different charts (2D &amp;amp; 3D) that integrates easily into your SharePoint environment (WSS 3.0 or MOSS 2007). FCS provides you a powerful way to display very nice looking charts into SharePoint with minimum effort (and when they say minimum they really mean it!).&lt;/p&gt;  &lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/StackedColumn3D_695351DD.png" style="border: 0px none ; display: inline;" title="StackedColumn3D" alt="StackedColumn3D" mce_src="http://weblogs.asp.net/blogs/bsimser/StackedColumn3D_695351DD.png" border="0" height="297" width="404"&gt; &lt;/p&gt;  &lt;p&gt;&lt;i&gt;What it does&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;It provides a set of 22 charts in Flash format and a web part that will read data for the chart from a SharePoint list (any list) or an XML file (there’s a separate web part for each). There’s no coding required to get the data from a SharePoint list or XML file into the Chart Web Parts provided. The download includes bar, pie, line, area, and stacked charts (and others) in 2D and 3D. Each chart has it’s set of animation when the page load so some grow the bars visually which is a nice effect. The charts are not interactive (other than changing Flash settings).&lt;/p&gt;  &lt;p&gt;&lt;i&gt;How it works&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Fusion provides the charts via .swf files that are stored on the file system in the feature directory. The web parts will hook up the data from a SharePoint list or XML file and feed it to the Flash files. Flash knows nothing about SharePoint (and well it should) so the data is converted to XML that it understands. There’s a nice little class you might want to take a look at in the source code called ListToXmlConverter. It creates a well formatted XML string from a list. While you can’t use the XML string for any other application (it’s specific to Fusion and the Flash files) it does show you how you might convert a list to XML for use say in another application or use (something that can consume XML but not understand SharePoint list data like SQL Server Reporting Services [minus the SharePoint addon]). Useful.&lt;/p&gt;  &lt;p&gt;Once the data is mined from the XML file or SharePoint List, it’s passed onto the Flash file for it to understand and everything is just rendered in HTML and JavaScript tags out to the browser.&lt;/p&gt;  &lt;p&gt;You are limited to the set of charts they provide because the options in the Web Part will build the path and required data for the Flash files based on those options. Of course it being open source you’re free to add new SWF files and additional code to support new charts (and perhaps the Fusion guys will crank out new charts for you in future releases). There’s no source code for the existing SWF files so you’re on your own creating new charts but check out &lt;a href="http://teethgrinder.co.uk/open-flash-chart/" mce_href="http://teethgrinder.co.uk/open-flash-chart/"&gt;Open Flash Chart&lt;/a&gt; if you’re interested in getting started.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Bottom Line&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Update: I was in a cranky mood when I wrote the original comparison of ChartPart and Fusion and didn't mean to offend the ChartPart author, &lt;a href="http://www.wictorwilen.se/" mce_href="http://www.wictorwilen.se/"&gt;Wictor Wilen&lt;/a&gt;. Apologies for that Wictor. I've since updated the next section. &lt;br&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;There was a small web part released a few months ago on CodePlex called &lt;a href="http://chartpart.codeplex.com/" mce_href="http://chartpart.codeplex.com/"&gt;ChartPart&lt;/a&gt;. I thought it rocked because it used the ASP.NET 3.5 charting controls and made it easy to create nice looking charts. Fusion visually trumps ChartPart but that's mostly because of the Flash aspect. Comparing the install ChartPart did require a few steps (MSChart.exe, mscharting solution WSP, ChartPart solution) and it took a few tries to get it working. When you do get it installed it works and is more configurable than Fusion. If you're trying to get ChartPart to look like Fusion, it can be done and you get pretty close but on it's own ChartPart works well for charting solutions against lists and has some nice added features like list and field dropdowns (rather than having to enter the names yourself which can lead to typos).&lt;br&gt;&lt;/p&gt;  &lt;p&gt;You might argue that ChartPart is better because it use ASP.NET Charting so is a full .NET solution and Fusion uses Flash. This is true so that’s a choice you have to make? Do you want Flash technology on your internal site? Either project works well. Fusion is pretty sexy because of all the charts you get OOTB. As these are Flash based, it would have been nice to have some interaction with them (for example being able to change the chart type dynamically without having to edit the web part settings).&lt;/p&gt;  &lt;p&gt;All in all a nice package if you get past the Flash aspect. A simple installer that works and some documentation to help you start creating charts from SharePoint data or XML files with minimal effort (5 minutes for me with a blank site and the package installed). The fact that they’re simple to hook up to any SharePoint list makes it a bonus because you can unleash this on your savvy users who like pretty charts and not have to resort to building them custom solutions or having them take SharePoint data out to Excel or Access. However the options are limited with the charts so don’t expect this to replace a chart you can build in Excel, but it doesn’t require a lot of knowledge to build some pretty impressive dashboards (even for a dumb Architect like me).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://charts4sharepoint.codeplex.com/" mce_href="http://charts4sharepoint.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br&gt;&lt;a href="http://charts4sharepoint.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles" mce_href="http://charts4sharepoint.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;SimOne SharePoint Solutions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I wasn’t quite sure about this one but after doing some investigation it’s essentially your ASP.NET MVC application running in SharePoint. ASP.NET MVC is an alternative to WebForms (what we’ve been building ASP.NET sites on for years and what SharePoint uses OOTB). MVC provides a few alternatives like the ability to plug in any ViewEngine you want but primarily it has two advantages over WebForms. First, it allows you to cleanly separate out the business logic from the presentation (the model and the view) and not have dependencies on each. Second, it allows for “friendly” URLs that are RESTful in nature so rather than going to a URL like &lt;a href="http://myserver/mylist&amp;amp;ID=10" mce_href="http://myserver/mylist&amp;amp;ID=10"&gt;http://myserver/mylist&amp;amp;ID=10&lt;/a&gt; the URL can present itself as &lt;a href="http://myserver/mylist/10" mce_href="http://myserver/mylist/10"&gt;http://myserver/mylist/10&lt;/a&gt;. This is done through a technique called routing. You can read up all the details about ASP.NET MVC &lt;a href="http://www.asp.net/mvc/" mce_href="http://www.asp.net/mvc/"&gt;here&lt;/a&gt; and try it out for yourself. I personally build any new complete web solutions using it because it offers me an easier way to do Test Driven Development and makes more sense to me than WebForms ever did. YMMV.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;What it does&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;The SimOne Solution offers the source code for a modified MVC framework that recognizes and co-exists with SharePoint. Essentially it allows you to build a MVC application that sits on top of SharePoint but looks integrated with it. New pages are created like any ASP.NET MVC application and added to the route table which can then be accessed via a friendly URL (like &lt;a href="http://mysharepointserver/home/about" mce_href="http://mysharepointserver/home/about"&gt;http://mysharepointserver/home/about&lt;/a&gt; for the About page).&lt;/p&gt;  &lt;p&gt;&lt;i&gt;How it works&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;This is built from the default framework you get when you create a new MVC application. The author has added onto it and started building business entity definitions for Lists, Tasks, and Workflows. It looks like the intent is to be able to access SharePoint content just like any other MVC resource as a Model (and display it in a View via a Controller). The code compiles and you can deploy a new MVC application on your SharePoint server and have it work. There are also instructions for getting it to use the SharePoint master page but I didn’t get that far with my testing. The download is in source form only so you’ll have to compile it and set things up according to the instructions found &lt;a href="http://simone.codeplex.com/wikipage?title=Host%20Aps.Net%20Mvc" mce_href="http://simone.codeplex.com/wikipage?title=Host%20Aps.Net%20Mvc"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;i&gt;Bottom Line&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;ASP.NET MVC is compelling and (IMHO) a better way to do things in the web world over traditional WebForms. However having said that while it’s nice to access a MVC application inside of SharePoint I’m struggling to see the value-prop here. Why would I want to do this? SharePoint is about configuration and empowering users to do their own thing (create and configure pages, add content, create custom lists and views, etc.). MVC is more for building out a complete web solution. Can the two meet? Maybe, but I’m still waiting to see someone come up with a good example of why I would want to do this.&lt;/p&gt;  &lt;p&gt;The download is in source form only and requires a developer to set it up. It also requires a heap of changes to your SharePoint environment (adding a new HttpHandler module and web.config changes). This is not to be taken lightly and think deep about what you’re trying to get out of here. The code is also incomplete so consider this an Alpha release that may become useful some day. Until then it’s something for your VM to play around with.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://simone.codeplex.com/" mce_href="http://simone.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br&gt;&lt;a href="http://simone.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles" mce_href="http://simone.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;AVIcode Holidays&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I wasn’t quite sure what this was but when you read the site description it says it provides a user-friendly screen for displaying a list of Holidays for international offices of a world-wide company. This is something I’ve never seen before but it make sense to me. Unfortunately it doesn’t seem to deliver what it promises.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;What it does&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;It’s supposed to be a list of holidays for offices. You know, you’re in Australia or Geneva and the home office is in Canada so not everyone has the same holidays or holidays that fall on the same dates (for example Thanksgiving in the U.S. vs Canada, a month apart yet the same holiday). It would be nice to be able to go to a page that shows all the holidays so I know if my co-worker in Israel is going to be working that day or not.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;How it works&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;It’s really a set of features (an Expression Builder, not sure what this is for?), a theme, and a master page bundled together with a site template. You run the installer to get the features installed. Create a site using the provided .STP file (who uses these anymore?). Activate the features.&lt;/p&gt;  &lt;p&gt;Well, that’s what I guess you would do in theory. The Expression Builder wouldn’t activate for me claiming a problem with the database (which bothered me a bit). Poking around in the source code there’s an entire non-SharePoint web app (along with a DAL) that I can’t quite figure out how it fits into the picture (maybe you’re supposed to deploy this?). The feature receivers are there which will activate the theme but there’s an entire project called SPInstallation included as well. As far as I can tell, this is a modified version of the SharePoint Solution Installer project. Why it’s included here is beyond me but I’m assuming they’ve made *special* modifications to the installer. Another red flag for me.&lt;/p&gt;  &lt;p&gt;Frankly the codebase is a mess and the one document they provide for “installation instructions” doesn’t really help as it just basically says “run the installer, activate the features, create a new site using the template”. And Bob’s yer uncle. Yeah, right.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Bottom Line&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Be sure to download all the parts. The installer, WSP, and installer.config are all separate files (hasn’t anyone heard of zip?). You’ll also need the .stp file. I actually had to modify the config file for the installer and remove the EULA line as I couldn’t find the EULA file so the installer won’t work.&lt;/p&gt;  &lt;p&gt;In reality, I couldn’t get this solution to work. It looks pretty but seems to be very dependent on your setup, the phases of the moon and who knows what else. I think you have to create a top level site collection, then create a new site using a specific URL and then activate the features, master page, and theme for it to work. In any case, I gave up this pursuit. The idea is nice but the setup seems flawed. It would be nice to see this correctly packaged and working and not something that’s going to lobotomize your SharePoint site.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://holidays.codeplex.com/" mce_href="http://holidays.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br&gt;&lt;a href="http://holidays.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles" mce_href="http://holidays.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;SharePoint Deployment Shell Extension&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A shell extension that provides a context menu for SharePoint Solution files (.wsp) that allows these solutions to be deployed into a SharePoint farm with one click from Windows Explorer.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;What it does&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;This adds 4 new menu options to the right click menu when you select a .wsp file. The menu options allow you to deploy a solution to SharePoint and perform an upgrade to an existing solution.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;How it works&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;It’s an ugly COM C/C++ DLL (an ATL C project) that contains a gob of code just to register and popup a menu. The commands then just shell out to run “stsadm” with the appropriate commands. There’s no magic here.&lt;/p&gt;  &lt;p&gt;This also uses the “upgradesolution” option of stsadm.exe which IMHO should be avoided at all costs. It’s a nice idea, but upgradesolution doesn’t add new features if you’ve added them to the solution. The only option that will work here all of the time is the “Add Solution” menu that just adds the solution to the solution store. The deploysolution option forces it to deploy to all web apps on that server (which may not be the desirable action) and won’t handle differences between GAC vs BIN deployments (it’s just forces both which *may* work but I wouldn’t guarantee it).&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Bottom Line&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;I don’t know about you, but installing Windows Shell extensions for this seems overkill to me. I get by with a simple .reg file that runs a batch file to do the same. There’s a ton of code here that does very little and IMHO not worth the effort to install this on your server. Learn the command line or create a custom action that calls a batch file registered with the .wsp extension (info &lt;a href="http://chrisbarba.wordpress.com/2009/04/13/sharepoint-wsp-right-click-add-solution/" mce_href="http://chrisbarba.wordpress.com/2009/04/13/sharepoint-wsp-right-click-add-solution/"&gt;here&lt;/a&gt; on how to do this).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sharepointshellext.codeplex.com/" title="http://sharepointshellext.codeplex.com/" mce_href="http://sharepointshellext.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br&gt;&lt;a href="http://sharepointshellext.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles" mce_href="http://sharepointshellext.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;SharePoint Solution Exporter&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Do you have solutions installed in your SharePoint environment that perhaps you’ve lost the original .WSP files and can’t find them on the web? This project will allow you to export the solutions back to external .WSP files. Useful if you need to get a solution you no longer have and want to import them into a new environment.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/SharePointSolutionExporter_55C5F23C.jpg" style="border: 0px none ; display: inline;" title="SharePointSolutionExporter" alt="SharePointSolutionExporter" mce_src="http://weblogs.asp.net/blogs/bsimser/SharePointSolutionExporter_55C5F23C.jpg" border="0" height="418" width="380"&gt; &lt;/p&gt;  &lt;p&gt;&lt;i&gt;What it does&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Pretty straight forward. Run app on server, select solution, export to .WSP file. You can then take the .WSP elsewhere and redeploy it.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;How it works&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;It’s a WinForms app written in C#. You have to run it from the SharePoint server console. From there it will iterate through all your web apps in the local farm and display solutions that are deployed. For any given solution you can export it to a saved file somewhere on your file system.&lt;/p&gt;  &lt;p&gt;SharePoint keeps a copy of the solution file inside the system and it is accessible via the API (the Administration API). There not a lot going on here, this app just exposes that and lets you export the file.&lt;/p&gt;  &lt;p&gt;You can read more information at the author’s blog &lt;a href="http://www.kemalkaradag.com/post/2009/12/22/SharePoint-Solution-Exporter.aspx" mce_href="http://www.kemalkaradag.com/post/2009/12/22/SharePoint-Solution-Exporter.aspx"&gt;here&lt;/a&gt; on the project.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Bottom Line&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;This is a useful tool and many times I’ve had to hunt for the original WSP files for third party solutions. This helps as it will recreate the file so you can use it again. My only beef is yet another WinForms app we have to run via remote desktop to our SharePoint servers. This sure would be nice as a feature in Central Admin (hint, hint).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://solutionexporter.codeplex.com/" mce_href="http://solutionexporter.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br&gt;&lt;a href="http://solutionexporter.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles" mce_href="http://solutionexporter.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;SharePoint Tool Basket 2010&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This is a 2010 version of the original &lt;a href="http://sptoolbasket.codeplex.com/" mce_href="http://sptoolbasket.codeplex.com/"&gt;SharePoint Tool Basket&lt;/a&gt; released for SharePoint 2007. The plan is to update most of the tools to work with SharePoint 2010 (and perhaps add some new ones along the way). Some tools are deprecated (like the page ratings) as they’re now OOTB in SharePoint 2010 and there’s no reason to reinvent the wheel.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;What it does&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;The upgraded version of the 2007 Tool Basket only offers two solutions so far; an Actions Menu Helper (new for 2010), and a Forms Designer. The Forms Designer is a revamp of the 2007 version that allows you to customize the layout of the New, Edit and Display forms for any given list.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;How it works&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;The Actions Menu Helper is a web based solution. Once activated it adds a new option to any list “Actions Menu”. When selected it allows you to toggle, on a list by list basis, items to enable in the lists action menu/ribbon. This is useful if you have a specific list you want to disable various actions from site owner eyes (even though they could re-enable it themselves). a detailed description of the feature can be found &lt;a href="http://sptoolbasket2010.codeplex.com/wikipage?title=%5bhere%5d&amp;amp;referringTitle=Home" mce_href="http://sptoolbasket2010.codeplex.com/wikipage?title=%5bhere%5d&amp;amp;referringTitle=Home"&gt;here&lt;/a&gt; and you can watch a video of the feature in action &lt;a href="http://www.silver-it.com/node/47" mce_href="http://www.silver-it.com/node/47"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The Form Designer allows you to visually lay out where fields from your list are placed on the edit form. Like in the 2007 version, it allows you to use drag and drop to position the fields in cells in a table. This allows you to break up large forms that otherwise would be hard to read. A detailed description of the feature can be found &lt;a href="http://sptoolbasket2010.codeplex.com/wikipage?title=here&amp;amp;referringTitle=Home" mce_href="http://sptoolbasket2010.codeplex.com/wikipage?title=here&amp;amp;referringTitle=Home"&gt;here&lt;/a&gt; and you can watch a video of the feature in action &lt;a href="http://www.silver-it.com/node/46" mce_href="http://www.silver-it.com/node/46"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Bottom Line&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;You’ll see a lot of 2007 projects being updated to 2010 in the coming months (I believe Scot Hillier has already started work on his &lt;a href="http://sandbox.codeplex.com/" mce_href="http://sandbox.codeplex.com/"&gt;2010 Features&lt;/a&gt; project which is one of the best collection of new &lt;a href="http://features.codeplex.com/" mce_href="http://features.codeplex.com/"&gt;Features for 2007&lt;/a&gt; out there). &lt;/p&gt;  &lt;p&gt;The Form Designer might be useful if you’re looking to do simple layout changes in a form. However with 2010 and the use of InfoPath for all the forms (this might only be on SharePoint Server and not Foundation) I would probably lean to use InfoPath to design the form as you have complete control rather than just table positioning.&lt;/p&gt;  &lt;p&gt;This is a good start on a solid original project. While the solutions available are few right now, keep an eye on this (and help out if you can) as it will grow with time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sptoolbasket2010.codeplex.com/" mce_href="http://sptoolbasket2010.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br&gt;&lt;a href="http://sptoolbasket2010.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles" mce_href="http://sptoolbasket2010.codeplex.com/Release/ProjectReleases.aspx#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Didn’t Make the Cut&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://wavepoint.codeplex.com/" mce_href="http://wavepoint.codeplex.com/"&gt;WavePoint&lt;/a&gt; – Listed as “Some Tools for SharePoint” but no release and the only code checked in is a blank folder structure. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://chalagauge.codeplex.com/" mce_href="http://chalagauge.codeplex.com/"&gt;Chala Gauge&lt;/a&gt; – Showed up under a SharePoint search but is just a set of Silverlight gauges. Not sure why they tag it under SharePoint (although I guess “technically” you *could* deploy them on SharePoint).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Ran Out Of Time&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This blog post has been a couple of hours in the making and it’s after midnight so I’m going to defer seven more projects that are new until next week (and try to find time this week to load them up and review them). I’ve just run out of time with this post and the other projects are pretty big in functionality and design. My apologies to the project owners. These seven will be included next week:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://spgenericvalidator.codeplex.com/" mce_href="http://spgenericvalidator.codeplex.com/"&gt;SharePoint 2010 Generic Solution Validator&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://sharepointdevtools.codeplex.com/" mce_href="http://sharepointdevtools.codeplex.com/"&gt;SharePoint Developer Tools for Visual Studio 2010&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://spperformancetest.codeplex.com/" mce_href="http://spperformancetest.codeplex.com/"&gt;SharePoint Performance Tests&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://spfg.codeplex.com/" mce_href="http://spfg.codeplex.com/"&gt;SharePoint Feature Generator&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://gelistallsites.codeplex.com/" mce_href="http://gelistallsites.codeplex.com/"&gt;GELISTALLSITES&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ric.codeplex.com/" mce_href="http://ric.codeplex.com/"&gt;Research Information Centre Framework (RIC)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://sptimeradmin2010.codeplex.com/" mce_href="http://sptimeradmin2010.codeplex.com/"&gt;SharePoint 2010 Timer Job Admin&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That’s it for 2009. Hope you enjoy this series and find it informative and useful. Let me know via comments or &lt;a href="mailto:emailme@bilsimser.com?Subject=SharePoint%20Wednesday%20CodePlex%20Roundup%20feedback"&gt;email&lt;/a&gt; what you think and see you next year!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7296029" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/CodePlex/default.aspx">CodePlex</category></item><item><title>SharePoint Wednesday CodePlex Roundup #3</title><link>http://weblogs.asp.net/bsimser/archive/2009/12/16/sharepoint-wednesday-codeplex-roundup-3.aspx</link><pubDate>Thu, 17 Dec 2009 06:39:53 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7281211</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7281211</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7281211</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/12/16/sharepoint-wednesday-codeplex-roundup-3.aspx#comments</comments><description>&lt;p&gt;Yee-haw! Here we are again for this weeks new SharePoint CodePlex projects. Sit back and relax as I form biased and bitter opinions about the new CodePlex projects from the last week that have some kind of weird but odd connection to that thing we know we love to hate, called SharePoint. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="fight-club-still" border="0" alt="fight-club-still" src="http://weblogs.asp.net/blogs/bsimser/fightclubstill_17DF765F.jpg" width="454" height="324" /&gt; &lt;/p&gt;  &lt;p&gt;Just for a refresher let’s go over the rules for project inclusion in this bashing that you keep coming back for. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The first rule of Roundup is, you do not talk about Roundup. &lt;/li&gt;    &lt;li&gt;The second rule of Roundup is, you DO NOT talk about Roundup. &lt;/li&gt;    &lt;li&gt;Only NEW CodePlex projects that have been added (i.e. their startup date) is in the last 7 days are included. &lt;/li&gt;    &lt;li&gt;Your project MUST have a public file release to be included in the bashing I’ll be putting out. &lt;/li&gt;    &lt;li&gt;The word SharePoint must be in the title or description of your project. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This week we have a couple of gems, a couple of interesting starters and some real duds. Hey, I don’t make this content up, you do! That’s the best part of this series. This stuff just writes itself. Okay… Leeeettttt’s getttt reddddddy tooooo rummmmmmmbbbbbblllle!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SharePoint Security Configuration Feature&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’m just finishing up a project where we have a site provisioned with 3 or 4 roles and 5 or 6 lists all with unique permissions. This is due to the fact that we can’t allow certain groups to have contribute access but they need read access to those lists and it all gets very complicated with permissions, groups and then toss in audiences to do visual trimming. I have a 3 page document outlining the manual steps to configure security on each list and navigation node in the system and the setup for a new environment takes about an hour. An hour of my life I would like to claim back one day. Charlie Holland’s tool does exactly that via a configuration file.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Here’s the blurb from the site: “Basically, the code extends CAML to allow you to declaratively define security using a configuration file. By adding a feature to your site defintion that contains the configuration file, new sites can be automatically setup with custom permissions already in place. No more manually tweaking the permissions once you've built a new site.” Awesome. Just what I needed. Too bad it wasn’t published a few weeks ago so I could use it.&lt;/p&gt;  &lt;p&gt;Basically it’s a solution that will let you declare, through CAML/XML, the security for a site. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Essentially you create a new feature (call it “My site security”) and in it you’ll specify the security configuration, much like you would specify the site or list schema in XML files for a site definition. Then when you activate the feature, it calls all the custom C# code to implement it. There’s a *very* extensive example of how the entire solution is architected and put together on Charlies site &lt;a href="http://www.chaholl.com/archive/2009/12/16/in-depth-sharepoint-security-configuration-ndash-part-1.aspx"&gt;here&lt;/a&gt; which I highly recommend if you want to get into the nuts and bolts of this beast.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Bottom Line&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I’m both impressed and a little disappointed at this project. Its a gap that SharePoint is missing. Security is always an afterthought and you can spend days configuring a site definition file but what’s the point if you have to go in manually to all your creations and setup security? This addresses this gap and IMHO in a well written way. The disappointment is that the example feature doesn’t contain an example configuration so you have to reverse engineer the code and schema to build one from scratch. I think it’s early though as Charlie just posted part 1 of his explanation of the system today and part 2 which contains a sample implementation is probably being written right now. I expect the CodePlex project to be updated with the configuration.&lt;/p&gt;  &lt;p&gt;Even though I haven’t seen this in action, it all sounds good and the code looks right. I expect this to be very useful for spinning up new sites that need an hour or two of security customization that you can do with this tool. Why would I need to do this multiple times? Environments (test, staging, prod) and just for simplicity and consistency. Part of SharePoint governance is to create a repeatable behavior with regards to setting up new applications and sites. With this tool in your toolbox, you can rest easy that part will work the same way everytime.&lt;/p&gt;  &lt;p&gt;BTW I did break my forth rule of Roundup here as there is no public file release however the link lets you download the latest source code commit. And hey, it’s my blog, my rules, so blerg.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://spsecurity.codeplex.com/"&gt;Project Link&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://spsecurity.codeplex.com/SourceControl/ListDownloadableCommits.aspx#DownloadLatest"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Watson Search for SharePoint&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Watson Search is a replacement for the built-in search for Windows SharePoint Services 3.0 and is powered by the Apache Software Foundation project, Lucene.NET. This is one for my whoop-whoop collection for a variety of reasons, the first of which was &lt;em&gt;“in order to make indexing really fast the crawler goes against SharePoint content databases directly bypassing any &amp;quot;official&amp;quot; API. We are &lt;b&gt;not&lt;/b&gt; doing any modifications to the database, all the access is read-only. So warranty is in safe.”&lt;/em&gt; Uhh. Warrant is in safe? WTF does that mean?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s a set of web parts and a back-end engine to replace what you get with Search from SharePoint today. Instead of using the Search Engine from SharePoint, it uses Lucene.NET to power the search results. It currently comes with four web parts that provide you with search results and search input controls that hook up to their engine. There’s also some central admin pages for customizing the crawler.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Like I said, it’s a search replacement meaning that you ditch whatever search SharePoint gives you and use this. Behind the scenes it’s basically a replica of the search results and search web parts that SharePoint comes with, but rebuilt to talk to the Lucene.NET API. The other part is that it makes *direct* SQL calls against your SharePoint database. As the disclaimer says, it’s read-only but sorry Charlie, I still have yet to get my green light from Microsoft to do direct SELECT statements against my SharePoint database.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Bottom Line&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s a noble effort and looks good. However the real problem is that SQL statements. Like I continue to state, your contract with SharePoint is the API. Period, End of statement. Do not pass GO. Do not collect $200. And certainly DO NOT issue SELECT COUNT(*) statements against my SharePoint database, like this project does. &lt;/p&gt;  &lt;p&gt;The other issue is, beside the lengthy syntax Lucene.NET offers me for searching (boolean operators, term boosting, wildcards, fuzzy searches, etc.) the UI doesn’t give me much more than what I have now. In fact it looks identical. Maybe that was meant to be low impact to ease adoption but frankly if you’re going to come in and rip apart my bathroom to replace it with something that’s *better*, it sure better look different I come home that night.&lt;/p&gt;  &lt;p&gt;On the plus side, it uses StructureMap, one of the first SharePoint projects that I’ve seen which does. The codebase is also very clean, easy to read, and well done. I just can’t get past the SQL. The team has done a good job here, I just don’t think it’s worth the cost of replacing what SharePoint offers today. Yes, the search operators are key and something SharePoint should have but there are better ways to get there.&lt;/p&gt;  &lt;p&gt;If you’re looking for a search project that really has some nice enhancements that IMHO are worth the effort, check out the &lt;a href="http://facetedsearch.codeplex.com/"&gt;Faceted search project&lt;/a&gt; which really enhances the user experience and provides more features (or wait to implement SP2010 as all of this is built into it). Although if someone were to combine the Faceted Search project with the Lucene.NET engine here that would seriously kick the llamas butt (but do it without the SQL calls please).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://watson.codeplex.com/"&gt;Project Link&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://watson.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37235#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SharePoint Recycle Bin Cleaner&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This project smelled like a bit of a turkey to me from the start. We all know about the recycle bin (sorry, *two* recycle bins) in SharePoint. The place where all user content goes when they delete it and the place where all admins go when users say “I deleted my document and didn’t want to, can you get it back for me?”. The recycle bin (to me) is just so low maintenance. After 30 days user content is moved to the admin recycle bin and after 90 days there it’s gone forever (or at least until you go to your tape backup to retrieve some item a user nuked). So why would I need to clean my recycle bin? &lt;/p&gt;  &lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This project, while sounding important, just deletes everything from the recycle bin on a single SharePoint website. This only deals with the recycle bin on a single site. It neglects to handle the recycle bin on the SPSite class which represents the recycle bin for the entire site collection.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s a Windows Form app that simply asks you to provide a URL to a site. There’s a little bit of some background worker threading going on here but nothing to write home about (this is just because potentially it could take a long time to iterate through all the items in a site and delete them). What it really boils down is this API call:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;web.RecycleBin.DeleteAll();&lt;/pre&gt;

&lt;p&gt;Yeah, that’s it. One API call that dumps everything. Don’t bother trying to write a unit test for this.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bottom Line&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s the blurb from the site: “When you have a lot of items in your SharePoint recycle bin there is no way to delete all items efficiently. Thanks to SharePoint Recycle Bin Cleaner you can empty your recycle bin in few clicks”. Efficiently delete all items? Okay, I’ll bite. Why would I want to? After all, they’re going to clean themselves up eventually. Why do I need a tool to do this for me? And is logging into my SharePoint server, firing up a Windows client to execute one line of code efficient?&lt;/p&gt;

&lt;p&gt;This project might better be a feature, embedded on the site administration page or even the recycle bin page. Better yet, provide it as a feature at the site collection and let it rip through all the items in the site collection recycle bin. In any case, WinForms apps are dead baby, just like Zed. Build features and web parts.&lt;/p&gt;

&lt;p&gt;I don’t see value here and the implementation is lame. It’s really one line of code which could be just as well served by a 1 line PowerShell script. Again, I have to question why anyone would want to clean up the recycle bin. Are users really deleting that much content that they need additional help to keep the system lean and mean? I’ve never had the need for this, but you might.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://shprecyclebincleaner.codeplex.com/"&gt;Project Link&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://shprecyclebincleaner.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37101#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto Complete for MOSS 2007&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I first saw this a bell rang off in my head. The icon was distinct and could only mean another great project from Selyutin Nickolay. Who’s that you ask? The same guy who graced &lt;a href="http://weblogs.asp.net/bsimser/archive/2009/12/10/sharepoint-wednesday-codeplex-roundup-2.aspx"&gt;last weeks roundup&lt;/a&gt; with his Progress Bar for MOSS 2007.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is a custom field you add to a list which is configured to look up values from another list. Rather than giving you a combo box or listbox to pick items from, you simply type entries into the new field and it will find up to 10 (by default) items that match your criteria as you type it in.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once installed you add a new field to your list. That field has a few options to configure:&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="autocomplete4" border="0" alt="autocomplete4" src="http://weblogs.asp.net/blogs/bsimser/autocomplete4_3D68F3C0.png" width="292" height="318" /&gt; &lt;/p&gt;

&lt;p&gt;The field acts like any ordinary text field however you configure it to pick a list from a SPWeb object. As you type in your new field, your text is matched up against that list you configure (along with how many matches to find). Here’s the field in action:&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="autocomplete3" border="0" alt="autocomplete3" src="http://weblogs.asp.net/blogs/bsimser/autocomplete3_7CC6A750.png" width="504" height="181" /&gt; &lt;/p&gt;

&lt;p&gt;As you can see, you type “q” in the “Auto Complete” field and it finds up to 10 matches in the list it’s configured to look up and presents those items, allowing the user to select one. The full text is then pasted into your auto complete text field. The field is based on a regular text field so just retrieve the value just like any string value and use it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bottom Line&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Again Selyutin knocks this out of the park. This is a highly useful control because often we need to pick from a list of items that are sourced in another list and that number of items is just too big for a drop down or listbox control, yet you want to provide some fidelity to your customers and give them a pleasant web experience.&lt;/p&gt;

&lt;p&gt;There’s been a few implementations of this I’ve seen recently (most notably from Jan Tielens and his &lt;a href="http://smarttools.codeplex.com/wikipage?title=Autocomplete%20Text%20Field&amp;amp;referringTitle=Home"&gt;SmartTools set of controls&lt;/a&gt;). In fact I compared both Jan’s control and this one and they’re pretty much identical. If you already have SmartTools then stick with it, otherwise this one is a good addition to any SharePoint site. Jan’s control does have some additional Web 2.0-ish feel to it (like the fading effects) but they’re both equal in functionality.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mossautocomplete.codeplex.com/"&gt;Project Link&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://mossautocomplete.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37189#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Color Picker for MOSS 2007&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The second entry for Mr. Nickolay this week and it’s another winner. It’s a custom field type that let’s you choose a color. Simple, effective, get it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A color picker field that allows you to select from a visual choice of colors. The value is stored in a text field as hex value which can be used in any web page for color/css class information.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A simple custom field. After adding it to a list or library it’ll store the hex value of the color (#FFFFFF, etc.). When editing a form you’ll see a paint bucket that, when clicked, shows a palette of colors to choose from (rather than typing in the code). It uses some javascript to present the color picker to you then paste it back into the SharePoint form.&lt;/p&gt;

&lt;p&gt;Here’s what it looks like in your list:&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="colorpicker2" border="0" alt="colorpicker2" src="http://weblogs.asp.net/blogs/bsimser/colorpicker2_42D76464.png" width="504" height="266" /&gt; &lt;/p&gt;

&lt;p&gt;The display in a list view will present a color swatch matching the color you entered which is nice for visualization.&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="colorpicker1" border="0" alt="colorpicker1" src="http://weblogs.asp.net/blogs/bsimser/colorpicker1_0C863C55.png" width="504" height="150" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bottom Line&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Stuff from Mr. Nickolay continues to deliver. His work is good quality and useful. I’m not sure how useful a color picker field is for SharePoint but it’s a nice implementation none the less. If you combine this with some simple jQuery you can pluck the values out of a list for say user driven custom colorization of items based on status. Use your imagination but I’m sure you’ll find a need for a field like this. I’m surprised nobody has come up with one before. Get it, use it, and keep an eye on Selyutin’s work. I’m sure there’s going to be more great things from him in the future.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://mosscolorpicker.codeplex.com/"&gt;Project Link&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://mosscolorpicker.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37082#ReleaseFiles"&gt;Download Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Close but no Cigar&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There were a couple of other projects that almost made the cut this week. The first was the &lt;a href="http://termset.codeplex.com/"&gt;SharePoint TermSet Manager&lt;/a&gt;. The title intrigued me and the description even more. It was offering up a way to export TermSets from SharePoint 2010. Apparently there’s no way to export them OOTB so this project sets out to do that. Great idea but unfortunately no downloads and the source code that’s checked in is just a placeholder. Something to keep an eye on the for the future. BTW, Managed Metadata in SP2010? One of the best new features in the product much like how the feature framework was the *killer app* for SharePoint 2007, TermSets and Managed Metadata in 2010 has the same impact. Treat it kindly. &lt;/p&gt;

&lt;p&gt;The second dud this week was the &lt;a href="http://investafinance.codeplex.com/"&gt;Investa Finance Outlook Add-in&lt;/a&gt;. No code, no description (well, there *is* a description but it’s in Russian and contains the word SharePoint hence why it get swept up in my lobster trap this week). If anyone knows about this beast let me know. My Google Kung-fu turns up nothing so I have no idea what this is or wants to grow up to be.&lt;/p&gt;

&lt;p&gt;See you next week!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7281211" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/CodePlex/default.aspx">CodePlex</category></item><item><title>SharePoint Wednesday CodePlex Roundup #2</title><link>http://weblogs.asp.net/bsimser/archive/2009/12/10/sharepoint-wednesday-codeplex-roundup-2.aspx</link><pubDate>Thu, 10 Dec 2009 07:16:03 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7275199</guid><dc:creator>Bil Simser</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7275199</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7275199</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/12/10/sharepoint-wednesday-codeplex-roundup-2.aspx#comments</comments><description>&lt;p&gt;Welcome back to what seems to be a successful launch of a new blog series. I got some great responses from people over &lt;a href="http://weblogs.asp.net/bsimser/archive/2009/12/02/sharepoint-wednesday-codeplex-roundup-1.aspx"&gt;my first posting&lt;/a&gt; including private notes from the project owners who enjoyed seeing their projects being discussed. Keep the email flowing and I’ll keep the opinions real.&lt;/p&gt;  &lt;p&gt;This week was a busy one for &lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt; and SharePoint projects with &lt;strike&gt;six&lt;/strike&gt; five new ones but as you’ll see there are some winners and some losers and some in between. &lt;/p&gt;  &lt;p&gt;Let’s call this post the Mad Scientist Experiment edition. You’ll see why in a moment.&lt;/p&gt;  &lt;p&gt;&lt;img title="madscientist" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="398" alt="madscientist" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePointWednesdayCodePlexRoundup2_12881/madscientist_3.jpg" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SharePoint List Search Part&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Frankly it took me a few minutes to figure out what this thing was. Once I got it installed and played around, it actually became pretty clear and it’s actually pretty slick. This Project provides the List Search WebPart for WSS 3.0 / SharePoint 2007. Just add the WebPart to page and specify the list name, filter fields, display fields and criteria.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;After you activate this on your site collection you’ll have a new web part you can add to pages. You can configure the fields for searching and displaying and what list it works off of. Once configured, users can enter values in the filter fields you chose and results appear below the data entry using the display fields you picked. Like I said, pretty slick.&lt;/p&gt;  &lt;p&gt;You might think you can accomplish this with any list and one of the filters you can use (MOSS only). This is true but it requires you to setup two web parts and connect them and there are limitations on the filters. With this web part it just does searches on the fields you supply but the cool thing is that it can use the contains, begins with, or equals operators. So if you have a big list with say software in it, you could configure this to search the title using the contains operator. Users would enter “Designer” and see whatever matches there are in items with that title.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s a single web part and just uses CAML queries to search through a single list and show the results. The administrator picks the list from a drop down in the tool pane. Filter fields and Display fields are added and your job is to select them. Ctrl+click to select multiple fields. The filter fields are those that the user will type search criteria into. The display fields are the columns that will be displayed in the search results. There’s also the search operator (Contains, Begins With, Equal) that you pick for matching text. Here’s what the configuration looks like:&lt;/p&gt;  &lt;p&gt;&lt;img title="ListSearchOptions" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="530" alt="ListSearchOptions" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePointWednesdayCodePlexRoundup2_12881/ListSearchOptions_3.png" width="228" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;And here’s the webpart after doing a search in this list for the word “Alberta”:&lt;/p&gt;  &lt;p&gt;&lt;img title="ListSearch" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="202" alt="ListSearch" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePointWednesdayCodePlexRoundup2_12881/ListSearch_3.png" width="644" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Bottom line&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This is a nice package if you have a single list and want users to be able to find items. The killer highlight here is the use of the Contains operator, something sorely missing from other MOSS filters. There’s not a lot of flexibility with this as far as output goes but it gets the job done if you just want users to find something on a single list and want a simple interface to use. &lt;/p&gt;  &lt;p&gt;Again, the package is just a WSP file you install. I really wish *every* project on CodePlex would use the SharePoint Solution Installer. It’s a great way to let people add new features to SharePoint and really needs about 5 minutes of love and care to setup a new project using it once you built your WSP (using WSPBuilder of course!).&lt;/p&gt;  &lt;p&gt;No source code in the downloads or checked in so hopefully that’ll come along later? Links on the project site lead to closed forums with no content and the link to the blog works, but there doesn’t seem to be any mention of this project on the blog and it’s a general SharePoint blog. So basically you’re on your own with this solution but after you play with it for a few minutes you’ll get the hang of it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://listsearch.codeplex.com/"&gt;Project Link&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://listsearch.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36975"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;WSS Activities&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Thank the maker for the guy that put this project together. So many times you want to do something in workflows but… can’t. And are forced to write event handlers or worse yet, create your own workflows in Visual Studio. No thanks, I’d rather eat glass or use SAP.&lt;/p&gt;  &lt;p&gt;This project contains 17 new SharePoint Designer workflow activities, mostly revolving around the site provisioning process, though some allow you to copy documents and list items to another site collection.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;How many times have you built some workflow in SharePoint only to find it does go the distance. For example lets take a simple situation like filling out an InfoPath form, submitting it to a list, and once approved, the information in that form is used to provision a new site. Wouldn’t it be great if you could do this all within SharePoint designer and not have to crack open Visual Studio?&lt;/p&gt;  &lt;p&gt;Now with these custom activities you can do things like set a masterpage, activate a feature, or create a new site or subsite all from within a workflow you create in SharePoint Designer. Nice!&lt;/p&gt;  &lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;These are custom workflows all crafted in Visual Studio but exposed to you as activities that you can use in SharePoint Designer in your own workflows. They’re just like the out of the box activities you can do in SharePoint designer now, but useful. Once you install the solution on your server and activate the feature on a web application (from Central Admin), when you open up that site in SharePoint Designer and create a new workflow you’ll see a raft of new actions that you can choose from.&lt;/p&gt;  &lt;p&gt;&lt;img title="WorkflowActions" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="396" alt="WorkflowActions" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePointWednesdayCodePlexRoundup2_12881/WorkflowActions_3.png" width="321" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Be sure to view the Setup page &lt;a href="http://wssactivities.codeplex.com/wikipage?title=Setup&amp;amp;referringTitle=Home"&gt;here&lt;/a&gt;. It includes pre-requisites to install this solution. You’ll need to install the &lt;a href="http://splogger.codeplex.com/"&gt;ULS Logger&lt;/a&gt; and &lt;a href="http://spconfigmanager.codeplex.com/"&gt;SP Config Manager&lt;/a&gt; (both CodePlex projects and both by the author of this project) before you install this solution. If you download it from the download link, it doesn’t have that information so hit this page first and install these tools. I know, dependencies are not great but these two tools are useful to have in your toolbox too.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Bottom line&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This is a vital set of actions that you should have in your toolbox if you’re building SharePoint workflows. It eliminates the need to crack open Visual Studio to do things like item and site management and opens up a new host of possibilities for your workflows.&lt;/p&gt;  &lt;p&gt;All of the actions are useful. There is one called “Publish Item and link to another location”. This is essentially a workflow action like the “Send to” feature in SharePoint where you can make a copy of a document to another doclib and inform the consumers of updates, only it works with list items. An interesting feature but I’m not sure I would be creating these all over my SharePoint setup. It maintains the linkage between source and copies via event handlers and additional fields and while it is something that SharePoint can’t do, I’m not sure it’s something you should do. YMMV.&lt;/p&gt;  &lt;p&gt;Overall the actions are useful and highly recommended.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wssactivities.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://wssactivities.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37036"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Codesmith Template for SharePoint BDC&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I used &lt;a href="http://www.codesmithtools.com/"&gt;Codesmith&lt;/a&gt; long ago (using the infamous &lt;a href="http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1"&gt;netTiers templates&lt;/a&gt; until I discovered the light of &lt;a href="https://www.hibernate.org/343.html"&gt;NHibernate&lt;/a&gt;) but it’s a cool tool. Codesmith will basically take a database and spit out whatever code or text you want, using the schema to drive things. You can create simple scripts for the tables, reports on structures, or in the case of the netTiers templates, entire solutions and data access layers of code specific to your schema.&lt;/p&gt;  &lt;p&gt;The Business Data Catalog (BDC) in MOSS 2007 will let you consume and expose external data (SQL, Oracle, or Web Services) into SharePoint in a read-only fashion and let you use it in columns, create views of it, and allow users to search that data in a familiar SharePoint interface. Each entity you access needs an XML definition. This project produces one from a SQL database.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If you’re crazy enough, you can write BDC application definitions by hand using these instructions. I did years ago but then along came tools to take care of that for me. This project uses the Codesmith generation engine with a custom set of templates to create that definition for you based on the schema of a SQL database. It’s similar to what tools like Meta Man do, but it’s a simple one-shot tool that doesn’t need a lot of care and feeding. In the past I’ve always found using Codesmith from the command line to be nice because I could construct my db and gen the DAL automatically. Consider using this for your continuous integration with SharePoint (if you do such a thing, yes, yes you can).&lt;/p&gt;  &lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s a Codesmith template and as such, needs Codesmith to run. Load the template up then pick the database. You can optionally select table(s) to go against or just let it rip and it’ll do the entire database (up to 200 tables, which is the limit imposed by the BDC). The output is a simple XML file for your application definition all ready to import.&lt;/p&gt;  &lt;p&gt;The template is made up of parts you’ll see in the download. CST files make up the composition of the parts and are Codesmith template files which are very ASP.NETish. The header template sets up the LobSystem section and paves the way for the entities. As each table is processed it uses the TableTemplate.cst file to produce one entity for each table.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Bottom line&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I haven’t had Codesmith installed for a long time so I’m going to admit I did not run this tool myself. Sorry. However I’ve had enough experience with Codesmith templates (and made a few myself along the way) to see what’s happening here. It’s a nice tool. There is the free part of the Admin Kit that will create your application definition for you or you can use a 3rd party product like the excellent &lt;a href="http://www.lightningtools.com/bdc-meta-man/default.aspx"&gt;BDC Meta Man&lt;/a&gt;, but this gives you everything you need OOTB. After all, if you interrogate a SQL database you can basically figure out from the primary keys and indexes what should be searched and how. This template figures that out for you but does give you the flexibility to modify the template (Codesmith templates are text based and ASP-like in nature) to customize the output.&lt;/p&gt;  &lt;p&gt;Writing BDC application definitions by hand is for the birds and shouldn’t be done by anyone. For something as repetitive as this I always look for tools to the job and Codesmith has always had a nice relationship with databases. This is a good tool for what it does but it is limited to SQL databases so don’t expect this to magically generate the application definition for a web service. For that check out Lightning Tools and their Meta Man product. Also you need to have things like indexes and primary keys defined in your database for Codesmith to pick up the important bits. Most databases are okay, but I’ve stumbled across a bunch that didn’t have a primary key (!!!) so garbage in, garbage out is the rule here.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://codesmithbdc.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://codesmithbdc.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36974"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Materials Data Centre&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This has got to be one of the weirdest projects this week, no wait. Of all time. Ever. I found it with a search for SharePoint but first looks it doesn’t seem to have anything to do with SharePoint. The description is somewhat nebulous as well: “Materials Data Centre is a JISC-funded initiative to build an infrastructure for materials scientists and engineers to publish their experimental data online.” Huh?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s basically a thin (and I do mean thin) wrapper around a SharePoint site and list for uploading data. Really? Yeah, that’s about it. I mean, it kind of sounds good on paper does it?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A single class (MDCDataAccess) that lets you upload files to a document library. “How it works” is a bit of a misfire as it really doesn’t “work”. If you trace through the code and setup a specific site with specifically named lists you might be able to get something going. There’s a front-end that’s just a Windows client program to “test” out the so-called DAL. However none of the code will work unless you have specific named servers or some major renaming on hard coded constants in the source code. Also it makes reference to a “MatDBTest” content type (which in name only gives you an idea of what it is) but there’s no content type in the solution package so this is incomplete and the code will fail in a not so nice way.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Bottom line&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This is not a data access layer for SharePoint. This looks like a bad science experiment that escaped too soon from the laboratory. Reading information on the &lt;a href="http://www.materialsdatacentre.com/"&gt;Materials Data Centre website&lt;/a&gt;, the group seems to need something to capture and store test data. I guess this project is supposed to be it however there’s no mention on that site of the CodePlex project (but they do mention they saw SharePoint 2010 and thought it was pretty).&lt;/p&gt;  &lt;p&gt;BTW, this isn’t the first monstrosity this week. There’s another project called &lt;a href="http://ep2dc.codeplex.com/"&gt;EP2DC&lt;/a&gt; which apparently sends data to the MDC data access layer. I just couldn’t bring myself to include this project this week as it seemed even more alien than MDC. Feel free to pass your own judgement but I suggest heavy drinking before you try these projects out.&lt;/p&gt;  &lt;p&gt;As Geena Davis once said about a mutated Brundle-Fly, “Be afraid. Be very afraid.”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mdc.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://mdc.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37013"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Progress Bar for MOSS 2007&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Finally a project that seems to make sense! A simple custom field type that displays progress as a graphic. While you can do this with a calculated column (&lt;a href="http://pathtosharepoint.wordpress.com/2008/09/02/a-progress-bar-for-your-tasks-list/"&gt;click here&lt;/a&gt; to see how to do this), this project offers a field type that you can just drop in and forget about.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What it does&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This project adds a new custom field type called “Progress bar” for you to add to any list or library. The column is entered like any other number field (in percentage) but displays in a view as a progress bar, with the value of the field (0-100) showing as a tooltip over the bar.&lt;/p&gt;  &lt;p&gt;&lt;img title="Progress" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="190" alt="Progress" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePointWednesdayCodePlexRoundup2_12881/Progress_3.png" width="433" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;What’s nice about this is that the data behind it is a number field so it can be sorted or filtered. In the edit form, you just enter the number value and the bar graph updates accordingly.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;How it works&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s a simple custom field type. After you install it you’ll see a new feature in your Site Features list called “Progress bar (field) feature”. Activate it and you’ll see a new column type called “Progress bar” that you can add to any list or library. &lt;/p&gt;  &lt;p&gt;Most of the work is made up in the field type definition file (an XML file) with some supporting code in an assembly (all custom fields must have an accompanying class derived from SPField). For more information on building your own custom field types please see the MSDN documentation &lt;a href="http://msdn.microsoft.com/en-us/library/ms446361.aspx"&gt;here&lt;/a&gt;. The advantage to this project is that you can use this field type on any list or library. It’s not just restricted to an Issue or Task list.&lt;/p&gt;  &lt;p&gt;There is a JavaScript file that’s referenced by the DisplayPattern in the field definition, but it’s blank in the download I had. However the field worked so I’ll just assume it was an oversight by the developer or perhaps something that will grow later.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Bottom line&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This is a nice alternative to the calculated column approach, or any other jQuery type approach as it’s a native field type and works pretty well. Being a field type you don’t have to muck around with javascript on web part pages. It just works. One thing I didn’t care for was you could only enter whole numbers so 10.5 wasn’t valid.&lt;/p&gt;  &lt;p&gt;However the downloads don’t provide the source code and nothing was checked into CodePlex. Looking at the WSP and taking a look at the DLL files produced errors in Reflector so it appears the solution is obfuscated, but not by anything I’ve seen before. It might be the Russian localization that’s available that’s messing things up. &lt;/p&gt;  &lt;p&gt;It works as described and is pretty simple to use. Would like to see a source code release in the future.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mossprogressbar.codeplex.com/"&gt;Project Link&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://mossprogressbar.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37056"&gt;Download Link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you next week! Same SharePoint time, same SharePoint channel!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7275199" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/CodePlex/default.aspx">CodePlex</category></item><item><title>SharePoint Wednesday CodePlex Roundup #1</title><link>http://weblogs.asp.net/bsimser/archive/2009/12/02/sharepoint-wednesday-codeplex-roundup-1.aspx</link><pubDate>Wed, 02 Dec 2009 14:02:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7268688</guid><dc:creator>Bil Simser</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7268688</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7268688</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/12/02/sharepoint-wednesday-codeplex-roundup-1.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Welcome to a&amp;nbsp;new blog series I thought might be useful. Each Wednesday I'll post a short review of new SharePoint related projects on CodePlex. These are new projects that a) have been added to CodePlex in the last week and b) have a public file release (I won't include projects that don't have file releases). I was going to call this "Woody's SharePoint Roundup" but that name would be best left to my &lt;A class="" href="http://www.thesanitypoint.com/default.aspx" mce_href="http://www.thesanitypoint.com/default.aspx"&gt;good friend&lt;/A&gt; with that *other* SharePoint site.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 400px; HEIGHT: 300px" height=300 src="http://weblogs.asp.net/blogs/bsimser/roundup.jpg" width=400 mce_src="http://weblogs.asp.net/blogs/bsimser/roundup.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Alright, let's get this party started!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;SharePoint jQuery MultiSiteAdmin UI&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;A bit of a mouthful but hey, it's got jQuery in the name so that's got to be good right? This is a low-impact install (REALLY low-impact) that will give you some neat tools to do things against your site. It uses Javascript, jQuery, and SharePoint Web Services&amp;nbsp;to Add / Remove / Update WebParts / Lists / Document Libraries / Folders / List Columns on a large amount of sites (around 1 minute to add a list to 50 sites).&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;What it does&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The app lets you perform actions on sites, lists, etc. by asking you minimal information. For example you can create a new list called "Project Info" on every site in a site collection by just entering a few pieces of information. Then you can turn around and add some columns to all those lists you just created. You can also perform actions like updating columns on a list and even drop new web parts (via their xml definition) onto every site in your site collection with just a few clicks.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;How it works&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here's the funny part. It's a web page (well, technically a page with some javascript). You drop the files into a document library and view the page. The UI is built in HTML and populated with jQuery/javascript and the very cool &lt;A class="" href="http://spservices.codeplex.com/" mce_href="http://spservices.codeplex.com/"&gt;jQuery library for SharePoint&lt;/A&gt;. You basically use the web page to issue commands against the site and the javascript kicks in, working with jQuery library for SharePoint to do the heavy lifting. All you really have to do is enter the information like the list name or some CAML for a query. It *is* destructive as you can do something like wipe out *all* task lists in a site collection on every site so be careful. This is not a tool for admins that are click happy.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;Bottom line&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;This tool, while somewhat ugly, is pretty slick and a great example of one person building on a series of services available to create a solution. There are some nice things here that are useful for perforning changes across all sites that you would normally have to write a small console app for. It's great that it leverages jQuery services for SharePoint and web services so the install is minimal (nothing goes into the GAC or bin) and you can do this on hosted scenarios. Highly recommended but a word of caution. Try before you buy. Test out your queries in a VM before you try this on your test or production environments. It can lead to&amp;nbsp;a pretty global change so be sure you have the right values set before you click!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A class="" href="http://spmsaui.codeplex.com/" mce_href="http://spmsaui.codeplex.com/"&gt;Project Site&lt;/A&gt;&lt;BR&gt;&lt;A class="" href="http://spmsaui.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36669" mce_href="http://spmsaui.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36669"&gt;Download&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;SharePoint 2010 Developer Dashboard Visualizer&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;This is just downright cool. Not only it's cool looking, it's one of the first SharePoint projects I've seen on CodePlex specifically for SharePoint 2010. SharePoint 2010 Developer Dashboard Visualizer is a jQuery-based solution that extends the Developer Dashboard by plotting an interactive diagram with data from the Developer Dashboard, giving you an **instant** insight into where the bottlenecks are in your code.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;What it does&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The Developer Dashboard feature of SharePoint 2010 is a kick-butt tool and something like an uber version of the page trace you can get from ASP.NET. It's geared for SharePoint so knows about SharePoint-y things as well as SQL calls to the content database and other cool stuff. However it is limited and doesn't offer a ton of customization other than what you get OOTB. This project kicks things up a notch and is like the developer equivalent of YSlow for Firebug by providing you with a visualization of the page load. This is great in finding bottlenecks and deciding where to start with&amp;nbsp;your code optimization (or if you have some troublesome webpart).&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;How it works&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;It's jQuery man, and that's a good thing. Actually it doesn't do much other than re-present what the dashboard already contains however trying to decipher the call stack from numbers is for the birds. The visualization is nice and helpful in trying to wrap your head around what your web parts are doing. The package is cool as a WSP so deployment is a breeze. It just adds a new ASCX control to the AdditionalPageHead delegate control and spits out additional javascript tags. You'll need to turn the developer dashboard on to see the results but the install was simple and worked great.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;Bottom line&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;This is just the beginning of hopefully a lot of add-on tools for developers. SharePoint 2010 offers a lot of great tools but sometimes their visibility is lost or hard to find. Tools like this are simple add-ons for your development environment and low hanging fruit to help you along. Even if you're not looking for code bottlenecks (who is?) it's nice to have this on the page so you *can* take a look and say "Hmmm, I should really look into that long call to load". I'm not saying let's install these tools and go nuts on pre-optimization, but knowing about something is half the battle. Install this on your VM and pull it out from time to time.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A class="" href="http://devdashvis.codeplex.com/" mce_href="http://devdashvis.codeplex.com/"&gt;Project Site&lt;/A&gt;&lt;BR&gt;&lt;A class="" href="http://devdashvis.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36559" mce_href="http://devdashvis.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36559"&gt;Download&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;SharePoint Discussion Board orphaned attachments analyzer&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;My woop woop alarm is already going off with this one. On the home page you see a disclaimer saying that this tool works directly against the database. Not cool. In any case, it's a tool to clean up attachments that have been orphaned in your system. The tool addresses a problem in that discussion board items with attachments can somehow find their way into la-la land with the attachment still in the database but the discussion board&amp;nbsp;item nowhere to be found. The issue comes up when you try to export the site data, then an exception is thrown.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;What it does&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The tool will scan through the content databases finding any attachments that have been orphaned. And basically, it just deletes them. Once the tool had done it's magic, you should be able to export&amp;nbsp;your site or use the&amp;nbsp;content migration API without error. Also not having orphaned attachments is probably a good thing (however I have issues the approach, see below).&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;How it works&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;SQL baby, plain old SQL. Yup, this puppy issues rips through all web apps in your farm then doing a connection to the database deletes any orphaned attachments. Permanently. What's even better is that all of this is done in a single class (Form1) with happy-go-lucky SQL statements right in the code. This sucker is permanent so if there's a slipup you can kiss whatever it *thought* was your orphans buh-bye.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;Bottom line&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;I have said in the past and will continue to take this stance. The SharePoint object model is your contract, use it. Now, I will give kudos to this guy for coming up with a solution. No, there is no API to find orphaned attachments but frankly, I've never come across this problem in my 10 year marriage with SharePoint. Maybe it's a problem but personally if I did stumble over this I would look for an alternative way to do it (or at least build an app without a honking MEGA class to do it). My opinion is to stay away from this project. If you need a solution to this problem consider alternatives (including putting in a PSS call to Microsoft to let them provide a supported way out this mess).&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A class="" href="http://sporphansanalyzer.codeplex.com/" mce_href="http://sporphansanalyzer.codeplex.com/"&gt;Project Site&lt;/A&gt;&lt;BR&gt;&lt;A class="" href="http://sporphansanalyzer.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36544" mce_href="http://sporphansanalyzer.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36544"&gt;Download&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;MAPILab Explorer for SharePoint&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;At first I thought this was a commercial product pretending to be an open source one. The name just sounded *too* commercial and the screenshots on the home page looked *too* polished. MAPILab also rang a bell for me as we just spent some time looking at the &lt;A class="" href="http://www.mapilab.com/" mce_href="http://www.mapilab.com/"&gt;MAPILab product&lt;/A&gt; as a potential for gathering stats on SharePoint. Still, it took me some time to get my head around what exactly this project.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;What it does&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;One would say it's part Reflector, part script compiler, part swiss army knife for SharePoint. It's touted as a developer tool (which it is) and it will allow you to browse the object model on a SharePoint server. The difference between browsing the object model using this tool from say Reflector, is that you're actually interrogating your running SharePoint server and performing tasks against it. The UI provides a view of the object model. In the UI you select objects you're interested in working against (for example a site collection or list). Then in the code editor you write snippets (in C# or VB.NET) against those selections. It's pretty neat and does allow you to see everything that's there.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;How it works&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The project is a Windows form application that runs on your SharePoint server. It uses reflection itself to poke and peek inside your server and allows you to execute code snippets against your running SharePoint server. Just unzip the exe to your server and run it. You'll need a copy of &lt;A class="" href="http://www.filewatcher.com/m/pkzipc.exe.258048.0.0.html" mce_href="http://www.filewatcher.com/m/pkzipc.exe.258048.0.0.html"&gt;PKZIPC.EXE&lt;/A&gt; on your server if you want to create zip archives of your solution builds, but otherwise nothing else is needed. This *will* do things against your current SharePoint system (basically whatever you tell it to do in the code editor) so be careful or else you might wipe out your development environment.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;Bottom line&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;There is a connection to the commercial MAPILab product here, at least from what I can tell. There are links to the product and this project seems to infer that they used this tool (internally) to build the MAPILab stats product for SharePoint. In any case, this is a developer tool and an interesting one. They claim you can save about 50% of your time doing research and testing code sections. I can't say I see those results as you're sort of locked into their object model which just convolutes simple things that can be done with the SharePoint OM (like programmatically creating sites). &lt;/P&gt;
&lt;P mce_keep="true"&gt;Still a neat tool and maybe something to consider for your toolbox. Note that this tool works against your system and exposes *everything*. IMHO the contract you have with SharePoint is the public API so just because there's a property or method available privately, doesn't mean it's something that you should be mucking around with. So be smart, but be cautious. If anything, the source code is well structured and something fun to read (if you're into that sort of thing) that might provide some insights into SharePoint programming you might not have known.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A class="" href="http://mlsharepointexplorer.codeplex.com/" mce_href="http://mlsharepointexplorer.codeplex.com/"&gt;Project Site&lt;/A&gt;&lt;BR&gt;&lt;A class="" href="http://mlsharepointexplorer.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35067" mce_href="http://mlsharepointexplorer.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35067"&gt;Download&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Well, that's it for the first roundup. Hope you enjoyed it! See you next Wednesday.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7268688" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/CodePlex/default.aspx">CodePlex</category></item><item><title>Cloning The SharePoint Toolbar for Custom Web Parts</title><link>http://weblogs.asp.net/bsimser/archive/2009/11/28/cloning-the-sharepoint-toolbar-for-custom-web-parts.aspx</link><pubDate>Sat, 28 Nov 2009 18:24:55 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7266433</guid><dc:creator>Bil Simser</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7266433</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7266433</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/11/28/cloning-the-sharepoint-toolbar-for-custom-web-parts.aspx#comments</comments><description>&lt;p&gt;Trying to match the “SharePoint look” is always a challenge for developers. Recently I had to build a web part that would live along side other “stock” SharePoint web parts. I also needed a functional toolbar for the web part and having it on the same page I wanted a seamless look to the toolbar so it looked just like any other part of the solution.&lt;/p&gt;  &lt;p&gt;In the past I would just create a lot of HTML helpers to spit out the right markup with my values dropped in. I wanted something a little more elegant so I turned to my best programming buddy, the Internet. Doing a little sleuthing I found a path that I would take. First I found &lt;a href="http://msdn.microsoft.com/en-us/library/aa981226.aspx"&gt;this MSDN article&lt;/a&gt; on creating a custom field control. Snuggled inside the code sample was a snippet of code to create a custom toolbar inherited from the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.repeatedcontrols.aspx"&gt;RepeatedControls class&lt;/a&gt; which would mimic the look and feel of a SharePoint toolbar. Buried in the comments for the RepeatedControls class I found a link to &lt;a href="http://blogs.devhorizon.com/reza/"&gt;Reza Alirezaei’s blog&lt;/a&gt; entry &lt;a href="http://blogs.devhorizon.com/reza/?p=670"&gt;where he implemented this&lt;/a&gt; (&lt;a href="http://blogs.devhorizon.com/reza/?p=491"&gt;his previous attempt&lt;/a&gt; used the ITemplate interface but had issues with bin deployments and FBA based websites).&lt;/p&gt;  &lt;p&gt;His code and the code snippet on the MSDN article gave me enough ammo to pursue my attempt. When I first implemented what Reza had done, I was a little disappointed. It wasn’t *quite* a match to the SharePoint one and didn’t support adding separators or buttons without images. The problem is that Reza’s code uses DIV elements and while I prefer this over the TABLE approach, SharePoint 2007 is full of TABLEs (and tables inside of tables inside of tables…). So I set off to do a few modifications.&lt;/p&gt;  &lt;p&gt;Here’s the original SharePoint toolbar for a typical list item that you see on the DispForm.aspx page:&lt;/p&gt;  &lt;p&gt;&lt;img title="SharePointToolbar" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="28" alt="SharePointToolbar" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/CloneSharePointToolbarforCustomWebParts_9AA4/SharePointToolbar_3.png" width="639" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;The code modifications I did were really minor so kudos to Reza for digging out this nugget in the first place as you can’t easily find out how to do this on MSDN. The changes were mostly around using TABLE tags instead of DIVs, aligning images to the middle of the table row, and adding the appropriate classes and styles. Also this is somewhat improved over the stock SharePoint output in that the IMG tags are closed correctly. I’m not sure if it validates against W3C (what SharePoint code does?) but it gives me a bit of a warm and fuzzy.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:0cf56c20-39ab-495e-bc88-113d2d85f430" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:11.25"&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; FileToolbar : RepeatedControls
{
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; {0} = Button text
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; {1} = Button link
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; {2} = Tooltip text
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; {3} = Button image source&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; ButtonImageHtmlFormat &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;                                        
    &amp;lt;td id=""_spFocusHere"" class=""ms-toolbar"" noWrap=""nowrap""&amp;gt;
        &amp;lt;table cellSpacing=""0"" cellPadding=""1""&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;td class=""ms-toolbar"" noWrap=""nowrap""&amp;gt;
                    &amp;lt;a class=""ms-toolbar"" title=""{2}"" href=""{1}""&amp;gt;
                        &amp;lt;img style=""border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; 
                            border-left-width: 0px"" align=""absMiddle"" alt=""{2}"" src=""{3}"" 
                            border=""0"" width=""16"" height=""16"" /img&amp;gt;
                    &amp;lt;/a&amp;gt;
                &amp;lt;/td&amp;gt;
                &amp;lt;td class=""ms-toolbar"" noWrap=""nowrap""&amp;gt;
                    &amp;lt;a class=""ms-toolbar"" href=\""{1}"" title=""{2}""&amp;gt;{0}&amp;lt;/a&amp;gt;
                &amp;lt;/td&amp;gt;
            &amp;lt;/tr&amp;gt;
        &amp;lt;/table&amp;gt;
    &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; {0} = Button text
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; {1} = Button link
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; {2} = Tooltip text&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; ButtonHtmlFormat &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;
    &amp;lt;td id=""_spFocusHere"" class=""ms-toolbar"" noWrap=""nowrap""&amp;gt;
        &amp;lt;table cellSpacing=""0"" cellPadding=""1""&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;td class=""ms-toolbar"" noWrap=""nowrap""&amp;gt;
                    &amp;lt;a class=""ms-toolbar"" href=\""{1}\"" title=""{2}""&amp;gt;{0}&amp;lt;/a&amp;gt;
                &amp;lt;/td&amp;gt;
            &amp;lt;/tr&amp;gt;
        &amp;lt;/table&amp;gt;
    &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; {0} = Separator text/image source&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; SeparatorHtmlFormat &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;
    &amp;lt;td class=""ms-separator""&amp;gt;
        {0}
    &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; FileToolbar()
    {
        HeaderHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;
            &amp;lt;table class=""ms-toolbar"" width=""100%"" 
            border=""0"" cellSpacing=""0"" cellPadding=""2""&amp;gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
        FooterHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;
            &amp;lt;td class=""ms-toolbar"" width=""99%"" nowrap&amp;gt;
                &amp;lt;img alt="""" src=""/_layouts/images/blank.gif"" 
                    width=""1"" height=""18""/&amp;gt;
            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
    }

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; AddButton(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; buttonId, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; buttonText, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; clientOnClick, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; tooltipText,
                          &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; buttonImageSrc)
    {
        var buttonMarkupLiteral &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Literal
                {
                    Text &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(
                        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(buttonImageSrc) &lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt; ButtonHtmlFormat : ButtonImageHtmlFormat,
                        SPHttpUtility.HtmlEncode(buttonText),
                        SPHttpUtility.HtmlEncode(clientOnClick),
                        SPHttpUtility.HtmlEncode(tooltipText),
                        SPHttpUtility.HtmlUrlAttributeEncode(buttonImageSrc)),
                    ID &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; buttonId
                };
        Controls.Add(buttonMarkupLiteral);
    }

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; AddSeparator()
    {
        var literal &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Literal {Text &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(SeparatorHtmlFormat, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;|&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)};
        Controls.Add(literal);
    }
}
&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;ButtonHtmlFormat is a formatting constant for buttons without images (the “Alert Me” button at the end), ButtonImageHtmlFormat is for regular buttons with images. The images must be 16x16 pixels in size. Try to re-use the stock SharePoint ones if you can so users are familiar with them. The worst thing is seeing a Save icon that’s different depending on what page you’re on.&lt;/p&gt;

&lt;p&gt;You also might notice on the FooterHtml there’s an extra TD added with a blank image file set to 1px wide using up 99% of the space. This is to force all of the toolbar items to scrunch up (technical term) to the left. Without this, the elements will be spread out across the entire toolbar.&lt;/p&gt;

&lt;p&gt;To use this, just create the toolbar class in your web part and add whatever buttons/separators you need:&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:b5c4323b-257f-4a31-89b0-78ef01560bfd" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:11.25"&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; CreateToolbar()
{
    var fileToolbar &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FileToolbar {ID &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ToolBar&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;};
    Controls.Add(fileToolbar);
    
    fileToolbar.AddButton(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;NewItem&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;New Item&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;NewForm.aspx&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
        &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Click here to create a new item in this list.&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;/_layouts/IMAGES/newitem.gif&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;); 
    fileToolbar.AddSeparator();
    fileToolbar.AddButton(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;EditItem&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Edit Item&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;EditForm.aspx&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
        &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Click here to edit this item.&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;/_layouts/IMAGES/edititem.gif&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
    fileToolbar.AddSeparator();
    fileToolbar.AddButton(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DelItem&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Delete Item&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DeleteForm.aspx&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
        &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Click here to delete this item.&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;/_layout/IMAGES/delitem.gif&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
    fileToolbar.AddSeparator();
    fileToolbar.AddButton(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ManagePerm&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Manage Permissions&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ManagePermissions.aspx&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
        &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Click here to manage permissions for this item.&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;/_layouts/IMAGES/manageperm.gif&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
    fileToolbar.AddSeparator();
    fileToolbar.AddButton(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;AlertMe&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Alert Me&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;FormAlerts.aspx&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
        &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Click here to create an alert for this item.&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Empty);
}
&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;Here’s the output from the code above.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/CloneSharePointToolbarforCustomWebParts_9AA4/CustomToolbar_2.png"&gt;&lt;img title="CustomToolbar" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="28" alt="CustomToolbar" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/CloneSharePointToolbarforCustomWebParts_9AA4/CustomToolbar_thumb.png" width="639" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The spacing is *slightly* off. I think this might be because there’s an additional (empty) A link added to the SharePoint output but for me this is good enough.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7266433" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Name that WSP - SharePoint Developer Tricks with WSPBuilder</title><link>http://weblogs.asp.net/bsimser/archive/2009/11/26/name-that-wsp-sharepoint-developer-tricks-with-wspbuilder.aspx</link><pubDate>Thu, 26 Nov 2009 14:21:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7265351</guid><dc:creator>Bil Simser</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7265351</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7265351</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/11/26/name-that-wsp-sharepoint-developer-tricks-with-wspbuilder.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;One of my favorite tools that I highly recommend next to breathing is &lt;A class="" href="http://wspbuilder.codeplex.com/" mce_href="http://wspbuilder.codeplex.com/"&gt;WSPBuilder&lt;/A&gt;. With this tool in your arsenal, no longer do you have to worry about hand crafting manifest files or running cryptic makecab.exe command line tools. Building solution packages for SharePoint can be a super big problem, and for super big problems we turn to WSPBuilder to save the day!&lt;/P&gt;
&lt;P mce_keep="true"&gt;WSPBuilder comes in the form of a command line tool that you can run against a specific directory structure on your hard drive where your solution files live. It scans the folder and out pops a WSP file you can easily install onto SharePoint (make your life even easier by using the &lt;A class="" href="http://sharepointinstaller.codeplex.com/" mce_href="http://sharepointinstaller.codeplex.com/"&gt;SharePoint Solution Installer&lt;/A&gt; so you can automatically deploy and activate your features!). While the command line tool is easy, the Visual Studio Plugin is even easier and useful. This is an integrated tool to Visual Studio that will allow you to build and deploy your solution from inside your IDE.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The default settings are fine but for example the WPS filename is the same as your project name. Personally I like using the CompanyName.Department.Project nomenclature when naming my artifacts (Features, WSP Files, Assemblies, etc.). This way I can easily identify them in the GAC and folder trees. So the default name just won't do for me and I don't care to rename my solutions or projects into fully qualified names, I just want my output files this way.&lt;/P&gt;
&lt;P mce_keep="true"&gt;To override the default settings in WSPBuilder from inside the IDE is easy. Just create an xml file (Project &amp;gt; Add New Item &amp;gt; XML File) in your project named WSPBuilder.exe.config. Drop a copy of the contents from where WSPBuilder is installed (by default the IDE uses C:\Program Files (x86)\WSPTools\WSPBuilderExtensions) into this file and make the changes you want. For example to change the output name just add the key name WSPName and set the value to whatever you want:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;add&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;key&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;WSPName&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=3&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000 size=3&gt;&lt;FONT color=#ff0000 size=2&gt;value&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;&lt;FONT color=#0000ff size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;MyCompany.MyProject.wsp&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P mce_keep="true"&gt;Now&amp;nbsp;when you right click on your project&amp;nbsp;and select WSPBuilder &amp;gt; Build WSP,&amp;nbsp;it uses the&amp;nbsp;local config file. You can set any other values you want to override from the default here as well.&amp;nbsp;Hope that helps!&lt;/P&gt;
&lt;P mce_keep="true"&gt;If you don't have WSPBuilder in your toolbelt, check it out today!&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7265351" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Cool+Tools/default.aspx">Cool Tools</category></item><item><title>Resources for my SharePoint Services Talk</title><link>http://weblogs.asp.net/bsimser/archive/2009/11/21/resources-for-my-sharepoint-services-talk.aspx</link><pubDate>Sat, 21 Nov 2009 14:30:49 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262613</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7262613</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7262613</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/11/21/resources-for-my-sharepoint-services-talk.aspx#comments</comments><description>&lt;p&gt;As promised here are some resources for my recent talk on creating and consuming services in SharePoint that I delivered at &lt;a href="http://www.microsoft.com/canada/techdays/"&gt;TechDays&lt;/a&gt;. You’ll be able to get the full slide deck, video, and code later at &lt;a href="http://my.techdays.ca"&gt;http://my.techdays.ca&lt;/a&gt; but here are the links from the slide deck and things I mentioned during the talk.&lt;/p&gt;  &lt;p&gt;Links&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd583131%28office.11%29.aspx"&gt;Writing Custom Web Services for SharePoint (MSDN)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd203468.aspx"&gt;Developing SharePoint Applications&lt;/a&gt; guidance from the Patterns and Practices group&lt;/li&gt;    &lt;li&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/ee413842.aspx"&gt;SharePoint Service Locator&lt;/a&gt; pattern&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Books&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/mspress/companion/9780735625914/"&gt;Developing Service-Oriented AJAX Applications&lt;/a&gt; (Book)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Developers-SharePoint-Services-Platform-Programming/dp/1584505001"&gt;Developers Guide to WSS 3.0&lt;/a&gt; (Book)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.ca/Professional-Microsoft-SharePoint-Reporting-Services/dp/0470481897"&gt;Professional Reporting with SharePoint 2007&lt;/a&gt; (Book)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Tools&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.u2u.be/Res/Tools/CamlQueryBuilder.aspx"&gt;U2U CAML Builder&lt;/a&gt; (2003 and 2007 versions)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://camldotnet.codeplex.com/"&gt;CAML.NET&lt;/a&gt; (.NET Library for writing CAML queries in code)&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262613" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>SharePoint 2010 Setup - Hurry up and Wait Edition</title><link>http://weblogs.asp.net/bsimser/archive/2009/11/19/sharepoint-2010-setup-hurry-up-and-wait-edition.aspx</link><pubDate>Fri, 20 Nov 2009 05:57:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7261194</guid><dc:creator>Bil Simser</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7261194</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7261194</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/11/19/sharepoint-2010-setup-hurry-up-and-wait-edition.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;By now, everyone and his brother are downloading and installing the SharePoint 2010 beta onto their Windows 7 and Vista boxes. Why not? I mean, for the longest time we were stuck with having to spin up a Windows 2003 or 2008 server so now accessibility is here and we can genuinely put it on our machines without hackish workarounds. Of course why you would install a server application on a desktop OS is beyond this blog post and for a discussion over beers at SharePint.&lt;/P&gt;
&lt;P mce_keep="true"&gt;In any case there all kinds of guidance coming out on how to set things up. One of them is the MSDN article called &lt;A href="http://msdn.microsoft.com/en-us/library/ee554869(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee554869(office.14).aspx"&gt;Setting Up the Development Environment for SharePoint Server&lt;/A&gt;. This is a pretty good article but two gotchas I want to point out if anyone is following it and trying to slam SharePoint onto their desktop machine.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Step 8 of installing the prerequisites&amp;nbsp;requires that you have certain Windows Features turned on. These are things like the web server role, ASP.NET, authentication, etc. If you use the UI and manually select the features to turn on, just ignore me for a few minutes. If you copy the command line code they provide to do it all in one fell swoop then read on. Do not copy the command then paste it directly into a command window. It'll fail with a cryptic message and the feature enablement will only be half baked. Instead copy it but paste it into a text editor like Notepad, remove the line breaks, then paste it into a command prompt. I will give Microsoft credit as they state "The following text contains line breaks. You must remove the line breaks to run this script from a command prompt." however its all very Python-esk like pulling the pin on a grenade *then* reading the next instruction that says "Do not hold the grenade for very long after pulling the pin".&lt;/P&gt;
&lt;P mce_keep="true"&gt;The other trip is the SQL Server KB update (step 5 of installing SharePoint 2010). The instructions read as if you're going to click on a link, download a small file and run it, and move on quickly. The reality is a little more involved. &lt;/P&gt;
&lt;P mce_keep="true"&gt;When you click on the &lt;A href="http://support.microsoft.com/kb/970315" mce_href="http://support.microsoft.com/kb/970315"&gt;SQL Server KB 970315 link&lt;/A&gt;, you're taken to a page to *request* the hotfix. There's no file there, just a link to request one (two in fact). So first enter your email address (twice) and the captcha and select both items from the list of hotfixes. In a few minutes you'll receive an email with a link to both items. BTW if you view this email in a web-based mail system (GMail, etc.) the link is incorrect and when you click on it you'll see a 404 error in your browser window. Click on the url in the addextress bar, move the cursor to the end of the address and remove the extra ")" character then press enter. The download should startup correctly (clicking on the link in a mail client like Outlook works fine).&lt;/P&gt;
&lt;P mce_keep="true"&gt;Start the downloads and go grab a coffee, play a game or two of Modern Warfare 2 and maybe read a short novella. The two downloads are 400mb in size so it'll be a few minutes before you can extract them. Once you have files downloaded, click on them. You'll be asked&amp;nbsp;for a location to extract them to&amp;nbsp;and then be asked for a password. The password is in the email they sent you (you did keep it right?). Extract the two files to separate directories. Finally, launch the hotfixes by running the first one (381569 which is actually KB970315) then the second one (398850 which is KB976761). Once this is done, go back to the SharePoint installer that's beeen hanging out and waiting this whole time and launch the configuration wizard.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Clear as mud? Great. Enjoy!&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7261194" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>First Calgary SharePoint User Group Meeting</title><link>http://weblogs.asp.net/bsimser/archive/2009/11/19/first-calgary-sharepoint-user-group-meeting.aspx</link><pubDate>Fri, 20 Nov 2009 02:38:07 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7261039</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7261039</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7261039</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/11/19/first-calgary-sharepoint-user-group-meeting.aspx#comments</comments><description>&lt;p&gt;I have the pleasure of speaking at the first Calgary SharePoint User Group meeting next Monday, November 23rd. The planning for a Calgary based SharePoint group has been a long time coming (I’ve been engaged in talks about one at least 4 times over the last few years). Finally it’s a reality.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 35px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://weblogs.asp.net/blogs/bsimser/image_25A6AB3E.png" width="225" height="244" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Purpose: &lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Calgary SharePoint User Group will provide an opportunity to discuss and grow new ideas and innovations by allowing consultants and IT knowledge workers to share their common experiences, issues, and solutions.&amp;#160; &lt;/li&gt;    &lt;li&gt;It will create a forum for individuals to discuss SharePoint and related technologies, such as .NET/development, customization/branding, Business Intelligence (BI), content/document &amp;amp; records management, etc, with other experienced individuals in the field. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Who can attend?&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Anyone! &lt;/li&gt;    &lt;li&gt;SharePoint is a broad product where users range from having no technical experience to hardcore programmers who can make SharePoint rollover and do tricks.&amp;#160; If necessary we may even have separate meetings depending on the number of attendees and their areas of interest. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;em&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="315"&gt;Monday, November 23&lt;sup&gt;rd&lt;/sup&gt;           &lt;p&gt;Doors open at 5:00pm, meeting starts at 5:30pm&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;em&gt;&lt;b&gt;Topic&lt;/b&gt;&lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="315"&gt;SharePoint 2010 Overview&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;em&gt;&lt;b&gt;Location&lt;/b&gt;&lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="315"&gt;TransCanada Building, +15 level conference room          &lt;br /&gt;450 1 St SW&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="85"&gt;&lt;em&gt;&lt;b&gt;Website&lt;/b&gt;&lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="315"&gt;&lt;a href="http://www.calspug.org/"&gt;http://www.calspug.org/&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;See you there!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7261039" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Speaking/default.aspx">Speaking</category></item><item><title>Resources for my SharePoint Versioning Talk</title><link>http://weblogs.asp.net/bsimser/archive/2009/11/17/resources-for-my-sharepoint-versioning-talk.aspx</link><pubDate>Tue, 17 Nov 2009 19:57:50 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7258226</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7258226</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7258226</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/11/17/resources-for-my-sharepoint-versioning-talk.aspx#comments</comments><description>&lt;p&gt;Just finished up my talk on SharePoint Solution Versioning at &lt;a href="http://www.microsoft.com/canada/techdays/"&gt;TechDays 2009&lt;/a&gt;. I hope it went well for everyone (got a tweet from someone thanking me for answering their question before they asked it, now I just need to go out and buy a LottoMAX ticket). Here’s some quick resources on the talk. You’ll be able to get the full slide deck and video later at my.techdays.ca but here’s some links that may be useful if you enjoyed my talk.&lt;/p&gt;  &lt;p&gt;Planning SharePoint Solution Packages    &lt;br /&gt;&lt;a href="http://weblogs.asp.net/erobillard/archive/2009/06/19/planning-sharepoint-solution-packages-wsps.aspx"&gt;http://weblogs.asp.net/erobillard/archive/2009/06/19/planning-sharepoint-solution-packages-wsps.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Building and Packaging SharePoint Solution Packages   &lt;br /&gt;&lt;a href="http://weblogs.asp.net/erobillard/archive/2009/07/30/Building-and-Packaging-SharePoint-Solutions-and-the-WSPSolution-Project.aspx"&gt;http://weblogs.asp.net/erobillard/archive/2009/07/30/Building-and-Packaging-SharePoint-Solutions-and-the-WSPSolution-Project.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;CodePlex: WSPSolution Project    &lt;br /&gt;&lt;a href="http://www.codeplex.com/wspsolution/"&gt;http://www.codeplex.com/wspsolution/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;CodePlex: WSPBuilder Project    &lt;br /&gt;&lt;a href="http://wspbuilder.codeplex.com/"&gt;http://wspbuilder.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you guys tommorrow as we go over Consuming and Building SharePoint Services!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7258226" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Hiding the New Toolbar Button in SharePoint with jQuery</title><link>http://weblogs.asp.net/bsimser/archive/2009/11/12/hiding-the-new-toolbar-button-in-sharepoint-with-jquery.aspx</link><pubDate>Fri, 13 Nov 2009 02:42:46 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7253026</guid><dc:creator>Bil Simser</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7253026</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7253026</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/11/12/hiding-the-new-toolbar-button-in-sharepoint-with-jquery.aspx#comments</comments><description>&lt;p&gt;Another quick little fun thing today. Many times you might want (need) to hide the “New” button on a list toolbar. You know the one I mean?&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_03FABEC4.png" width="296" height="130" /&gt; &lt;/p&gt;  &lt;p&gt;Why would you want to do such a thing? For example on a project I’m building I actually call the NewForm.aspx page with a querystring because I want to pre-populate my form with some vales. As such, I don’t want users to create new items in a list without these references and since they have to come from another list I’m left with the problem of trying to restrict them from creating new items but still offer them the ability to use the features of the list like alerts, exporting to spreadsheets, etc. Yes, the “New” button isn’t available for readers of a list but for contributors it is and for admins you can’t just turn some of this stuff off easily.&lt;/p&gt;  &lt;p&gt;If you do some Googling you’ll find some ways to do it. Some want you to modify the list schema, others have C# code to hide it, an others even want you to crack open SharePoint designer and butcher your AllItems.aspx page. Bazooka to kill a mosquito solution IMHO.&lt;/p&gt;  &lt;p&gt;Here’s another simple way to do it with your Swiss Army knife, jQuery.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ingredients&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;jQuery (either installed on your server or remotely and referenced in a master page or via a Content Editor Web Part) &lt;/li&gt;    &lt;li&gt;1 Content Editor Web Part &lt;/li&gt;    &lt;li&gt;1 lines of jQuery/JavaScript &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;First you’ll need to have a list to modify. In this case I’ll use a Task list, but any list or library will do. Next go to the view page for the list that you want to do this on.&lt;/p&gt;  &lt;p&gt;Click on Edit Page in the Actions menu and you’ll be allowed to add and edit web parts on the view page. This was a feature Microsoft smartly added and is fully supported. Now we can start adding our jQuery love. &lt;/p&gt;  &lt;p&gt;Click on Add Web Part, browse for the CEWP and drop it on the page. Make sure you place it below the list form and also mark it as “Hidden” in the Layout options. This keeps the page looking as clean as it was originally.&lt;/p&gt;  &lt;p&gt;If you inspect the HTML of any toolbar, it’s basically composed of something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&amp;lt;table class=”ms-menutoolbar”&amp;gt;        &lt;br /&gt;&amp;lt;tr&amp;gt;         &lt;br /&gt;&amp;lt;td class=”ms-toolbar”&amp;gt;[toolbar item]&amp;lt;/td&amp;gt;         &lt;br /&gt;&amp;lt;td class=”ms-separator”&amp;gt;[separator image]&amp;lt;/td&amp;gt;         &lt;br /&gt;&amp;lt;td class=”ms-toolbar”&amp;gt;[toolbar item]&amp;lt;/td&amp;gt;         &lt;br /&gt;&amp;lt;td class=”ms-separator”&amp;gt;[separator image]&amp;lt;/td&amp;gt;         &lt;br /&gt;&amp;lt;td class=”ms-toolbar”&amp;gt;[toolbar item]&amp;lt;/td&amp;gt;         &lt;br /&gt;&amp;lt;td class=”ms-separator”&amp;gt;[separator image]&amp;lt;/td&amp;gt;         &lt;br /&gt;[etc.]         &lt;br /&gt;&amp;lt;/tr&amp;gt;         &lt;br /&gt;&amp;lt;/table&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We want to hide the first couple of &amp;lt;TD&amp;gt; elements which contain the “New” button as well as the separator. We can do this easily with this little nugget of jQuery:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&amp;lt;script src=&amp;quot;/Javascript/jquery/jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;        &lt;br /&gt;&amp;lt;script&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $(document).ready(function(){         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $('.ms-menutoolbar td:lt(4)').hide();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; });         &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Add that to your CEWP you added to the NewForm.aspx page and you get this:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_0E4BE324.png" width="293" height="123" /&gt; &lt;/p&gt;  &lt;p&gt;fooP! The “New” button disappears.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sidenotes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The jQuery is super simple here (I try to write as little code as possible). When the document loads, find the toolbar class (‘.ms-menutoolbar’) then find the first 3 &amp;lt;TD&amp;gt; tags and hide them. One thing to note, when I wrote this today at work I was on IE7 and there were only 2 &amp;lt;TD&amp;gt; tags to hide (thus my jQuery selector was “td:lt(3)”). When I wrote this post I did so hitting my site using FireFox and lo and behold there seems to be an additional &amp;lt;TD&amp;gt; tag. In any case, you might have to experiment with the selectors to get the right number depending on your setup.&lt;/p&gt;  &lt;p&gt;There are *always* many ways to do things in SharePoint. This is just one of them. I suppose you could also find the “id” of the buttons and remove/hide them but SharePoint IDs are always cryptic and not guaranteed to be the same from list to list, page to page, and site to site. I just find this method easy and low impact. YMMV.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7253026" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/jQuery/default.aspx">jQuery</category></item><item><title>SharePoint Site Roundup #SPC09</title><link>http://weblogs.asp.net/bsimser/archive/2009/10/20/sharepoint-site-roundup-spc09.aspx</link><pubDate>Wed, 21 Oct 2009 05:42:29 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7234548</guid><dc:creator>Bil Simser</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7234548</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7234548</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/10/20/sharepoint-site-roundup-spc09.aspx#comments</comments><description>&lt;p&gt;For those of you who watched the intro video at SharePoint Conference 2009 on Monday (you can view the video again &lt;a href="http://www.mssharepointconference.com/pages/videoplayer.aspx?vhid=4"&gt;here&lt;/a&gt;) I’ve put together a roundup of all the sites in the video (in the order they appear). &lt;/p&gt;  &lt;p&gt;These are all sites built on Microsoft SharePoint Server 2007 (well, sort of, see below).&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.ferrari.com/English/Pages/Home.aspx"&gt;Ferrari.com&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.continental.com/web/en-US/default.aspx"&gt;Continental Airlines&lt;/a&gt; (*)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.kraftfoods.com/kf/Pages/home.aspx"&gt;Kraft Foods&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.kroger.com/Pages/default.aspx"&gt;Kroger&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mtv.com/"&gt;MTV&lt;/a&gt; (*)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.viacom.com/Pages/default.aspx"&gt;Viacom&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amd.com/us/Pages/AMDHomePage.aspx"&gt;AMD&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.chk.com/Pages/default.aspx"&gt;Chesapeake Energy&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://holidays.easyjet.com/Default.aspx"&gt;easyJet&lt;/a&gt; (*)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.generalmills.com/corporate/"&gt;General Mills&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.citigroup.com/citi/homepage/"&gt;Citigroup&lt;/a&gt; (*)&lt;/li&gt;    &lt;li&gt;McKesson (Intranet only)&lt;/li&gt;    &lt;li&gt;accenture (Intranet only)&lt;/li&gt;    &lt;li&gt;EA (Electronic Arts) (Intranet only)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.tyson.com/"&gt;Tyson&lt;/a&gt; (*)&lt;/li&gt;    &lt;li&gt;Shell (Intranet only)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.cadence.com/us/pages/default.aspx"&gt;Cadence&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Coca-Cola (Intranet only)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.joneslanglasalle.com/Pages/Home.aspx"&gt;Jones Lang LaSalle&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Nickelodeon (Intranet only)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.tvland.com"&gt;tvland.com&lt;/a&gt; (*)&lt;/li&gt;    &lt;li&gt;ReMax (Intranet only)&lt;/li&gt;    &lt;li&gt;Miami Dade County Public Schools (Intranet only)&lt;/li&gt;    &lt;li&gt;Defra (Department for Environment, Food and Rural Affairs) (Intranet only)&lt;/li&gt;    &lt;li&gt;Pfizer (Intranet only)&lt;/li&gt;    &lt;li&gt;Raymond James Investment Services (Intranet only)&lt;/li&gt;    &lt;li&gt;Del Monte Foods (Intranet only)&lt;/li&gt;    &lt;li&gt;Jamba Juice (Intranet only)&lt;/li&gt;    &lt;li&gt;Siemens (Intranet only)&lt;/li&gt;    &lt;li&gt;Bank of America (Intranet only)&lt;/li&gt;    &lt;li&gt;Monsanto (Intranet only)&lt;/li&gt;    &lt;li&gt;McCann Worldgroup (Intranet only)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://intermountainhealthcare.org/Pages/home.aspx"&gt;Intermountain Healthcare&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.pilgrim.dk/en/Pages/default2.aspx"&gt;PILGRIM&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.conservation.org/Pages/default.aspx"&gt;Conservation International&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.vodafone.com/hub_page.html"&gt;Vodaphone&lt;/a&gt; (*)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://adisonline.com/home/pages/default.aspx"&gt;AdisOnline.com&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Some of the sites are pretty obvious (for example some like AMD still popup up the Name ActiveX control) and others still show their /Pages/ document library. Some sites have pure HTML sites which doesn’t necessarily mean they’re not SharePoint. They could be SharePoint internally and simply publish static content out to the web. The other explanation might be that some of the sites in the video are intranet sites so you won’t be seeing them externally running SharePoint (these are indicated as Intranet only and there’s nothing to see).&lt;/p&gt;  &lt;p&gt;Others are a little more clever in hiding the SharePoint aspect. For example Chesapeake does a great job of hiding the actual pages as the links all look very RESTful (and check out the QuickLinks on the last menu item, it looks like part of the navigation structure but is actually a styled Links list). &lt;/p&gt;  &lt;p&gt;You can pick up some very interesting and unique approaches to using SharePoint by studying some of these sites and seeing how they’ve used the technology (many of them use jQuery and some popular plugins like &lt;a href="http://webscripts.softpedia.com/script/Internet-Browsers-C-C/Navigation/jQuery-Mega-Menu-54427.html"&gt;Mega Menu&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;A few I’ve marked with an asterisk. Some are empty shells, using SharePoint for navigation but the real site is behind it. Others have no SharePoint to be found. I could be wrong but my SharePoint kung-fu skills cannot detect the languishing beast. Maybe you can?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Continental seems to be using SharePoint as a front shell but once you click through you’re whisked away to a cold fusion site or some other technology behind the scenes. &lt;/li&gt;    &lt;li&gt;MTV doesn’t look like a SharePoint site *at all* and I can’t see where any of it could be SharePoint (maybe this is Intranet only?)&lt;/li&gt;    &lt;li&gt;The link for easyJet actually takes you to holidays.easyjet.com which is *a* SharePoint site. easyjet.com is a classic ASP site (perhaps they’re upgrading?). I was unable to find an easyJet.com site that looked like the one in the video.&lt;/li&gt;    &lt;li&gt;Citgroup.com and other citi sites all seem to be .htm sites. Not sure where the SharePoint is here although the site in the video looks public facing to me.&lt;/li&gt;    &lt;li&gt;The Tyson site in the video matches the public facing site and they are .aspx pages, they just don’t look like SharePoint under the covers. Perhaps they did a *really* good job scrubbing the pages (for example there’s no core.js files)&lt;/li&gt;    &lt;li&gt;tvland.com seems to be all .jhtml pages. The video *looks* like it’s the public facing site but again I can’t tell. I even tried the Press site featured in the video (&lt;a title="http://www.tvland.com" href="http://www.tvland.com/press"&gt;http://www.tvland.com/press&lt;/a&gt;) but it’s not SharePoint and doesn’t match up.&lt;/li&gt;    &lt;li&gt;Vodaphone, can’t find the site (which looks public) from the video, just a static HTML site present.&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7234548" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>SharePoint 2010 What’s New – Ratings #SPC09</title><link>http://weblogs.asp.net/bsimser/archive/2009/10/19/sharepoint-2010-what-s-new-ratings-spc09.aspx</link><pubDate>Tue, 20 Oct 2009 04:53:30 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7233490</guid><dc:creator>Bil Simser</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7233490</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7233490</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/10/19/sharepoint-2010-what-s-new-ratings-spc09.aspx#comments</comments><description>&lt;p&gt;SharePoint 2010 offers a new feature around rating content. Note that this feature is only available in SharePoint Server 2010 and not available in &lt;strike&gt;Windows SharePoint Services 4.0&lt;/strike&gt; SharePoint Foundation 2010 (yeah, I can’t keep up with the name changes either).&lt;/p&gt;  &lt;p&gt;Ratings are very generic things that have a lot of flexibility. They allow users to rate content (of any type, Lists, Documents, Pages on a site, and even Content Types) and store that ratings data in the database just like the new social tags that are part of 2010. A rating represents the average score from all users submitting a rating for that item.&lt;/p&gt;  &lt;p&gt;SharePoint Server provides the rating store, a control to rate items, and a web service to collect and consume the ratings. This service can be used from anywhere inside or outside of the system, including Office 2010 clients.&lt;/p&gt;  &lt;p&gt;To enable a site for ratings you activate the Ratings Service for the site collection via Central Admin (once the service is activated it can be used on any list in the site collection). The service creates a timer job that takes care of collecting the rating data and storing it. Ratings are saved asynchronously but then the store is queued up so not everything is written directly to the database immediately. The service also creates two site columns, one for Ratings and one for the number of ratings. These are available to add to your own Content Types and are added to Lists when the Ratings setting is enabled.&lt;/p&gt;  &lt;p&gt;To start with ratings, we need something to rate. So here’s a simple list with some movie titles in it that we’ll enable ratings on.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="228" alt="image" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePoint2010WhatsNewRatingsSPC09_123E0/image_3.png" width="502" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;To enable ratings, we go into the settings for this list. Under General Settings for the list you’ll see a new option called Ratings settings.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="251" alt="image" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePoint2010WhatsNewRatingsSPC09_123E0/image_6.png" width="390" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Select this and you’ll see the option to turn ratings on or off for this list. It works the same for a Document Library.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="144" alt="image" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePoint2010WhatsNewRatingsSPC09_123E0/image_13.png" width="502" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Once you select Yes and click OK, magic happens! Now we take a look at the library and two new columns have been added (from the site columns the service created above). A Rating column (this is a new Content Type) and a Number column to hold the number or ratings. Each time a user clicks on a rating for each item, the number goes up. This is used to average out the rating score to produce the overall rating value for the item.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="209" alt="image" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePoint2010WhatsNewRatingsSPC09_123E0/image_16.png" width="502" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;Now when we look at our list we see the new Rating and Counter columns added (they’re added by default to your list but you can change this in the view just like any other column).&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="120" alt="image" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePoint2010WhatsNewRatingsSPC09_123E0/image_19.png" width="502" border="0" /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;To add a rating, just hover over the Rating field. An AJAX progress window displays then a tooltip provides instructions to the user. The ratings service uses a ratings control seen here that uses two star displays. The first display shows the average rating. As you hover your mouse over the stars the colour changes to yellow to reflect the rating you’re about to assign via a mouse click.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="169" alt="image" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePoint2010WhatsNewRatingsSPC09_123E0/image_22.png" width="347" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Once you click on a rating a confirmation tooltip is shown. This is the second star in the ratings control and displays the current user’s personalized rating. This is all done asynchronously so there are no icky postbacks.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="174" alt="image" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePoint2010WhatsNewRatingsSPC09_123E0/image_25.png" width="352" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;You also get the same user experience when editing a single record in the edit form.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="143" alt="image" src="http://weblogs.asp.net/blogs/bsimser/WindowsLiveWriter/SharePoint2010WhatsNewRatingsSPC09_123E0/image_28.png" width="503" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Pages are rated the same way as items in a list but because you can change the page layout, you’ll need to open the Page Layout in SharePoint Designer 2010 and add the rating control wherever you want (and optionally set some options and properties for the rating). Information is stored in the same place for the ratings. &lt;/p&gt;  &lt;p&gt;Once the list is rating-enabled, you can use the Rating column or Number of Ratings column to group or sort the information in a Content Query Web Part. &lt;/p&gt;  &lt;p&gt;The rating service not only provides features inside of SharePoint but also exposes a Ratings Web Service that any application or Office client can consume. This allows you to submit a rating for an item, get the average rating and rating count for an item, and get the personal rating for an item. The Web Service is the same service that provides the functionality to the Ratings control so the results are the same. This allows you to provide say a ratings experience to your users inside of your own external ASP.NET application but still submit and keep track of the rating data in SharePoint.&lt;/p&gt;  &lt;p&gt;Enjoy learning the new features of SharePoint 2010!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7233490" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>SharePoint 2010 What’s New – Lookup Columns #SPC09</title><link>http://weblogs.asp.net/bsimser/archive/2009/10/19/sp2010-what-s-new-lookup-columns-spc09.aspx</link><pubDate>Mon, 19 Oct 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7233055</guid><dc:creator>Bil Simser</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7233055</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7233055</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/10/19/sp2010-what-s-new-lookup-columns-spc09.aspx#comments</comments><description>&lt;p mce_keep="true"&gt;
&lt;/p&gt;&lt;p&gt;An enhancement that’s been long waiting for SharePoint is around lookup columns. In 2007 you can create a lookup column which essentially “looks up” values from another list. Here’s creating a lookup column in 2007:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/CreateColumnLookup2007.png" mce_src="http://weblogs.asp.net/blogs/bsimser/CreateColumnLookup2007.png" border="1"&gt; &lt;/p&gt;
&lt;p&gt;Basic stuff. You select the list you want to get information from and the column you want to use as a display value. You can allow multiple values which makes for an interesting setup. Imagine you want to keep an inventory of servers in SharePoint. You might create a list of servers then you want to know what operating systems are installed. So you could create a list called “Operating Systems” and then in your Server list create a lookup column called “OS” that gets information from “Operating Systems” using the column “Title”.&lt;/p&gt;
&lt;p&gt;A few problems with lookup columns you want to be aware of. If you delete say “Windows XP” from your “Operating Systems” list, any reference in the Servers list are going to be blank. Also there’s no restriction on deleting your lookup values if they’re in use. There’s no referential integrity between the two. &lt;/p&gt;
&lt;p&gt;Another simplistic thing in 2007 is that you only get one column to pick from. This might be fine but what if you want to display more information in the lookup (for example Operating System + Version). You can create a calculated field in the original list which can be something the user picks but a) it requires the creation of that calculated field b) If you have a lot of fields to display the dropdown can get quite wide and c) what if you just want to display additional information for the lookup but not include it in the picklist?&lt;/p&gt;
&lt;p&gt;In 2010 Lookup columns have been greatly enhanced and provide these features out of the box. Here’s what creating a lookup column looks like now:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/CreateColumnLookup2010.png" mce_src="http://weblogs.asp.net/blogs/bsimser/CreateColumnLookup2010.png" border="1"&gt; &lt;/p&gt;
&lt;p&gt;You’ll notice two major enhancements here (and a third I’ll get to later). First is the additional column to show. This is a list of all the columns in the original list. These are not added to the dropdown that the user will select, they’re added to the view when you display the list item. This is the same behavior as you would see in a BDC column in 2007. These additional columns can also be filtered and sorted on giving you some additional capabilities in your views.&lt;/p&gt;
&lt;p&gt;The second major enhancement is the Relationships section at the bottom. This is huge and provides you the ability to specify the relationship between items in your list and the lookups they use. It’s an optional choice on the lookup and you can choose between cascaded deletes or restricted deletes.&lt;/p&gt;
&lt;p&gt;Cascaded delete will delete delete any related items in the list you’re defining the lookup on when an item in the target list is deleted. So delete “Windows XP” in your lookup table, any records that reference it are deleted in your Servers list.&lt;/p&gt;
&lt;p&gt;Restricted delete means if you try to delete the “Windows XP” lookup value you’ll be prevented from doing so if your Servers list contains items that use it as a reference.&lt;/p&gt;
&lt;p&gt;Very cool indeed!&lt;/p&gt;
&lt;p&gt;Finally one last thing. You might have noticed there was an option to allow duplicate values or not.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/CreateColumnDuplicates2010.png" mce_src="http://weblogs.asp.net/blogs/bsimser/CreateColumnDuplicates2010.png" border="1"&gt; &lt;/p&gt;
&lt;p&gt;This is actually a property of the base ListItem and included on *all* column types. So anything (text, number, lookups, etc.) can be set to unique or not.&lt;/p&gt;
&lt;p&gt;Enjoy learning the new features of SharePoint 2010!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7233055" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>The Kimono Is Open, The Veil Is Lifted, The Gags Are Removed... #SPC09</title><link>http://weblogs.asp.net/bsimser/archive/2009/10/19/the-kimono-is-open-the-veil-is-lifted-the-gags-are-removed-spc09.aspx</link><pubDate>Mon, 19 Oct 2009 16:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7232999</guid><dc:creator>Bil Simser</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7232999</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7232999</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2009/10/19/the-kimono-is-open-the-veil-is-lifted-the-gags-are-removed-spc09.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;
&lt;P mce_keep="true"&gt;If you find the title of this blog familiar, it should be. Mike Fitz used it when he posted &lt;A href="http://blogs.msdn.com/mikefitz/archive/2005/09/14/466345.aspx" mce_href="http://blogs.msdn.com/mikefitz/archive/2005/09/14/466345.aspx"&gt;his first remarks about SharePoint 2007&lt;/A&gt; back on September 14, 2005. Here we are in 2009 with a product releasing in about 6 months. Amazing what a journey it’s been, and things are just starting to heat up. Right now Steve Balmer is probably on-stage in Vegas and 7000 SharePoint nerds are listening to him. Developers, Developers, Developers. I’ll never forget Steve and find him a powerful presence whenever he’s around.&lt;/P&gt;
&lt;P&gt;So welcome to the New SharePoint Order, namely SharePoint 2010. I have a whack of blog entries sitting in the queue but I thought I would start with a summary of what you can expect with SharePoint 2010. This is a 50,000 foot view of what’s to come. Over the next few days, more details will be revealed about all of these goodies and people will finally get to see what some of us have been messing around with the past few months.&lt;/P&gt;
&lt;P&gt;The changes in 2010 are huge. Just like the switch from 2001 to 2003 and the higher orders of magnitude in change from 2003 to 2007 so is the shift to 2010. The changes, improvements, and features you’ll see in 2010 are again going to cause a shift in thinking about solutions you build in and out of SharePoint and what is possible.&lt;/P&gt;
&lt;P&gt;So let’s take a look at an overview of the changes in some of the areas in SharePoint. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Platform&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I actually stumbled across a MSDN blog that mentioned this a few days ago, but it was buried and I guess nobody really got it out there (at least I haven’t see anyone talk about it). In any case, SharePoint 2010 will run on Vista (SP1 and higher) and Windows 7. Yes! This includes both Windows SharePoint Services (4.0) and SharePoint Server 2010. No longer does the lone developer need a VM to develop solutions in. Just install WSS or SP2010 onto your Vista or Win7 OS and you’re off to the races. &lt;/P&gt;
&lt;P&gt;The Service Model has been re-architected so you no longer need a Shared Services Provider (SSP). The services are just there and you decide what to turn and off. Services can still be deployed centrally to an Enterprise Resource Center model where farms can consume services as needed.&lt;/P&gt;
&lt;P&gt;There’s also a big investment in hosting scenarios. The introduction of multitenancy allows you to partition data of shared services to accommodate multiple tenants. Tenants can manage the configuration of administrator-delegated functions (for example what services are available) from one place. &lt;/P&gt;
&lt;P&gt;User Solutions allow you to enable authorized users to upload solutions that have limited access but still provide rich business solutions for SharePoint. They allow the execution of “relatively untrusted code” but do not allow access to things like central admin or things that can take down a server. These solutions can be uploaded to a solution store (without the need to access the sever directly) and live in a sandboxed environment. Any critical exceptions that happen will immediately terminate the user solution code. Think of this like the Private Assembly model from DotNetNuke. Yeah, that’s one thing I was wishing for with SharePoint so now hosting scenarios can get a little more interesting.&lt;/P&gt;
&lt;P&gt;With SharePoint 2010, the entire system has shifted to a claims-based authentication system. Claims-based authentication is based on standard protocols and the Security Assertion Markup Language (SAML) that was introduced in .NET 3.5. Out of the box Active Directory/Windows Authentication is there, just implemented differently using claims but now authorization through other forms (CardSpace, Windows Live ID, ADFS, etc.) are more easily implemented.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;User Interface&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I think by now everyone has seen the new Web Ribbon UI. This is a user interface that mimics the capability of Office 2007. It’s also contextual so depending on what you have selected on the screen, the ribbon emotes this. Select a list item and choices for action on items appear (edit, alert, delete, etc.), select the library it lives in and you can do typical operations on lists (permissions, exporting, etc.).&lt;/P&gt;
&lt;P&gt;To aid with the upgrade capabilities, there’s a few feature in the Configuration Wizard called “Visual Upgrade”. This allows you to preserve the look and feel of existing SharePoint sites and allows end users to update their sites user experience when they want. New sites created after the upgrade will use the new SharePoint user experience by default.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PowerShell&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you haven’t got yourself ready for PowerShell and planning on adoption SharePoint 2010, now is the time as it’s used literally *everywhere*. There are specialized cmdlet used in almost every aspect of SharePoint as well most of the basic administration functions can be performed using scripts. The SharePoint cmdlet are not just scripts, they’re objects inherited from the PSCmdlet class (called SPCmdlet) and let you do a ton of things with PowerShell.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Social Aspect&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;One of the big changes on the Internet in the past few years has been the advent of Twitter, Facebook and other social bookmarking, tagging, and communication tools. With SP2010 people can tag literally anything, and bookmark and comment content on sites. This is supplemented by web parts using tag clouds and other tools to find that content. The evolution of "My Site” is the “People Portal” and pulls together all of the social networking features into a user-friendly interface that enables people to express themselves better in the corporate setting.&lt;/P&gt;
&lt;P&gt;In addition to social tagging, there’s the addition of expertise tagging. SharePoint supports building and sharing their skill sets to everyone else. Imagine wanting to find all the .NET developers in your organization with C# and SQL experience. Now you can! With SharePoint 2010, you can truly look at and think of SharePoint as Facebook for the Enterprise.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Wiki, Wiki, Everywhere&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Team sites and Publishing Sites have always been a problem. Team sites have that default.aspx look and feel (you know, the two-column deal that has little to no flexibility) but publishing sites have page layouts and all kinds of cool stuff. Now the two meet and have babies and it’s called SharePoint 2010. Every site (team or otherwise) is essentially a wiki with the publishing capabilities from 2007. Page layouts can be changed around, new pages can be created, and the content can be edited in a more intuitive way (you don’t have to drop a content editor web part onto a page to edit it’s text for example).&lt;/P&gt;
&lt;P&gt;The content areas are rich and practically *anything* can be dropped onto them, including lists and web parts. Yes! You can start editing a page and say “Hey, it would be cool to have a video embedded here” and drop one in.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Finding What You Need&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Search has been greatly improved in SharePoint 2010. You can now search for a person using a fuzzy search algorithm. Nobody can ever find me because my first name is “Bil” not “Bill”. However trying to find me via “William” or something similar works in 2010. Search queries can now match a wildcard at the end of a text string so “Young*” will match “Youngblood” and “Younglings”.&lt;/P&gt;
&lt;P&gt;Search results has also been improved and lets you filter down from wide range searches to things like dates, tags, authors, and content types. You can also rank search results based on click-through history and for people, by social distance. If you prefer to deploy the FAST search product, SharePoint supports FAST and provides better search results like item counts, visual search (thumbnails) and “Find Items Similar to this” links.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;InfoPath, Everywhere&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The huge difference with InfoPath is that it’s used everywhere. When you change a normal SharePoint list item, it’s really an InfoPath form behind the scenes. This is transparent and more than likely, you won’t be able to tell. In fact the default look and feel makes it look just like the 2007 NewForm.aspx page. There are some overall performance improvements (for example there’s a new type of list control that only populates the control when its clicked) and better accessibility.&lt;/P&gt;
&lt;P&gt;There’s also a new feature that lets users expose an InfoPath form as a web part. This should help people build more interactive sites more easily and contributes to that “composite” part of the new SharePoint circle. As with most of the rest of SharePoint 2010, PowerShell is used everywhere and there are InfoPath cmdlets to help you deploy and upgrade forms, manage data connections, and administer the InfoPath Forms settings.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;It’s All About The Content&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For those that use the content management features that were folded into 2007, 2010 offers much more interesting and flexible options for authoring, organizing, and finding information. &lt;/P&gt;
&lt;P&gt;Document Sets provide a capability of collecting documents together as a single unit (you still edit the documents individually). Workflows, versioning (point in time snapshots) and other actions can be performed on the entire set at once.&lt;/P&gt;
&lt;P&gt;I’m a huge proponent of trying to organize information other than using folders. 2010 has several improved ways to do this through managed metadata (centrally administered) and local metadata at the site/site collection level. Users can edit this information in their documents (including offline editing) and use the metadata for navigation and searching. For page authoring, there’s a new feature called “auto-foldering” (sounds rather odd and not sure if this what they’re going to call it). If “auto-foldering” is enabled then when a page is checked in for the first time, the routing object model is called to route the page into an appropriate location (using metadata to decide where it should go).&lt;/P&gt;
&lt;P&gt;There’s also the notion of a Document ID now. Every document uploaded to SharePoint has a unique document id generated for it. Think of it as a GUID for documents. This is a value that can be used to always find that document on the site using a static URL. This ID can be used to find the document (through an out-of-the-box Document ID Lookup Box Web Part), navigate to it via a static URL (e.g. “/SiteName/DocumentFinder.aspx?Id=FX803S2”), and manipulate the document via the API. No matter where the document has been moved on the server, users will be able to find or navigate to it. You’re not limited to how Microsoft creates these IDs. Custom document id providers can also be created so you could fetch information from another system or use some other technique to generate them.&lt;/P&gt;
&lt;P&gt;The XHTML and CSS files SharePoint uses have been simplified (there’s still a ton-o-classes though) and is now WCAG 2.0 AA-compliant. The Content Query Web Part, a workhorse of a web part in SharePoint Server installs, can now do cross-list views of content based on managed metadata. And for those that have a ton of pages in the “Pages” document library (in publishing sites) you can now organize the information by folders (or use metadata).&lt;/P&gt;
&lt;P&gt;A new ratings feature provides the ability to rate content by users. These ratings are exposed as metadata so you can sort, filter, and query it. Ratings can be enabled on list items, document library items, and publishing pages.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;YourTube&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;SharePoint 2010 fully supports SilverLight and includes some digital aspect features so you can create centrally managed asset libraries where audio and video assets can be served up for publishing and streaming video assets. Supported file formats in a SharePoint asset library include .asf, .avi, .flv, .mov, .mp3, .mp4, .rm, .wma, and .wmv. &lt;/P&gt;
&lt;P&gt;There are new content types for audio, images, and video. These come with new columns like data rate, frame rate, and length (duration of an audio or video file in seconds). You can also associate thumbnail images for videos (not automatically generated but simple to hook up). Images will generate thumbnails automatically like they do in 2007.&lt;/P&gt;
&lt;P&gt;When adding an asset to a web page you have complete control over things like how it’s played and what state the run-time display is in. This allows you to create looped videos on pages, automatic play-when-loaded pages, and inline, pop-up, or full screen players for video content.&lt;/P&gt;
&lt;P&gt;Looking to build an internal YouTube for your organization? Pretty simple with 2010 now.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Feature Attractions&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;There have been some nice improvements to the feature framework in 2010. For example you can now capture and program the upgrading of a feature. The SPFeature class now has a method called Upgrade that will allow you to perform an upgrade at all scopes and the Feature.xml definition file has a new &amp;lt;UpgradeActions&amp;gt; section that lets you specify a custom assembly to handle the upgrades.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;It’s Only a Model&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The programming model overall has been greatly enhanced, with a lot of things we’ve wanted in the 2007 version. If you’ve poked around in the previously released SDKs, some of this might be old news.&lt;/P&gt;
&lt;P&gt;Lists now have Adding/Added and Deleting/Deleted events added (the same as how list items work, but now on the entire list). The web object also has additional events to help with provisioning (for example to programmatically add web parts as the final step to creating a new site).&lt;/P&gt;
&lt;P&gt;One of my favorite features in 2010 is the addition of LINQ support. LINQ allows you to query all types of data (regardless of the source) using the same query syntax. You’ll still need to know (and continue to learn) CAML for site and list definition, but finding things are just a LINQ query away. Behind the scenes, the LINQ to SharePoint provider really just converts LINQ queries into CAML (much like how the LINQ to SQL Provider does) but it means you can write queries to find items like this now:&lt;/P&gt;
&lt;DIV class=wlWriterEditableSmartContent id=scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:6cad84b9-dc08-43e8-babc-f7d0bd7e354c style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;&lt;PRE style="FONT-SIZE: 11px; OVERFLOW: auto; FONT-FAMILY: Consolas; BACKGROUND-COLOR: #ffff80"&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Query for customers from London&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;var londonCustomers &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; from customer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; Customers
 &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;where&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; customer.City &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;==&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;London&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;
 select customer;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/DIV&gt;
&lt;P&gt;There’s also a tool called SPMetal that will generate your entity classes for you. Once the classes are generated, you can add items to list with just a few calls rather than having to populate each field individually. The entity classes are POCOs so unit testing gets far easier with 2010.&lt;/P&gt;
&lt;P&gt;This is really just scratching the surface of what’s new and while it seems lengthy, there’s so much more. Like I said, I’ll be posting more detailed entries on many of these (and other) features of SharePoint 2010.&lt;/P&gt;
&lt;P&gt;Okay kids, let the disclosure begin!&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Note: First off, I am *not* attending SharePoint Conference 2009 where all of this information is coming out of. Second, most of this information is based on my working with the product for the past few months. Some details in my entries may be out of date or incorrect and I apologize for that. I’ll correct things as I can and stumble over items. If you find something amiss, feel free to leave any corrections or remarks in the comments of the posts yourself or flip me a quick &lt;/EM&gt;&lt;A href="mailto:emailme@bilsimser.com" mce_href="mailto:emailme@bilsimser.com"&gt;&lt;EM&gt;email&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7232999" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item></channel></rss>