تقييد الإجابات على مستويات الثقة

مرحباً،

أتساءل عما إذا كانت هناك طريقة لتقييد الإجابات/الردود على مستويات ثقة معينة أو حقول مخصصة للمستخدم؟ تم ترحيل المستخدمين لدينا من ووردبريس بمستويات عضوية مختلفة. لا نريد منح جميع المستخدمين القدرة على عرض الإجابات إلا إذا وصلوا إلى مستوى عضوية معين.

[quote=“j3ang, post:1, topic:223032”]لعرض الإجابات ما لم تصل إلى مستوى عضوية معين.
[/quote]

للعرض أم للرد؟ إنهما شيئان مختلفان تمامًا.

@HAWK ، آه، آسف، للرد. يمكنهم رؤية الموضوع والردود، ولكن لا ينبغي أن يكونوا قادرين على الرد إلا إذا كانوا على مستوى معين.

نعم، يمكنك إعداد ذلك على مستوى الفئة. أضف كل مجموعة مستوى ثقة وامنحها الأذونات المناسبة.

ماذا لو أردنا بالفعل إخفاء الإجابات وليس مجرد تقييد الإذن بالرد؟ عمود “المشاهدة” معتم.

أخشى أنك لا تستطيع فعل ذلك.

هل سيكون ذلك ممكنًا باستخدام إضافة مخصصة؟ أشك في أنه يجب أن يكون الأمر صعبًا لقراءة المستخدم الحالي وإخفاء قسم الإجابة بالكامل عبر JavaScript؟

عذرًا، كنت أعني أنه غير ممكن بشكل مباشر. كل شيء تقريبًا ممكن باستخدام إضافة مخصصة!

بينما أحاول تحقيق ذلك عبر إضافة مخصصة. أعتقد أنني على وشك الانتهاء عن طريق تعديل المتغير 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');
}

يبدو أنه سيظهر خطأ “غير موجود” لفترة وجيزة ويعيد التحميل بشكل صحيح عند إعادة التحميل الكامل للصفحة أو العودة بعد الصفحة الرئيسية.

أنا أستخدم صورة Docker للتطوير على نظام MacOS، وهي بطيئة نوعًا ما.

عذرًا، لست على دراية بقاعدة كود discourse بعد.
هل هناك طريقة أفضل لاعتراض المشاركات عند تحميل الموضوع؟

أرى أنه كان من المفترض أن أعيد فتح المتحكم.

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