0

是否可以在SP 2013中使用项目级别权限以禁止其他用户修改未由他们但仍然允许他们修改该项目的单个字段(列)?SP列表项目 - 为项目创建者以外的所有用户禁用“编辑”,但仍然为所有用户保留单个列可编辑

我希望每个人都能够在点击“编辑”项目按钮之后在该列中输入信息,但是如果该项目不是由他创建的,但不能修改任何其他字段。

只有项目创建者应该能够修改所有的字段。

任何想法如何做到这一点非常欢迎:)

回答

0

你可以使用客户端对象模型为同一如下更多:

$(document).ready(function() { 
if(CheckCreatedBy() != GetCurrentUser()) 
{ 
     $("input[Title='EditableByAllUsers']").prop("disabled", true); 
} 

}); 

function CheckCreatedBy() 
{ 
var clientContext = new SP.ClientContext.get_current(); 
var siteColl = clientContext.get_site(); 
var oList = siteColl.get_rootWeb().get_lists().getByTitle('ChangeEditForm'); 
var itemId = _spGetQueryParam('id') ; 
var camlQuery = new SP.CamlQuery(); 
camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'ID\'/>' + 
    '<Value Type=\'Number\'>'+ itemId +'</Value></Eq></Where></Query></View>'); 
this.collListItem= oList.getItems(camlQuery); 
clientContext.load(collListItem);   
    clientContext.executeQueryAsync(Function.createDelegate(this,this.onCheckCreatedBySuccessMethod), Function.createDelegate(this, this.onCheckCreatedByFailureMethod));   
return this.value; 
    } 
function onCheckCreatedBySuccessMethod(sender, args) 
{ 
var CreatedBy = ''; 

var listItemEnumerator = collListItem.getEnumerator(); 

while (listItemEnumerator.moveNext()) { 
    var oListItem = listItemEnumerator.get_current(); 
    CreatedBy = oListItem.get_item('Author').get_lookupValue(); 
     alert(CreatedBy); 
     return CreatedBy ; 
} 
} 
function onCheckCreatedByFailureMethod(sender, args) 
{ 
alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 

function GetCurrentUser() 
{ 
var ClientContext = new SP.ClientContext.get_current(); 
this.CurrentWeb = ClientContext.get_web(); 
ClientContext.load(this.CurrentWeb.get_currentUser()); 
ClientContext.executeQueryAsync(Function.createDelegate(this, this.onSuccessMethod), Function.createDelegate(this, this.onFailureMethod)); 
    return this.value; 
    } 
    function onSuccessMethod(sender, args) 
{  
    var userObject =this.CurrentWeb.get_currentUser().get_title();  
    return userObject; 
} 
function onFailureMethod(sender, args) { 
    alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 

它也可以使用XSL来完成。 This将帮助你一样。

我希望这会有所帮助。

相关问题