This post is migrated from previous hosting provider. There are still some issues with old posts. Please make a comment on this post with any issues.

Create custom Rating icons for SharePoint 2010 Server

Tags: SharePoint 2010

SharePoint 2010 contains functionality for rating documents and items using a classic five-star rating approach. But those starts looks a little bit like the Google stars, right?

Wouldn't it be cool to brand the rating and use custom icons like this:

The solution is quite easy actually. You need to create a set of images and then set a few properties on the SPWeb object of the top-level site in the Site Collection.

Images

First you need four images. Two images used for CSS-sprites and two images used when hovering/selecting the rating. I used the following images:

This image is used for standard left-to-right rendering of the ratings.

This image is used for right-to-left rendering of the ratings.

|

And these final two images are used when selecting the new rating.

Deploy it as a feature

You should deploy everything as a feature, you should know this by now. Create an empty SharePoint 2010 project and add a new Site Collection scoped feature. Then add an Images mapped folder in which you add the four images.

Visual Studio 2010 solution

To set the properties of the TLS site in the Site Collection add a new Event Receiver to the feature. Edit the FeatureActivated method and add code like this:

SPSite site = properties.Feature.Parent as SPSite;
SPWeb web = site.RootWeb;
web.AllProperties["ratings_imagestripurl_old"] = web.AllProperties["ratings_imagestripurl"];
web.AllProperties["ratings_imagestripurl"] = "/_layouts/Images/Wictor.CustomRatings/AlienRatings.png";
web.AllProperties["ratings_imagestriprtlurl_old"] = web.AllProperties["ratings_imagestriprtlurl"];
web.AllProperties["ratings_imagestriprtlurl"] = "/_layouts/Images/Wictor.CustomRatings/AlienRatingsRtl.png";
web.AllProperties["ratings_newratingiconurl_old"] = web.AllProperties["ratings_newratingiconurl"];
web.AllProperties["ratings_newratingiconurl"] = "/_layouts/Images/Wictor.CustomRatings/AlienRatingsNew.png";
web.AllProperties["ratings_emptyiconurl_old"] = web.AllProperties["ratings_emptyiconurl"];
web.AllProperties["ratings_emptyiconurl"] = "/_layouts/Images/Wictor.CustomRatings/AlienRatingsEmpty.png";
web.Update();

This will update the properties of the site and also save the original values so that we can restore them in the FeatureDeactivating method, like this:

SPSite site = properties.Feature.Parent as SPSite;
SPWeb web = site.RootWeb;
web.AllProperties["ratings_imagestripurl"] = web.AllProperties["ratings_imagestripurl_old"];
web.AllProperties.Remove("ratings_imagestripurl_old");
web.AllProperties["ratings_imagestriprtlurl"] = web.AllProperties["ratings_imagestriprtlurl_old"];
web.AllProperties.Remove("ratings_imagestriprtlurl_old");
web.AllProperties["ratings_newratingiconurl"] = web.AllProperties["ratings_newratingiconurl_old"];
web.AllProperties.Remove("ratings_newratingiconurl_old");
web.AllProperties["ratings_emptyiconurl"] = web.AllProperties["ratings_emptyiconurl_old"];
web.AllProperties.Remove("ratings_emptyiconurl_old");
web.Update();

All you then have to do is to deploy and activate the feature. Unfortunately you need to recycle the application pool to get the hovering functions to work.

No Comments

Comments have been disabled for this content.

About Wictor...

Wictor Wilén is the Nordic Digital Workplace Lead working at Avanade. Wictor has achieved the Microsoft Certified Architect (MCA) - SharePoint 2010, Microsoft Certified Solutions Master (MCSM) - SharePoint  and Microsoft Certified Master (MCM) - SharePoint 2010 certifications. He has also been awarded Microsoft Most Valuable Professional (MVP) for seven consecutive years.

And a word from our sponsors...