Componentes Personalizados -- adicionar botão ou texto em qualquer saída de plugin

| | | |\n|— | — | —|\n|:information_source: | Resumo | Adicionar botão ou texto em qualquer lugar|\n|:hammer_and_wrench: | Repositório | https://github.com/literatecomputing/discourse-custom-components|\n|:question: | Guia de Instalação | Como instalar um tema ou componente de tema|\n|:open_book: | Novo em Temas do Discourse? | Guia para iniciantes no uso de Temas do Discourse|\n\n\u003c!-- Preencha "repoName" e "repoURL" para o botão de instalação automática –\u003e\n\n[wrap=theme-install-button repoName="Custom Components" repoUrl="https://github.com/literatecomputing/discourse-custom-components\"]\nInstale este componente de tema\n[/wrap]\n\n\u003c!-- Descreva este tema/componente em uma ou duas frases –\u003e\n\nAdicione um botão de link ou texto arbitrário em qualquer ponto de saída de plugin. (Ignore as marcas d’água nas imagens - tirei essas capturas de tela em um site de staging/teste.)\n\n\u003c!-- Adicione capturas de tela (se aplicável) –\u003e\n\n

\n\n\n\n\n\n\u003c!-- Adicione mais detalhes e explique as configurações (se aplicável) –\u003e\n\nComecei a desenvolver este plugin para alguém que queria exibir um botão "clique neste botão para assinar para que você possa 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ê tem que assinar", mesmo que 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 o botão deveria ser exibido.\n\n### Para quem é isso?\n\nSe você quiser colocar um botão com um link dentro dele, ou algum texto arbitrário que é exibido ou oculto para certos grupos, isso permitirá que você os insira em qualquer ponto de saída de plugin. Você quer adicionar um link de botão "Você deveria assinar" entre cada mensagem, exceto para aqueles que não são membros? Isso fará isso. Você quer colocar algum HTML arbitrário em um ponto de saída de plugin, apenas para ver como ficará? Isso fará isso.\n\n### Como isso ajuda os desenvolvedores\n\nEste tema tem alguns exemplos simples de como:\n- usar os https://meta.discourse.org/t/objects-type-for-theme-setting/305009\n- usar api.renderInOutlet (conforme descrito aqui para colocar um componente Glimmer em um ponto de saída controlado por uma configuração, em vez de criar um arquivo no diretório connectors\n- Escrever um componente Glimmer simples que acessa currentUser\n- Envolver um componente em outro (inline) template para poder passar dados para ele\n- Exibir HTML arbitrário de uma configuração de tema livre das restrições do Markdown - Claro, talvez \n[quote="Discourse, post:1, topic:82557"]\nVocê pode usar o helper html-safe do Ember aqui e ele renderizará o HTML em vez do texto.\n[/quote]\n\nmas se você está tentando fazer isso dentro de um \u003ctemplate\u003e 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