Рассмотрим задачу, когда нужно скрыть риббон и верхнюю панель.
это сделать не так сложно,
нужно добавить всего пару строчек CSS
1 2 3 4 5 6 | #suiteBarDelta{ display : none ; } #s 4 -ribbonrow{ display : none ; } |
Но возникает проблема, ведь часть кнопок скрыта и администрировать
становится не возможным. Конечно можно открыть панель разработчика в браузере и
отобразить требуемы контент, но при частой работе с риббоном это не удобно.
Решение
Пишем скрипт который получает id текущего пользователя и если пользователю разрешено, то
отображается риббон.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | '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?
Спасибо!