停止事件中的发布流或禁用发布按钮

时间:2014-02-25 11:12:44

标签: c1-cms

我想知道是否可以在事件中停止发布流程。 在让用户发布对象之前,我想检查代码隐藏中的一些属性。

1 个答案:

答案 0 :(得分:0)

您可以使用可以挂钩的OnStoreChanged事件的静态DataEvents<T> class

从api页面使用示例:

DataEvents<IMyDataType>.OnStoreChanged += new StoreEventHandler(DataEvents_OnStoreChanged);

...

void DataEvents_OnStoreChanged(object sender, StoreEventArgs storeEventArgs)
{        
    if (!storeEventArgs.DataEventsFired)
    {
        // an external update event happened - DataEvents_OnBeforeAdd not fired
        // here a complete cache flush could be done
    }
}

如果您关心页面发布,则必须使用DataEvents<IPage>并检查StoreEventArgs是否为PublicationScope,它应该告诉您这是否是发布事件。

来自DataEvents<T>.OnStoreChanged的文档:

  

在复合C1数据存储发生更改后会触发此事件。这可能是原子操作或对底层数据存储的更大更改。 StoreEventArgs类以宽泛的术语描述更改,包括指示是否已引发详细数据事件的标志。您可以将此事件用作对数据更改作出反应的简单方法(如清除缓存),也可以将其与原子数据事件(添加,删除,更新)混合使用,以使构建更高级缓存。您应该收听此事件以支持跨多个服务器的扩展,因为此事件旨在在另一台服务器上发生更改时发出信号。在这种情况下,详细的数据事件不会在其他机器上触发。

如果您关心事件中确切更改了哪些数据,则必须使用DataEvents<T>类的其他事件,例如OnAfterUpdate,并从DataEventArgs获取此信息。< / p>