Abrindo uma janela de resposta via URL

Hi All,

I know that we can create a new topic via url with special param.
But I want my users to click a link to reply a specific topic. Is there a way to add special params in the url query to auto open reply window for my users? If not, is there a way I can do this?

5 curtidas

Yes, @techapj added this a while ago, details are here:

1 curtida

Hi Jeff,

Thank you for your reply, but what I want is that I want my users to reply
a topic which has already been created by others.
eg. I have a topic A in my forum, and I want every user click this link to
reply under topic A, not to create another topic.

What I want is when I open this link, the reply window popup, I want this
action equals to click the “reply” button under a topic.

1 curtida

It has been a while and I haven’t found a way to do it.
I just want to be able to create a link that when clicked opens a specific topic with the reply box activated and with the focus on it.

Something like:
https://meta.discourse.org/t/how-to-open-reply-window-via-url/#reply

Anyone knows how can it be achieved?
Thanks,

2 curtidas

What I posted above works, but remember you don’t need to be on a specific topic to reply to it.

If your requirement is “must navigate to topic page, and then open the composer to reply”, then we don’t have that… but again it’s not required, you can reply to any topic from any other topic (or any location in the Discourse app, in fact) in the composer.

That post only mentions new-topic, where is the handy url to post a reply?

I believe there is one, cc @techAPJ

I’m aiming to use that link outside of Discourse. For example, putting a link on my blog, and when clicked it opens a new tab and starts a reply on a particular topic of the forum.

Is there a way to do it?

Thanks for your help.

Yes, the answer above works as you describe. Perhaps @techapj can help me explain because I seem to be failing at explaining this at the moment.

2 curtidas

The feature we have right now only supports creating new topic via URL.

What @magoz wants is to have a URL for an existing topic that will open composer and user can start replying on that topic as soon as they visit that URL. This is currently not available and is not on my list right now.

Should we add support for this feature?

8 curtidas

Not sure about it seems very uncommon

3 curtidas

My bad @magoz I was indeed misunderstanding. I could have sworn we had a pre-filled reply URL though.

3 curtidas

Apologies for my late reply.

Opening the composer (in a blank state) from an URL would be useful for those who have external websites working with Discourse and ask their users to reply to a particular Discourse topic.

For instance, I have a private website where I teach online lessons. I ask my students to reply to specific discourse topics to introduce themselves, to post their homework, etc.

It would be nice to be able to add something like ?reply at the end of any topic’s URL, and share that link with them.

For example:

<a href="https://meta.discourse.org/t/how-to-open-reply-window-via-url/44781?reply">link</a>

It would open a new reply to that topic with the composer open.

7 curtidas

I would love to see it, too. Including template-support for answers, so it’s not just for topics :slight_smile:

6 curtidas

Isso Ă© possĂ­vel agora?

Adoraríamos ver essa funcionalidade também :folded_hands: Seria muito trabalho extra torná-la possível, caso ainda não o seja?

Alguns membros da nossa comunidade são líderes de pensamento ou especialistas (SMEs) que realizam sessões ao vivo no YouTube. Isso é aceitável (no máximo) para perguntas e respostas, mas terrível para discussões mais profundas.

Queremos poder direcionar os usuários a postar suas perguntas em um Tópico de Evento existente (onde usamos o plugin de eventos), fazer a janela de resposta aparecer automaticamente e garantir que as pessoas com perguntas estejam postando no tópico do especialista correspondente.

Um dos nossos principais diferenciais para muitas das pessoas com as quais trabalhamos é oferecer um espaço onde elas podem se envolver em discussões mais profundas com seus usuários.

Quando eles fazem uma transmissĂŁo ao vivo no YouTube ou no Facebook, estĂŁo apenas INICIANDO a conversa. O Discourse Ă© a ferramenta perfeita para CONTINUAR a conversa.

Se pudéssemos simplificar o processo fornecendo uma URL direta que as pessoas possam clicar, abrindo automaticamente a caixa de diálogo de resposta e preenchendo-a com um texto padrão, isso seria extremamente útil!!

2 curtidas

Idem. Seria super Ăştil para nossa comunidade.

1 curtida

Eu uso um componente de tema simples para isso na minha instância. Abaixo está uma adaptação da minha – que também aceita #upload (uma nova resposta abrindo a janela de upload no desktop) e #edit (para OPs de wiki), além de #reply.

Precisa de alguns ajustes, como evitar setTimeout e gerenciar corretamente o draftSequence (não acho que topic.draft_sequence esteja correto), e não sei qual seria a melhor prática aqui. Dito isso, está funcionando bem para mim.

Navegar para qualquer tópico como /t/[slug]/[id]#reply abrirá o compositor com uma nova resposta vazia.

Se precisar de algum texto pré-preenchido, é possível definindo o atributo reply no objeto passado para composer.open. Além disso, se já houver um rascunho para esse tópico, ele perguntará se você deseja salvar/descartá-lo antes de criar essa nova resposta – o draftSequence precisa estar correto se o comportamento desejado for retomar esse rascunho.

<script type="text/discourse-plugin" version="0.4">
  if (/.*#reply$/g.test(document.URL)) {
    const { REPLY } = require('discourse/models/composer').default;
    
    const composer = Discourse.__container__.lookup('controller:composer');
    
    setTimeout(function() {
      const topic = Discourse.__container__.lookup("controller:topic").get("model");
      if (topic) {
        composer.open({
            action: REPLY,
            draftKey: topic.draft_key,
            draftSequence: topic.draft_sequence,
            topic,
        });
      }
    }, 0)
  }
</script>

Espero que isso ajude.

13 curtidas

Você alterou / atualizou isso desde então? Seria muito útil - acabei de encontrar um caso de uso para isso na minha instância:

dar às pessoas uma maneira agradável de clicar uma vez para responder a um tópico de banner

1 curtida

A única alteração que me lembro de ter feito foi forçar o fluxo de login se o usuário ainda não estiver logado, algo como:

        if (!Discourse.User.current()) {
            Discourse.__container__.lookup("route:application").send("showLogin");
        }

Eu ainda o uso em minha comunidade para levar os usuários do meu aplicativo React diretamente para alguns desses fluxos no Discourse (responder, editar, fazer upload, etc).

2 curtidas