关闭从富文本编辑器打开的Sitecore Speak对话框

关闭从富文本编辑器打开的Sitecore Speak对话框,sitecore,sitecore-speak-ui,Sitecore,Sitecore Speak Ui,我正在将一个纯粹的UI模块转换为SPEAK,除了一个问题外,它通常都非常轻松。这是一个对话框,通过在富文本编辑器中单击按钮打开。我不知道如何关闭它并返回值 我试过查看Sitecore现有的SPEAK对话框的方式。例如选择MediaDialog: 它有一个名为insertButtonRule的规则组件 目标控件设置为SelectMediaButton,触发器为 设置为单击 关联规则的条件/操作为 “始终时,将对话框返回值设置为组件 MediaResultsListControlselectedI

我正在将一个纯粹的UI模块转换为SPEAK,除了一个问题外,它通常都非常轻松。这是一个对话框,通过在富文本编辑器中单击按钮打开。我不知道如何关闭它并返回值

我试过查看Sitecore现有的SPEAK对话框的方式。例如
选择MediaDialog

  • 它有一个名为
    insertButtonRule
    的规则组件
  • 目标控件设置为
    SelectMediaButton
    ,触发器为 设置为
    单击
    
    
  • 关联规则的条件/操作为 “始终
    时,将对话框返回值设置为组件
    
    MediaResultsListControl
    selectedItemId
这看起来相当直截了当,但我无法在我的应用程序中复制它-它什么都不做。我意识到当前的Sitecore SPEAK对话框都不是从富文本编辑器启动的,所以这并不是一个真正的同类比较。也许这就是我打开对话的方式

下面是我用来打开对话框的js命令(它基本上与我以前的纯UI应用程序相同,但URL不同):

RadEditorCommandList[“OpenMyApp”]=函数(命令名、编辑器、工具)
{
scEditor=编辑器;
var range=scEditor.getSelection().getRange()
范围。扩展(“单词”);
scEditor.getSelection().selectRange(范围)
var html=scEditor.getSelection().getText().trim();
scEditor.showExternalDialog(
“/sitecore/client/MySpeakApp?term=“+escape(html),
null,//参数
300,//宽度
500,//高度
scMyCallback,
无效的
“我的Speak应用程序”,
true,//模态
Telerik.Web.UI.WindowBehaviors.Close,//行为
false,//showStatusBar
假//显示标题栏
);
};
函数scMyCallback(发送方,返回值)
{
如果(返回值)
scEditor.pasteHtml(returnValue.text);
}
还有其他人为富文本编辑器编写过SPEAK应用程序吗?
欢迎任何建议。

选择媒体对话框正在使用此行返回值

 window.top.dialogClose(returnValue); //return value is the value you want to return
如果您试图在SPEAK页面中调用此方法,它是否会关闭对话框


PS:我从未尝试过。

选择媒体对话框使用此行返回值

 window.top.dialogClose(returnValue); //return value is the value you want to return
如果您试图在SPEAK页面中调用此方法,它是否会关闭对话框


PS:我从来没有尝试过。

所以我不得不去Telerik网站上查找,这段代码是根据我发现的内容改编的:

var窗口;
if(window.radWindow)
radWindow=window.radWindow;
else if(window.frameElement&&window.frameElement.radWindow)
radWindow=window.frameElement.radWindow;
其他的
window.close();
radWindow.Close(“我的返回值”);

把它和闪亮的新SPEAK代码混合在一起感觉有点混乱,但现在我很高兴它能工作。

所以我不得不去Telerik网站上查看,这段代码是根据我发现的改编而来的:

var窗口;
if(window.radWindow)
radWindow=window.radWindow;
else if(window.frameElement&&window.frameElement.radWindow)
radWindow=window.frameElement.radWindow;
其他的
window.close();
radWindow.Close(“我的返回值”);

将此与闪亮的新SPEAK代码混合在一起感觉有点混乱,但现在我很高兴它能工作。

我知道有点晚了,您已经解决了:-) 在SPEAK中,您可以触发确认对话框,如下所示:

myConfirmationDialog.CloseClick = "ok";
myConfirmationDialog.hide();

(如果你在哪里使用确认对话框)

我知道有点晚了,你已经解决了:-) 在SPEAK中,您可以触发确认对话框,如下所示:

myConfirmationDialog.CloseClick = "ok";
myConfirmationDialog.hide();

(如果您在哪里使用确认对话框)

好主意,但不幸的是它不起作用,可能是因为涉及到Telerik控件。看看我的答案,我最终决定了什么。好主意,但不幸的是它没有起作用,大概是因为涉及到Telerik控件。看看我的答案,我最终决定了什么。很高兴你找到了解决方案。这是一个模块的一部分,现在可以在Github上使用。这是原位代码(SPEAK组件的一部分):非常感谢您为我指出这个github回购协议。这是我需要实现的一个非常好的起点。很高兴你找到了解决方案。这是Github上现在可用的模块的一部分。这是原位代码(SPEAK组件的一部分):非常感谢您为我指出这个github回购协议。这是我需要实现的一个非常好的起点。