Topic List Previews (legacy)

Перепека завершена. Какой ужасный результат! :pensive:

Что ж, теперь я понимаю, почему эта опция была отключена.

Мы используем WordPress, и первый пост содержит полный HTML. Discourse без проблем заменяет HTML-теги изображений на markdown, но markdown-изображения не отображаются, если они окружены HTML-тегами (или, точнее говоря, требуется хотя бы одна пустая строка сверху).

У меня две проблемы:

  1. Некоторые изображения не были загружены, скорее всего из-за атрибута srcset (но это не критично). Изображения корректно отображаются в первом посте, но миниатюра не генерируется. Раньше это работало.

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

  2. Как упоминалось выше, некоторые markdown-изображения не отображаются.

    Я пытался найти доступный API плагинов до обработки поста, но ничего не нашел.

    Похоже, единственный способ — добавить новые строки в соответствующие сырые сообщения напрямую в базе данных через консоль Rails и снова выполнить перепеку.

    Сейчас я пытаюсь разобраться (не зная Ruby), опираясь на исходный код Discourse:
    Похоже, это работает для одной темы. Я еще не выполнил это для всех тем. Есть ли более лучший/чистый способ исправить проблему без таких манипуляций?

Post
  .where(post_number: 1)
  .where("raw LIKE '%upload://%'").each do |post|  
     post.raw.gsub!(/(!\[.*upload:\/\/.*\))/, "\n\n\\1") 
     post.save!(validate: false); 
     post.rebake! 
end

Буду благодарен за любую помощь, спасибо!

1 лайк