下图中显示的这个菜单也就是所谓的ECB(Edit Control Block)菜单。在SharePoint 2007中,所有列表项、文档、文件夹都有ECB菜单。ECB菜单不仅会出现在列表或文档库的视图页面中,如果我们在任何一个页面中放置一个列表视图Web部件(List View Web Part),同样在这个Web部件中,也可以显示ECB菜单。

ECB菜单控制器(for SharePoint 2007)_第1张图片

ECB菜单控制器的作用,就是可以让网站管理员能够向任何ECB菜单中添加自己想要的自定义菜单项,同时也能删除任何一个ECB菜单中的任何内置菜单项。通过基于“规则”的管理,管理员能够以非常灵活的方式,控制ECB菜单的显示。

下面是一些场景示例,举例说明了通过ECB菜单控制器能做到的控制粒度:
● 将整个网站的所有列表项与文件的ECB菜单中的“管理权限”菜单项去掉,但是保留文件夹ECB菜单上的“管理权限”菜单项。
● 向网站中内容类型为“联系人”的列表项(无论其位于哪个列表中)的ECB菜单中,添加一个“添加此人为好友”的菜单项。
● 从“共享文档”文档库的ECB菜单中,去掉除“查看属性”之外的所有内置菜单项,同时为这个文档库的所有文件夹的ECB菜单添加一个“将此文件夹归档”菜单项。
● 将显示在网站首页上的所有ECB菜单中的“删除”菜单项去掉,但保留首页上文件夹ECB菜单中的“删除”菜单项。

后面的部分是ECB菜单控制器的简单使用说明。

下载ECB菜单控制器的安装文件后(这是一个.wsp解决方案包),将其安装到SharePoint 2007系统中。它会在网站层次安装一个Feature,进入到网站功能管理页面,激活“ECB菜单项控制器”Feature。ECB菜单控制器以网站层级来激活或关闭,管理员可以在需要此功能的网站中激活它。

image 

激活Feature后,在网站管理页面的外观区域,会多出一个“ECB菜单项”链接。点击此链接,就会打开ECB菜单项控制规则管理界面。

ECB菜单控制器(for SharePoint 2007)_第2张图片 

在ECB菜单项控制规则管理界面,管理员可以添加两种规则,“ECB菜单项添加规则”和“ECB菜单项移除规则”。前者用来定义一个新增ECB菜单项的规则,后者用来定义一个将内置ECB菜单项删除的规则。

ECB菜单控制器(for SharePoint 2007)_第3张图片 

下图是创建一个ECB菜单项添加规则的界面。

ECB菜单控制器(for SharePoint 2007)_第4张图片 

每个属性的说明如下:
● 新ECB菜单项标题:新建的ECB菜单项的显示文本。
● 新ECB菜单项点击事件:用户点击新建的ECB菜单项时,执行的JS脚本,可以包含预定义的Token。
● 新ECB菜单项显示顺序:如果有多个新建的ECB菜单项,可以通过这个属性定义它们的显示顺序。
● 应用于列表:用来指定当前规则只作用于某个特定的列表(或文档库),如果留空则表示将作用于所有列表。
● 应用于特定页面:用来指定当前规则只作用于某个特定的页面,可以只在这个属性中输入Url的一部分,例如输入“Forms/AllItems.aspx”,就● 可以指定当前规则仅作用于所有列表的默认视图页面。
● 应用于内容类型:如果只希望新的ECB菜单项只出现在某个内容类型的列表项(或文档)的ECB菜单中,那么就可以使用这个属性。例如,● 由于所有文件夹的内容类型都是“Folder”,如果希望给所有文件夹应用规则,那么可以指定将规则应用于“Folder”内容类型。
● 应用于文件夹:一个是/否选项,用来直接指定当前规则是否将应用于文件夹。
● 网站管理员例外:一个是/否选项,用来指定在管理员浏览页面时,是否也应用规则。这个选项更多的用于删除ECB菜单项的场景。
● 启用规则:一个是/否选项,指定此规则是否生效。

下面是创建ECB菜单项移除规则的界面。

ECB菜单控制器(for SharePoint 2007)_第5张图片 

ECB菜单项移除规则非常简单,只需要直接指定要移除的菜单项即可,例如“管理权限”。支持指定并移除二级菜单项,例如可以将“发送到”菜单项下面的某个子菜单项隐藏。移除规则的可设置条件和添加规则是一样的。

关于ECB菜单控制器的一些额外功能说明:
● 一个规则所包含的所有条件,将是“与”的关系。即只有在规则所包含的多个条件都满足的情况下,规则才会生效。所有的条件都是可选的,如果某个规则没有设置任何条件,那么这个规则将被应用到网站的所有位置(所有列表、文档库、页面上)。
● ECB菜单控制器对普通页面上的列表视图Web部件也同样生效。

下载ECB菜单控制器安装包。这个组件并未经过完整测试,我的开发和使用环境都是英文版的SharePoint 2007。如果你在使用中遇到任何问题,请告诉我(kaneboy [a] gmail.com)。