【发布时间】:2010-09-12 05:34:26
【问题描述】:
我在 sharepoint 中有一个活动列表,需要禁止用户在新活动表单中创建会议工作区。不好意思自定义新的事件表单(这会破坏附件支持),如何做到这一点?
【问题讨论】:
标签: sharepoint outlook integration
我在 sharepoint 中有一个活动列表,需要禁止用户在新活动表单中创建会议工作区。不好意思自定义新的事件表单(这会破坏附件支持),如何做到这一点?
【问题讨论】:
标签: sharepoint outlook integration
默认情况下,为了让用户创建会议工作区,他们需要是管理员或站点所有者(特别是他们需要“创建站点”权限)。如果您不授予他们此权限,他们将无法创建会议工作区。
这将禁止用户在设置了这些权限的站点下创建任何站点。我不知道有一种方法可以限制对特定网站定义的访问,但仍允许用户创建不同的定义。
【讨论】:
我认为没有支持的方式来执行此操作。一种选择是编辑 C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033\XML\WEBTEMP.XML 中的 WEBTEMP.XML 文件(当然要先备份)。注释掉以下几行:
<!-- <Template Name="MPS" ID="2">
...
</Template> -->
编辑此文件并在场中的每台服务器上执行 IISRESET 后,您应该无法再创建会议工作区。
【讨论】:
如果您可以在母版页中添加一些 javascript,我想出了这个小技巧。
它确实有几个缺点,因为 MS 可能会发布一个修补程序或服务包:
更改了“使用会议工作区来组织此活动的与会者、议程、文档、会议记录和其他详细信息”复选框的名称,以便名称中不再包含字符串“CrossProjectLinkField”,或者。 ..
他们可以在其他 OOTB 标记上的其他输入元素的名称中使用相同的字符串
在梯形图的情况下(我现在不完全确定这是错误的),如果这些输入运行的是运行此脚本的母版页,则这些输入将被禁用。
但这是我可以应对的风险。只要您依赖由其他人控制的客户端 ID 和名称,您就会面临这些风险。
<script type="text/javascript">
var anchors = document.getElementsByTagName('input');
for(var i=0;i<anchors.length;i++)
{
var anchorName = anchors[i].name.match('CrossProjectLinkField');
if(anchorName != null)
{
anchors[i].disabled = true;
break;
}
}
</script>
这样做是找到允许用户创建会议工作区的复选框并将其禁用,以便他们无法检查它。问题解决了!
【讨论】:
使用功能接收器创建一个 Web 范围的功能,该功能接收器会删除激活该功能的当前 Web,并让它抛出一个 SPException 说明模板无法使用。然后创建一个 Web 应用程序或场范围的功能订书机,将以前的功能装订到您要阻止的站点定义。在 Web 应用程序或场上激活该功能。然后,当有人从其中一个站点定义创建站点时,该站点将被删除,并且用户将看到一个错误页面,其中显示抛出的 SPException 的文本。
【讨论】: