我有一个发送电子邮件的工作流程。当用户收到电子邮件时,会有一个名为Review的超链接。当用户单击Review时,改进列表上名为ReviewStatus的列的值将更改为Requested。我在下面有一个脚本,可以在内容编辑器Web部件上处理:
<script language="javascript" type="text/javascript">
_spBodyOnLoadFunctionNames.push("getSetListItem");
var listItem;
var list;
var clientContext;
var siteUrl = "https://contoso.com/process/";
function getSetListItem() {
this.clientContext = new SP.ClientContext(siteUrl);
if (this.clientContext != undefined && clientContext != null) {
var webSite = clientContext.get_web();
var itemID = parseInt(GetUrlKeyValue('ID'));
this.list = webSite.get_lists().getByTitle("Improvement");
this.listItem = list.getItemById(itemID);
clientContext.load(this.listItem);
this.clientContext.executeQueryAsync(Function.createDelegate(this, this.OnLoadSuccess),
Function.createDelegate(this, this.OnLoadFailed));
}
}
function OnLoadSuccess(sender, args) {
var value = this.listItem.get_item("ReviewStatus");
this.listItem.set_item("ReviewStatus", "Requested");
this.listItem.update();
this.clientContext.load(this.listItem);
this.clientContext.executeQueryAsync(Function.createDelegate(this, this.OnLoadSuccess1),
Function.createDelegate(this, this.OnLoadFailed));
}
function OnLoadSuccess1(sender, args) {
alert(this.listItem.get_item("ReviewStatus"));
}
function OnLoadFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
</script>
以上对我有用,但我有Site Col Admin权限。当具有读取权限的用户单击超链接时,它会将他们带到CEWP所在的页面,并且他们会收到以下消息:
我知道它的权限,但我该怎么做才能使它适用于没有权限的用户?顺便说一句,客户端希望将权限保留为只读用户,因此我无能为力。
感谢任何帮助。
答案 0 :(得分:0)
按照设计,javascript代码无法使用提升的权限运行,因为现在浏览器中的每个用户都可以添加javascript进行编辑(我正在谈论浏览器开发人员工具)。
这对您的项目来说当然是非常危险的:)
如果您希望代码以提升的权限运行,则可以创建服务器场解决方案,如果您真的不想更改权限设置。
如果要保留脚本,则必须修改执行脚本的用户的权限