Плагин Activity Pub устанавливает значения по умолчанию для этих полей на стороне клиента (здесь).
Все изменения пользовательских полей категории логируются как изменения настроек категории в ядре (здесь).
Пункт «1» (установка значений по умолчанию для пользовательских полей категории на стороне клиента) на данный момент кажется лучшим способом работы с конвейером пользовательских полей категории, так как действие update категории автоматически сохраняет их. Кроме того, важно гарантировать установку значений по умолчанию, если пользовательские поля взаимозависимы (как это происходит в плагине AP).
Обратите внимание, что в настоящее время плагин не может выборочно сериализовать пользовательские поля для отправки на сервер (без изменения исходного кода).
Учитывая вышесказанное, я задаюсь вопросом, имеет ли смысл пункт «2»? Как отмечает Дэвид, при текущей конфигурации конвейера изменение пользовательского поля не обязательно указывает на изменение конфигурации настроек категории (например, переход из состояния nil в значение по умолчанию).
Буду рад узнать мнение других. Возможно, я упускаю более подходящий способ обработки значений по умолчанию для пользовательских полей категории.
@david Просто напоминаю об этом в вашем списке. Как ваше мнение? Если вы считаете, что в ядре могут потребоваться изменения в способе сохранения пользовательских полей категорий, я могу попробовать это реализовать. Или, возможно, я попробую найти новый способ установки значений по умолчанию для пользовательских полей. Или, возможно, пока оставим всё как есть?
Да, это непросто. Я полагаю, что большинство плагинов не сталкиваются с этой проблемой, потому что их «значение по умолчанию» для настройки категории — это null.
У вас есть идея относительно изменения основного API, которое могло бы помочь улучшить ситуацию?
Совершенно не протестировано, но, думаю, мы можем прямо сейчас что-то реализовать, используя поле ввода с необработанным HTML (обратите внимание на строчное input вместо компонента Input с двусторонним связыванием в Ember).
<input
value={{or category.custom_fields.my_field "значение по умолчанию"}}
{{on "change" this.updateMyFieldValue}}
/>
С такой стратегией мы контролируем, как значения считываются и записываются в экземпляр модели. Таким образом, если в интерфейсе значение установлено как «по умолчанию», мы можем записать его как «null» в пользовательских полях:
@action
updateMyFieldValue(event){
let newValue = event.target.value;
if(newValue === "значение по умолчанию"){
newValue = null;
}
this.category.set("custom_fields.my_field", newValue);
}
(а затем вы удалите конфигурацию значения по умолчанию, описанную в пункте (1) оригинального поста)