Olá. Usando o código que @angus apresentou aqui e seguindo o repositório no GitHub, consegui fazer o campo personalizado de tópico funcionar bem—exceto para permitir sua edição na área de “cabeçalho” do editor (onde normalmente é possível editar a categoria, por exemplo; ou seja, no conector edit-topic).
Segui o código para isso no repositório, incluindo o código em plugin.rb e em outros locais. Por exemplo, adicionei o input no arquivo connectors/edit-topic/edit-topic-custom-field-container.hbs (como nesta referência):
{{#if isString}}
{{input
type="text"
value=(readonly fieldValue)
class="topic-custom-field-input large"
input=(action "onChangeField" value="target.value")
placeholder=(i18n 'topic_custom_field.placeholder' field=fieldName)
}}
{{/if}}
E também o código no topic-custom-field-initializer, assim:
api.registerConnectorClass('edit-topic', 'edit-topic-custom-field-container', {
setupComponent(attrs, component) {
const model = attrs.model;
let props = {
fieldName: fieldName,
fieldValue: model.get(fieldName)
}
component.setProperties(Object.assign(props, fieldInputTypes(fieldType)));
},
actions: {
onChangeField(fieldValue) {
this.set(`buffered.${fieldName}`, fieldValue);
}
}
});
...
api.serializeOnCreate(fieldName);
api.serializeToDraft(fieldName);
api.serializeToTopic(fieldName, `topic.${fieldName}`);
No entanto: embora o restante do código do repositório funcione para mim (como adicionar o valor do campo personalizado no valor do editor), e eu não receba erros, não consigo salvar o valor que insiro no input do conector edit-topic. Se eu inserir um valor ali, ele desaparece após o salvamento da edição.
É possível que algo mais seja necessário para salvar o valor no conector edit-topic?