我正在将 Sheer UI 模块转换为 SPEAK,除了一个问题外,它通常非常轻松。这是一个对话框,通过在富文本编辑器中单击按钮打开。我不知道如何关闭它并返回一个值。
我已经尝试查看 Sitecore 现有 SPEAK 对话框的执行方式。例如SelectMediaDialog
:
- 它有一个名为
insertButtonRule
. - 目标控件设置为
SelectMediaButton
,触发器设置为click
。 - 关联规则的条件/动作是“何时
always
,将对话框返回值设置为组件MediaResultsListControl
selectedItemId
”。
这似乎相当简单,但我无法为我的应用程序复制它 - 它什么也不做。我意识到当前的 Sitecore SPEAK 对话框都不是从富文本编辑器启动的,所以这并不是真正的同类比较。也许这是我打开对话框的方式?
这是我用来打开对话框的 js 命令(它与我的旧 Sheer UI 应用程序基本相同,但 URL 不同):
RadEditorCommandList["OpenMyApp"] = function(commandName, editor, tool)
{
scEditor = editor;
var range = scEditor.getSelection().getRange()
range.expand("word");
scEditor.getSelection().selectRange(range)
var html = scEditor.getSelection().getText().trim();
scEditor.showExternalDialog(
"/sitecore/client/MySpeakApp?term=" + escape(html),
null, //argument
300, //width
500, //height
scMyCallback,
null,
"My Speak App",
true, //modal
Telerik.Web.UI.WindowBehaviors.Close, // behaviors
false, //showStatusBar
false //showTitleBar
);
};
function scMyCallback(sender, returnValue)
{
if (returnValue)
scEditor.pasteHtml(returnValue.text);
}
有没有其他人为富文本编辑器编写过 SPEAK 应用程序?欢迎任何建议。