代码之家  ›  专栏  ›  技术社区  ›  Jason Z

在SharePoint中动态显示编辑控制块菜单项

  •  6
  • Jason Z  · 技术社区  · 16 年前

    我正在尝试在SharePoint 2007中设置动态每项菜单(编辑控制块)。我的目标是根据当前用户的组成员资格提供某些功能。

    我知道控制此菜单项创建的CustomAction标记有一个Rights属性。我遇到的问题是,我使用的组在站点中具有相同的权限(ViewListItems、ManageAlerts等)。我们设置的组处理更多的功能,如经理、员工等。我们希望能够为组分配自定义功能,并使与该功能关联的菜单项仅对该组的成员可见。每个人都有相同的基本站点权限,但将有基于其登录凭据的额外可用选项。

    我看过几篇关于修改Core.js文件以在上下文菜单中隐藏项的文章,但它们是一种全有或全无的方法。有一篇有趣的帖子在 http://blog.thekid.me.uk/archive/2008/04/29/sharepoint-custom-actions-in-a-list-view-webpart.aspx 这显示了如何动态修改操作菜单。修改此示例以检查用户组并基于成员身份显示或隐藏菜单是很简单的。不幸的是,这个例子似乎不适用于上下文菜单项 http://forums.msdn.microsoft.com/en-US/sharepointdevelopment/thread/c2259839-24c4-4a7e-83e5-3925cdd17c44/ .

    有人知道不使用javascript的方法吗?如果没有,从javascript检查用户组的最佳方法是什么?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Eric Schoonover thSoft    16 年前

    有两个不同的Javascript函数可以实现,用于将菜单项动态添加到列表项下拉列表中。Core.js(C:\程序文件\公共文件\微软共享\ Web服务器扩展\ 12 \模板\布局\ 1033 \Cal.js)检查这些方法在生成选定列表项的菜单项时是否存在。Custom_AddDocLibMenuItems和Custom_AddListMenuItems是Javascript方法的名称。

    我认为您可以使用一篇文章来解决您的特定问题,基于用户角色成员身份的动态菜单项自定义,可以在这里找到:

    MSDN: Customizing the Context Menu of Document Library Items (请注意,对于任何列表类型,该过程都完全相同)

    本文概述了如何执行服务器端代码来定义将显示的菜单项:

    […]在更复杂的情况下,您必须从服务器检索可用命令的列表,因为只有在那里,您才能运行业务逻辑,并可能从自定义数据库获取命令。通常,如果要实现一个工作流解决方案,其中每个文档都有自己的流程状态,并有与之关联的命令,则需要执行此操作。

    这种情况的解决方案是让自定义的AddDocLibMenuItems动态调用自定义的ASP.NET页面。此页获取文档库的ID和查询字符串上的特定项,并返回一个XML字符串,其中包含可用于该特定文档的命令的所有信息。这些命令根据文档的流程状态(或某些其他自定义业务逻辑)可用。[...]

        2
  •  2
  •   Jan Tielens    16 年前

    不幸的是,如果不使用javascript,这是不可能实现的。ECB不会呈现定义为自定义操作的服务器控件(与SiteActions等不同)。

    要了解如何使用Javascript实现这一点,请参阅以下文章: http://www.helloitsliam.com/archive/2007/08/10/moss2007-%E2%80%93-item-level-menus-investigation.aspx

    推荐文章