В этой статье я расскажу, как можно осуществлять проверку
выбранного значения в поле типа «Пользователь или группа». И так будем
проверять что в поле выбран пользователь отличный от текущего. В случае если он
выбрал сам себя, то ему будет выведено сообщение об этом.
Первым делом, после загрузки страницы, нам нужно получить
текущего пользователя.
// получение текущего пользователя
function getCurrentUser() {
var dfd = jQuery.Deferred();
var currentUser;
if (SP.ClientContext != null) {
SP.SOD.executeOrDelayUntilScriptLoaded(getUser, 'sp.js');
}
else {
SP.SOD.executeFunc('sp.js', null, getUser);
}
function getUser() {
var context = new SP.ClientContext.get_current();
var web = context.get_web();
currentUser = web.get_currentUser();
context.load(currentUser);
context.executeQueryAsync(onSuccessMethod, onRequestFail);
}
function onSuccessMethod(sender, args) {
//currUser = currentUser;
dfd.resolve(currentUser);
}
function onRequestFail(sender, args) {
console.log('ошибка получения пользователя' + args.get_message() + '\n' + args.get_stackTrace());
dfd.reject(args);
}
return dfd.promise();
};
На выходе будет промис, который будет знать получены
асинхронные данные или нет, и какие данные получены.
Вторая функция получает значение из поля PeoplePicker.
function getPPValue(fieldId) {
var strFieldId = jQuery("[id ^= '" + fieldId + "']").attr("id");
var field = SPClientPeoplePicker.SPClientPeoplePickerDict[strFieldId];
var ui = field.GetAllUserInfo();
return ui;
};
Третья функция проверки, в момент нажатия на кнопку «Сохранить».
function PreSaveAction() {
var PPvalue = getPPValue("User")
var result = false;
currUser.done(function (res) {
if(PPvalue[0] && PPvalue[0].Key == res.get_loginName()){
console.log(PPvalue[0].Key, res.get_loginName());
alert("Выберите другого пользователя")
result = false;
}else{
// alert(res.get_loginName())
result = true;
};
});
return result;
}
/// содежимое test.js
var currUser;
_spBodyOnLoadFunctionNames.push("WorkingWithFields");
function WorkingWithFields()
{
currUser = getCurrentUser();
}
// получение текущего пользователя
function getCurrentUser() {
var dfd = jQuery.Deferred();
var currentUser;
if (SP.ClientContext != null) {
SP.SOD.executeOrDelayUntilScriptLoaded(getUser, 'sp.js');
}
else {
SP.SOD.executeFunc('sp.js', null, getUser);
}
function getUser() {
var context = new SP.ClientContext.get_current();
var web = context.get_web();
currentUser = web.get_currentUser();
context.load(currentUser);
context.executeQueryAsync(onSuccessMethod, onRequestFail);
}
function onSuccessMethod(sender, args) {
//currUser = currentUser;
dfd.resolve(currentUser);
}
function onRequestFail(sender, args) {
console.log('ошибка получения пользователя' + args.get_message() + '\n' + args.get_stackTrace());
dfd.reject(args);
}
return dfd.promise();
};
// получение данные из поля PeoplePicker
function getPPValue(fieldId) {
var strFieldId = jQuery("[id ^= '" + fieldId + "']").attr("id");
var field = SPClientPeoplePicker.SPClientPeoplePickerDict[strFieldId];
var ui = field.GetAllUserInfo();
return ui;
};
function PreSaveAction() {
var PPvalue = getPPValue("User")
var result = false;
currUser.done(function (res) {
if(PPvalue[0] && PPvalue[0].Key == res.get_loginName()){
console.log(PPvalue[0].Key, res.get_loginName());
alert("Выберите другого пользователя")
result = false;
}else{
// alert(res.get_loginName())
result = true;
};
});
return result;
}

Комментариев нет:
Отправить комментарий