@SlimSavernake

Как в creditor создать второе диалоговое окно при нажатии OK на первом окне?

При клике по кнопке на панели кнопок я хочу открыть диалоговое окно, указать там нужную мне информацию и при нажатии ОК открыть новое диалоговое окно. Второе окно у меня не открывается. Подскажите как правильно это сделать?

plugin.js

CKEDITOR.plugins.add( 'gallery', {
        icons: 'simplebox',
        init: function( editor ) {
            editor.addCommand('gallery', new CKEDITOR.dialogCommand('galleryDialog'));

            editor.ui.addButton('Gallery', {
                label: 'Insert gallery',
                command: 'gallery',
                toolbar: 'insert',
                icon: this.path + 'images/image.png'
            });

            CKEDITOR.dialog.add( 'galleryDialog', this.path + 'dialogs/gallery.js' );
        }
    } );


dialogs/gallery.js
CKEDITOR.dialog.add( 'galleryDialog', function( editor ) {
    return {
        title: 'Edit Simple Box',
        minWidth: 200,
        minHeight: 100,
        contents: [
            {
                id: 'info',
                elements: [
                    {
                        id: 'align',
                        type: 'html',
                        html: '<div id="myDiv">Sample <b>text</b>.</div><div id="otherId">Another div.</div>',
                        commit: function( widget ) {
                            console.log(1);
                        }
                    },

                ]
            }
        ],
        onOk: function(ee) {

// ТУТ Я ПЫТАЮСЬ СОЗДАТЬ ВТОРОЕ ДИАЛОГОВОЕ ОКНО

            CKEDITOR.dialog.add( 'mydialog', function( editor) {
                // CKEDITOR.dialog.definition

                return {
                    title: 'Sample dialog',
                    minWidth: 390,
                    minHeight: 130,
                    contents: [
                        {
                            id: 'tab1',
                            label: 'Label',
                            title: 'Title',
                            expand: true,
                            padding: 0,
                            elements: [
                                {
                                    type: 'html',
                                    html: '<p>This is some sample HTML content.</p>'
                                },
                                {
                                    type: 'textarea',
                                    id: 'textareaId',
                                    rows: 4,
                                    cols: 40
                                }
                            ]
                        }
                    ],
                    buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ],
                    onOk: function() {
                        // "this" is now a CKEDITOR.dialog object.
                        // Accessing dialog elements:
                        var textareaObj = this.getContentElement( 'tab1', 'textareaId' );
                        alert( "You have entered: " + textareaObj.getValue() );
                    }
                };
            } );


// ТУТ Я ПЫТАЮСЬ ЗАПУСТИТЬ СОЗДАННОЕ ДИАЛОГОВОЕ ОКНО
            CKEDITOR.instances.editor1.openDialog( 'mydialog' );
        }
    };
} );
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
Прежде всего, перенесите добавление диалога из файла с диалогом в функцию init() в файл с плагином - вам не нужно каждый раз добавлять диалог. Дальше - замените CKEDITOR.instances.editor1.openDialog( 'mydialog' ) на просто editor.openDialog( 'mydialog' ) - инстанс редактора передается в функцию инициализации диалога, вам не нужно его получать таким вот образом. И последнее - верните false из функции onOK() - это предотвратит закрытие первого диалога и позволит открыть второй. Потом вам нужно будет закрыть первый диалог руками - в инстансе второго диалога будет на него ссылка - dialog._.parentDialog.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы