SharePoint 如何根据用户权限在NewForm页面允许用户编辑某字段或者只读某字段
2011-06-03 21:58
513 查看
摘要:
最近遇到一个用户希望实现如下功能,如果用户属于所有者组,则在某个列表的新建和编辑画面里可以编辑某些字段,如果用户不属于所有者组则只允许只读这些字段。用户使用Shared Hosting Environment,只能通过客户端进行开发。
方案:
首先我们假设您已经知道如何通过Designer修改NewForm.aspx以及EditForm.aspx画面,隐藏掉默认的列表项编辑Web Part,并添加新的列表项编辑Web Part,了解如何在添加的Web Part里操控字段。
这些您都完成后我们仅仅以默认的Title字段为例,只需要调用<xsl:if test="ddwrt:IfHasRights(33554432)">即可判断用户的身份以判断是否显示该字段,IfHasRights里给出的参数叫做PermissionMark,我们随后会给出所有的参考值。
以上只提到了核心的内容,还有些琐碎的工作还需要做:
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
最近遇到一个用户希望实现如下功能,如果用户属于所有者组,则在某个列表的新建和编辑画面里可以编辑某些字段,如果用户不属于所有者组则只允许只读这些字段。用户使用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
相关文章推荐
- sharepoint 2010 扩展调查字段属性(6)-增加图片支持-多选-根据权限控制是否允许用户多次评选
- sharepoint 2010 扩展调查字段属性(3)-根据权限设置是否允许多次回复
- 如何修改或编辑SharePoint的用户或用户组字段
- Sharepoint 2010 根据用户权限隐藏Ribbon菜单(利用css)
- vue-router如何根据不同的用户给不同的权限
- 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
- 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
- sharepoint中如何根据多个用户ID拼接SPQuery语句
- 怎样让DataGrid根据不同的用户权限判断是否显示:编辑列,删除列?
- 如何不允许用户使用浏览器的『后退按钮』查看前面缓存下来的页面。
- 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
- 如何使用sudo来允许普通用户使用超级用户权限
- 技术转载(鼠标点击X窗口关闭IE的同时清空session,最基本的就是处理用户重复登陆需要用到,我想这个的关键在于如何捕捉到关闭IE这个动作,之后再根据自身的需要使用session.invalidate()或者session.removeAttribute( "xxx "))
- Sharepoint 2010 根据用户权限隐藏Ribbon菜单
- 如何禁止掉SharePoint页面个性化(网站操作-编辑页面)
- SharePoint【Ribbon系列】-- Sharepoint 2010 根据用户权限隐藏Ribbon菜单
- sharepoint 2016 学习系列篇(11)-如何检验用户在系统中的权限Check Permissions
- 如何建立用户、权限和角色,以及如何根据日志调试用户的报表权限
- Sharepoint 2010 根据用户权限隐藏Ribbon菜单
- 判断一个用户对一个页面有没有权限(根据moduleName)