2012-04-02 8 views
3

私は、TRIDION 2011 SP1バージョンでボタンを追加することによって、リボンツールバーをカスタマイズしています。 ボタンをクリックすると、aspxページが開きます。そのaspxページの中で、コンポーネント自体を作成する前にそのコンポーネントを作成するために使用したスキーマの名前にアクセスする必要があります。aspxページで作成されたスキーマ名のようなTridionコンポーネントのプロパティにアクセスする方法は?

この問題を解決する方法を教えてください。前もって感謝します。

+0

ありがとうございます。私はすでにwebdav urlを使ってフォルダ内のすべてのコンポーネントにアクセスしようとしました。私の目的は、ポップアップ・ページを開くことです。ポップアップ・ページは、コンポーネントの作成に使用したスキーマに基づいて作成されるいくつかのドロップダウン・リストで構成されています。ここでの主な問題は、コンポーネントを保存する前に起こるはずです(コンポーネントを保存するとtcm uriが作成されるため、スキーマ名を取得するためにtcm uri idにアクセスできません) –

+0

MANYチュートリアルとGUIエクステンションの例はまだありますか?単に "tridion gui extension"のためのgoogleと、あなたはステップバイステップを含むかなりの数を見つけるでしょう。既に試してみたら、Tridionのファンダメンタルズが抜けているかもしれないと思います... –

答えて

4

ポップアップに渡す必要があります。スキーマのURIは、CME内のコンポーネントモデルオブジェクト上で利用可能です - ボタンコマンドはそれにアクセスし、ポップアップ(URLなど)に渡すことができます。

var schemaId = $display.getView().getItem().getSchemaId(); 
+0

ありがとうございました。それは私の問題のために働く。 –

+0

あなたは私にリンク/ APIを提供してください。どこで私はコンポーネントモデルオブジェクトに関するより多くのメソッドを得ることができますか?私のふざけた仕事は、ポップアップのコントロールで値を取得する必要があります。どんなガイドラインも私を助けます。前もって感謝します。 –

+0

そのためのAPIドキュメントはないと思います。しかし、開発ツール(ブラウザに組み込まれているツールなど)を使用すると、使用可能なすべてのメソッドを見ることができます。 –

2

コンポーネントを(オブジェクトとして)使用している場合は、Peterが示すようにそのスキーマIDを取得できます。コンポーネントIDだけを持っている場合、コンポーネントをロードしてスキーマに到達することができます。

アイテムを読み込む必要があるときは、UI APIで同期呼び出しではないことに注意する必要があります。そのためには、委譲メソッドを使用する必要があります。例えば、このような何か:

Example.prototype._loadItemInformation = function Example$_loadItemInformation(itemId, reload) { 
    var item = $models.getItem(itemId); 
    if (item) { 
     var self = this; 
     function Example$_loadItemInformation$_onItemLoaded() { 
      $evt.removeEventHandler(item, "load", Example$_loadItemInformation$_onItemLoaded); 
      // proceed with the actions on the loaded item here 
     }; 

     if (item.isLoaded(true) && !reload) { 
      Example$_loadItemInformation$_onItemLoaded(); 
     } 
     else { 
      $evt.addEventHandler(item, "load", Example$_loadItemInformation$_onItemLoaded); 
      //$evt.addEventHandler(item, "loadfailed", Example$_loadItemInformation$_onItemLoadFailed); 
      item.load(reload, $const.OpenMode.VIEW); 
     } 
    } 
}; 

はまた、アイテムのロードが失敗する可能性があり注意してください、あなたは実際にもloadfailedのイベントハンドラを(私の例のコードが何を無視したように)登録する必要があります。

関連する問題