I have created a deployment project for Steven Van de Craen's solution for managing user profile pictures from a single picture library.
About the original project:
The project itself is a simple event handler that synchronizes a picture library with user profiles pictures.
When a picture is added to the library, it is automatically paired with the relevant user profile. Pairing is based on the file name of the picture, which has to match the user's login name in AD.
More on the project here:
So what do I have to do with this? This solution is a great idea and a free download but hard to implement for most users.
About my deployment project:
I have created a deployment process that automates the creating and installing of this solution in your environment.
The setup installs the assemblies in your GAC, creates a picture library and registers the event handlers with the library. It also handles uninstalling.
The original project is provided as is and without changes from my side.
Installation files only - http://blogs.microsoft.co.il/files/folders/itaysk/entry94519.aspx
Source code + installation files -
Run the setup file from 'ProfilePictureEventHandler\setup.exe'
Browse to the site where you want the picture library actually installed. Go to Site settings, Site Features, and activate the ProfilePictuesLibrary feature.
Update: Read the follow up post for a permanent fix to this bug: SharePoint Designer \ Data Form Web Part context menu bug - Part 2
Update 2: There is a hotfix that automates this fix: http://blogs.microsoft.co.il/blogs/itaysk/archive/2008/11/18/sharepoint-designer-data-form-web-part-context-menu-bug-part-3.aspx
This bug was confirmed by Microsoft after we opened a "Severity A" issue on it. The original response from the support guy was : "oh my god!" :) because this kind of bugs are really easy to track down in a superficial QA testing. Eventually the support guys couldn't help us and registered that as a SharePoint Designer bug. But worry not - Itaysk to the rescue..
You try to use a Data Form Web Part (Data View Web Part) to display a document library in an XSLT view. You find out that the context menus for list items are identical for all items, even tough you know they should be different.
Steps to reproduce:
- Create a document library. Add at least 2 items to the document library, modify the permissions for one item to read only.
- Notice that each item has a different context menu.
- Open SharePoint Designer 2007, and browse to the document library. Open the page you have just viewed (Forms\Allitems.aspx)
- In design mode, right click on the document library web part (List View Web Part) and click on "Convert to XSLT view".
- Save the page, and open it in browser.
- Notice that now all the items share the same context menu. In fact, it is the context menu for the first item in the list.
This behavior is caused by the XSLT code that SharePoint designer generates for the document library.
When each item is rendered, the current user's permission for that item is written in the HTML code for that item. It is represented by the "Perm" attribute of the table that contains the item.
When the user clicks on the item in order to open it's context menu, SharePoint looks for that "Perm" attribute and renders the menu accordingly.
Now, the XSL code that SPD generates writes wrong values into this "Perm" attribute. It uses the "CurrentRights()" function of the "ddwrt" namespace, and apparently this method doesn't not work well here.
Use the "PermMask" property instead of the "CurrentRights()" function:
- Open SharePoint Designer 2007 and navigate to the page containing the Data Form Web Part. (follow the "Steps to Reproduce" above)
- In Code view,search for the following peace of code:
- Replace it with the following peace of code:
- Save the page.
That's it, now browse again to that page you have just modified, and see for yourself - each item has it's own, correct, security trimmed, context menu.