Вставить пользовательскую кнопку в диалог вставки / редактирования ссылки? - PullRequest
3 голосов
/ 12 марта 2019

Я хочу добавить пользовательскую кнопку в диалоговом окне / всплывающем окне «Вставить / изменить ссылку» в tinymce v5.

Я получил этот код только для опции настройки, когда я вызывал функцию.

function tinyMceEditLink(editor) {
    console.log("tinyMceEditLink");

    editor.on("click", function(e) {
        console.log("this click");
    });
}

1 Ответ

1 голос
/ 21 марта 2019

Я буду первым, кто признает, что это немного глупо, но вы можете попробовать:

function tinyMceEditLink(editor) {
    editor.windowManager.oldOpen = editor.windowManager.open;  // save for later
    editor.windowManager.open = function (t, r) {    // replace with our own function
        var modal = this.oldOpen.apply(this, [t, r]);  // call original

        if (t.title === "Insert/Edit Link") {
            $('.tox-dialog__footer-end').append(
                '<button title="Custom button" type="button" data-alloy-tabstop="true" tabindex="-1" class="tox-button" id="custom_button">Custom button</button>'
            );

            $('#custom_button').on('click', function () {
                //Replace this with your custom function
                console.log('Running custom function')
            });
        }

        return modal; // Template plugin is dependent on this return value
    };
}

Это даст вам следующий результат:

enter image description here

Настройка:

tinymce.init({
      selector: "#mytextarea",  // change this value according to your HTML
      plugins: "link",
      menubar: "insert",
      toolbar: "link",
      setup: function(editor) {
        // Register our custom button callback function
        editor.on('init',function(e) {
            tinyMceEditLink(editor);
        });

        // Register some other event callbacks...
        editor.on('click', function (e) {
            console.log('Editor was clicked');
        });

        editor.on('keyup', function (e) {
            console.log('Someone typed something');
        });

      }
    });

Советы:

  1. Можно заменить $('.tox-dialog__footer-end')...с $('.tox-dialog__footer-start')..., если вы хотите, чтобы ваша кнопка находилась слева от нижнего колонтитула.
  2. В настоящее время это работает со скином по умолчанию, изменения в .tox-dialog__footer class могут нарушить это.
  3. Любые обновленияв библиотеку, которая меняет заголовок «Вставить / редактировать ссылку», это сломается.
  4. Для работы приведенного выше примера требуется jQuery.
  5. Это минимальный пример.Используйте руководство по настройке, чтобы настроить панель инструментов, события настройки и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...