コンポーネントの [プレゼンテーション] タブをクリックすると、ページにコンポーネントとテンプレートが表示されます。そのすぐ下にある[挿入] ボタンをクリックすると、別のウィンドウ [コンポーネントプレゼンテーションの挿入] が開き、そこにも[挿入] ボタンと [閉じる] ボタンがあります。挿入中に、選択したコンポーネントとテンプレートの組み合わせがページに既に存在するかどうかを確認する必要があります。はいの場合、「この組み合わせは既に存在します。他のコンポーネントを選択してください」のようなポップアップで同じものを挿入しないようにする必要があります。どのように進めればよいでしょうか。[挿入] ボタンで Javascript をトリガーするにはどうすればよいですか?
編集:
ページにサブスクライブすると、エラーが発生します。私のコード:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Text;
using Tridion.ContentManager.Extensibility.Events;
using Tridion.ContentManager.Extensibility;
using Tridion.ContentManager.ContentManagement;
using System.IO;
using System.Windows.Forms;
namespace MyEventHandlers
{
[TcmExtension("MyEventHandlerExtension")]
public class MyEventHandler : TcmExtension
{
public MyEventHandler()
{
Subscribe();
}
public void Subscribe()
{
EventSystem.Subscribe<Page, SaveEventArgs>(SaveBtnInitiated, EventPhases.Initiated);
}
private void SaveBtnInitiated(Page subject, SaveEventArgs args, EventPhases phase)
{
try
{
List<string> allcplist = new List<string>();
List<string> allcplist = new List<string>();
foreach (ComponentPresentation cp in subject.ComponentPresentations)
{
allcplist.Add(cp.Component.Id + "," + cp.ComponentTemplate.Id);
}
List<string> uniquecplist = allcplist.Distinct().ToList();
if (allcplist.Count != uniquecplist.Count)
{
subject.Checkin(false);
throw new Exception("Page has duplicate component presentation");
}
catch(Exception)
{
}
}