我被一些开发烦恼困住了。我已经创建了一个应用程序来扩展 Sitecore 创作界面。在 Sitecore 中创建新内容项之前,该应用程序会查询一些内部服务并询问内容作者的一些额外问题。我已经在 (Sitecore.Shell.Applications.Templates.CreateTemplate.CreateTemplateForm) 上为应用程序建模。
我遇到的问题是,一旦创建了一个项目,我的 WizardForm 就会重新加载以加载新创建的项目。我想要的是向导进入“最终”页面并在模式对话框关闭后重新加载主 UI。新的 OOTB 模板向导的工作原理。我知道,如果我将我的项目创建代码注释掉,那么 UI 的行为将符合预期。看起来项目的创建会在 UI 响应的背景中生成一些事件,并使用新创建的项目重新加载我的模式对话框。(我尝试了以下解决方案http://sdn.sitecore.net/Forum/ShowPost.aspx?postid=29092,http://sdn.sitecore.net/Forum/ShowPost.aspx?postid=29968,但是这样做似乎没有为我解决它)。
原始代码似乎禁用了这样的事件:
this.CreateTemplatePicker.DisableEvents();
TemplateItem templateItem = Client.ContentDatabase.Templates.CreateTemplate(this.TemplateName.Value, selectionItem);
this.CreateTemplatePicker.EnableEvents();
我尝试了以下方法:
Client.Site.Notifications.Disabled = true;
var item = container.Add(ItemUtil.ProposeValidItemName(this.Title.Value), Settings.ProductImageTemplateID);
Client.Site.Notifications.Disabled = false;
和 OLSO
Item item;
using (new EventDisabler())
{
item = container.Add(ItemUtil.ProposeValidItemName(this.Title.Value), Settings.ProductImageTemplateID);
}
所有的结果都是一样的。一旦我到达创建项目的页面,向导模式对话框就会重新加载。使用提琴手我可以看到重新加载窗口的命令已发送到客户端。我只是不知道如何告诉 Sitecore UI 忽略事件,或者首先阻止事件的生成。发送到下面 UI 的第一个命令告诉页面加载内容编辑器,这正是我试图阻止的事情。
{"commands":[
{"command":"SetLocation","value":"/sitecore/shell/sitecore/content/Applications/Content%20Editor.aspx?fo=%7b186F686E-A8FF-4303-B59F-4D284A5A0196%7d&db=master&id=%7B186F686E-A8FF-4303-B59F-4D284A5A0196%7D&la=en&vs=1"},
{"command":"SetDialogValue","value":"{186F686E-A8FF-4303-B59F-4D284A5A0196}"},
{"command":"SetStyle","value":"none","id":"Constraints","name":"display"},
{"command":"SetStyle","value":"","id":"LastPage","name":"display"},
{"command":"SetAttribute","value":true,"id":"NextButton","name":"disabled"},
{"command":"SetOuterHtml","value":"<button id=\"CancelButton\" class=\"scButton\" TabIndex=\"0\" onclick=\"javascript:return scForm.postEvent(this,event)\" onkeydown=\"javascript:scForm.handleKey(this, event, null, '32')\">Finish</button>","id":"CancelButton"},
{"command":"Focus","value":"CancelButton","scrollintoview":"0"},{"command":"Eval","value":"scUpdateWizardControls();"},
{"command":"SetAttribute","value":true,"id":"BackButton","name":"disabled"},{"command":"Eval","value":"scAlignWizardButtons()"}
]}
关于我的 Sitecore 环境的一些信息:
Sitecore started
Sitecore.NET 7.0. (rev. 130810)
C:\Inetpub\wwwroot\sc71\Website\bin\Sitecore.Client.dll (Sitecore CMS, Sitecore Client Application, 7.0 rev. 130810)
C:\Inetpub\wwwroot\sc71\Website\bin\Sitecore.Kernel.dll (Sitecore CMS, Sitecore CMS Kernel Library, 7.0 rev. 130810)
C:\Inetpub\wwwroot\sc71\Website\bin\Sitecore.Nexus.dll (Sitecore.Nexus)
Operating system Microsoft Windows NT 6.2.9200.0
Microsoft.NET version 4.0.30319.18051
Process id: 8040
Windows identity used by the process: NT AUTHORITY\NETWORK SERVICE. Impersonation: False
Managed pipeline mode: Integrated