2010-11-03 35 views
-1

SharePoint 2010更多地使用该员工的照片。在我的公司,员工照片由秘书管理,并被视为人力资源数据的一部分。我们必须根据该调整大小,并返回员工的照片方便的网络服务登录:Sharepoint 2010 - 我可以重新链接用户照片网址吗?

 
http://services.domain.com/photo.ashx?login=kobi&width=64&height=64 

什么是‘重新连接’所有SharePoint照片到该服务的好办法?我想避免将所有照片上传到/my网站,或者更新Active Directory - 我正在寻找全代码解决方案。

我可以重写显示照片的部分吗?如果没有,可以重写所有用户的照片网址?

看起来像SharePoint使用ProfilePropertyImageMicrosoft.SharePoint.Portal.dll - 我真正想做的是让SharePoint使用我的控制,而不是。这太乐观了吗?

回答

2

有一个小的STSADM脚本,用自定义URL和用户ID更改用户图像URL。它是为Sharepoint 2007制作的,但是对于SP2010来说可能是一个简单的改变?事实上,它甚至看起来可以从它制作一个小控制台应用程序。

也许你感兴趣的用户图像(2007年再次共享点)的自定义HTTP处理程序?

对于2010年的SharePoint,你可能要考虑用户配置文件同步服务,也许您可​​以将特殊图像的URL连接到配置文件不知何故?

+0

第一个链接看起来像我所需要的,但如果我理解正确,需要定期为所有员工运行命令。我会研究一下,谢谢。我希望能够进入SharePoint,但... – Kobi 2010-11-03 12:33:14

+0

最后,它挂钩到Sharepoint,只是使用STSADM来运行命令。通过查看可用的Source,我可以看到所有的代码都在SetPictureUrlNewPath.cs中设置“PictureURL”:SetPicture(profile [“PictureURL”],librarypath))'。下载页面在这里:http://stsadm.blogspot.com/2009/02/downloads.html如果你想让它自动运行,你可以为你的更新命令创建一个计时器/时间表。 – 2010-11-03 14:23:31

1

如果您使用的是带有UserProfileManager的的UserProfiles那么你可以在导入配置文件手动设置该属性。您可以从任何系统设置导入,然后在创建用户配置文件时,只需将PictureUrl字段设置为您的自定义URL即可。您可以使用简单控制台应用程序中的批处理作业来更好地控制导入,而不是使用内置概要文件同步。您可以从.exe运行此代码,作为来自各种系统的夜间配置文件更新的一部分。

SPServiceContext serviceContext = SPServiceContext.GetContext(topSite); 
UserProfileManager profileMgr = ProfileLoader.GetProfileLoader(serviceContext).GetUserProfileManager(); 
UserProfile curUser = null; 
if (profileMgr.UserExists(userId)) 
{ 
    curUser = profileMgr.GetUserProfile(userId); 
} 
else 
{ 
    curUser = profileMgr.CreateUserProfile(userId); 
} 
//Set lots of other properties here 
curUser[PropertyConstants.PictureUrl].Value = "http://services.domain.com/photo.ashx?login=" + userId + "&width=64&height=64"; 
curUser.Commit(); 

这将设置PicureUrl属性自定义URL和你没有上传所有的照片。

相关问题