Удаление Sharepoint QuickLaunch на основе разрешений

В настоящее время я впервые работаю над брендингом SharePoint. Я использую SharePoint Foundation 2010. Я пытался удалить раздел быстрого запуска со страницы для всех, кто не входит в группу «Администратор». Теперь я попытался написать функцию или веб-часть, чтобы сделать это с помощью следующего кода С#:

SPWeb web = SPContext.GetContext(this.Context).Web.ParentWeb;
web.AllowUnsafeUpdates = true;
web.QuickLaunchEnabled = false;
web.Update();

Это не привело к удалению самой панели и перемещению основного содержимого влево. Я решил попробовать это с маршрута Jquery. Мой код скопирован ниже. Однако, когда я попробовал это на мастер-странице, страница полностью загружается, а затем панель удаляется. Я хотел бы, чтобы это произошло до того, как страница действительно загрузится, чтобы пользователь не видел всплывающее окно страницы, а затем менялся. Я не уверен на 100%, что JQuery - это путь, пожалуйста, помогите мне, поскольку я борюсь с этим.

$(document).ready(function(){
     $().SPServices({
     operation: "GetGroupCollectionFromUser",
     userLoginName: $().SPServices.SPGetCurrentUser(),
     async: false,
     completefunc: function(xData, Status) {
        if($(xData.responseXML).find("Group[Name='Administrator']").length == 1)
        {}
        else{

         var quicklaunchpanel = document.getElementById('s4-leftpanel');  
    quicklaunchpanel.style.display="none";
    var maincontent = document.getElementById('MSO_ContentTable');
    maincontent.style.cssText = "margin-left:0px;";

        }
      }

});

Примечание. Я также пробовал $(document).load() и $('#s4-leftpanel').load(), но ни один из них не вызвал никаких действий.

ТИА!


person shenn    schedule 14.11.2012    source источник


Ответы (2)


Шенн,

Рассматривали ли вы создание пользовательского элемента управления навигацией? Это может звучать радикально, но может быть именно то, что вы ищете.

Взгляните на http://blogs.msdn.com/b/modonovan/archive/2008/05/30/custom-navigation-in-sharepoint-the-full-monty.aspx, особенно варианты 5 и 6. .

person Anthony Papadakis    schedule 14.11.2012

Я смог использовать SPSecurityTrimmedControl для этого:

Первоначально я установил для свойства отображения s4-leftpanel значение «none», а затем после этой панели был следующий блок кода:

<Sharepoint:SPSecurityTrimmedControl runat="server" Permissions="FullMask">
        <script type="text/javascript">
            document.getElementById("s4-leftpanel").style.display = "block";
        </script>
        </Sharepoint:SPSecurityTrimmedControl>

Я также выполнил то же самое для поля MSO_ContentTable. Я установил его на 0px, а затем запустил этот код после этого div:

        <Sharepoint:SPSecurityTrimmedControl runat="server" Permissions="FullMask">
        <script type="text/javascript">
            document.getElementById("MSO_ContentTable").style.marginLeft = "155px";
        </script>
        </Sharepoint:SPSecurityTrimmedControl>
person shenn    schedule 14.11.2012
comment
Разве вам не нужно поместить этот код в функцию document.ready или что-то подобное? - person Steve Mannina; 15.11.2012