1

InnovaStudio WYSIWYG Editorを使用しており、InnovaStudioのAssetManagerをCKFinderに置き換えようとしています。エディター構成には、アセットマネージャーに使用するURLの行があります。私はそれをCKFinderに向けました。私が仕事に取り掛かることができない部分は、CKFinderからダブルクリックされたファイルのパスをフィールドに入力することです。

'func'パラメーターを使用してコールバック関数を指定しているようです。私が呼んでいるURLは次のとおりです。/common/ckfinder/ckfinder.html?action=js&func=setAssetValue

InnovaStudio WYSIWYGエディターはsetAssetValue(v)、フィールド値を設定するためのコールバック関数を提供します。vパラメータはURLを保持する必要があります。

CKFinderが呼び出されると期待どおりにポップアップしますが、サムネイルをダブルクリックしたり、コンテキストメニューの[選択]オプションを使用したりすることはできません。通常の/予想される動作では、CKFinderが閉じ、ターゲットフィールドに選択したアセットのURLが入力されます。


追加情報: InnovaStudio WYSIWYGエディターには、コンテンツに画像またはフラッシュファイルを追加するための「ポップアップ」があります。このポップアップはiframe内にあります。CKFinder(または独自のアセットマネージャー)を呼び出すと、それもiframe内にあります。CKFinderは、入力する必要のあるフィールドを実際に含む画像/フラッシュiframeではなく、メインウィンドウのスコープを調べているようです。

4

1 に答える 1

0

(一種の)解決策

Firebug を使用して DOM を掘り下げることで、InnovaStudio が生成するISWindowウィンドウへの参照を配置するオブジェクトを作成することを発見しました。setAssetValue()そのオブジェクトをループして適切な iframeの関数を呼び出すように、コールバック関数を変更しました。これは機能しましたが、CKEditor はまだ閉じませんでした。それは、内部にあるiframeを閉じる方法を「知らなかった」ためだと思います。内部にあるウィンドウを閉じる方法を CKFinder に伝える方法はありますか? iframe の使用が役立つ他のケースを思い描くことができます。

CKFinder で iframe 表示を使用したいのですが、最終的に標準の CKFinder ポップアップを使用して機能するようになりました。

エディター構成行: oEdit1.cmdAssetManager = "parent.BrowseServerIS();";

サポート機能:

// InnovaStudio WYSIWYG Editor version
function BrowseServerIS()
{
   // You can use the "CKFinder" class to render CKFinder in a page:
   var finder = new CKFinder();
   // The path for the installation of CKFinder (default = "/ckfinder/").
   finder.BasePath = '/common/ckfinder/';
   // Name of a function which is called when a file is selected in CKFinder.
   finder.SelectFunction = SetFileFieldIS;
   // Launch CKFinder
   finder.Popup();
}

// InnovaStudio WYSIWYG Editor version
function SetFileFieldIS(fileUrl, data)
{
   for (var i in ISWindow.objs) {
      if ((null != ISWindow.objs[i].rt.frm.contentWindow)
            && ('function' == typeof ISWindow.objs[i].rt.frm.contentWindow.setAssetValue)) {
         ISWindow.objs[i].rt.frm.contentWindow.setAssetValue(fileUrl);
      }
   }
}
于 2010-04-05T22:36:04.163 に答える