Загрузить обратный звонок в CKEditor - PullRequest
2 голосов
/ 14 февраля 2011

Я пытаюсь настроить CKEditor, чтобы позволить пользователю загружать изображение со своего компьютера. Я использую filebrowserUploadUrl, поэтому я могу загрузить изображение на сервер и получить обратно присвоенный ему URL-адрес, но я не могу понять, как передать URL-адрес редактору ...

Некоторые примеры в сети говорят о возврате с сервера что-то вроде <script>parent.CKEDITOR.tools.callFunction ..., но я думаю, что это довольно уродливо, разве нет способа сказать CKEditor "после загрузки изображения, вызвать эту функцию"?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2015

Сервер не должен возвращать javascript для отображения клиентом.

Несмотря на то, что следующее уродливо уродливо ... безобразно ... Я все же предпочитаю его отправке javascript с сервера:

(Пример автоматической вставки изображения в редактор после его загрузки - работает с 4.4.7)

var onUploadImage = function (dialog) {

    // Get the contents in the iframe
    var iframe = $('.cke_dialog_ui_input_file iframe');
    iframe.one('load', function(ev) {
        var fileUrl = ev.target.contentDocument.body.innerText;
        dialog.getContentElement('info', 'txtUrl').setValue(fileUrl);
        $(".cke_dialog_ui_button_ok span").click();
    });
};

var onLoadImageDialog = function () {
    var dialog = CKEDITOR.dialog.getCurrent(); 

    // Open default tab
    this.selectPage('Upload');

    $('.cke_dialog_ui_fileButton').click(onUploadImage.bind(null, dialog));
};

var onDialogDefinition = function( ev ) {
    var name = ev.data.name;
    var definition = ev.data.definition;
    if ( name !== 'image' ) {
        return;
    }
    definition.onLoad = onLoadImageDialog
};

CKEDITOR.on('dialogDefinition', onDialogDefinition);

Конечно, правильным способом было бы создать собственный плагин.

0 голосов
/ 14 февраля 2011

Прочитайте еще раз синтаксис: вы получаете объект CKEDITOR и говорите ему, чтобы он вызывал функцию, чтобы он делал именно то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...