如何检查评级设置是否已启用Sharepoint 2013

时间:2014-10-17 23:29:10

标签: c# powershell sharepoint sharepoint-2010 sharepoint-2013

我已查看此链接:

How to Check Rating Settings is enabled or not by Javascript in SharePoint 2010?

但是,一旦您已经激活(和停用)评级设置,这对列表不起作用,至少在Sharepoint 2013上没有。

我还检查过Microsoft.Sharepoint.Portal.dll中有一个ReputationHelper类,它用于激活或停用此功能:

http://prasadpathak.wordpress.com/2013/06/19/enable-rating-likes-settings-in-sharepoint-2013/

所以我试图使用visual studio打开dll但不知何故该类是内部的,我无法检查方法。甚至使用powershell来加载程序集并尝试为该类创建一个实例,但它也失败了。

您知道该类是否有方法调用,允许在列表中获取此评级设置的特定值?我试过GetReputation(一个幸运的猜测),但它没有用。

我还尝试使用其余服务http://sp.mydomain.com/_api/lists/GetByTitle(“页面”)获取列表架构,但架构未显示任何属性。你知道一种方法来获取特定列表的这个值,即使它已经被激活了吗?

由于

1 个答案:

答案 0 :(得分:0)

是否必须通过JavaScript完成?

您可以尝试查看EnableReputation方法在已启用评级/喜欢时所执行的操作,可能会返回一个值,但我不确定如何获取该方法的返回值。这是我在任何给定列表上以编程方式启用Likes的代码:

private void ActivateLikesOnList(SPList list)
{
  try
  {
    System.Reflection.Assembly assembly = System.Reflection.Assembly.Load("Microsoft.SharePoint.Portal, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c");
    Type reputationHelper = assembly.GetType("Microsoft.SharePoint.Portal.ReputationHelper");
    System.Reflection.MethodInfo method = reputationHelper.GetMethod("EnableReputation", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);

    method.Invoke(null, new Object[] { list, "Likes", false });
  }
  catch (Exception ex)
  {
    String msg = "Error while activating Likes on List" + " : {0} :: {1} :: {2}";
    _DiagnosticService.WriteTrace(0, _DiagnosticCategory, TraceSeverity.Medium, msg, ex.Message, ex.StackTrace, ex.TargetSite);
  }
}

我希望这能为你提供一个如何实现这一目标的提示。