上一篇写了一个关于快速开发Ribbon菜单的例子,这次我们共同探讨一下Ribbon菜单权限的控制. 如果你已经阅读了 “”, 我相信你已经能很快的开发一个Ribbon菜单,这时我们就需要去关注Ribbon菜单其它更深的东西,比如给Ribbon添加链接,Ribbon脚本,Ribbon权限控制等等.
当我们创建一个默认的SharePoint站点的时候,我们通过Site Actions –> Site Permission (站点权限) –> PermissionLevel, 我们可以看到SharePoint默认的几个权限级别: Full Control, Design, Contribute, Read, Limited Access, View Only, 当然你能看到这些权限的级别还跟创建站点时选择的模板有关, 这里的重点不是权限级别, 而且更底层的权限分类. 直接点击上面任何一个权限级别, 以Contribute 为例, 你能看到SharePoint 基本的权限类型.
我们可以看下SharePoint SDK SPBasePermission与上图对应的权限类型.
#region Assembly Microsoft.SharePoint.dll, v2.0.50727 // C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.dll #endregion using System; namespace Microsoft.SharePoint { // Summary: // Specifies the built-in permissions available in Windows SharePoint Services. [Flags] public enum SPBasePermissions { // Summary: // Has no permissions on the Web site. Not available through the user interface. EmptyMask = 0, // // Summary: // View items in lists, documents in document libraries, and view Web discussion // comments. ViewListItems = 1, // // Summary: // Add items to lists, add documents to document libraries, and add Web discussion // comments. AddListItems = 2, // // Summary: // Edit items in lists, edit documents in document libraries, edit Web discussion // comments in documents, and customize Web Part Pages in document libraries. EditListItems = 4, // // Summary: // Delete items from a list, documents from a document library, and Web discussion // comments in documents. DeleteListItems = 8, // // Summary: // Approve a minor version of a list item or document. ApproveItems = 16, // // Summary: // View the source of documents with server-side file handlers. OpenItems = 32, // // Summary: // View past versions of a list item or document. ViewVersions = 64, // // Summary: // Delete past versions of a list item or document. DeleteVersions = 128, // // Summary: // Discard or check in a document which is checked out to another user. CancelCheckout = 256, // // Summary: // Create, change, and delete personal views of lists. ManagePersonalViews = 512, // // Summary: // Create and delete lists, add or remove columns in a list, and add or remove // public views of a list. ManageLists = 2048, // // Summary: // View forms, views, and application pages, and enumerate lists. ViewFormPages = 4096, // // Summary: // Allow users to open a Web site, list, or folder to access items inside that // container. Open = 65536, // // Summary: // View pages in a Web site. ViewPages = 131072, // // Summary: // Add, change, or delete HTML pages or Web Part Pages, and edit the Web site // using a Windows SharePoint Services–compatible editor. AddAndCustomizePages = 262144, // // Summary: // Apply a theme or borders to the entire Web site. ApplyThemeAndBorder = 524288, // // Summary: // Apply a style sheet (.css file) to the Web site. ApplyStyleSheets = 1048576, // // Summary: // View reports on Web site usage. ViewUsageData = 2097152, // // Summary: // Create a Web site using Self-Service Site Creation. CreateSSCSite = 4194304, // // Summary: // Create subsites such as team sites, Meeting Workspace sites, and Document // Workspace sites. ManageSubwebs = 8388608, // // Summary: // Create a group of users that can be used anywhere within the site collection. CreateGroups = 16777216, // // Summary: // Create and change permission levels on the Web site and assign permissions // to users and groups. ManagePermissions = 33554432, // // Summary: // Enumerate files and folders in a Web site using Microsoft Office SharePoint // Designer 2007 and WebDAV interfaces. BrowseDirectories = 67108864, // // Summary: // View information about users of the Web site. BrowseUserInfo = 134217728, // // Summary: // Add or remove personal Web Parts on a Web Part Page. AddDelPrivateWebParts = 268435456, // // Summary: // Update Web Parts to display personalized information. UpdatePersonalWebParts = 536870912, // // Summary: // Grant the ability to perform all administration tasks for the Web site as // well as manage content. Activate, deactivate, or edit properties of Web site // scoped Features through the object model or through the user interface (UI). // When granted on the root Web site of a site collection, activate, deactivate, // or edit properties of site collection scoped Features through the object // model. To browse to the Site Collection Features page and activate or deactivate // site collection scoped Features through the UI, you must be a site collection // administrator. ManageWeb = 1073741824, // // Summary: // Use features that launch client applications; otherwise, users must work // on documents locally and upload changes. UseClientIntegration = 68719476736, // // Summary: // Use SOAP, WebDAV, or Microsoft Office SharePoint Designer 2007 interfaces // to access the Web site. UseRemoteAPIs = 137438953472, // // Summary: // Manage alerts for all users of the Web site. ManageAlerts = 274877906944, // // Summary: // Create e-mail alerts. CreateAlerts = 549755813888, // // Summary: // Allows a user to change his or her user information, such as adding a picture. EditMyUserInfo = 1099511627776, // // Summary: // Enumerate permissions on the Web site, list, folder, document, or list item. EnumeratePermissions = 4611686018427387904, // // Summary: // Has all permissions on the Web site. Not available through the user interface. FullMask = 9223372036854775807, } }
了解以上内容后,我们就能快速开发出带有权限控制的菜单了.
1. 创建一个空的SharePoint 2010 项目,项目名:SiteActions Menu
2. 右键点击Feature –> add Features, 添加一个新Feature,更改名称和描述.
3. 右键点击项,添加一个Module, 打开Elements.xml 添加以下代码:
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Id="viewSiteManager" GroupId="SiteActions" Location="Microsoft.SharePoint.StandardMenu" Sequence="1000" Title="Owner Menu" Description="control menu with user permission" ImageUrl="colleagues_16.png" Rights="ManagePermissions"> <UrlAction Url="~site/_layouts/sitemanager.aspx"/> </CustomAction> </Elements>
4. 代码中的红色部分是比较重要的属性,GroupId 和Location请参阅SDK,这里重点关注Rights, Rights属性的值,就是我们上面的SPbasePermission
的枚举值,可以用逗号隔开,比如 Rights= “ViewListItems,ManagePermissions”.
5, 部署运行查看效果.
6. 实例下载