none
убрать лишнее в SharePoint RRS feed

  • Вопрос

  • создал пау страничек, добавил некоторые библиотеки. но стандартный интерфейс SharePoint не подходит. пробовал использовать разные готовые темы, то там меняется только цвет фона, выделения кнопок. Нужно удалить или скрыть всё: вверху 2 строки, на которых расположены кнопки Sharepoint, Sites, ?, System Account, Browse, Page, Share, Follow, Edit, а также удалить логотип и строку поиска, чтобы весь контент поднялся вверх.

    Вообще в идеале сделать просто странички на SharePOint, не привязанные к его стилям, или привязанные, но без имеющегося меню и верхних панелек. 

    • Изменено serg_23 8 июня 2017 г. 10:43 ы
    8 июня 2017 г. 10:36

Ответы

  • Добрый день

    думаю, что если скрыть все что вы перечислили, то в дальнейшем с на этой странице будет сложно что то сделать.

    но если хотите, то вот CSS

    .suiteBarDelta{
    display: none;
    }
    .s4-ribbonrow{
    display: none;
    }



    мой блог не много о SharePoint

    8 июня 2017 г. 12:38
    Модератор
  • Сделал тест у себя

    1. добавил css для скрытия у всех 

    2. добавил js. в примере добавил setTimeout для того что бы показать, что  изначально скрыто

    // получение текущего пользователя 
    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)
            }
    }); 


    мой блог не много о SharePoint


    • Изменено Kaplin VladimirModerator 27 ноября 2017 г. 12:05
    • Помечено в качестве ответа serg_23 28 ноября 2017 г. 8:34
    27 ноября 2017 г. 12:04
    Модератор

