Премахване на Sharepoint QuickLaunch въз основа на разрешения

В момента работя върху брандиране на SharePoint за първи път. Използвам SharePoint Foundation 2010. Опитвах се да премахна секцията за бързо стартиране от страницата за всички, които не са в групата „Администратор“. Сега се опитах да напиша функция или уеб част, за да направя това със следния c# код:

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(), но нито едно от тях не предизвика никакво действие.

TIA!


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, за да постигна това:

Първоначално зададох свойството display на 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