2012-11-14 146 views
0

我目前正在首次使用某些SharePoint品牌。我正在使用SharePoint Foundation 2010.我试图尝试从不属于“管理员”组的每个人的页面中删除快速启动部分。现在,我试着写一个功能或Web部件与下面的C#代码来做到这一点:根据权限删除Sharepoint QuickLaunch

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!

回答

0

我能够用户SPSecurityTrimmedControl来实现:

我最初设置的显示属性设置为S4-leftpanel为“无”和然后有这个代码块该面板后:

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

我也performaned同为MSO_ContentTable.I的利润率将其设置为0像素,然后该div后运行此代码:

 <Sharepoint:SPSecurityTrimmedControl runat="server" Permissions="FullMask"> 
     <script type="text/javascript"> 
      document.getElementById("MSO_ContentTable").style.marginLeft = "155px"; 
     </script> 
     </Sharepoint:SPSecurityTrimmedControl> 
+0

你不需要把这段代码放在document.ready函数中吗? –