Не удалось сохранить настройки категорий, внесенные плагинами

Продолжаем обсуждение из Плагин кастомного мастера :mage::

У меня та же проблема, и она затрагивает больше плагинов, например Locations и Private Topics. Сообщение «У вас есть несохранённые изменения» с опцией сохранения просто не появляется. Даже при изменении чего-либо другого настройки не сохраняются.

Возможно, это стоит перенести в Development, так как официальные плагины, похоже, не страдают от этого, но с другой стороны, проблема возникла после обновления Discourse. Это также затрагивает два официальных плагина (calendar и restricted replies).

5 лайков

Хм, да, это именно проблема FormKit, когда включена настройка enable_simplified_category_creation. Плагинам потребуется мигрировать на использование FormKit и новой структуры данных.

Рабочий пример этого реализован в одном из наших основных плагинов, миграция которого описана здесь:

Вы можете увидеть, как структура формы ветвится с помощью {{#if this.siteSettings.enable_simplified_category_creation}} и как форма построена с использованием FormKit и данных из @outletArgs.form. Старая структура формы остаётся после {{else}} для поддержки устаревших версий.

2 лайка

Спасибо за это объяснение, Крис.

Обычно я довольно спокоен, когда нужно обновлять плагины из-за изменений в ядре, и доволен тем, как разработчики получают инструкции, но, на мой взгляд, команда Discourse действительно подвела в этом случае.

  • Не было никакого объявления (по крайней мере, я не могу его найти, и @moin ещё не указал на это мне :wink: )
  • Не было предпринято никакой попытки смягчить ситуацию с помощью универсального кода в ядре
  • Даже нет предупреждения в консоли разработчика браузера

Просто всё перестало работать.

Быстрый обзор, вероятно, даже не полный, показывает, что это сломало ХОТЯ БЫ следующие плагины:

  • Discourse
    • calendar :white_check_mark: ← официальный плагин Discourse
    • restricted replies :white_check_mark: ← официальный плагин Discourse
  • (участники) Pavilion
    • category lockdown
    • custom wizard
    • locations
    • chatbot
  • Communiteq
    • private replies
    • private topics
    • category restrictor
    • always anonymous
    • как минимум 10 приватных плагинов
5 лайков

Верно! Мы должны были предупредить об этом изменении по мере его продвижения через наш раздел «Предстоящие изменения» — для нас это новый процесс, и мы всё исправим. На данный момент параметр enabled_simplified_category_creation можно отключить в разделе /admin/config/upcoming-changes, чтобы восстановить весь существующий функционал плагина.

4 лайка

У нас было и это: Simplified category setup, и грядущее изменение в административном интерфейсе (и, вероятно, также пункт в разделе «Что нового»):

Вы должны были получить уведомления об этом изменении как в момент его появления на вашем сайте, так и при его автоматическом включении, что, скорее всего, произошло только на этой неделе, когда изменение было переведено в статус Stable.

Как сказал Крис, смягчение — это грядущее изменение в ядре, которое даст вам время на миграцию:

Что ещё могло бы помочь вам в этом случае? Мы могли бы добавить дополнительные детали в связанную тему о грядущем изменении, объяснив, что разработчикам нужно сделать для подготовки.

Что касается предупреждений для разработчиков, я могу проконсультироваться с командой dev-xp, чтобы понять, можем ли мы в следующий раз сделать что-то лучше.


Мы исправим это сегодня. Вероятно, у нас не было достаточного покрытия тестами в этом месте, потому что при выполнении DEV: Move enable_simplified_category_creation to stable by martin-brennan · Pull Request #39212 · discourse/discourse · GitHub не упало ни одно из этих плагинов, но другие плагины упали:

2 лайка

Оба изменения уже слиты в основную ветку, с дополнительным покрытием спецификациями, от @awesomerobot:

4 лайка

Да, я получил их 3 февраля.

Но на тот момент изменение с плавающей кнопкой сохранения ещё не было внедрено (это было в конце февраля, насколько я помню). В этой теме или где-либо ещё не было дополнительного обновления, отражающего эти изменения.

Любое из следующего:

  • своевременное техническое объявление, адресованное разработчикам плагинов
  • временное автоматическое переключение на старую логику (как это было сделано для списка тем: при наличии устаревшего кода плагина система автоматически возвращалась к старому поведению)
  • временный код отката, сохраняющий устаревшую функциональность (обнаружение полей ввода вне форм и включение их в настройки, которые нужно сохранить). Это также могло бы избавить вас от необходимости добавлять все эти ветви {{#if this.siteSettings.enable_simplified_category_creation}}.
  • предупреждения в консоли разработчика браузера при обнаружении устаревшего кода
  • статическое сканирование известных плагинов, как я сделал выше (у меня ушло 10 минут, и я даже нашёл некоторые официальные плагины, которые были упущены :wink: )

Это было бы очень ценно!

4 лайка