Apertura di una finestra di risposta tramite URL

Nella mia istanza utilizzo per questo un componente tema semplice. Di seguito trovi una versione adattata dalla mia, che accetta anche #upload (una nuova risposta che apre la finestra di caricamento su desktop) e #edit (per gli OP delle wiki), oltre a #reply.

Ha bisogno di qualche ritocco, come evitare l’uso di setTimeout e gestire correttamente draftSequence (non credo che topic.draft_sequence sia corretto), e non so quale sia la migliore pratica in questo caso. Detto questo, per me funziona bene.

Navigando su qualsiasi argomento come /t/[slug]/[id]#reply si aprirà il compositore con una nuova risposta vuota.

Se hai bisogno di un testo precompilato, è possibile impostare l’attributo reply sull’oggetto passato a composer.open. Inoltre, se esiste già una bozza per quell’argomento, verrà chiesto se vuoi salvarla o scartarla prima di creare questa nuova risposta: draftSequence deve essere corretto se il comportamento desiderato è riprendere quella bozza.

<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>

Spero che questo possa esserti utile.

13 Mi Piace