zoukankan      html  css  js  c++  java
  • SharePoint 如何根据用户权限在NewForm页面允许用户编辑某字段或者只读某字段

    摘要:

          最近遇到一个用户希望实现如下功能,如果用户属于所有者组,则在某个列表的新建和编辑画面里可以编辑某些字段,如果用户不属于所有者组则只允许只读这些字段。用户使用Shared Hosting Environment,只能通过客户端进行开发。

    方案:

          首先我们假设您已经知道如何通过Designer修改NewForm.aspx以及EditForm.aspx画面,隐藏掉默认的列表项编辑Web Part,并添加新的列表项编辑Web Part,了解如何在添加的Web Part里操控字段。

          这些您都完成后我们仅仅以默认的Title字段为例,只需要调用<xsl:if test="ddwrt:IfHasRights(33554432)">即可判断用户的身份以判断是否显示该字段,IfHasRights里给出的参数叫做PermissionMark,我们随后会给出所有的参考值。

    <xsl:if test="ddwrt:IfHasRights(33554432)">
        <td width="75%" class="ms-vb">
            <SharePoint:FormField runat="server" id="ff1{$Pos}" ControlMode="New" FieldName="Title" __designer:bind="{ddwrt:DataBind('i',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Title')}" />
            <SharePoint:FieldDescription runat="server" id="ff1description{$Pos}" FieldName="Title" ControlMode="Edit" />
        </td>
    </xsl:if>
    

         

    以上只提到了核心的内容,还有些琐碎的工作还需要做:

    1. XSL里面怎么书写Else语句(应该是使用<xsl:choose>)

    2. 不属于所有者组的时候显示该字段值(应该是使用<xsl:value-of select="$Title">)

    还有些有意思的事情可以调查:

    1. 如何从JavaScript里面将变量传给XSL的变量(如此我们还可以考虑比较复杂的方案,譬如通过WebService返回用户所属的组信息后再进行判断)

    以下是所有可以使用的PermissionMask:

    ViewListItems - 1

    AddListItems - 2

    EditListItems - 4

    DeleteListItems - 8

    ApproveItems - 16

    OpenItems - 32

    ViewVersions - 64

    DeleteVersions - 128

    CancelCheckout - 256

    PersonalViews - 512

    ManageLists - 2048

    ViewFormPages - 4096

    Open - 65536

    ViewPages - 131072

    AddAndCustomizePages - 262144

    ApplyThemeAndBorder - 524288

    ApplyStyleSheets - 1048576

    ViewUsageData - 2097152

    CreateSSCSite - 4194314

    ManageSubwebs - 8388608

    CreateGroups - 16777216

    ManagePermissions - 33554432

    BrowseDirectories - 67108864

    BrowseUserInfo - 134217728

    AddDelPrivateWebParts - 268435456

    UpdatePersonalWebParts - 536870912

    ManageWeb - 1073741824

    UseRemoteAPIs - 137438953472

    ManageAlerts - 274877906944

    CreateAlerts - 549755813888

    EditMyUserInfo - 1099511627776

    EnumeratePermissions - 4611686018427387904

    FullMask - 9223372036854775807

  • 相关阅读:
    LintCode "Maximum Gap"
    LintCode "Wood Cut"
    LintCode "Expression Evaluation"
    LintCode "Find Peak Element II"
    LintCode "Remove Node in Binary Search Tree"
    LintCode "Delete Digits"
    LintCode "Binary Representation"
    LeetCode "Game of Life"
    LintCode "Coins in a Line"
    LintCode "Word Break"
  • 原文地址:https://www.cnblogs.com/johnsonwong/p/2072315.html
Copyright © 2011-2022 走看看