如何防止Sitecore模态对话框将用户重定向到新项目?

阿列宁露台

我陷入了一点发展烦恼。我创建了一个扩展Sitecore创作界面的应用程序。在Sitecore中创建新的内容项之前,该应用程序会查询一些内部服务,并向内容作者询问一些其他问题。我已经在(Sitecore.Shell.Applications.Templates.CreateTemplate.CreateTemplateForm)上为应用程序建模。

我遇到的问题是,一旦创建了项目,我的WizardForm就会重新加载以加载新创建的项目。我想要的是向导在关闭模式对话框后进入“最终”页面并重新加载主UI。新的OOTB模板向导的工作原理。我知道,如果我将项目创建代码注释掉,则UI会按预期运行。看起来像一个项目的创建会在UI响应的背景中生成一些事件,并使用新创建的项目重新加载我的模式对话框。(我曾尝试以下解决方案http://sdn.sitecore.net/Forum/ShowPost.aspx?postid=29092http://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;

和奥尔索

        Item item;
        using (new EventDisabler())
        {
            item = container.Add(ItemUtil.ProposeValidItemName(this.Title.Value), Settings.ProductImageTemplateID);
        }

全部具有相同的结果。我一进入创建项目的页面,便会重新加载向导模式对话框。使用小提琴手,我可以看到重新加载Windows的命令已发送到客户端。我只是无法弄清楚如何告诉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, &#39;32&#39;)\">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
阿列宁露台

最后,该问题仅影响可装桶的物品。无需禁用事件或其他任何东西,那是一条红鲱鱼。但是,就我而言,我正在使用存储桶和可存储项目,因此需要对其进行修复。

令人反感的代码结束于Sitecore.Buckets.Commands.AddFromTemplateCommand()感谢Sitecore支持工程师深入研究此问题。一个对我有用的建议的解决方法如下。这已经报告给Sitecore开发团队,我想它将在Sitecore的未来版本中的某个阶段得到解决。当前(在撰写本文时)的版本Sitecore.NET 7.0. (rev. 130810)会受到影响。

您将需要用自己的替代现有的实现(请参见下面的代码)。要替换现有的实现,请/App_Config/Includes/Sitecore.Buckets.config在处覆盖以下配置文件/sitecore/databases/database[@id="master"]我最终创建了一个看起来像这样的配置补丁文件。

配置:

<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <databases>
      <database id="master" singleInstance="true" type="Sitecore.Data.Database, Sitecore.Kernel">

        <Engines.DataEngine.Commands.AddFromTemplatePrototype>

          <obj patch:instead="obj[@type='Sitecore.Buckets.Commands.AddFromTemplateCommand, Sitecore.Buckets']"
               type="Sitecore.Support.Buckets.Commands.AddFromTemplateCommand, MyAssembly"/>

        </Engines.DataEngine.Commands.AddFromTemplatePrototype>
      </database>
    </databases>
  </sitecore>
</configuration>

代码:

using Sitecore.Data.Items;
using Sitecore.Text;
using Sitecore.Web.UI.Sheer;
using System;
using System.Web;

namespace Sitecore.Support.Buckets.Commands
{
    public class AddFromTemplateCommand : Sitecore.Buckets.Commands.AddFromTemplateCommand
    {
        protected override Sitecore.Data.Engines.DataCommands.AddFromTemplateCommand CreateInstance()
        {
            return new AddFromTemplateCommand();
        }

        protected override void SetLocation(Data.Items.Item item)
        {
            if ((HttpContext.Current != null) && (Context.ClientPage != null))
            {
                // This condition is set to go around an issue when a bucket item is created from within a custom wizard app.
                // Replace the specified path with your own one.
                if (Sitecore.Context.RawUrl != null && !Sitecore.Context.RawUrl.Contains("/sitecore/shell/Applications/Issues/Create Product Bucket.aspx"))
                {
                    UrlString str = new UrlString(Sitecore.Buckets.Util.Constants.ContentEditorRawUrlAddress);
                    str.Add(Sitecore.Buckets.Util.Constants.OpenItemEditorQueryStringKeyName, item.ID.ToString());
                    item.Uri.AddToUrlString(str);
                    UIUtil.AddContentDatabaseParameter(str);
                    SheerResponse.SetLocation(str.ToString());
                }
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显示未安装Google Play服务的错误对话框,并将用户重定向到该对话框

来自分类Dev

显示未安装Google Play服务的错误对话框,并将用户重定向到该对话框

来自分类Dev

当用户在 JQuery UI 中的模态对话框之外单击时,如何防止模态对话框关闭?

来自分类Dev

如果用户用户通过引导对话框确认链接,则重定向到相应的链接

来自分类Dev

如果用户用户通过引导对话框确认链接,请重定向到相应的链接

来自分类Dev

Microsoft Bot Framework - 用户被重定向到错误的对话框

来自分类Dev

xpages重定向到页面并关闭当前对话框

来自分类Dev

通过对话框重定向到新页面

来自分类Dev

AngularJS指令到模态对话框

来自分类Dev

选择项目时如何防止对话框关闭

来自分类Dev

Shell重定向-对话框

来自分类Dev

如何将用户从URL重定向到页面404

来自分类Dev

如何将用户重定向到子域?

来自分类Dev

如何将用户重定向到返回的URL python

来自分类Dev

我们如何实现一个模态对话框,该模态对话框像底部对话框一样从右到右?

来自分类Dev

将用户重定向到注册

来自分类Dev

将用户重定向到登录页面

来自分类Dev

将用户重定向到引用页面

来自分类Dev

将用户重定向到新的URL

来自分类Dev

将用户重定向到登录页面

来自分类Dev

如何实现模态对话框的效果

来自分类Dev

在确认对话框中重定向到模板之前,请执行一个操作

来自分类Dev

图像Mime类型未重定向到“保存/打开”对话框

来自分类Dev

JSF重定向到另一个页面并打开对话框

来自分类Dev

重定向到错误页面不适用于打开的对话框

来自分类Dev

jQuery UI模态对话框:防止在打开对话框时按键

来自分类Dev

当用户在对话框旁边按下时,如何防止关闭android对话框?

来自分类Dev

如何根据用户的输入将用户重定向到其他网页?

来自分类Dev

如果用户已经登录,如何将用户重定向到其主页?

Related 相关文章

  1. 1

    显示未安装Google Play服务的错误对话框,并将用户重定向到该对话框

  2. 2

    显示未安装Google Play服务的错误对话框,并将用户重定向到该对话框

  3. 3

    当用户在 JQuery UI 中的模态对话框之外单击时,如何防止模态对话框关闭?

  4. 4

    如果用户用户通过引导对话框确认链接,则重定向到相应的链接

  5. 5

    如果用户用户通过引导对话框确认链接,请重定向到相应的链接

  6. 6

    Microsoft Bot Framework - 用户被重定向到错误的对话框

  7. 7

    xpages重定向到页面并关闭当前对话框

  8. 8

    通过对话框重定向到新页面

  9. 9

    AngularJS指令到模态对话框

  10. 10

    选择项目时如何防止对话框关闭

  11. 11

    Shell重定向-对话框

  12. 12

    如何将用户从URL重定向到页面404

  13. 13

    如何将用户重定向到子域?

  14. 14

    如何将用户重定向到返回的URL python

  15. 15

    我们如何实现一个模态对话框,该模态对话框像底部对话框一样从右到右?

  16. 16

    将用户重定向到注册

  17. 17

    将用户重定向到登录页面

  18. 18

    将用户重定向到引用页面

  19. 19

    将用户重定向到新的URL

  20. 20

    将用户重定向到登录页面

  21. 21

    如何实现模态对话框的效果

  22. 22

    在确认对话框中重定向到模板之前,请执行一个操作

  23. 23

    图像Mime类型未重定向到“保存/打开”对话框

  24. 24

    JSF重定向到另一个页面并打开对话框

  25. 25

    重定向到错误页面不适用于打开的对话框

  26. 26

    jQuery UI模态对话框:防止在打开对话框时按键

  27. 27

    当用户在对话框旁边按下时,如何防止关闭android对话框?

  28. 28

    如何根据用户的输入将用户重定向到其他网页?

  29. 29

    如果用户已经登录,如何将用户重定向到其主页?

热门标签

归档