Adicionar botão adicional ao menu de postagens

Oi.
Estou bastante novo na criação de plugins para o Discourse, mas gostaria de saber se alguém poderia me ajudar a explicar como adicionar um botão adicional ao menu de posts. Pelo que consigo ver, isso deve ser tratado por meio de um plugin personalizado.
Por exemplo, um botão “Me fez rir”, que se comportaria de forma semelhante ao “Curtir” — registrando quantas pessoas clicaram nele em um post ou comentário.
Estou ciente do plugin Retort, mas ele não resolverá meu problema, pois estou mais interessado em entender como adicionar esse botão.

Oi,
este é um caso complicado. Pela minha experiência, isso deve ser feito por meio de um plugin. Você precisará adicionar um botão adicional ao widget post-menu e também criar uma migração no banco de dados para armazenar suas reações de “me fez rir”.

Você pode usar o plugin Discourse Solved como inspiração:

Esse plugin também adiciona um botão extra ao menu do post e inclui funcionalidades que são armazenadas no banco de dados.

Certifique-se de ler o guia para desenvolvedores sobre como criar plugins:

Boa sorte.

3 curtidas

Muito obrigado, @zcuric. Tentei entender como funciona este plugin, bem como o Retort, mas ainda não tive sucesso. No entanto, continuarei nessa direção.
Você poderia, por favor, dar uma dica sobre como o Discourse gerencia a renderização do botão Curtir? Especificamente, como ele esconde o botão Curtir em seus próprios posts? Assim, poderei fazer o mesmo para meu botão personalizado.

@marek De nada. Você já deve ter lido um pouco do código, começando por aqui:

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

Em relação ao backend, trata-se de uma requisição de API em 99% dos casos. Não me aprofundei muito nisso. Provavelmente é um endpoint. Minha suposição é que, ao criar um plugin, você terá que definir rotas de REST API com endpoints GET, POST e DELETE que preencherão os dados do seu campo no banco de dados, que você adicionou por meio de uma migração de banco de dados, e isso será feito com Rails. Pelo menos é assim que eu abordaria a situação.

3 curtidas