2

私は Sheer UI モジュールを SPEAK に変換していますが、1 つの問題を除いて、通常はほとんど問題はありません。これは、リッチ テキスト エディターのボタン クリックから開くダイアログです。それを閉じて値を返す方法がわかりません。

私は、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 アプリを作成した人はいますか? どんな提案でも大歓迎です。

4

3 に答える 3

2

そこで、Telerik のサイトを見に行く必要がありました。このコードは、私が見つけたものを基にしています。

var radWindow;

if (window.radWindow)
    radWindow = window.radWindow;
else if (window.frameElement && window.frameElement.radWindow)
    radWindow = window.frameElement.radWindow;
else
    window.close();

radWindow.Close("My return value");

これをピカピカの新しい SPEAK コードと混ぜ合わせるのは少し面倒ですが、今のところうまくいっているだけです。

于 2014-07-01T22:06:16.227 に答える
1

少し遅れていることはわかっていますが、すでに解決しています:-) SPEAK では、次のように ConfirmationDialog をトリガーできます。

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

(ConfirmationDialogを使用している場合)

于 2016-10-10T12:12:19.337 に答える