Рассмотрим задачу, когда нужно скрыть риббон и верхнюю панель.
это сделать не так сложно,
нужно добавить всего пару строчек 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?
Спасибо!