1

elFinder を CKEditor に統合する必要があります。私はこれに従いました:

https://github.com/Studio-42/elFinder/wiki/Integration-with-CKEditor

それは機能していますが、画像選択のためにポップアップウィンドウを開くのはあまり良くないので、モーダルダイアログでelFinderを開きたいです。

「モーダル統合」については、次のスレッドに従いました: http://bxuulgygd9.tal.ki/20110728/integration-with-ckeditor-759177/

そこの最後の投稿は部分的に機能します。それは本当にモーダルでelfinderを開きます。BUT: CKFinder の URL フィールドに画像の URL を挿入したい場合、その正確な ID を知る必要があります。また、画像の解像度が満たされず、他の問題が発生します。最善の解決策は、すべてを処理する「通常のポップアップ」統合で呼び出される関数を実行することです。

window.opener.CKEDITOR.tools.callFunction(funcNum, file);

しかし、「ポップアップ統合」ではfuncNumコールバックが登録されていますが、モーダル統合では登録されていないため、呼び出すことができません。モーダル ウィンドウで elfinder (または他のイメージ マネージャー - それは同じ) を実行するためのヒントはありますか? 私は絶望的です。

4

1 に答える 1

5

私はそれを自分で解決しました。このコードはいくつかのチュートリアルを組み合わせたもので、elFinder をモーダル ウィンドウに完全に統合できます。多分誰かがそれを便利だと思うでしょう。

    CKEDITOR.on('dialogDefinition', function(event) {
    var editor = event.editor;
    var dialogDefinition = event.data.definition;
    console.log(event.editor);
    var dialogName = event.data.name;

    var tabCount = dialogDefinition.contents.length;
    for (var i = 0; i < tabCount; i++) {
        var browseButton = dialogDefinition.contents[i].get('browse');

        if (browseButton !== null) {
            browseButton.hidden = false;
            browseButton.onClick = function(dialog, i) {
                editor._.filebrowserSe = this;
                jQuery('<div \>').dialog({modal: true, width: "80%", title: "Insert image", zIndex: 99999,
                    create: function(event, ui) {
                        jQuery(this).elfinder({
                            resizable: false,
                            url: "/path/to/connector.php",
                            getFileCallback: function(url) {
                                CKEDITOR.tools.callFunction(editor._.filebrowserFn, url);
                                jQuery('a.ui-dialog-titlebar-close[role="button"]').click()
                            }
                        }).elfinder('instance')
                    }
                })
            }
        }
    }
});
于 2013-05-09T17:58:41.803 に答える