SharePoint中利用客户端脚本获得当前登录用户信息
需求概述
在服务器端可以很方便的获得当前页面登录的用户信息,但是有的时候需要在客户端利用脚本获得当前登录的用户信息。
效果图
用户YoungSem登录
显示的菜单
用户Jacqueline登录
显示的菜单
实现原理
利用服务器端获得用户信息
利用WebPart将用户信息发送到客户端
在客户端利用脚本获得用户信息
实现细节
生成一个可以获得页面登录信息的用户控件;
利用KaneBoy的用户控件包装器将生成的用户控件包装成WebPart;
发布WebPart到相应的页面;
将“内容编辑Web部件”拖动到页面中,写入相应的脚本。具体可以参见“更改SharePoint文档库中上下文菜单的菜单项”。
(1)可以获得页面登录信息的用户控件
在用户控件中添加一个Html的编辑框控件,将其改为在服务器端运行
在Page_Load事件中添加如下代码
SPWeb mySite = SPControl.GetContextWeb(Context);
SPUser curUser = mySite.CurrentUser;
tb_curUserInfo.Value = curUser.LoginName;
(2)写入相应的脚本
<script language="javascript">
function Custom_AddDocLibMenuItems(m, ctx)
{
var strDisplayText = "晚上一起看电影,好不好?"; // 菜单项的显示文字
var strAction = "alert('不去,怕欠你人情!')"; // 菜单项的实际功能
var strImagePath = ""; // 菜单项的显示图片
//取得页面获得的用户信息
var curUser = document.all("Right:g_dbe99713_ca21_4f1e_b544_30648e30c7d5:_ctl0:tb_curUserInfo").value;
//做一个简单的判定
if ( "PORT\\YoungSem" == curUser )
{
// 将菜单项添加到上下文菜单中
CAMOpt(m, strDisplayText, strAction, strImagePath);
// 添加一个分隔栏
CAMSep(m);
}
// 如果为true,不显示系统默认的菜单项
// 如果为fasle,显示系统默认的菜单项
return true;
}
</script>