Добавить класс к определенному родительскому элементу в CKEditor - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь создать небольшой плагин для добавления класса к определенному тегу в CKEditor.Вот что он должен делать: если пользователь создает список, где бы он ни находился в этом списке, если он нажимает кнопку, он добавляет класс к родительскому элементу ul.

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

editor = CKEDITOR.replace('editor');

editor.addCommand("testCommand", {
    exec: function(e) {
        parents = e.elementPath();
        parents = parents.elements;

        for (i = 0; i < parents.length; i++) {
            console.log('Check');

            if(parents[i].getName() ==  'ul') {
                console.log('List !');

                return true;
            }
        }
    }
});

editor.ui.addButton('testButton', {
    label: "Test button",
    command: 'testCommand',
    toolbar: 'insert',
    icon: 'Link'
});

Не могли бы вы помочь?

1 Ответ

0 голосов
/ 17 октября 2018

Вот вам JSFiddle .

CKEDITOR.addCss('ul.myclass { font-weight: bold; }'); // <-- CSS class declaration

const editor = CKEDITOR.replace('editor', {
    toolbar: [
        { name: 'paragraph', items: [ 'Source', 'BulletedList', 'testButton' ] }
    ],
    extraAllowedContent: 'ul(myclass)' // <-- needed for Advanced Content Filtering (ACF)
});

editor.addCommand("testCommand", {
    exec: function(e) {
        let parents = e.elementPath();
        parents = parents.elements;

        for (let i = 0; i < parents.length; i++) {
          console.log('Check');

          if (parents[i].getName() ==  'ul') {
            console.log('Liste !');
            parents[i].addClass('myclass'); // <-- adds the CSS class
            break;
          }
       }
    }
});

editor.ui.addButton('testButton', {
    label: "Test button",
    command: 'testCommand',
    toolbar: 'insert',
    icon: 'Link'
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...