CKEditor - разрешить только блочные элементы как прямые потомки корневого элемента
Я хотел бы добиться, чтобы встроенный экземпляр редактора оставался редактируемым, но не допускал вставки произвольного текста на верхнем уровне, только в редактируемые области виджетов, которые были вставлены с помощью перетаскивания. Цель должна состоять в том, чтобы пользователь мог составить документ из перетаскиваемых фрагментов.
Образцы SimpleBox и Drag and Drop Integration дают представление о том, чего я хочу достичь, и являются основой для того, что я пробовал до сих пор. Представьте себе второй пример, но вставленные "h-карты" являются DIV, а не SPAN, так что они могут быть вставлены только как "абзацы" (блоки) и имеют вложенные редактируемые области, как в первом примере.
Это все связано с наличием нескольких экземпляров редактора, по одному для каждого отброшенного контента (с использованием простого javascript). Этот подход работает для меня, но тогда удаление и перетаскивание фрагментов не является частью истории отмены / повторения CKEditor.
Я попробовал следующие подходы, ни один из которых не увенчался успехом.
- Изменение dtd, чтобы разрешить только "DIV" под "ARTICLE". Последний будет корневым элементом, на который был встроен CKEditor.
- Написание расширенного фильтра содержимого
- Настройка редактора только для чтения, но с вложенными "contenteditable" узлами
Короче говоря, первые два подхода кажутся неудачными, поскольку они фильтруют только теги, не запрещая вставку встроенного текста. Кроме того, первый подход не позволил бы ограничить содержимое определенным видом узла (фрагменты, которые я хотел бы вставить). Кроме того, эти подходы не дадут достаточной обратной связи пользовательского интерфейса, так что контент на самом деле не редактируется, просто редактируется с помощью dragndrop.
Третий подход просто не дал желаемого эффекта, так как документ "только для чтения", по-видимому, остается верным для вложенных элементов.
Итак, возможно ли отфильтровать / ограничить редактирование текста в редактируемых областях виджетов, но все же разрешить вставку элементов на корневом уровне? И упростить отслеживание отмены / повтора CKEditor ов и возможность перемещения виджетов?
Этот вопрос является в основном дубликатом CKEditor 4.6. Запретить "Корневой" контент в редакторе, но разрешить виджеты и т. Д., Без ответов.