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

مرحباً،

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

إعجابَين (2)

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

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

إعجابَين (2)

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

إعجابَين (2)

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

إعجابَين (2)

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

إعجابَين (2)

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

إعجاب واحد (1)

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

إعجابَين (2)

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

5 إعجابات

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

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