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

原文地址:https://www.cnblogs.com/johnsonwong/p/2072315.html