Em primeiro lugar, peço desculpas pelo meu inglês precário.
Quero adicionar um botão “Mostrar mais…”.
A postagem na imagem abaixo consiste em 10 linhas de texto, mas apenas 5 linhas são exibidas.
O usuário pode ver o texto completo clicando em Mostrar mais.
Não sei como ramificar usando api.addPostMenuButton, então atualmente até mesmo uma pequena postagem com apenas uma linha como a seguinte recebe este botão.
Isso não é muito desejável para mim.
Estou pensando que o ramal condicional deve ser capaz de obter a altura do COZIDO ou o número de linhas (ou caracteres).
Consultei a documentação, mas não encontrei nenhuma opção para api.addPostMenuButton.
Qualquer ajuda seria muito apreciada.
O método api.addPostMenuButton se preocupa apenas com o valor que você retorna. Esse valor precisa ser um objeto. Qualquer coisa que você faça antes desse return não importa. O botão será renderizado para cada postagem, e o método lhe dá o objeto post que você pode usar para o seu trabalho.
Por exemplo, digamos que eu queira que o botão apareça apenas em postagens com mais de 300 palavras. Posso fazer algo assim.
common > header
<script type="text/discourse-plugin" version="0.8">
const MIN_WORD_COUNT = 300;
api.addPostMenuButton("myButton", (post) => {
// você pode registrar as propriedades do post para ver com o que você tem para trabalhar
// console.log(post);
// exemplo
const roughWordCount = post.cooked.match(/\S+/g).length;
if (roughWordCount < MIN_WORD_COUNT) {
// o botão não será renderizado
return;
}
// o botão será renderizado, crie o objeto de retorno
const result = {
action: SOME_ACTION,
icon: ICON_NAME,
title: TITLE_TRANSLATION_KEY,
className: CLASSNAMES,
position: "first", // pode ser `first`, `last` ou `second-last-hidden`
};
// adicione um rótulo se estiver no desktop
if (!post.mobileView) {
result.label = LABLE_TRANSLATION_KEY;
}
// retorne o objeto
return result;
});
</script>
Altere as coisas em maiúsculas para dados reais e experimente em uma postagem com mais de 300 palavras. Você verá que ele é renderizado lá.