Thursday, April 14, 2011

Personal sites(MySite) configuration in SharePoint 2007


The first thing you should do is make sure you’ve created a Shared Service Provider (SSP). To check this do the following:
  1. Go to MOSS 2007 Central Administration
  2. Click on Shared Services Administration in left navigation
    1. If this list is not empty then click on an SSP
    2. If this list is empty then click New SSP and create a Shared Service Provider  
Once on the Shared Services Administration page for your SSP you should see at least 3 sections titled: User Profiles and My Sites, Audiences and Search. To get started you’ll need to import user profiles from the directory.To import user profiles:
  1. Under User Profiles and My Sites click on the link labeled “User profiles and properties”
  2. On the User Profiles and Properties page click on “Configure profile import”
  3. Provide a default access account, specify an account that has read access to your directory.Note: This account needs to also have Manage User Profiles rights, verify click on “Personalization services permissions” under User Profiles and My Sites on the SSP Admin page. To keep things simple until you have a grasp of the service you should use the SharePoint Admin account.
  4. Click OK
  5. On the User Profiles and Properties page click on “Start full import”
  6. Verify that import started and wait until import has completed before moving on to other personalization admin tasks (this may take a few hours)
  7. After import is complete to view the results click on “View user profiles” on the User Profiles and Properties page
The SSP administrative portion of My Site should have been configured when you created the SSP. So while waiting on profile import to complete you can explore the non administrative parts of My Site.To create a My Site:
  1. Click on My Site in the global actions bar which is in the top right corner of every SharePoint page
  2. Wait while your My Site is created
  3. After creation is complete check to make sure the name of the site created is titled with your name
    1. If not then open a new browser window with your credentials and click the My Site link again or copy the URL behind the My Site link into the browser window.Note: My Site is highly personalized so it works best when its created using your credentials and not those of an admin account or alternate account
  4. Follow the links in the Getting Started with My Site web part
Once profile import is complete we can go back to setting up personalization services in the SSP Admin page. Now that we have profiles we can do things with them like create audiences.To create audiences:
  1. Go to the Shared Services Administration page for your SSP.
  2. Click on “Audiences” under the section Audiences
  3. On the Manage Audiences page click on “Create audience”Note: Audiences should not be created until after you’ve completed a profile import.
  4. Walk through the steps to create a new audiences based on user profile data
  5. After you’re done creating audiences click on “Start compilation” from the Manage Audiences pageNote: Audiences must be compiled before they can be used.
  6. After compilation is complete to view the results click on “View audiences” from the Manage Audiences page
Now that we have created new audiences we should put them to use on SharePoint sites by targeting content. To target content on SharePoint sites:
  1. Go to SharePoint site
  2. Go to the document library on the site
  3. Go to Document Library Settings
  4. Click on “Audience targeting settings” under General Settings
  5. Enable audience targetingNote: You can do this for any list type not just documents.
  6. Go back to the document library
  7. Edit or upload a new document
  8. Click the Browse button in the Target Audiences field
  9. Select an audience you created or search and use an existing distribution listNote: Distribution lists and security groups will only display after you’ve completed a profile import.
  10. Click OK to update the document’s properties
To display targeted content on SharePoint sites:
  1. Go to the site home page and add the Content Query Web Part
  2. Modify the Content Query Web Part
  3. Under Query change List Type to Document Library
  4. Under Query -> Audience Targeting check “Apply audience filtering”
  5. Click OK
  6. Verify the items you targeted in the document library only show for people in those audiences.  
Now that you’ve had a chance to see how audience targeting works let’s move on to People Search. To setup people search:
  1. Go to Shared Services Administration for your SSP
  2. Under Search section click on “Search settings”
  3. On Configure Search Settings page find the default content access account
    1. If this is not set then provide a default content access account
  4. Verify default content access account has Use personal features rightsNote: To verify click on “Personalization services permissions” under User Profiles and My Sites on the SSP Admin page. To keep things simple until you have a grasp of the services you should use the SharePoint Admin account.
  5. On Configure Search Settings page click on “Content sources and crawl schedules”
  6. On the Manage Content Sources page hover over “Local Office SharePoint Server sites” and click the arrow to drop the ECB menu
  7. In the drop menu click Start Full Crawl
  8. Verify that crawl started and wait until crawl has completed before moving on to search for people
Finding people:
  1. Once crawl is complete to main portal site and click on Search in the top navigation area to go to the Search Center
  2. In Search Center click on tab labeled “People”
  3. Type in a term you added to your profile while exploring your My Site such as a project, skill or responsibility
  4. Hit Enter or click the Go button
  5. Verify that you and others who match that search term was returned as search results  
One area of personalization we haven’t touched on at all yet is publishing links to the Office client. Links to SharePoint lists, libraries, and sites can be published to Office 2007 clients as places to easily retrieve or save documents. To publish links to Office 2007 clients:
  1. Go to Shared Services Administration for your SSP
  2. Under User Profiles and My Sites click on “Published links to Office client applications”
  3. Click New to add a link
  4. Provide a URL, name and type for the link
    1. If you want to the link to only show for a specific set of people then specify and audience
  5. Click OK
To view links in the Office 2007 client:
  1. Open Word 2007
  2. Open the File Open or Save As dialog box
  3. Click on My SharePoint Sites on the leftNote: In order for the service to find the SSP you must set the My Site you created earlier as your default My Site.
  4. Verify link are presented

Configure SharePoint 2007 search to display results based on Custom profile properties.

