在Tridion 2011 SP1中,我试图实现一个事件,只要编辑器按下Save&Close(但不保存),它就会自动发布项目.
在正常情况下,这可以在CheckIn事件中处理,但由于此项可能在工作流中,因此没有CheckIn事件.
在COM Events中,我们有一个标志(doneEditing)告诉我们编辑器是否按下了save&close vs Save.我似乎无法在TOM.NET Events中找到类似的选项.
供参考 - 这是迄今为止的代码:
[TcmExtension("Publish to Wip Events")]
public class PublishToWip : TcmExtension
{
public PublishToWip()
{
EventSystem.SubscribeAsync<VersionedItem, SaveEventArgs>(PublishItemToWip, EventPhases.TransactionCommitted);
}
private void PublishItemToWip(VersionedItem item, SaveEventArgs args, EventPhases phases)
{
// Magic goes here
}
}
Run Code Online (Sandbox Code Playgroud)
我查看了SaveEventArgs的选项,但没有找到任何可以提供这些信息的内容.有小费吗?
好吧,在CM团队的帮助下,我得到了正确答案.
使用CheckInEvent而不是保存.即使项目在工作流程中,当您单击"保存并关闭"时,它仍将调用此事件(仅当您单击"保存并关闭"时,而不是单击"保存"时).
这样的事情会让我开始:
[TcmExtension("Publish to Wip Events")]
public class PublishToWip : TcmExtension
{
public PublishToWip()
{
EventSystem.Subscribe<VersionedItem, CheckInEventArgs>
(PublishItemToWip, EventPhases.Processed);
}
private void PublishItemToWip(VersionedItem item,
CheckInEventArgs args, EventPhases phases)
{
if (!item.LockType.HasFlag(LockType.InWorkflow)) return;
if (!item.IsCheckedOut) return;
// do something now
Run Code Online (Sandbox Code Playgroud)