1

我在 Sitecore 中为页面编辑器提供了一个自定义体验按钮,它引用了一个自定义命令。从这个上下文中打开 SPEAK 对话框的正确方法是什么?应该如何设置对话框的宽度/高度?

我有以下命令代码:

public class MySpecialCommand : Sitecore.Shell.Applications.WebEdit.Commands.WebEditCommand
{
    public override void Execute(Sitecore.Shell.Framework.Commands.CommandContext context)
    {
        var parameters = new NameValueCollection();
        //add various parameters etc 
        Context.ClientPage.Start((object) this, "Run", parameters);
    }

    protected void Run(ClientPipelineArgs args)
    {
        if (!args.IsPostBack)
        {           
            string url = "/sitecore/client/your%20apps/somespeakdialog?sc_lang=en&someParam" + args.Parameters["someParam"];
            SheerResponse.ShowModalDialog(url, "100", "200", string.Empty, true);
            args.WaitForPostBack();
        }
        else if (args.HasResult)
        {
            //not got this far yet...
        }
    }
}

而且我发现对话框的大小与width传递heightSheerResponse.ShowModalDialog. 我也尝试过传入以“px”为后缀的值,但这并没有帮助。

4

1 回答 1

3

在 Sitecore 7.5 中没有开箱即用的能力来设置基于 SPEAK 的对话框的宽度和高度(它在 8.0 中可用)

但是,您可以自定义\sitecore\shell\Controls\jQueryModalDialogs.html文件。只需找到并更新以下if语句:

if (isSpeakDialog) {
  createdDialog.dialog('option', 'width', size.width);
  createdDialog.dialog('option', 'height', size.height);
}

在 Sitecore 8.0 中添加了一个新方法:

public static ClientCommand ShowModalDialog(ModalDialogOptions options)

你的SheerResponse.ShowModalDialog(url, "100", "200", string.Empty, true);将是

SheerResponse.ShowModalDialog(new ModalDialogOptions(url)
{
  Width = "100",
  Height = "200",
  Response = true,
  ForceDialogSize = true
});

物业说明ForceDialogSize

获取或设置一个值,该值指示 SPEAK 对话框是否将考虑 <see cref="Width"/> 和 <see cref="Height"/>。

于 2015-04-02T16:31:10.443 回答