SharePoint 2010 技巧系列: 控制Ribbon菜单权限(SiteActions的例子)

上一篇写了一个关于快速开发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, 部署运行查看效果.
posted @ 2011-05-23 14:21  懒牛  阅读(2906)  评论(0编辑  收藏  举报