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.

2 Mi Piace

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

2 Mi Piace

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

2 Mi Piace

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

2 Mi Piace

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

2 Mi Piace

Mi dispiace, non puoi farlo.

1 Mi Piace

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?

2 Mi Piace

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

5 Mi Piace

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));
    }
  })

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.