我想利用Sharepoint 2010中的一些社交协作功能,例如Noteboard webpart和标记,但不想使用“我的网站”配置文件页面。
我已经构建了一个自定义控件,可以从userdisp.aspx页面重定向到自定义用户配置文件页面。我想继续使用该自定义配置文件页面。但是,例如,Noteboard webpart生成的用户配置文件链接似乎直接转到/Sites/MySites/person.aspx页面,而不通过/_layouts/userdisp.aspx页面进行路由。所以我的配置文件重定向控件无法捕获它。
在Sharepoint Central Admin中,在“管理服务应用程序”下>用户简档服务应用程序>管理用户权限,我只选中了“使用社交功能”,而不是“创建个人网站”,因此我不确定为什么配置文件页面没有链接到旧的userdisp.aspx页面。
是否可以将这些链接重定向回userdisp.aspx页面?
答案 0 :(得分:1)
它似乎被硬编码到webpart中。
我在looked Microsoft.SharePoint.Portal.WebControls.SocialCommentControl,该链接来自UserProfile.PublicUrl,其定义为:
public override Uri PublicUrl
{
get
{
string userProfileUrl = UserProfileGlobal.GetUserProfileURL(
this.m_objManager.UserProfileApplicationProxy,
this.m_objManager.PartitionID,
"?accountname=",
this.m_UserProfileFields["AccountName"].ToString());
if (!string.IsNullOrEmpty(userProfileUrl))
return new Uri(userProfileUrl);
else
return (Uri) null;
}
}
最终调用:
internal static string GetUserProfileURL(string profileWebUrl, string strIdentifier, string strValue)
{
if (string.IsNullOrEmpty(profileWebUrl))
return (string) null;
else
return PersonalSpaceGlobal.EnsureTrailingSlash(profileWebUrl)
+ "Person.aspx"
+ strIdentifier
+ (strIdentifier.Equals("?accountname=", StringComparison.OrdinalIgnoreCase)
? SPHttpUtility.UrlKeyValueEncode(strValue).Replace(":", "%3A")
: SPHttpUtility.UrlKeyValueEncode(strValue));
}
我可以想到两个解决方法:
重写RenderComment可能会变得混乱。您需要复制方法的decompiled代码才能将以下内容更改为您自己的代码:
SocialCommentControl._GetProperty(
comment,
SocialCommentControl.SocialCommentProperty.PublicPage)
希望RenderComment的67行代码中没有内部方法调用。否则,实施起来会更加困难。如果您可以简单地覆盖_GetProperty,那将会容易得多,但不幸的是,它是一种静态方法。
所有这些都说,我可能会建议使用jQuery选项来扩展SocialCommentControl。