Рассмотрим задачу, когда нужно скрыть риббон и верхнюю панель.
это сделать не так сложно,
нужно добавить всего пару строчек CSS
#suiteBarDelta{
display: none;
}
#s4-ribbonrow{
display: none;
}
Но возникает проблема, ведь часть кнопок скрыта и администрировать
становится не возможным. Конечно можно открыть панель разработчика в браузере и
отобразить требуемы контент, но при частой работе с риббоном это не удобно.
Решение
Пишем скрипт который получает id текущего пользователя и если пользователю разрешено, то
отображается риббон.
'use strict';
// получение текущего пользователя
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();
};
var currUser = getCurrentUser();
currUser.done(function (res) {
console.log("Ид текущего пользователя - ", res.get_id() )
if(res.get_id() == 9)
{
setTimeout(function(){
console.log("показываем")
jQuery('#suiteBarDelta').show();
jQuery('#s4-ribbonrow').show();
},3000)
}
});
В примере установлен setTimeout, его можно убрать.
Вот что у нас на выходе.


Отлично! как раз то что надо! Спасибо!
ОтветитьУдалитьДобрый день!
ОтветитьУдалитьКак я понял Вы скрывали две панели как я понял отобразилась suiteBarDelta, а как отобразить s4-ribbonrow?
Спасибо!