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