在Sitecore中,对于没有管理员权限的所有用户(在创建用户时未单击管理员复选框),当他们尝试编辑项目时,必须选择"锁定和编辑"选项,这将创建新版本而不是编辑现有的.有没有办法让非管理员用户编辑项目而不创建新版本?我希望是否可以使用用户角色完成此操作.
以下是在编辑Sitecore项目时负责创建新版本的代码:
public Item StartEditing(Item item)
{
Error.AssertObject((object) item, "item");
if (!Settings.RequireLockBeforeEditing || Context.User.IsAdministrator)
return item;
if (this._context.IsAdministrator || StandardValuesManager.IsStandardValuesHolder(item) || !this.HasWorkflow(item) && !this.HasDefaultWorkflow(item) || !this.IsApproved(item))
return this.Lock(item);
Item obj = item.Versions.AddVersion();
if (obj != null)
return this.Lock(obj);
else
return (Item) null;
}
Run Code Online (Sandbox Code Playgroud)
显然,如果项目处于任何工作流程的最终状态,Sitecore会创建新版本,除非用户是管理员.
您可以尝试更改RequireLockBeforeEditing设置,但它不仅会禁用新版本功能,还会禁用锁定功能.