我们可以在SharePoint中通过创建一个带CustomAction元素的功能(Feature)添加一个自定义菜单项到默认的站点动作(Site Actions)菜单中。
我们可以在SharePoint中通过创建一个带CustomAction元素的功能(Feature)添加一个自定义菜单项到默认的站点动作(Site Actions)菜单中。通过这种方式,我们可以添家自定义的命令到默认的SharePoint用户界面中。这些命令在用户访问SharePoint站点的不同页面时都中是可用的。当我们创建了一个站点动作菜单项,我们也可以将其配置为一个URL,进而把用户导航到该URL地址。比如,我们可以将用户导航到另一个站点,或者导航到我们的自定义应用程序页面,从而可以显示一些自定义的数据或进行一些自定义的操作,而不必离开当前网站上下文。
首先,我们需要创建一个自定义的Feature。我们可以在网站集范围或者网站范围内定义该Feature。如果Feature定义在网站集范围上(也就是Scope="Site"),那么结果菜单项会出现在当前网站集中的每个网站的动作菜单中;如果Feature定义在网站范围上(即Scope="Web"),结果菜单仅会出现在特定的已经激活该功能的网站中。下面的Feature定义在网站集范围上,并且包括了一个名为elements.xml的CAML文件的引用。
<Feature
Id="AA929AFF-4602-4d7f-A501-B80AC9A4BB52"
Title="A Sample Feature: Item Auditing"
Description="A sample feature with an ECB menu item"
Scope="Site"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="elements.xml" />
</ElementManifests>
</Feature>
在站点动作菜单中添加自定义动作
使用CustomAction元素在默认的SharePoint用户界面中定义各种类型的菜单项和链接。下面的CustomAction元素包含在一个名为elements.xml的CAML文件中。完成的功能是添加一个自定义菜单项,导航用户到一个定制的后台应用程序页面。
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="ApplicationPage1"
GroupId="SiteActions"
Location="Microsoft.SharePoint.StandardMenu"
Sequence="2000"
Title="Hello World Application Page"
Description="Getting up and going with inline code" >
<UrlAction Url="~site/_layouts/Litware/ApplicationPage1.aspx"/>
</CustomAction>
</Elements>
当创建一个CustomAction元素时,我们必须在其内部添加一个UrlAction元素,并且包含Url属性。当我们要把用户导航到一个应用程序页面,比如ApplicationPage1.aspx,我们还需要考虑是否希望应用程序运行于当前站点或站点集上下文中。下面的例子中,使用动态的令牌~site添加在URL的头部。这样编写后,当SharePoint解析该CustomAction元素并据此创建菜单项时,会用当前站点的实际URL替换~site。
~site/_layouts/Litware/ApplicationPage1.aspx
当我们在站点动作菜单中创建一个自定义菜单项时,我们可以设置其只能对有管理权限的用户可见。请看下面的例子,其中增加了一个名为RequireSiteAdministrator的属性。
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="ApplicationPage1"
GroupId="SiteActions"
Location="Microsoft.SharePoint.StandardMenu"
Sequence="2000"
Title="Hello World Application Page"
Description="Getting up and going with inline code"
RequireSiteAdministrator="True" >
<UrlAction Url="~site/_layouts/Litware/ApplicationPage1.aspx"/>
</CustomAction>
</Elements>
当添加了RequireSiteAdministrator属性后,如果用户不具有管理权限时SharePoint就不会显示该菜单项了。对于一个在网站集范围内的CustomAction元素,该菜单项就会仅在当前用户是网站集所有者或管理员时才会出现。对于一个在网站范围内的Feature指向的CustomAction元素,这个菜单项只能在具有当前网站管理权限的用户页面中出现。