Componentes Customizados -- adicione botão ou texto em qualquer *outlet* de plugin

:information_source: Resumo Adiciona botão ou texto em qualquer lugar
:hammer_and_wrench: Repositório https://github.com/literatecomputing/discourse-custom-components
:question: Guia de Instalação Como instalar um tema ou componente de tema
:open_book: Novo em Temas do Discourse? Guia para iniciantes sobre como usar Temas do Discourse

Instalar este componente de tema

Adiciona um botão de link ou texto arbitrário em qualquer plugin outlet. (Ignore as marcas d’água nas imagens–tirei essas capturas de tela em um site de teste/staging.)

Para ver onde estão os plugin outlets, use Introducing Discourse developer toolbar para encontrá-los. Se você não sabe o que é um plugin outlet, pode dar uma olhada em Using Plugin Outlet Connectors from a Theme or Plugin, mas este componente permite que você, com algumas restrições, insira texto em qualquer plugin outlet sem programar ou realmente entender o que é um plugin outlet.

Comecei a desenvolver este plugin para alguém que queria exibir um botão “clique neste botão para se inscrever para poder enviar PMs” nos perfis de usuário e cartões de usuário. Eles queriam que o botão fosse exibido se o usuário não pudesse enviar PMs. Como nem sempre sou tão inteligente quanto penso, escrevi o componente usando grupos para determinar se o botão era exibido. Um problema com essa abordagem era que os membros da equipe não estavam no grupo de assinantes, então eles recebiam o botão “você precisa se inscrever”, embora pudessem enviar PMs. Além disso, o grupo estava oculto, então era impossível usá-lo em um componente de tema de qualquer maneira. Eu reescrevi esse componente de tema para usar currentUser.can_send_private_messages para determinar se deveria exibir o botão.

Para quem é isso?

Se você deseja colocar um botão com um link nele, ou algum texto arbitrário que é exibido ou oculto para certos grupos, isso permitirá que você os insira em qualquer plugin outlet. Você quer adicionar um botão de link “Você precisa se inscrever” entre cada mensagem, exceto para aqueles que não são membros? Isso fará isso. Você quer inserir algum HTML arbitrário em um plugin outlet, apenas para ver como ficaria? Isso fará isso.

Como ajuda os desenvolvedores

Este tema tem alguns exemplos simples de como:

mas se você está tentando fazer isso dentro de um <template> dentro de um arquivo .gjs, funciona um pouco diferente (como {{htmlSafe component.text}})

15 curtidas

O espaço faz o texto não ficar em negrito.


Ótimo componente!

5 curtidas

Seria possível adicionar placeholders aos URLs dos botões, por exemplo, para que o URL contenha o ID do tópico em que o usuário se encontra?

Não tenho muita certeza. Se você tiver um orçamento, darei uma olhada.

O que seu botão faria se tivesse o ID do tópico?

Se você descobrir e quiser fazer um PR, provavelmente o aceitarei.

Tenho quase certeza de que a resposta é não, mas que você poderia usar a solução alternativa descrita aqui

2 curtidas

Olá @pfaffman

Queremos adicionar um conjunto de botões como este a cada tópico para membros do nosso grupo de usuários da conta empresarial.
O botão acionaria a criação de uma nova MP que incluiria o URL atual em que o usuário está.

Dessa forma, nossos clientes empresariais podem nos enviar solicitações para fixar, destacar ou “patrocinar” tópicos específicos.

1 curtida

Como você sabe, você pode criar um URL que abrirá um novo compositor de tópicos. Você poderia fazer com que esse seja o link adicionado pelo componente de tema.

Não acho que seja possível fazer isso sem adicionar código ao componente de tema (mas talvez seja?). Talvez alguém tenha uma ideia sobre isso e ofereça essa solução aqui (ou no outro tópico). Se não, você pode entrar em contato comigo ou postar em Marketplace com a descrição do que você precisa e um orçamento.

3 curtidas