Все ответы

  • Добрый день

    думаю, что если скрыть все что вы перечислили, то в дальнейшем с на этой странице будет сложно что то сделать.

    но если хотите, то вот CSS

    .suiteBarDelta{
    display: none;
    }
    .s4-ribbonrow{
    display: none;
    }



    мой блог не много о SharePoint

    8 июня 2017 г. 12:38
    Модератор
  • а скрытие поднимет контент вверх или просто скроет и сверху останется пустое место ??
    8 июня 2017 г. 12:47
  • поднимет в верх.

    мой блог не много о SharePoint

    8 июня 2017 г. 14:23
    Модератор
  • работает через #:

    <style type="text/css">
    #suiteBarDelta{
    display: none;
    }
    #s4-ribbonrow{
    display: none;
    }
    </style>


    • Изменено serg_23 28 июля 2017 г. 11:21 у
    8 июня 2017 г. 14:58
  • этим мы убираем верхние 2 панели. а можно как-то сделать, чтобы они убирались только для пользователя, а для админа оставались ??  так как если убрать их совсем, то полезные для админа кнопки ИЗМЕНИТЬ, НАСТРОЙКИ будут тоже недоступны.

    как называется 3я панель сверху ??  у неё слева отображается логотип SharePoint, название библиотеки, ссылки, а справа - поле поиска. Она вообще не нужна !!

    28 июля 2017 г. 11:56
  •  так как если убрать их совсем, то полезные для админа кнопки ИЗМЕНИТЬ, НАСТРОЙКИ будут тоже недоступны. 

    я предупреждал

    то что вы хотите сделать можно только через js

    к имеющемуся CSS стилю нужно добавить:

    1. получение текущего пользователя

    // получение текущего пользователя 
    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();
    };
    немного было описано в соседней ветке

    2. проверка находится ли текущий пользователь в требуемой группе

    3. если пользователь находиться, то показываем требуемое

    jQuery('#suiteBarDelta').show();

    jQuery('#s4-ribbonrow').show();



    мой блог не много о SharePoint


    28 июля 2017 г. 12:36
    Модератор
  • вы подключаете плагин PeoplePicker??  можно узнать где и как ? одного кода из вашего примера недостаточно.
    24 ноября 2017 г. 7:00
  • данное решение ни как не связано с PeoplePiker

    // получение текущего пользователя 
    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_loginName()  )
    // тут уже можно реализовать требуемое условие
    // и добавить отображение риббона
    
        }); 


    мой блог не много о SharePoint

    24 ноября 2017 г. 7:17
    Модератор
  • хотел сначала для админа 1 панель скрыть для теста. сделал так:

    <script>

    //весь код, а в конце:

    jQuery('#suiteBarDelta').hidden();

    jQuery('#s4-ribbonrow').show();

    });

    </script>

    не срабатывает.

    24 ноября 2017 г. 7:45
  • а jQuery есть на странице?

    мой блог не много о SharePoint

    24 ноября 2017 г. 7:48
    Модератор
  • первой стройкой указал

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

    24 ноября 2017 г. 7:55
  • хотел сначала для админа 1 панель скрыть для теста. сделал так:

    <script>

    //весь код, а в конце:

    jQuery('#suiteBarDelta').hidden();

    jQuery('#s4-ribbonrow').show();

    });

    </script>

    не срабатывает.

    а что должно произойти?

    первую команду jQuery не знает, нужно .hide()

    а второй показываете блок.


    мой блог не много о SharePoint


    • Изменено Kaplin VladimirModerator 24 ноября 2017 г. 9:12
    • Помечено в качестве ответа serg_23 24 ноября 2017 г. 9:41
    • Снята пометка об ответе serg_23 24 ноября 2017 г. 10:02
    24 ноября 2017 г. 9:12
    Модератор
  • срабатывает отображение или отключение для всех !! для админа должны оставаться панели, а не получается..
    24 ноября 2017 г. 10:04
  • срабатывает отображение или отключение для всех !! для админа должны оставаться панели, а не получается..

    что не получается?

    что делали?

    просто мой код использовали? а условие кому показывать, а кому скрывать добавляли?


    мой блог не много о SharePoint

    24 ноября 2017 г. 10:16
    Модератор
  • вот... это условие как раз нужно.
    24 ноября 2017 г. 10:21
  • вы видели что выводится в консоль? 
     console.log( res.get_loginName()  )

    мой блог не много о SharePoint

    24 ноября 2017 г. 10:22
    Модератор
  • нет, не увидел, где это должно появиться?
    24 ноября 2017 г. 10:25
  • лучше использовать Chrome

    находясь на странице нажать F12


    мой блог не много о SharePoint

    24 ноября 2017 г. 10:43
    Модератор
  • дальше нужно определится с условием.

    т.е. кто должен видеть панель

    if(res.get_loginName() == "значение"){
     //код для отображения  
    }


    мой блог не много о SharePoint

    24 ноября 2017 г. 10:45
    Модератор
  • не сработало. указал вот так:

    if(res.get_loginName() == "ent\root")  
    {
    jQuery('#suiteBarDelta').show();
    jQuery('#s4-ribbonrow').show();
    }
    else
    {
    jQuery('#suiteBarDelta').hide();
    }

    или в первой строке  =="sharepoint\system"

    то всё равно прячется первая панель у всех, а ведь у рута и у system не должна уже...
    24 ноября 2017 г. 11:28
  • хорошо

    для проверки добавьте вывод в консоль 

    console.log("показываем")

    if(res.get_loginName() == "ent\root")   
    {
    console.log("показываем")
    jQuery('#suiteBarDelta').show();
    jQuery('#s4-ribbonrow').show();
    }
    else
    {
    jQuery('#suiteBarDelta').hide();
    }


    мой блог не много о SharePoint

    24 ноября 2017 г. 11:34
    Модератор
  • я под системной учёткой щас. в консоли отображается только sharepoint\system . слово Показываем отсутствует.

    24 ноября 2017 г. 12:00
  • думаю все дело в \

    его нужно экранировать

    if(res.get_loginName() == "ent\\root")   
    {
    console.log("показываем")
    jQuery('#suiteBarDelta').show();
    jQuery('#s4-ribbonrow').show();
    }
    else
    {
    jQuery('#suiteBarDelta').hide();
    }


    мой блог не много о SharePoint

    24 ноября 2017 г. 12:20
    Модератор
  • не помогло. слово не появилось, а панель у system спряталась.
    24 ноября 2017 г. 12:33
  • скажите, а вставляете в условие ту же учетку что и пишет в консоли?

    если нужно для 

    if(res.get_loginName() == "sharepoint\\system")   
    {
    console.log("показываем")
    jQuery('#suiteBarDelta').show();
    jQuery('#s4-ribbonrow').show();
    }
    else
    {
    jQuery('#suiteBarDelta').hide();
    }


    мой блог не много о SharePoint

    24 ноября 2017 г. 14:34
    Модератор
  • скажите, а вставляете в условие ту же учетку что и пишет в консоли?

    если нужно для 

    if(res.get_loginName() == "sharepoint\\system")   
    {
    console.log("показываем")
    jQuery('#suiteBarDelta').show();
    jQuery('#s4-ribbonrow').show();
    }
    else
    {
    jQuery('#suiteBarDelta').hide();
    }


    мой блог не много о SharePoint

    да, именно так.  к тому же  console.log ("13454");    ничего не выводит, не отображает.

    скажите, а у вас это весь скрипт с проверкой пользователя работает корректно?


    24 ноября 2017 г. 17:02
  • а если для всех отключить обе панели, то есть вариант как-то потом всё равно войти в режим редактирования страницы ??
    26 ноября 2017 г. 11:07
  • Сделал тест у себя

    1. добавил css для скрытия у всех 

    2. добавил js. в примере добавил setTimeout для того что бы показать, что  изначально скрыто

    // получение текущего пользователя 
    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)
            }
    }); 


    мой блог не много о SharePoint


    • Изменено Kaplin VladimirModerator 27 ноября 2017 г. 12:05
    • Помечено в качестве ответа serg_23 28 ноября 2017 г. 8:34
    27 ноября 2017 г. 12:04
    Модератор
  • да, так работает.
    28 ноября 2017 г. 8:34
  • а если у меня 10 страниц и надо сделать, чтобы панели также не отображались для пользователя, а для юзера с ID=111 отображались везде?? этот код я написал в редакторе скриптов на главной странице. я так полагаю, его надо вынести в отдельный файл и подключить !!?? если да, то подскажите как и чтобы он применялся ко всем страницам.
    • Изменено serg_23 28 ноября 2017 г. 8:53 а
    28 ноября 2017 г. 8:49