Añadir botón adicional al menú de publicaciones

Hola.
Soy bastante nuevo en la creación de complementos para Discourse, pero me preguntaba si alguien podría ayudarme a explicar cómo agregar un botón adicional al menú de publicaciones. Por lo que puedo ver, esto debería manejarse mediante un complemento personalizado.
Por ejemplo, un botón “Me hizo reír”, que se comportara de manera similar a “Me gusta”, registrando cuántas personas hicieron clic en él en una publicación o comentario.
Conozco el complemento Retort, pero no resolverá mi problema, ya que estoy más interesado en entender cómo agregar este botón.

Hola,
esto es un poco complicado. Por mi experiencia, esto debería implementarse mediante un plugin. Tendrás que añadir un botón adicional al widget post-menu y crear una migración para la base de datos que guarde tus reacciones de “me hizo reír”.

Puedes usar el plugin Discourse Solved como inspiración:

Este plugin también añade un botón adicional al menú de publicaciones y agrega funcionalidad que se almacena en la base de datos.

Asegúrate de leer la guía para desarrolladores sobre cómo crear plugins:

Buena suerte.

3 Me gusta

Muchas gracias, @zcuric. He intentado comprender este plugin y también Retort, pero hasta ahora sin éxito, aunque seguiré por esa vía.
¿Podrías indicarme, por favor, cómo gestiona Discourse la visualización del botón de «Me gusta»? Específicamente, ¿cómo oculta el botón de «Me gusta» en tus propias publicaciones? Así podría hacer lo mismo para mi botón personalizado.

@marek De nada. Ya has leído un poco el código, comenzando desde aquí:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/widgets/post-menu.js#L122

En cuanto al backend, es 99% una solicitud de API. No me adentré mucho en ello. Probablemente sea un endpoint. Mi suposición es que, al crear un plugin, tendrás que definir rutas de API REST con endpoints GET, POST y DELETE que llenarán los datos de tu campo en la base de datos, el cual agregaste mediante una migración de base de datos, y todo esto se hará con Rails. Al menos, así es como yo abordaría la situación.

3 Me gusta