Добавление подписи к элементу таблицы (CKEditor5) - PullRequest
0 голосов
/ 11 июля 2019

В CKEditor5 есть плагин ImageCaption, который добавляет элемент Caption к элементу Image. Я хотел бы добавить точно такую ​​же функциональность к элементу Table.

Прежде всего, я знаю, что команда CKEditor5 включила этот в список будущей функции плагина Table , однако я не могу ждать этого, поскольку моя организация требует этого для предстоящего приложения с настраиваемая схема.

Просматривая код плагина ImageCaptionEditing , я могу заставить работать следующее:

  • Элемент заголовка создается внутри элемента таблицы модели данных
  • Элемент figcaption появляется при выборе виджета таблицы и может быть введен в
  • Если текст не добавляется в элемент figcaption при размытии таблицы, элемент figcaption сворачивается

Сначала расширим схему:

schema.extend('caption', {
      allowIn: ['table']
    });

Затем мы реализуем большое количество downcasters и upcasters (это в основном строка для строчной копии ImageCaptionEditing Plugin , чтобы получить базовую функциональность. Единственное, что нужно изменить, это где-нибудь, на который ссылается элемент "" изображение "мы меняем это на" стол ".

После всего этого мы получаем полуфункциональный элемент заголовка, но с множеством ошибок и существенных недостатков:

  • Заголовок появляется только тогда, когда выбран виджет всей таблицы
  • При вводе заголовка появляется ошибка tableCell.getChild is not a function
  • Вставка строки / столбца или выполнение большинства команд таблицы приводит к тому, что элементы tableCell появляются внутри элемента заголовка

Я полагаю, что некоторые из ошибок связаны с тем, что TableWalker не проверяет, является ли элемент, по которому он идет, таблицейCell / row / etc. Я также думаю, что некоторые downcastters в плагине Table не проверяют, является ли элемент для преобразования tableCell / row / etc. К сожалению, я не думаю, что смогу многое сделать с TableWalker, не переписав весь плагин Table, что мне бы очень не хотелось.

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

...