-4

コンポーネントの挿入ポップアップ ウィンドウ内のページ。ユーザーがコンポーネントとテンプレートを選択しようとしているときに、 *コンポーネント リストに既に存在するコンポーネントとテンプレートの同じ組み合わせを選択するように * それらを制限する方法。

挿入ボタンにJavaScriptを書くことを考えました。正しい方法で行っているかどうかを提案してください。

4

2 に答える 2

11

バートがあなたの質問の上で言っているように、あなたの質問は驚くほど漠然としていますが、私はちょうど似たようなことをしたので、ここで答えを試みます. あいまいさを考えると、私はあなたが JS コードにひざまずいていて、私がここに入れていることはあなたにとって意味があると仮定しています :)

JavaScript では、ユーザーがリスト内の特定の cp をクリックすると、選択したコンポーネントのプレゼンテーションをプロパティに保存する可能性があります。次に例を示します。

// keeps stock of the current selected component presentation
p.selectedComponentPresentation; 

簡単に使用するには:

var componentPresentation = p.selectedComponentPresentation;

設定するには、最初にタブ コントロールを取得し、コンポーネントの presentationTab を保存し、そこからgetSelectedComponentPresentation()を呼び出します。

var masterTabControl = $controls.getControl($("#MasterTabControl"), 
                                            "Tridion.Controls.TabControl");
p.compPresTab = masterTabControl.getPage("ComponentPresentationsTab");
p.selectedComponentPresentation 
                       = p.compPresTab.getSelectedComponentPresentation();

繰り返しになりますが、これが理にかなっていることを願っています。また、今では pageId を取得する方法を知っていると思います

于 2012-07-12T11:02:07.537 に答える
1

コンポーネント ポップアップ ウィンドウを表示している場合は、次の方法でコンポーネントの ID を取得できます。

$display.getItem().getId()

これは、実際にはどのアイテム編集ポップアップでも機能します (ページやその他のアイテム タイプも同様です)。

メインのダッシュボード ビュー (つまり、左側にツリーが表示され、右側にリストが表示される場所) では機能しません。そこには "現在のアイテム" が 1 つもないためです。

コードが実行されている場所に関する情報で質問を更新する必要があります。私の知る限り、Web GUI には「現在のコンポーネント」と「現在のページ」の両方がある場所はありません。

于 2012-07-12T12:41:12.150 に答える