你可以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();
}
}
}
在這裏,你可以註冊你的處理器的地方