If u want implement custom Like and Rating functionality in Sharepoint 2013,find the below code.
Add Microsoft.Office.Server.UserProfiles.dll as a reference in your project
Class: Following are the classes which are available with the namespace
Reputation,ElevatedPrivilegesHelper
SPList resourceList = SPContext.Current.Web.Lists["Resources"];
SPListItem likeItem = resourceList.Items[0];
Reputation.SetLike(resourceList.ID.ToString(), likeItem.ID, true);
Set custom Rating for ur List or Library
SPList resourceList = SPContext.Current.Web.Lists["Resources"];
SPListItem likeItem = resourceList.Items[0];
Reputation.SetRating(resourceList.ID.ToString(), likeItem.ID, 4);
Before this code you have to enable the Rating and Like functionality on ur sharepoint list...
Goto List settings u will find Rating settings.
once u enable this automatically some fields are created to ur list
Those are
LikedBy
LikesCount
etc
Same thing u can implement using client side object model code
var likepage = {
//Likes the current page.
LikePage: function () {
likepage.getUserLikedPage(function(likedPage, likeCount) {
var aContextObject = new SP.ClientContext();
EnsureScriptFunc('reputation.js', 'Microsoft.Office.Server.ReputationModel.Reputation', function() {
Microsoft.Office.Server.ReputationModel.
Reputation.setLike(aContextObject,
_spPageContextInfo.pageListId.substring(1, 37),
_spPageContextInfo.pageItemId, !likedPage);
aContextObject.executeQueryAsync(
function() {
var elements = document.getElementsByClassName('likecount');
if (likedPage) {
likeCount--;
} else {
likeCount++;
}
for (var i = 0; i < elements.length;i++) {
elements[i].innerHTML = likeCount;
}
}, function(sender, args) {
// Custom error handling if needed
});
});
});
},
// Checks if the user already liked the page, and returns the number of likes.
getUserLikedPage: function (cb) {
var context = new SP.ClientContext(_spPageContextInfo.webServerRelativeUrl);
var list = context.get_web().get_lists().getById(_spPageContextInfo.pageListId);
var item = list.getItemById(_spPageContextInfo.pageItemId);
context.load(item, "LikedBy", "ID", "LikesCount");
context.executeQueryAsync(Function.createDelegate(this, function (success) {
// Check if the user id of the current users is in the collection LikedBy.
var $v_0 = item.get_item('LikedBy');
if (!SP.ScriptHelpers.isNullOrUndefined($v_0)) {
for (var $v_1 = 0, $v_2 = $v_0.length; $v_1 < $v_2; $v_1++) {
var $v_3 = $v_0[$v_1];
if ($v_3.$1E_1 === _spPageContextInfo.userId) {
cb(true, item.get_item('LikesCount'));
}
}
}
cb(false, item.get_item('LikesCount'));
}),
Function.createDelegate(this, function (sender, args) { //Custom error handling if needed }));
},
initialize: function () {
var elements = document.getElementsByClassName('likecount');
likepage.getUserLikedPage(function(likedPage, likesCount) {
for (var i = 0; i < elements.length; i++) {
elements[i].innerHTML = likesCount;
}
});
}
};
_spBodyOnLoadFunctionNames.push("likepage.initialize");
Add Microsoft.Office.Server.UserProfiles.dll as a reference in your project
Class: Following are the classes which are available with the namespace
Reputation,ElevatedPrivilegesHelper
Set Custom Like for ur Sharepoint List or Library
SPList resourceList = SPContext.Current.Web.Lists["Resources"];
SPListItem likeItem = resourceList.Items[0];
Reputation.SetLike(resourceList.ID.ToString(), likeItem.ID, true);
Set custom Rating for ur List or Library
SPList resourceList = SPContext.Current.Web.Lists["Resources"];
SPListItem likeItem = resourceList.Items[0];
Reputation.SetRating(resourceList.ID.ToString(), likeItem.ID, 4);
Before this code you have to enable the Rating and Like functionality on ur sharepoint list...
Goto List settings u will find Rating settings.
once u enable this automatically some fields are created to ur list
Those are
LikedBy
LikesCount
etc
Same thing u can implement using client side object model code
var likepage = {
//Likes the current page.
LikePage: function () {
likepage.getUserLikedPage(function(likedPage, likeCount) {
var aContextObject = new SP.ClientContext();
EnsureScriptFunc('reputation.js', 'Microsoft.Office.Server.ReputationModel.Reputation', function() {
Microsoft.Office.Server.ReputationModel.
Reputation.setLike(aContextObject,
_spPageContextInfo.pageListId.substring(1, 37),
_spPageContextInfo.pageItemId, !likedPage);
aContextObject.executeQueryAsync(
function() {
var elements = document.getElementsByClassName('likecount');
if (likedPage) {
likeCount--;
} else {
likeCount++;
}
for (var i = 0; i < elements.length;i++) {
elements[i].innerHTML = likeCount;
}
}, function(sender, args) {
// Custom error handling if needed
});
});
});
},
// Checks if the user already liked the page, and returns the number of likes.
getUserLikedPage: function (cb) {
var context = new SP.ClientContext(_spPageContextInfo.webServerRelativeUrl);
var list = context.get_web().get_lists().getById(_spPageContextInfo.pageListId);
var item = list.getItemById(_spPageContextInfo.pageItemId);
context.load(item, "LikedBy", "ID", "LikesCount");
context.executeQueryAsync(Function.createDelegate(this, function (success) {
// Check if the user id of the current users is in the collection LikedBy.
var $v_0 = item.get_item('LikedBy');
if (!SP.ScriptHelpers.isNullOrUndefined($v_0)) {
for (var $v_1 = 0, $v_2 = $v_0.length; $v_1 < $v_2; $v_1++) {
var $v_3 = $v_0[$v_1];
if ($v_3.$1E_1 === _spPageContextInfo.userId) {
cb(true, item.get_item('LikesCount'));
}
}
}
cb(false, item.get_item('LikesCount'));
}),
Function.createDelegate(this, function (sender, args) { //Custom error handling if needed }));
},
initialize: function () {
var elements = document.getElementsByClassName('likecount');
likepage.getUserLikedPage(function(likedPage, likesCount) {
for (var i = 0; i < elements.length; i++) {
elements[i].innerHTML = likesCount;
}
});
}
};
_spBodyOnLoadFunctionNames.push("likepage.initialize");



$v_3.$1E_1 is coming as undefined in getUserLikedPage function.
ReplyDelete