【问题标题】:Global Permissions-Based Navigation Sharepoint Foundation 2010Global Permissions-Based Navigation Sharepoint Foundation 2010
【发布时间】:2012-11-08 21:36:48
【问题描述】:

我正在使用 SharePoint Foundation 2010,我想创建一个多级导航。 (类似于 SharePoint Standard 中发布网站所允许的内容。我意识到这可能是使用自定义站点地图提供程序构建的,我已经研究过了。

这里的关键是,我希望它只显示登录用户有权访问的页面和站点。

目前,我已经开始开发 Web 部件。在此 Web 部件中,我编写了一些 c# 代码来循环并获取所有站点和子页面(并检查用户是否具有权限),然后将它们添加到标签中。最终我想将它们添加到 asp:menu 或创建一个然后使用一些 css 或 jquery 来操作它以执行下拉功能。

这是我的一些代码:

using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb())
        {
            SPWebCollection collWebsite = oWebsite.Webs;

            foreach (SPWeb subSite in collWebsite)
            {
                if (subSite.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.Open))
                {
                    Label1.Text += SPEncode.HtmlEncode(subSite.Title) + "<BR>";
                }

                SPList pagelist = subSite.Lists["Site Pages"];

                foreach (SPListItem item in pagelist.Items)
                {
                    if (item.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser, SPBasePermissions.Open))
                                            {
                        Label1.Text += item.Name + "<BR>";
                    }
                }

                Label1.Text += "<BR><BR>";

                subSite.Close();
            }

            Label1.Text += "<BR><BR><BR><BR>";
        }

    }

我不想将网站或页面添加到标签,而是在这里创建列表。最终目标是将此 Web 部件放在母版页上,并允许它根据权限为用户提供一些导航。

我还发现了一些 css 可以通过简单地添加元素来实现多级导航

  • 里面唯一的问题是,一旦我把它放到母版页上,当我将鼠标悬停在第一个项目上时会显示第 2 级,但在将鼠标移到那里时会消失。 (当 web 部件被放置到页面本身时,这很有效)

    我是在正确的轨道上还是有另一种方法可以同样有效甚至更好?

    TIA。

  • 【问题讨论】:

      标签: css sharepoint sharepoint-2010 master-pages web-parts


      【解决方案1】:
       SPSecurity.RunWithElevatedPrivileges(delegate
                {
      
              SPSite oSiteCollection = SPContext.Current.Site;
      
              using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb())
              {
                  SPWebCollection collWebsite = oWebsite.Webs;
      
                  foreach (SPWeb subSite in collWebsite)
                  {
                      var newItem = new MenuItem();
                      if (subSite.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.Open))
                      {
                          newItem.NavigateUrl = subSite.Url;
                          newItem.Text = SPEncode.HtmlEncode(subSite.Title);
                          newItem.Value = SPEncode.HtmlEncode(subSite.Title);
                      }
      
                      SPList pagelist = subSite.Lists["Site Pages"];
      
                      foreach (SPListItem item in pagelist.Items)
                      {
      
                          if (item.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser, SPBasePermissions.Open))
                          {
                              var subItem = new MenuItem();
                              subItem.Value = SPEncode.HtmlEncode(item.Name);
                              subItem.Text = SPEncode.HtmlEncode(item.Name);
                              subItem.NavigateUrl = item.Url;
                              newItem.ChildItems.Add(subItem);
                          }
      
                      }
      
                      mnNAv.Items.Add(newItem);
                      subSite.Close();
                 }
      
              }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-04
        • 2011-06-17
        • 1970-01-01
        • 2016-02-05
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多