CKEditor V4 с плагином bb и плагином видео, не может изменить значение - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь создать систему комментариев с ckeditor V4 в сочетании с bb plugin (изменено) и этим video plugin (изменено).

Теперь я могу отправить комментарий в систему, но когда я пытаюсь отредактировать сообщение, он зависает. Пользователь должен щелкнуть сообщение, чтобы сообщение изменилось в CKEditor, запрос ajax запрашивает исходный HTML и передает их в редактор.

Когда я удаляю видеоплагин, он работает , но я не понимаю, почему он не работает с плагином. Может ли кто-нибудь дать мне представление о том, что я сделал не так?

Я не знаю, как плагин взаимодействует с редактором, какая часть кода вам нужна / обрабатывает инициализацию кода? (я не хочу публиковать полный код, потому что многие формы ненавидят это действие)

Спасибо за время, которое вы прочитали.

1 Ответ

0 голосов
/ 21 августа 2020

Глядя на код плагина для видео, мы видим, что он просто вставляет видео через iframe L49 в videodetector-master / dialogs / videoDialog. js:

        var iframe = new CKEDITOR.dom.element('iframe');
        iframe.setAttribute('src', url);
        iframe.setAttribute('frameborder', '0');
        p.append(iframe);

Проблема возникает из-за плагин bbcode, так как он не поддерживает тег iframe, созданный плагином видео, поэтому он дает сбой при попытке перевести видео iframe в тег bbcode.

Проверяя код плагина, мы видим, что легко добавить поддержку тега iframe:

Файл плагина: bbcode / plugin. js Добавьте тег iframe в L29:

var bbcodeMap = { iframe: 'span', b: 'strong', u: 'u', /* rest of tags here */}

Добавьте проверку для специальной обработки (такой же, как тег img) в L164:

if ( part == 'email' || part == 'img' || part == 'iframe' )

Добавьте изменение, необходимое для предварительного просмотра (с bbcode на html) в L618:

} else if ( bbcode == 'iframe' ) {
    element.name = 'iframe';
    element.attributes.src = element.children[ 0 ].value;
    element.children = [];
}

Добавьте изменение, необходимое для вывода (с html на bbcode) в L730:

} else if ( tagName == 'iframe' ) {
    element.isEmpty = 0;
    var src = attributes.src;
    element.children = [ new CKEDITOR.htmlParser.text( src ) ];
}

Вот демонстрационная скрипка: https://jsfiddle.net/s17mjwdz/

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