Estoy intentando guardar campos personalizados para una publicación que necesita revisión. Cuando apruebo la publicación, los campos personalizados no se guardan.
Verifiqué el evento :approved_post y los campos personalizados no se incluyen en el payload.
¿Cómo preservar los campos personalizados para las publicaciones revisables?
Además, utilicé NewPostManager, y en el manejador los campos personalizados están disponibles, pero por supuesto se activa antes de guardar los datos en las publicaciones revisables.
Estoy solucionando un problema con el plugin de eventos en el que los datos de los eventos en post_custom_field no se guardan si la categoría está configurada para requerir aprobación de los temas.
Hice referencia al plugin de polls y allí parece que los campos personalizados se establecen en :approved_post.
Este es el fragmento de código de polls:
NewPostManager.add_handler(1) do |manager|
post = Post.new(raw: manager.args[:raw])
if !DiscoursePoll::PollsValidator.new(post).validate_polls
result = NewPostResult.new(:poll, false)
post.errors.full_messages.each do |message|
result.errors[:base] << message
end
result
else
manager.args["is_poll"] = true
nil
end
end
on(:approved_post) do |queued_post, created_post|
if queued_post.payload["is_poll"]
created_post.validate_polls(true)
end
end
En mi intento, los datos de los campos personalizados están disponibles en NewPostManager, pero la instancia ReviewableQueuedPost en la devolución de llamada de :approved_post (que idealmente debería tener el campo personalizado en su payload) no los tiene.
Probé lo siguiente:
NewPostManager.add_handler do |manager|
if manager.args['event'] && NewPostManager.post_needs_approval?(manager) # esta condición es verdadera
manager.args['is_event'] = true
end
y luego:
on(:approved_post) do |reviewable, post|
p reviewable.payload['is_event'] # los datos no están disponibles aquí
end
Esto es interesante porque tampoco esperaría que las encuestas funcionen aquí. Los argumentos pasados al administrador no se incluyen automáticamente en la carga útil del elemento revisable.
Sospecho que hay un error aquí con las encuestas y los mensajes en cola. Creo que validate_polls nunca se llama después de la aprobación. @Roman, ¿puedes revisarlo?
@Roman, ¿crees que esta característica necesita ser retrotraída?
Creo que debería serlo para que las personas en las ramas tests-passed y release también se beneficien. Creo que algunos, si no la mayoría, de los plugins que utilizan `post_custom_fields’ necesitan manejar este caso límite.