Tridion 当我显示任何错误消息时,签出事件处理程序以读取模式打开项目

Tridion 当我显示任何错误消息时,签出事件处理程序以读取模式打开项目,tridion,tridion-2011,Tridion,Tridion 2011,当页面或组件被签出时,我试图在Tridion消息栏中显示警告消息 我已订阅并尝试(已处理并已启动)阶段,并尝试订阅和订阅Beaynsc 下标行: EventSystem.Subscribe<VersionedItem, CheckOutEventArgs>(displaymessage, EventPhases.Processed); 如果结帐用户和修订者不同,我想显示警告消息。我将采取结帐用户和修订者的详细资料很快,并将进行比较 问题: 当我选择任何项目并单击“签出”时,abao

当页面或组件被签出时,我试图在Tridion消息栏中显示警告消息

我已订阅并尝试(已处理并已启动)阶段,并尝试订阅和订阅Beaynsc

下标行:

EventSystem.Subscribe<VersionedItem, CheckOutEventArgs>(displaymessage, EventPhases.Processed);
如果结帐用户和修订者不同,我想显示警告消息。我将采取结帐用户和修订者的详细资料很快,并将进行比较

问题:

  • 当我选择任何项目并单击“签出”时,abaove代码会在Tridion消息栏中显示消息。同时,项目未处于编辑模式,而是处于只读模式
  • 当我选择任何项目并点击“打开”或双击该项目时,将触发签出事件,但消息栏中不会显示该消息。而且该项仍然是只读模式
  • 如果我在代码中使用try{}Catch{},当到达“throw new exception”行时,代码会自动转到Catch块。即使在“第一(问题:1)”情况下,也不会显示mesaage

  • 有人能对此给出一些见解吗?那太好了

    当您在提交事务之前抛出异常时,它将回滚。如果这将起作用,您需要在TransactionCommitted阶段执行逻辑


    但更重要的是,我建议不要滥用异常消息来给出状态消息。你想实现什么?

    首先:你想实现什么?第二:你在处理哪些事件?你能分享EventSystem.订阅行吗?嗨,Quirijn,请看一下更新问题。我已订阅CheckOutEvent,如果签出用户和修订者不同,并且允许用户签出项目,我希望显示警告消息。如果您不希望发生这种情况,那么,为什么不在签出启动时而不是签出完成时执行此操作呢?我认为我们无法从启动阶段获取签出用户的详细信息。嗨,Arjen,谢谢:如果签出用户和修订者不同,并且允许用户签出项目,我想显示警告消息。也许Content Manager Explorer扩展是更好的方法?但我没有这方面的经验。你在继续医学教育中也做过类似的工作吗?如果是这样的话,您能对此给出一些想法吗?
    $messages.registerWarning(“此项目由用户“abc”签出”)弗兰克,我想比较checkkout用户和revisior,如果两者不同,那么我想显示警告消息并允许用户签出项目。
    
    public override void displaymessage(VersionedItem item, TcmEventArgs args, EventPhases phase)
        {
            if (item.GetType().Name == "Component" || item.GetType().Name == "Page")
            {
                string chkuser = "aa"               ;
                sting revisor = "bb"
                if(chkuser  != revisor
                   {
                       throw new Exception("Warning-->some one is already modified this item and u are checking out now");
                   }
    
            }
        }