资源描述
Sharepoint学习笔记—ECMAScript对象模型系列-- 8、组与用户操作(一)
这里总结一下关于使用ECMAscript对象模型来操作Goup与User的常用情况,因为内容较多,所以拆分为两个部分,这部分主要内容如下:
1、取得当前Sharepoint网站所有的Group
2、获取当前登录用户的Title与所属Group
3、获取指定Group下的所有Users
4、获取指定Group下的所有Users的特定信息
5、获取所有的Group的所有Users的特定信息
分别描述如下:
1、取得当前Sharepoint网站所有的Group
//Get All The Site Groups in SharePoint Using ECMAScript
var groupCollection;
function getAllSiteGroups() {
var clientContext = new SP.ClientContext();
this.groupCollection = clientContext.get_web().get_siteGroups();
clientContext.load(groupCollection);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededgetAllSiteGroups),
Function.createDelegate(this, this.onQueryFailedgetAllSiteGroups));
}
function onQuerySucceededgetAllSiteGroups() {
var groupName = 'Site Groups: \n';
var groupsEnumerator = this.groupCollection.getEnumerator();
while (groupsEnumerator.moveNext()) {
var group = groupsEnumerator.get_current();
groupName += 'Title :' + group.get_title() + 'ID :' + group.get_id() + '\n';
}
alert(groupName);
}
function onQueryFailedgetAllSiteGroups(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
2、获取当前登录用户的Title与所属Group
//retrieve curent loggedin user and the usres GROUP
var user;
var visitorsGroup;
function retrieveCurrLgUserAndGrp() {
var clientContext = new SP.ClientContext();
var groupCollection = clientContext.get_web().get_siteGroups();
// Get the visitors group, assuming its ID is 4.
visitorsGroup = groupCollection.getById(4);
user = clientContext.get_web().get_currentUser();
var userCollection = visitorsGroup.get_users();
userCollection.addUser(user);
clientContext.load(user);
clientContext.load(visitorsGroup);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededretrieveCurrLgUserAndGrp),
Function.createDelegate(this, this.onQueryFailedretrieveCurrLgUserAndGrp));
}
function onQuerySucceededretrieveCurrLgUserAndGrp() {
alert(user.get_title() + " added to group " + visitorsGroup.get_title());
}
function onQueryFailedretrieveCurrLgUserAndGrp(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
3、获取指定Group下的所有Users
var siteUrlretrieveAllUsersInGroup = '/';
function retrieveAllUsersInGroup(groupID) {
// debugger;
var clientContext = new SP.ClientContext.get_current();
//var clientContext = new SP.ClientContext(siteUrlretrieveAllUsersInGroup);
var collGroup = clientContext.get_web().get_siteGroups();
var oGroup = collGroup.getById(groupID); //Specify which group you want to retrieve
// var oGroup = collGroup.getByTitle('DevpTest Visitor');
this.collUser = oGroup.get_users();
clientContext.load(collUser);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededretrieveAllUsersInGroup),
Function.createDelegate(this, this.onQueryFailedretrieveAllUsersInGroup));
}
function onQuerySucceededretrieveAllUsersInGroup() {
// debugger;
var userInfo = '';
var userEnumerator = collUser.getEnumerator();
while (userEnumerator.moveNext()) {
var oUser = userEnumerator.get_current();
userInfo = userInfo + '\nUser Title: ' + oUser.get_title() +
'\nID: ' + oUser.get_id() +
'\nEmail: ' + oUser.get_email() +
'\nLogin Name: ' + oUser.get_loginName();
}
alert(userInfo);
}
function onQueryFailedretrieveAllUsersInGroup(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
4、获取指定Group下的所有Users的特定信息
//Get User Specific Informations
var siteUrlSpecificUserProperties = '/';
function retrieveSpecificUserProperties(groupID) {
//var clientContext = new SP.ClientContext(siteUrlSpecificUserProperties);
var clientContext = new SP.ClientContext.get_current();
var collGroup = clientContext.get_web().get_siteGroups();
var oGroup = collGroup.getById(groupID);
this.collUser = oGroup.get_users();
clientContext.load(collUser, 'Include(Title, LoginName, Email)');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededretrieveSpecificUserProperties),
Function.createDelegate(this, this.onQueryFailedretrieveSpecificUserProperties));
}
function onQuerySucceededretrieveSpecificUserProperties() {
var userInfo = '';
var userEnumerator = collUser.getEnumerator();
while (userEnumerator.moveNext()) {
var oUser = userEnumerator.get_current();
userInfo += '\nUser: ' + oUser.get_title() +
'\nEmail: ' + oUser.get_email() +
'\nLogin Name: ' + oUser.get_loginName();
}
alert(userInfo);
}
function onQueryFailedretrieveSpecificUserProperties(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
5、获取所有的Group的所有Users的特定信息
//Retrieve all groups all users specific informations
var siteUrlAllUsersAllGroupsSpecificProperties = '/';
function retrieveAllUsersAllGroupsSpecificProperties() {
//var clientContext = new SP.ClientContext(siteUrlAllUsersAllGroupsSpecificProperties);
var clientContext = new SP.ClientContext.get_current();
this.collGroup = clientContext.get_web().get_siteGroups();
clientContext.load(collGroup, 'Include(Title,Id,Users.Include(Title,LoginName))');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededretrieveAllUsersAllGroupsSpecificProperties),
Function.createDelegate(this, this.onQueryFailedretrieveAllUsersAllGroupsSpecificProperties));
}
function onQuerySucceededretrieveAllUsersAllGroupsSpecificProperties() {
var userInfo = '';
var groupEnumerator = collGroup.getEnumerator();
while (groupEnumerator.moveNext()) {
var oGroup = groupEnumerator.get_current();
var collUser = oGroup.get_users();
var userEnumerator = collUser.getEnumerator();
while (userEnumerator.moveNext()) {
var oUser = userEnumerator.get_current();
userInfo += '\nGroup ID: ' + oGroup.get_id() +
'\nGroup Title: ' + oGroup.get_title() +
'\nUser: ' + oUser.get_title() +
'\nLogin Name: ' + oUser.get_loginName();
}
}
alert(userInfo);
}
function onQueryFailedretrieveAllUsersAllGroupsSpecificProperties(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Sharepoint学习笔记—ECMAScript对象模型系列-- 9、组与用户操作(二)
接着上面的继续,这里我们描述的关于User与Group的操作如下:
6、 向指定Group中添加指定User
7、 获取指定Group的Owner
8、 把当前登录用户添加到指定Group中
9、 判断当前登录用户是否有EditPermission权限
10、判断当前登录用户是否在某特定的Group中
分别描述如下:
6、 向指定Group中添加指定User
var siteUrl = '/';
function addUserToSharePointGroup(groupID) {
//var clientContext = new SP.ClientContext(siteUrl);
var clientContext = new SP.ClientContext.get_current();
var collGroup = clientContext.get_web().get_siteGroups();
var oGroup = collGroup.getById(groupID);
var userCreationInfo = new SP.UserCreationInformation();
userCreationInfo.set_email('helpdesk@GLSTAR.COM.AU);
userCreationInfo.set_loginName('GLSTAR\\helpdesk');
userCreationInfo.set_title('helpdesk');
this.oUser = oGroup.get_users().add(userCreationInfo); //add user into group
// var userInfo = '\nUser: ' + oUser.get_title() +
// '\nEmail: ' + oUser.get_email() +
// '\nLogin Name: ' + oUser.get_loginName();
// alert(userInfo);
clientContext.load(oUser);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededaddUserToSharePointGroup),
Function.createDelegate(this, this.onQueryFailedaddUserToSharePointGroup));
}
function onQuerySucceededaddUserToSharePointGroup() {
alert(this.oUser.get_title() + " added.");
}
function onQueryFailedaddUserToSharePointGroup(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
7、 获取指定Group的Owner
//Get The Group Owner Name in SharePoint 2010 Using ECMAScript
var group;
function getGroupOwnerName(groupID) {
var clientContext = new SP.ClientContext();
var groupCollection = clientContext.get_web().get_siteGroups();
group = groupCollection.getById(groupID);
clientContext.load(group);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededgetGroupOwnerName),
Function.createDelegate(this, this.onQueryFailedgetGroupOwnerName));
}
function onQuerySucceededgetGroupOwnerName() {
alert("GroupTitle: " + group.get_title() + "\nGroupOwnerTitle : " + group.get_ownerTitle());
}
function onQueryFailedgetGroupOwnerName(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
8、 把当前登录用户添加到指定Group中
//adds the current user to the specific group on the current website
var currentUser;
var visitorsGroup;
function addUserToSpecificGroupInCurrWeb(groupID) {
var clientContext = new SP.ClientContext();
var groupCollection = clientContext.get_web().get_siteGroups();
visitorsGroup = groupCollection.getById(groupID);
currentUser = clientContext.get_web().get_currentUser();
var userCollection = visitorsGroup.get_users();
userCollection.addUser(currentUser);
clientContext.load(currentUser);
clientContext.load(visitorsGroup);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededaddUserToSpecificGroup),
Function.createDelegate(this, this.onQueryFailedaddUserToSpecificGroup));
}
function onQuerySucceededaddUserToSpecificGroup() {
alert(currentUser.get_title() + " added to group " + visitorsGroup.get_title());
}
function onQueryFailedaddUserToSpecificGroup(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
9、 判断当前登录用户是否有EditPermission权限
//Check current user has Edit Permission
var theCurrentUser;
var theWeb;
function checkifUserHasEditPermissions() {
// debugger;
var context = new SP.ClientContext.get_current();
theWeb = context.get_web();
theCurrentUser = theWeb.get_currentUser();
context.load(theCurrentUser);
context.load(theWeb, 'EffectiveBasePermissions');
context.executeQueryAsync(Function.createDelegate(this, this.onSuccessMethodcheckEditPermissions),
Function.createDelegate(this, this.onFailureMethodcheckEditPermissions));
}
function onSuccessMethodcheckEditPermissions() {
//debugger;
if (theWeb.get_effectiveBasePermissions().has(SP.PermissionKind.editListItems)) {
//User Has Edit Permissions
alert(theCurrentUser.get_loginName()+"Has Edit Permission on current website");
}
else {
alert("No Edit Permission");
}
}
function onFailureMethodcheckEditPermissions() {
alert("Failed to check permission");
}
10、判断当前登录用户是否在某特定的Group中
var IsInThisGroupFlag = false;
// The below checks if the user exists in the group
function checkIfCurrentUserIsInGroup(groupID) {
var context = SP.ClientContext.get_current();
//I go to parent site if I'm in a subsite!
var siteColl = context.get_site();
var web = siteColl.get_rootWeb();
var groupCollection = web.get_siteGroups();
// Get the Our Group's ID
var _group = groupCollection.getById(groupID); // ID of the Group that we are checking
var users = _group.get_users(); // Get all Users of the group
context.load(_group);
context.load(users);
this._users = users;
this._currentUser = web.get_currentUser(); // Get current user
context.load(this._currentUser);
context.executeQueryAsync(Function.createDelegate(this, this.CheckUserSucceededUserIsInGroup),
Function.createDelegate(this, this.CheckUserfailedUserIsInGroup));
}
//The below Checks if User is the member of the specified group
function CheckUserSucceededUserIsInGroup() {
//debugger;
IsInThisGroupFlag = false;
if (this._users.get_count() > 0) {
var _usersEnum = this._users.getEnumerator();
while (_usersEnum.moveNext()) {
var user = _usersEnum.get_current();
if (user.get_loginName() == this._currentUser.get_loginName()) {
//debugger;
IsInThisGroupFlag = true;
}
if (IsInThisGroupFlag) {
alert(user.get_loginName() + " exist in the checked group " + IsInThisGroupFlag.toString());
}
else {
alert(user.get_loginName() + " not exist in the checked group ");
}
}
}
}
function CheckUserfailedUserIsInGroup() {
alert('failed');
}
展开阅读全文