事件系统:如何知道编辑器是否单击"保存"或"保存并关闭"?

Nun*_*res 6 tridion

在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的选项,但没有找到任何可以提供这些信息的内容.有小费吗?

Nun*_*res 5

好吧,在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)