你可以propably把你自己的处理器在saveUI节“Sitecore.Pipelines.Save.CheckItemLock”之前。
在你的处理器,你可以通过调用AbortPipeline方法中止一个项目的保存。 如果你想检查保存的项目被锁定,您可以检查是否锁定字段已经改变。
下面是一些示例代码:
<processor mode="on" type="Sitecore.Pipelines.Save.ParseXml, Sitecore.Kernel" />
<processor mode="on" type="YourAssembly.CheckForeignLock, YourAssembly" />
<processor mode="on" type="Sitecore.Pipelines.Save.CheckItemLock, Sitecore.Kernel" />
:
public class CheckForeignLock {
protected bool UserIsTryingToLockItem(SaveArgs args) {
var lockfield = args.Fields.SingleOrDefault(x => x.ID == FieldIDs.Lock);
return lockfield != null && lockfield.OriginalValue != lockfield.Value;
}
protected bool CanLock() {
// your code
}
public void Process(SaveArgs args) {
if(UserIsTryingToLockItem(args) && !CanLock()) {
args.AbortPipeline();
}
}
}
在这里,你可以注册你的处理器的地方