j3ang
(Alex Wang)
3 أبريل 2022، 10:26م
1
مرحباً،
أتساءل عما إذا كانت هناك طريقة لتقييد الإجابات/الردود على مستويات ثقة معينة أو حقول مخصصة للمستخدم؟ تم ترحيل المستخدمين لدينا من ووردبريس بمستويات عضوية مختلفة. لا نريد منح جميع المستخدمين القدرة على عرض الإجابات إلا إذا وصلوا إلى مستوى عضوية معين.
إعجابَين (2)
HAWK
(Hawk)
4 أبريل 2022، 3:50ص
2
[quote=“j3ang, post:1, topic:223032”]لعرض الإجابات ما لم تصل إلى مستوى عضوية معين.
[/quote]
للعرض أم للرد؟ إنهما شيئان مختلفان تمامًا.
إعجابَين (2)
j3ang
(Alex Wang)
4 أبريل 2022، 3:56ص
3
@HAWK ، آه، آسف، للرد. يمكنهم رؤية الموضوع والردود، ولكن لا ينبغي أن يكونوا قادرين على الرد إلا إذا كانوا على مستوى معين.
إعجابَين (2)
HAWK
(Hawk)
4 أبريل 2022، 3:59ص
4
نعم، يمكنك إعداد ذلك على مستوى الفئة. أضف كل مجموعة مستوى ثقة وامنحها الأذونات المناسبة.
إعجابَين (2)
j3ang
(Alex Wang)
4 أبريل 2022، 4:56ص
5
ماذا لو أردنا بالفعل إخفاء الإجابات وليس مجرد تقييد الإذن بالرد؟ عمود “المشاهدة” معتم.
إعجابَين (2)
HAWK
(Hawk)
4 أبريل 2022، 5:07ص
6
أخشى أنك لا تستطيع فعل ذلك.
إعجاب واحد (1)
j3ang
(Alex Wang)
4 أبريل 2022، 5:28ص
7
هل سيكون ذلك ممكنًا باستخدام إضافة مخصصة؟ أشك في أنه يجب أن يكون الأمر صعبًا لقراءة المستخدم الحالي وإخفاء قسم الإجابة بالكامل عبر JavaScript؟
إعجابَين (2)
HAWK
(Hawk)
4 أبريل 2022، 5:32ص
8
عذرًا، كنت أعني أنه غير ممكن بشكل مباشر. كل شيء تقريبًا ممكن باستخدام إضافة مخصصة!
5 إعجابات
j3ang
(Alex Wang)
5 أبريل 2022، 12:13ص
9
بينما أحاول تحقيق ذلك عبر إضافة مخصصة. أعتقد أنني على وشك الانتهاء عن طريق تعديل المتغير 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 بعد.
هل هناك طريقة أفضل لاعتراض المشاركات عند تحميل الموضوع؟
j3ang
(Alex Wang)
5 أبريل 2022، 6:29م
10
أرى أنه كان من المفترض أن أعيد فتح المتحكم.
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));
}
})
system
(system)
تم إغلاقه في
5 مايو 2022، 6:29م
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.