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

Jas*_*n Z 6 javascript sharepoint moss document-library

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

我知道控制此菜单项创建的CustomAction标记具有Rights属性.我遇到的问题是我使用的组在站点中具有相同的权限(ViewListItems,ManageAlerts等).我们设置的组更多地处理功能,例如Manager,Employee等.我们希望能够为组分配自定义功能,并且只有该组的成员才能看到与该功能相关的菜单项.每个人都具有相同的基本站点权限,但根据其登录凭据将提供额外的选项.

我已经看过几篇关于修改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检查用户组的最佳方法是什么?

Eri*_*ver 2

您可以实现两种不同的 Javascript 函数来动态地将菜单项添加到列表项下拉列表中。Core.js (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\CORE.JS) 在为选定列表项生成菜单项时检查这些方法是否存在。“Custom_AddDocLibMenuItems”和“Custom_AddListMenuItems”是 Javascript 方法的名称。

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

MSDN:自定义文档库项目的上下文菜单(请注意,该过程对于任何列表类型都完全相同)

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

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

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