2

ページのユーザー詳細を取得しようとしてRevisorいます。CheckOutUser以下は私のコードです

Page page = engine.GetObject(package.GetValue("Page.ID")) as Page;
string revisor = page.Revisor.Description;
string currentuser = page.CheckOutUser.Description;

現在、ページはユーザー「A」によって更新されており、ユーザー「B」はページをチェックアウトしています。しかし、「B」としてRevisorandを取得してCheckOutUserいますが、リバイザーは「A」である必要があります

「page.Revisor.Description」は、現在のバージョンではなく、チェックアウトされたバージョンを考慮しています。

正しいリバイザの詳細を取得するには?

4

2 に答える 2

7

TOM.NET API ドキュメントには、VersionedItem.Revisorプロパティについて次のように記載されています。 この (このバージョンの) アイテムを最後に変更したユーザーを示す値を取得します。

したがって、実際には、その前にアイテムを最後に変更したユーザーではなく、この時点でアイテムをチェックアウトしたユーザーを取得することになります。

したがって、以前のリバイザーが必要な場合は、そのバージョンのアイテムを開いて、その履歴から読み取る必要があります。Session.GetObject(TcmUri)以前のバージョンを使用して TcmUri の新しいインスタンスを作成する場所を使用するだけです。TcmUri(itemId, itemType, publicationId, version)

ちなみに、あなたが提供するコード例はテンプレートからのものですが、イベントハンドラーで使用していることを示しています(イベントハンドラーにはエンジンがありません)。テンプレートでは、公開時にアイテムの最後にチェックインされたバージョンを使用する必要があるため、この結果は得られません。プレビューの場合、現在と同じ結果が表示されます。これは、現在の (チェックアウトされた) バージョンで動作しているためです。

于 2012-07-27T07:41:12.317 に答える
3

ページのチェックイン バージョン (つまり、ID は "tcm:xx-xx-64") を読み取っている場合は、期待どおりに機能しています。ただし、動的バージョン (チェックアウトされたバージョン - "tcm:xx-xx-64-v0") を読んでいる場合は、RevisorCheckOutUserが同じ場合に状況が発生します。これは、ページの動的バージョンがチェックインされたバージョンと同じではないためです。動的バージョンは、アイテムをチェックアウトしたユーザーによってすべてのアクションが実行された一時的なオブジェクトにすぎないためRevisorCheckOutUserこのバージョンのページでは、アイテムをチェックアウトしたユーザーです。

于 2012-07-27T07:31:49.093 に答える