Попытка добавить плагин в CKEditor - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь добавить плагин для установки URL-адреса по умолчанию при добавлении ссылки.

Я следовал инструкциям здесь: https://apostrophecms.org/docs/tutorials/howtos/ckeditor.html

И я закончил с:

// lib/modules/apostrophe-areas/public/js/user.js
apos.define('apostrophe-areas', {
    construct: function(self, options) {

    var superEnableCkeditor = self.enableCkeditor;

    self.enableCkeditor = function() {
    superEnableCkeditor();

    CKEDITOR.plugins.addExternal('defaulturl', '/modules/my-apostrophe-areas/js/ckeditorPlugins/defaulturl/', 'plugin.js');
  };
 }
});

и это мои апострофные области / public / js / ckeditorPlugins / defaulturl / plugin.js

CKEDITOR.on( 'dialogDefinition', function( ev ) {

    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;

    if ( dialogName == 'link' ) {

        var infoTab = dialogDefinition.getContents( 'info' );
        var urlField = infoTab.get( 'url' );

        urlField[ 'default' ] = 'www.example.com';
    }
});

Однако, это не работает для меня, я попытался сделать то, что предлагается здесь: Конфигурация плагина Ckeditor не работает

Но это не сработало.

Я пытался и работал над тем, чтобы добавить файл plugin.js в конец plugin.js плагина split в папку apostrophe-area, но я думаю, что это неправильный путь

Спасибо!

1 Ответ

0 голосов
/ 04 мая 2018

Я думаю, что вы можете решить проблему двумя способами:

1. Если вы хотите сохранить внешний файл плагина:

Оберните ваш код в соответствии с API, см., Например, https://sdk.ckeditor.com/samples/timestamp.html и плагин, на который он ссылается https://sdk.ckeditor.com/samples/assets/plugins/timestamp/plugin.js для примера. Вам нужно использовать CKEDITOR.plugins.add( 'defaulturl', { init: ... }) в вашем plugin.js. Не уверен, что есть что-то особенное, если вы хотите изменить поведение основного плагина CKEDITOR. Вот почему это будет идти со следующим вариантом ...

2. Если вам не нужны дополнительные plugin.js:

Вы также можете заменить вызов CKEDITOR.plugins.addExternal() содержимым вашего файла plugin.js. Я сделал это, чтобы изменить целевую ссылку по умолчанию на _blank:

// /lib/modules/apostrophe-areas/public/js/user.js
'use strict';

// See https://apostrophecms.org/docs/tutorials/howtos/ckeditor.html and
apos.define('apostrophe-areas', {
  construct: function(self, options) {
    var superEnableCkeditor = self.enableCkeditor;

    self.enableCkeditor = function enableCkeditor() {
      superEnableCkeditor();

      // https://docs.ckeditor.com/ckeditor4/latest/guide/dev_howtos_dialog_windows.html
      CKEDITOR.on('dialogDefinition', function redefineDialog(ev) {
        var dialogName = ev.data.name;
        var dialogDefinition = ev.data.definition;

        if (dialogName === 'link') {
          var targetTab = dialogDefinition.getContents('target');
          var targetField = targetTab.get('linkTargetType');

          targetField.default = '_blank';
        }
      });
    };
  }
});

Удачи!

...