Tridion ページのコンポーネント プレゼンテーション タブから、コンポーネントとコンポーネント テンプレートの tcm ID を取得する必要があります。
シナリオ:
- Tridion の既存のページ。
- 「コンポーネント プレゼンテーション」タブに移動します。
- 「挿入」ボタンをクリックすると、コンポーネントとコンポーネント テンプレートの tcm id を反復処理し、それを JavaScript アラート ボックスに表示します。
これを達成するための正確な JavaScript ファイル/関数を見つけようとしていますが、正確なものが見つかりませんでした。
SDL Tridion 2011 SP1 を使用しています。
どんな助け/提案も大歓迎です。
編集
「コンポーネントプレゼンテーションの挿入」ウィンドウで「挿入」ボタンをクリックすると起動するこのスクリプトがあります。
Tridion.Cme.Views.InsertCpDialog.prototype.onInsertClick =
function InsertCpDialog$onInsertClick()
{
var p = this.properties;
var c = p.controls;
var templateId = c.templateSelect.getValue();
var components = c.list.getSelection().getItems();
p.componentPresentationsAdded += components.length;
var compId = components[components.length - 1];
var component = $models.getItem(compId);
if (component)
{
var userSettings = Tridion.UI.UserSettings.getInstance();
if (userSettings && userSettings.isLoaded())
{
Tridion.UI.UserSettings.setLastSelectedLocation(
component.getPublicationId(), $const.ItemType.COMPONENT, p.contextUri);
}
}
this.fireEvent("insert", {
components: components,
template: templateId
});
};
ここでは、選択したコンポーネントの tcm id と、挿入するテンプレート「compId」および「templateId」を取得します。私の質問は次のとおりです。このコンポーネントとテンプレートがコンポーネント プレゼンテーション タブに既に存在するかどうかを確認するにはどうすればよいですか?
どういうわけか、ページに既に存在するすべてのコンポーネントとテンプレートの id を (「挿入」ボタンから) 取得できれば、それらを比較できます。しかし、私はそれらのIDを私に与える関数を取得していません。ここで行き詰まりました。
編集
これらのコードを使用してページ内に移動しようとしていますが、挿入をクリックすると起動する正しい関数を取得できません。または、そこにリストされているコンポーネントとテンプレート ID のリストを返します。
Extensions.Test.prototype.isEnabled = function Test$isEnabled(selection) {
try
{
console.log($controls);
var masterTabControl = $controls.getControl($("#MasterTabControl"),
"Tridion.Controls.TabControl");
console.log(masterTabControl);
alert("Mastercontrol - ComponentpresentationsTab");
console.log(masterTabControl.getPage("ComponentPresentationsTab"));
console.log("list of component presentations");
console.log(masterTabControl.getPage("ComponentPresentationsTab").
getListComponentPresentations().getItems());
console.log("list of get xml");
console.log(masterTabControl.getPage ("ComponentPresentationsTab").
getListComponentPresentations().getItems().getXml);
}
(catch exc)
{
}
return true;
}
編集 このコードを使用して、CP TAB の下にリストされているすべての CP Id を取得しました。@Frank van Puffelenに感謝
var p = this.properties;
var tgp = this.properties;
var c = p.controls;
var pageId = selection.getItem(0);
var masterTabControl = $controls.getControl($("#MasterTabControl"),
"Tridion.Controls.TabControl");
var compPresTab = masterTabControl.getPage("ComponentPresentationsTab");
var comPresList = p.compPresTab.getListComponentPresentations();
for (var i = 0; i <= myStringArray.length; i++)
{
console.log(comPresList.getItems()[i].getComponentId());
console.log(comPresList.getItems()[i].getComponentTemplateId());
}