Сделать расширенный редактор основным и запретить компактный

Здравствуйте!

Мы создали плагин, переопределяющий плагинный выход post-event-builder: для каждого события, создаваемого на нашем инстансе, необходимо заполнить пользовательские поля, а наша форма дополняет предложенные значения данными из внешнего источника.

Мы используем только версии Discourse с поддержкой ESR, поэтому всё работало без проблем в 2026.1.x. Сейчас я занимаюсь обновлением до 2026.7.x и знакомлюсь с новой формой и её расширенной версией.

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

Сначала я думал о том, чтобы добавить один параметр сайта для использования расширенной формы по умолчанию (и отключить возможность переключения на компактную, так как всё и так находится в расширенной форме), либо о двух параметрах (использовать расширенную форму по умолчанию и запретить переключение форм). Плагинный выход для замены компактной формы тоже мог бы подойти, если бы он включал переключатель на расширенную форму, чтобы мы могли от него избавиться.

Новое поведение действительно блокирует нас в процессе обновления, и мы не можем оставаться на старой, не поддерживаемой версии 2026.1.x.

Какой подход был бы лучшим? Чем я могу помочь?

1 лайк

Привет снова!

Если я создам PR с новым плагинным выходом, есть ли шанс, что он будет принят и обратным портом добавлен в следующую версию 2026.7.x? Или нам нужно найти другой способ исправить эту блокирующую проблему?

1 лайк

Привет, можешь, пожалуйста, выложить ссылку на PR здесь?

1 лайк

Хорошо, я сделаю это, когда будет готово; мне стоит заняться этим сегодня.

2 лайка

Ой, прости, я не заметил «if» в твоём предыдущем сообщении, ха-ха! Моя ошибка.

Я добавил новый выход плагина (plugin outlet) для переопределения формы «compact» по умолчанию, но я не очень доволен этим изменением.

Кнопку для доступа к форме «advanced» нельзя переопределить с помощью выхода плагина, а «редактируемое предпросмотр» в редакторе по-прежнему использует «режим compact», что может не сочетаться с переопределенной формой (как минимум, в нашем случае).

Я начинаю думать, что более элегантным решением было бы добавить опцию в админке плагина для выбора поведения формы. Я вижу как минимум 2 варианта:

  • default_editor: выбрать «compact» (по умолчанию) или «advanced»
  • allow_editor_switch: скрывать кнопки переключения редактора

Я все еще изучаю последствия, но буду признателен за отзывы по общей идее :slight_smile:

2 лайка

То есть ты говоришь о том, чтобы сделать Advanced mode всегда открытым при создании событий?

И не разрешать пользователям выходить из него?

Если это так, то в компоненте PostEventBuilder я бы создал value transformer для initialScreen, геттер, который читает this.args.model.initialScreen, а затем переопределяет его с помощью value transformer. Таким образом, ты всегда будешь устанавливать значение initialScreen как advanced через value transformer.

Буду рад проверить PR в core от тебя по value transformer, полагаю, у тебя уже есть пользовательская тема, к которой можно это прицепить.

2 лайка

Я не могу прикрепить скриншоты, поэтому постараюсь описать текущее поведение и то, чего я хочу достичь :slight_smile:

При использовании Markdown-редактора:

  • если предпросмотр включен, форма события отображается в окне предпросмотра (без обертки post-event-builder) с кнопкой в правом верхнем углу предпросмотра для переключения в расширенный режим;
  • если предпросмотр отключен, форма события открывается во всплывающем окне (модальном окне), обернутая в post-event-builder (тот вариант использования, который вы упомянули), с кнопкой в нижней части модального окна для переключения в расширенный режим.

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

Мне нужно, чтобы использовался только один редактор — наш.

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

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

Возможно, последний подход с добавлением новых параметров в админ-панель избыточен, и я просто не смог найти тот самый™ компонент, в который нужно добавить outlet для плагина, чтобы всё изменилось…

1 лайк

У вас уровень доверия, который должен позволять это делать — что происходит, когда вы пытаетесь загрузить файл?

Вы правы, это не было проблемой с правами. У меня есть расширение, блокирующее рефереры, и оно плохо работает с AWS :upside_down_face:

Редактор Markdown + предпросмотр: форма события встроена в предпросмотр (значок шестеренки открывает модальное окно с «расширенным» редактором событий)

Редактор Markdown, без предпросмотра: форма события находится в модальном окне, кнопка переключения редакторов расположена в нижней части модального окна

Редактор с форматированием текста (Rich text): форма события встроена в редактор (значок шестеренки открывает модальное окно с «расширенным» редактором событий)

1 лайк