Создание собственного плагина Rails tinyMCE: editor.ui не определен - PullRequest
1 голос
/ 30 апреля 2019

Я хочу добавить пользовательский плагин к редактору tinyMCE с поддержкой рельсов, однако в консоли я получаю editor.ui is undefined, и он терпит неудачу

Если я закомментирую любой код, относящийся к editor.ui в конфигурации.Затем файл js загружается редактором и с помощью плагина «Справка» я вижу, что мой плагин нормально загружается из getMetadata function

/ config / tinymce.yml

toolbar:
    - bold italic underline superscript subscript underline | link | alignleft aligncenter alignright | bullist numlist | hr | forecolor | backcolor | table | myplugin | image | help
plugins:
  - link table lists textcolor myplugin image imagetools help

app/assets/javascripts/tinymce/plugins/myplugin/plugin.js (это просто скопировано непосредственно из https://www.tiny.cloud/docs/advanced/creating-a-plugin/ изменения «example» для «myplugin»)

$(document).on("ready", function() {
  tinymce.PluginManager.add("myplugin", function(editor, url) {
    var openDialog = function () {
      return editor.windowManager.open({
        title: "Example plugin",
        body: {
          type: "panel",
          items: [
            {
              type: "input",
              name: "title",
              label: "Title"
            }
          ]
        },
        buttons: [
          {
            type: "cancel",
            text: "Close"
          },
          {
            type: "submit",
            text: "Save",
            primary: true
          }
        ],
        onSubmit: function (api) {
          var data = api.getData();
          // Insert content when the window form is submitted
          editor.insertContent("Title: " + data.title);
          api.close();
        }
      });
    };

    // Add a button that opens a window
    editor.ui.registry.addButton("myplugin", {
      text: "My button",
      onAction: function () {
        // Open window
        openDialog();
      }
    });

    // Adds a menu item, which can then be included in any menu via the menu/menubar configuration
    editor.ui.registry.addMenuItem("myplugin", {
      text: "Example plugin",
      onAction: function() {
        // Open window
        openDialog();
      }
    });

    return {
      getMetadata: function () {
        return  {
          name: "Example plugin",
          url: "http://exampleplugindocsurl.com"
        };
      }
    };
  });
});

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Какую версию TinyMCE вы используете? Этот код отлично работает на нашем сайте скрипта: http://fiddle.tinymce.com/PGgaab

0 голосов
/ 30 апреля 2019

Не видя полного кода, который вы используете, трудно сказать наверняка, но документ, готовый в jQuery, вероятно, запускается задолго до инициализации самого TinyMCE. В этом случае вы не можете использовать API TinyMCE для добавления плагина до инициализации TinyMCE.

Я бы, как предполагает эта страница документации, поместил код плагина в файл и загрузил его, как и все другие плагины TinyMCE. TinyMCE получит плагины в нужное время в процессе инициализации, и это больше не будет проблемой.

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