Limitare le risposte ai livelli di fiducia

Ciao,

Mi stavo chiedendo se ci fosse un modo per limitare le risposte/i commenti a determinati livelli di fiducia o a campi personalizzati dell’utente? I nostri utenti sono migrati da WordPress con diversi livelli di appartenenza. Non vogliamo dare a tutti gli utenti la possibilità di visualizzare le risposte a meno che non abbiano raggiunto un certo livello di appartenenza.

[quote=“j3ang, post:1, topic:223032”]per visualizzare le risposte a meno che non abbiano raggiunto un certo livello di appartenenza.
[/quote]

Per visualizzare o per rispondere? Sono cose piuttosto diverse.

@HAWK , ah scusa, per rispondere. possono vedere l’argomento e le risposte, ma non dovrebbero essere in grado di rispondere a meno che non abbiano un certo livello.

Sì, puoi impostarlo a livello di categoria. Aggiungi ogni gruppo di livelli di fiducia e concedi le autorizzazioni appropriate.

E se volessimo effettivamente nascondere le risposte e non solo limitare il permesso di rispondere? La colonna “vedi” è disattivata.

Mi dispiace, non puoi farlo.

Sarebbe possibile con un plugin personalizzato? Sospetto che non dovrebbe essere difficile leggere l’utente corrente e nascondere l’intera sezione delle risposte tramite JavaScript?

Mi dispiace, intendevo dire che non è possibile “out of the box”. Praticamente tutto è possibile con un plugin personalizzato!

Sto cercando di realizzare questo tramite un plugin personalizzato. Penso di esserci quasi modificando la variabile postsToRender.

  TopicRoute.reopen({
    setupController(controller, model) {
      this._super(controller, model);
      topicController = controller;
      console.log(topicController);
      let userPrivileged = userCanViewAnswers(topicController.currentUser);

      const postStream = topicController.get("model.postStream");
      window.postStream = postStream;
      window.topicController = topicController;

      topicController.postsToRender = userPrivileged ? topicController.postsToRender : topicController.postsToRender.posts.filter(p=>p.post_number == 1);

    }
  });

function userCanViewAnswers(user){
    let user_groups = user.groups.map(g => g.name);
    return user_groups.includes('privileged');
}

Sembra che mostrerà un errore “not found” brevemente e si ricaricherà correttamente quando si ricarica la pagina manualmente o si torna dopo la home page.

Sto usando un’immagine di sviluppo Docker su MacOS, piuttosto lenta.

Mi dispiace, non ho ancora molta familiarità con il codebase di Discourse.
C’è un modo migliore per intercettare i post al caricamento dell’argomento?

Vedo che dovevo riaprire il Controller.

  TopicController.reopen({
    @discourseComputed(
    "model.postStream.posts",
    "model.postStream.postsWithPlaceholders"
  )
    postsToRender(posts,postsWithPlaceholders ){
      let userPrivileged = userCanViewAnswers(this.currentUser);
      return userPrivileged
      ? (this.capabilities.isAndroid ? posts : postsWithPlaceholders)
      : (this.capabilities.isAndroid ? posts.slice(0, 1) : postsWithPlaceholders.slice(0, 1));
    }
  })