Botão “Curtir” personalizado no SharePoint 2013

Como muitos notaram, o SharePoint 2013 vem com muitos novos recursos sociais . Um desses recursos é a possibilidade de “Curtir” um item da lista. Você pode ativar a funcionalidade “Curtir” em “Configurações da lista”, em “Configurações de classificação”. Isso adiciona duas colunas à sua lista, “LikedBy” e “LikesCount”. LikesCount tem uma coluna formatada em XSLT que permite “Curtir” um item de lista na visualização de lista.

Isso é muito bom, mas e se você quiser ter um botão Curtir personalizado? Se você tiver artigos na biblioteca de páginas que deseja “Curtir”, como faria isso? Uma solução imediata seria manipular a coluna LikedBy e LikesCount, aumentando o número de curtidas e quem gostou. No entanto, essa não é uma boa solução por vários motivos. Entre eles a simultaneidade e o fato de que o SharePoint verifica a página assim que você começa a editar a coluna.

Depois de vasculhar as bibliotecas JavaScript do SharePoint, encontrei uma função chamada Microsoft.Office.Server.ReputationModel.Reputation . Essa função recebe um objeto SP.ClientContext, um ID de lista (sem as chaves), um ID de item de lista e um valor booleano que descreve se você deseja ou não “Curtir” o artigo.

O código a seguir mostra como você pode obter o id da lista atual e o id do item da lista atual em uma página e definir o usuário atual como “Curtir” o item. Basta conectá-lo a um evento de clique.

EnsureScriptFunc('reputation.js', 'Microsoft.Office.Server.ReputationModel.Reputation', function () {
Microsoft.Office.Server.ReputationModel.
Reputation.setLike(aContextObject,
_spPageContextInfo
.pageListId.substring(1, 37),
_spPageContextInfo
.pageItemId, false);

aContextObject
.executeQueryAsync(
function () {
// Do something if successful
}, function (sender, args) {
// Do something if error
});
});

Lembre-se de incluir sp.js, sp.core.js e reput.js em sua página, de preferência em uma página mestra ou em uma web part com registerSod.