CKeditor 4插件按钮不会出现

时间:2017-12-08 12:13:09

标签: ckeditor drupal-8

我有一个工作扩展插件(myplugin),它扩展了drupalimagecaption插件,扩展了drupalimage,扩展了原始图像插件。现在我想为myplugin插件添加一个额外的工具栏按钮。以下是我尝试添加的方法:

(function (CKEDITOR) {

  'use strict';

  CKEDITOR.plugins.add('myplugin', {
    icons: 'drupalimage,DoubleImage',
    requires: 'drupalimagecaption',
    hidpi: true,

    beforeInit: function (editor) {
      // [...] Here are some overwrites

      var imageSaveCallback = function (data) {
        editor.fire('saveSnapshot');
        var content = data.image_render;
        editor.insertHtml(content);
        editor.fire('saveSnapshot');
      };

      // Implementation before initializing plugin.
      editor.addCommand('InsertDoubleImage', {
        canUndo: true,
        exec: function (editor, data) {
          Drupal.ckeditor.openDialog(editor,
            Drupal.url('mydrupalmodule/dialog/double_image/' + editor.config.drupal.format),
            {},
            imageSaveCallback,
            {}
          );
        }
      });

      // Register the toolbar button.
      if (editor.ui.addButton) {
        editor.ui.addButton('DoubleImage', {
          label: Drupal.t('Upload Double Image'),
          command: 'InsertDoubleImage'
        });
      }
    }
  });

})(CKEDITOR);

我的主要问题是,为什么这个按钮没有显示在drupal的管理界面上,所以我无法添加到CKeditor的工具栏。我还有一个PHP类加载这个文件(这个脚本所在的位置),我也定义了新的和当前的按钮:

public function getButtons() {
  return [
    'DrupalImage' => array(
      'label' => t('Single Image Popup'),
      'image' => drupal_get_path('module', 'mydrupalmodule') . '/js/plugins/elevation/icons/drupalimage.png',
    ),
    'DoubleImage' => array(
      'label' => t('Double Image Popup'),
      'image' => drupal_get_path('module', 'mydrupalmodule') . '/js/plugins/elevation/icons/DoubleImage.png',
    ),
  ];
}

其实我不知道自己错过了什么,而且我无法找到为什么不想工作...(只有覆盖工作,但按钮不会出现...)如果覆盖现有插件,则无法添加新按钮?

1 个答案:

答案 0 :(得分:0)

好的,我解决了这个问题。如果我想在Drupal 8中为CKeditor创建一个插件,我需要扩展CKEditorPluginBase而不是PluginBase类。它们扩展了PluginBase类中的DrupalImageCaption(我用作基础),但这在我的情况下不起作用。