0

ページまたはコンポーネントがチェックアウトされたときに、 Tridion メッセージ バーに警告メッセージを表示しようとしています。

(Processed and Initiated) フェーズでサブスクライブして試し、Subscribe と SubscribeAynsc を試みました。

以下の加入者線:

EventSystem.Subscribe<VersionedItem, CheckOutEventArgs>(displaymessage, EventPhases.Processed);

以下の機能:

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");
               }

        }
    }

チェックアウトユーザーとリバイザーが違う場合に警告メッセージを表示したい。チェックアウト ユーザーとリバイザの詳細をすぐに取得し、比較します。

問題:

  1. abaove コードは、アイテムを選択して [チェックアウト] をクリックすると、Tridion メッセージ バーにメッセージを表示します。同時に、アイテムは編集モードではなく、読み取り専用モードになります。
  2. アイテムを選択して [開く] をクリックするか、アイテムをダブルクリックすると、チェックアウト イベントがトリガーされますが、メッセージはメッセージ バーに表示されません。それでもアイテムは読み取り専用モードです。
  3. コード内で try{}Catch{} を使用すると、「throw new exception」という行に到達すると、コードは自動的に catch ブロックに移動します。「1st (Issues:1)」の状態でもメッセージが表示されません。

誰でもこれについて洞察を与えることができますか? それは素晴らしいことです!

4

1 に答える 1

1

トランザクションがコミットされる前に例外をスローすると、ロールバックされます。これが機能する場合は、TransactionCommitted フェーズでロジックを実行する必要があります。

しかし、もっと重要なことは、例外メッセージを悪用してステータス メッセージを表示しないようにアドバイスすることです。何を達成しようとしていますか?

于 2012-09-13T10:59:09.323 に答える