RTE: очистка кода импортируемого документа

В данный момент я перемещаю контент из Dokuwiki (https://www.dokuwiki.org/dokuwiki) в Discourse. Синтаксис Dokuwiki не является чистым Markdown, поэтому требуется ручное редактирование. Обычно я использую старый редактор, так как там вижу все символы. Однако в старом редакторе наблюдается странное «подпрыгивание»: когда вы выделяете блок текста и пытаетесь его отформатировать, курсор подпрыгивает вверх-вниз. Переформатирование длинных текстов таким образом практически невозможно, так как приходится постоянно снова позиционировать окно редактирования. Это сложно описать словами, я мог бы показать это только с помощью записи экрана… Этот эффект уже описывался ранее в теме Курсор прыгает в поле ввода композера/редактора.

В редакторе RTE этого эффекта нет. Но мне не хватает опции для очистки мусорного кода, импортированного из других систем…

1 лайк

Можешь показать, как выглядит этот мусор кода?

1 лайк

Сколько? Десятки, сотни, тысячи постов?

Если их больше нескольких, скорее всего, стоит использовать скрипт импорта. Если их не так много, всё равно имеет смысл написать код для исправления Markdown, чем править вручную. (Ещё более безумное решение — поручить обработку dokuwiki-редакций плагином).

Их не так уж много, но, возможно, достаточно, чтобы задуматься о решении на основе скриптов/программном подходе. Сложность в том, что код представляет собой синтаксис DokuWiki (https://www.dokuwiki.org/wiki:syntax) плюс улучшенный код интерфейса из шаблона Bootstrap 3 (https://getbootstrap.com). Выглядит это неплохо, но при настройке я не планировал миграцию контента. Основная проблема не в синтаксисе DokuWiki, а в Bootstrap-разметке

… и прочем. Пример кода:

<div class="level1">&nbsp;</div> <h2 class="page-header pb-3 mb-4 mt-5">Определение места на диске</h2> <div class="level2"> <p>Фильтрация по ext4: что доступно?</p> <pre class="code"> root@tokoeka ~ # df -h -t ext4 --total Filesystem Size Used Avail Use% Mounted on /dev/mapper/pve-root 196G 39G 148G 21% / /dev/md0 486M 400M 57M 88% /boot /dev/mapper/pve-data 3.0T 560G 2.3T 20% /mnt/data /dev/mapper/pve-backup 414G 40K 393G 1% /mnt/backup total 3.6T 598G 2.8T 18% - </pre> <p>&nbsp;</p> <p>Фильтрация по ext4: что используется?</p> <pre class="code"> root@tokoeka ~ # df -h -t ext4 --output=used Used 39G 400M 560G 40K 598G </pre> <p>&nbsp;</p> </div>

Да, это полный хаос. Можно немного поработать с Nokogiri и привести это в формат Markdown.

Если вы вставите содержимое буфера обмена с точным содержимым text/html в режиме богатого редактора, вы получите контент, который преобразуется в этот Markdown:

## Определение места на диске

Фильтрация по ext4: что доступно?

```
 root@tokoeka ~ # df -h -t ext4 --total Filesystem Size Used Avail Use% Mounted on /dev/mapper/pve-root 196G 39G 148G 21% / /dev/md0 486M 400M 57M 88% /boot /dev/mapper/pve-data 3.0T 560G 2.3T 20% /mnt/data /dev/mapper/pve-backup 414G 40K 393G 1% /mnt/backup total 3.6T 598G 2.8T 18% - 
```

 

Фильтрация по ext4: что используется?

```
 root@tokoeka ~ # df -h -t ext4 --output=used Used 39G 400M 560G 40K 598G 
```

Это преобразование с потерями в отношении элементов, которые нам не важны (div, class и т. д.), но оно понимает hN, pre или любые другие элементы, определенные в нашей схеме ProseMirror, учитывая наши различные расширения редактора, регистрирующие определения parseDOM, используемые парсером ProseMirror, включая те, что предоставлены компонентами тем или плагинами.

Что касается исходного запроса:

Я думаю, что когда богатый редактор загружает документ, это уже не тот же самый HTML, верно?

Поскольку сообщение raw, содержащее блоки HTML, должно отображаться как узел редактора кода «пропускного типа»:

Затем его можно редактировать так же, как в режиме Markdown.

1 лайк