Приоритет/Серьезность: Низкий?
Платформа: Устройства, использующие новый RTE.
Описание: Создание пользовательских типов токенов, которые ранее корректно работали только с движком markdown-it, вызывает ошибки в ProseMirror. Поскольку отсутствует схема ProseMirror для обработки преобразования в DOM, любые пользовательские типы токенов приводят к ошибке. Аналогично возникают проблемы с поведением при переключении между RTE и Markdown с использованием BBCode.
Шаги для воспроизведения:
Сначала RTE:
- Открыть редактор.
- Установить режим RTE.
- Вставить пользовательский BBCode.
a. Например, с Discourse Meta:[wrap=test2 user-id=1]Content[/wrap] - Закрыть сообщение об ошибке и переключаться между режимами RTE и Markdown.
a. BBCode экранируется.
Сначала Markdown:
- Открыть редактор.
- Установить режим Markdown.
- Вставить пользовательский BBCode.
- Переключаться между режимом Markdown и RTE.
a. BBCode не отображается.
- Переключиться обратно, чтобы увидеть исходный код.
Текущее обходное решение:
Использовать только режим Markdown.
Сама по себе ошибка не так уж критична, главная проблема заключается в странном поведении при переключении режимов или при вставке кода.
Идеальное решение заключалось бы в том, чтобы каждый плагин Markdown создавал правильную схему визарда/ProseMirror для его обработки.
Что касается универсального BBCode [wrap], возможно, лучше оставить его в виде обычного текста, так как несколько компонентов могут использовать этот универсальный BBCode в одном экземпляре Discourse. Идеальным решением, вероятно, будет предоставление разработчикам возможности создать собственный визард и сопоставить вывод со своими реализациями, с возвратом к обычному тексту, если совпадений не найдено.
В более общем плане для любых существующих плагинов, которые не были обновлены для использования ProseMirror, хорошим временным решением было бы использование обычного текста по умолчанию (который не экранируется и не скрывается).


