Recently I had to give a hand to one of my friend to create a recursive DVWP. What this web part should do is to query all the sub sites including the root site, and retrieve all the Pages resides inside the Pages libraries. Also it should filter the retrieved pages for a given content type. Previously I had done whole lot of DVWP, but never wanted to create a recursive DVWP.
So how to achieve this,
While working with SharePoint CAML queries, you will need to get current user data. (Retrieve data from a list, that filtered by current logged in user).
There are couple of ways to achieve this requirement.
When you work with SharePoint Lists you may have noticed that you will get a small context menu for each list item. Usually this content menu show up in the first column. (Title or Name column). But recently I had a requirement to show this context menu for a Person (User Presence) column.
What is feature stapling?
While doing SharePoint development, almost all cases I used to create my own Site Definitions. So what ever features to be activated, page instance to be created, was very easily defined in the onet.xml. But once I had a requirement to use a OOB site definition for one of my project. But when I create a site using the given OOB template I had to activate some OOB features also. To achieve that requirement I had to copy the existing site definition and create my own one, with the above feature activated by default. But that was not the best solution for the problem. Actually it was a worse solution ever .
So while searching through internet, I found there is a cool built-in feature in SharePoint to do this. It’s called almighty “Feature Stapling”.
Once I had a requirement to embed a Content Editor Web Part, with some default content, to a web part page. So I followed the usual steps to extract my web part.
1) Add a CEWP to a Web Part zone in my SharePoint web site.
2) Add the default content that was needed, and format it appropriately.
3) Export the web part as a file.