SharePoint search is very powerful feature which is not used to its full extent often. Many of SharePoint farms use custom user profile properties, but doesn't get configured to return search result based on this meta data.

Below are the step by step description how to configure custom user profile properties in search.

  1.  Create a custom user profile property. Go to Central admin-SSP-User profiles and properties.
  2.  View user profile profiles-click add a new user profile property.
  3. Give a name to it and type of value, check the 'Indexed' box.
  4. Privacy setting can be anything(everyone or only me). Many articles suggest this to be configured as everyone to display in the search. But it really doesn't matter. Whatever the privacy setting once you check the 'Indexed' checkbox the property will be crawled by the search service.


Now lets configure this property in the SSP so that based on this property search can be performed.

  1.  Go to SSP-Search Administration
  2. Click Managed Properties.
  3. Newly created user profile property has to be included here so as to make indexing service crawl this property.
  4. Click add a new property.
  5. Give any name for the propery(not to make complex name the same as your profile property).
  6. Select 'Include values from all crawled properties mapped'.
  7. Click Add Mapping. Under Crawled properties you should see your new user profile properties.
  8. Most commonly you would not see you newly added user profile property here. To do so start a incremental crawl for the content source.
  9. Now go back to your Crawled properties, you will see your custom property. Select it and map it to the new meta data propery.
  10. Click ok.
  11. Do a full crawl.
  12. Now you can perform search based on the custom user profile property added. To verify easily. Go to your mysite. Click Edit profile. You will see the new added property. Click on its value. It should redirect to the search page with the results.


Note: The newly added user profile properties should contain value to be crawled by Search service.

Tuesday, April 12, 2011

SharePoint Page layout error: Only Content controls are allowed directly in a content page that contains Content controls

I was working on a Publishing pages for a customer today. I created a new custom page layout using Visual studio and created a new page based on the page layout. Everything worked fine until today morning. Suddenly my publishing page was throwing a error  " Only Content controls are allowed directly in a content page that contains Content controls". and showed some html elements in the error message which is placed outside of the content place holder.

I double checked my page layout. There was no html elements inside it. Everything is placed under the ContentPlaceHolder. Then whats the problem...very strange..

I opened the page in designer. To my surprise, I could see some html markups added to the page. I don't know what has happened after I deployed my page layout.

I went back to my page layout design and after much analysis i could figure out the culprit. Its the case sensitive of contentplaceholder tag.
My code was like this which is actually fine and should work.

<asp:contentplaceholderId="PlaceHolderPageTitle" runat="server"></asp:content)

I changed the 'c' in the contentplaceholder tag to upper case like this

<asp:ContentPlaceholderID="PlaceHolderPageTitle" runat="server"></asp:Content).

Redeployed the solution and it did the trick. It was working fine. So the lower case of the content place holder tag has actually inserted some html markups to my page which in turn has caused me the error.

Hope this helps someone.




How to delete a Page layout in Master page and layouts library in SharePoint

Today I was working on solution based on Publishing pages. On activating a feature, a new page layout will be deployed to the Master page and layouts document library. On the other way, when I deactivate the feature the solution should delete the deployed page layout and associated content types etc so that I can ensure that no turds are left in the farm.

But to my surprise I was not able to delete the page layouts I created either through code or manually in the document library. It was throwing a very misguiding error "Server error: This item cannot be deleted because it is still referenced by other pages".. After spending a hour or so I figured that there is no page in my site referencing this Page Layout.  Microsoft has confirmed that its a bug in MOSS 2007 thats sometimes the page layout cannot be deleted.

But how do I delete it then?. There is a trick to do it.
1. Open the Master page gallery in windows explorer mode.
2. Create a subfolder and name it 'Delete' (you can give any name to it).
3. Cut and paste your layout.aspx page to the folder.
4. Delete the folder now.

So we confirmed that manually we were able to delete the page layouts. Lets try it programmatically.

SPWeb web=properties.Feature.Parent as SPWeb;
SPSite sitecollection= web.site;
PublishingWeb web=PublishingWeb.GetPublishingWeb(web);
SPFolderCollection folders=web.Lists["Master Page Gallery"].RootFolder.SubFolders;
SPFolder folder =folder.add("Delete");
PublishingSite psite=new PublishingSite(sitecollection);
SPContentType ctype=psite.ContentTypes["SampleCType"];
PageLayoutCollection pagelayouts=psite.GetPageLayouts(ctype,true);
PageLayout layout=pagelayouts["/_catalogs/masterpage/SampleLayout.aspx"];
layout.ListItem.File.MoveTo(folder.url+"/SampleLayout.aspx");
folder.Delete();



Sunday, April 10, 2011

Jquery News Sliders

News broadcasting is becoming a no optional feature in most of the intranet as well as internet corporate portals.  

We can create different form of News slider in JQuery with very few lines of code.

Horizontal News feed:
1.Create a UI list with many items.

<ul  id='listslider'>
<li>Indian Presidents congratulates Indian Cricket team on winning world cup</li>
<li>Shoot out in Libya</li>
<li>Weather gets worst in New york</li></ul>

2. Add a script as below(only 3 lines of code).

$(document).ready(function(){
var interval=setInterval(newslider, 2000);
});

function newsslider()
{
var last=$('ul#listslider li:last').hide().remove();
$('ul#listslider li:last').prepend(last);
$('ul#listslider li:last').slidedown.show();
}

if you want to stop the slider, just call the below script
clearInterval(interval);

In my next article I will post how to create a  vertical news slider.