ユーザーから情報を収集し、サイトコアでコンテンツ アイテムを作成する Sheer UI ウィザードがあります。ウィザードは、コマンド テンプレートを使用して起動されます。
新しく作成されたコンテンツ アイテムをコンテンツ エディターで現在選択されているアイテムにウィザードで設定したいのですが、その方法がわかりません。これがどのように行われるか知っている人はいますか?
アップデート
Trayek のアドバイスは、私をもう少し前進させてくれました。ウィザードを起動するために使用するコマンドに次のコードが含まれています。
[Serializable]
public class MyNewContentCommand : Command
{
public override void Execute(CommandContext context)
{
ClientPipelineArgs args = new ClientPipelineArgs();
args.Parameters["id"] = context.Parameters["id"];
Context.ClientPage.Start(this, "Run", args);
}
protected void Run(ClientPipelineArgs args)
{
if (!args.IsPostBack)
{
// This runs when the users clicks to add the item
// in the content editor.
// Launches a modal wizard to collect user data
string id = args.Parameters["id"];
string controlUrl = Sitecore.UIUtil.GetUri("control:MyNewItemWizard");
UrlString urlStr = new UrlString(controlUrl);
urlStr.Append("id", id);
SheerResponse.ShowModalDialog(urlStr.ToString(), true);
args.WaitForPostBack();
}
else if (args.HasResult)
{
// This runs once the wizard has finished
// Wizard passes ID of created item in its result
// This is used to find the newly created item.
Item created = Client.GetItemNotNull(ID.Parse(args.Result));
// Sending these messages result in refreshing the child items
// of the parent. And they work.
Context.ClientPage.SendMessage(this, string.Format("item:updated(id={0})", created.Parent.ID));
Context.ClientPage.SendMessage(this, string.Format("item:refreshchildren(id={0})", created.Parent.ID));
// This message should select the new item in content editor, but
// it doesn't have the desired effect.
Context.ClientPage.SendMessage(this, string.Format("item:load(id={0})", (object)created.ID));
}
}
}