منع المستخدمين من نقل المواضيع إلى فئات أخرى

أبحث عن خيار لتعطيل هذه الميزة لأنها قد تسبب بعض التعقيد في إدارة المواضيع عندما يكون لديك فرق مختلفة من المشرفين لفئات مختلفة وفجأة يجدون أنفسهم أمام موضوع كبير أو مثير للجدل في فئتهم دون إشعار مسبق.

لقد قرأت هنا Access rights for moving a topic to another category ولكنها تقول أن هذا شيء لا ينبغي أن يكون قادرًا على فعله سوى المستوى الموثوق به 3. لدي بيئة اختبار تمكن فيها مستخدم من المستوى الموثوق به 2 من القيام بذلك.

حاولت تمكين “تعطيل التحرير بعد أن يقوم الموظفون بتحرير منشور” ولكن يبدو أنه لم يؤثر على القدرة على تغيير فئة الموضوع.

هل فاتني شيء هنا؟ ربما فاتني :smiley:

لست متأكدًا، سأحتاج إلى إجراء بعض الاختبارات. قد لا يزال بإمكان تعديل مجموعة الفئات نقل موضوع ما عبر أمر التعديل أو النقل.

قد ترغب في الاطلاع على مستويات الثقة المخصصة (Customization > Plugin) أيضًا.

لقد تحققت من ذلك وسآخذه في الاعتبار، لكنني سأحاول أولاً إنشاء مكون بسيط يخفي هذا الاختيار للتحرير إلا للموظفين.
أفضل الإضافات التي تقوم بأشياء بسيطة :slight_smile:

قدم لي @Canapin رمزًا لإخفاء زر الإعجاب من المجموعات غير الموجودة ضمن مجموعات محددة.

قد يمنحك هذا أساسًا جيدًا للعمل عليه.

تم إصلاح الرابط

شكرا جزيلا لك @Heliosurge@Canapin الذي لا غنى عنه :stuck_out_tongue: ) كنت أفكر فقط في المكان الذي يمكنني البحث فيه عن إضافة مشابهة لاستخدامها كمثال :slight_smile:

على الرحب والسعة! الفريق وهذا المجتمع رائعان في خبرتي. :clinking_beer_mugs::smiling_face_with_sunglasses::+1:

ألقيت نظرة عليه، إنه منتج قابل للتطبيق بأقل قدر من الميزات (MVP) ولكنه جيد، لكن المجتمع الذي أبحث عنه ذكي تقنيًا جدًا، وسيكون من الأفضل لو تخطى DOM رسم هذا المكون بالكامل بدلاً من مجرد إخفائه عن الأنظار.

هل يتطلب ذلك إضافة (plugin) أم أنه شيء يمكنني تحقيقه على أي حال باستخدام مكون؟

ما أحتاج إلى القيام به، بشكل تقريبي، هو تحديد ما إذا كان HTML لهذا الاختيار قد تم إنشاؤه أم لا، بناءً على الدور.

أنا متأكد من أن مكونًا سيكون كافيًا.

أنا لست مبرمجًا.

لإخفاء محدد الفئة عند تعديل المنشور الأول (من إجراء تعديل المنشور، وليس تعديل العنوان)، يعمل هذا:

<script type="text/discourse-plugin" version="1.6.0">
    let currentUser = api.getCurrentUser();
    api.modifyClass("component:composer-title", {
      pluginId: "PreventCategoryChange",
      didInsertElement: function() {
        if(currentUser.trust_level == 1) {
            let categoryInput = document.getElementsByClassName('category-input')[0];
            let miniTagChoser = document.getElementsByClassName('mini-tag-chooser')[0];
            if(categoryInput != null) {
                categoryInput.remove();
                if(miniTagChoser != null) {
                    miniTagChoser.style.marginLeft = '0';
                }
            }
        }
      }
    });
</script>

chrome_NTAAc37JXB

لقد استخدمت مستوى الثقة، ولكن أعتقد أنه يمكنك إدارة التحقق من مجموعة المستخدمين بدلاً من ذلك، كل شيء موجود في كائن currentUser.

لا أعرف كيف أزيل محدد الفئة ديناميكيًا عند تعديل العنوان.
ربما يمكنك اكتشاف ذلك من الملفات التي تبدو ذات صلة:

شكراً جزيلاً @Canapin

سأحتاج إلى إضافة شيء ما للتعديل من العنوان ولكن هذا يساعد بالتأكيد بالفعل :slight_smile:

عندما يتم الانتهاء منه، سأنشره في قسم مكونات السمة هنا حتى يتمكن الآخرون من استخدامه :wink:

هذا discourse/app/assets/javascripts/discourse/app/templates/topic.hbs at 53695e7d29e718041fa53bf4fef21e02354a4088 · discourse/discourse · GitHub
يبدو أنه المقبض الصحيح للوصول إليه، الآن إذا عرف شخص ما كيفية التفاعل معه عبر مكون سمة… :stuck_out_tongue:

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

حسناً، بفضل صديق جيد يعاني من الأرق، تمكنا من معرفة مكان العثور على الخطاف المناسب :stuck_out_tongue:

إليكها، وهي تقوم أيضاً بضبط الشكل البصري للنموذج وتسمح باختيار حد أدنى لمستوى الثقة الذي سيكون الوصول لتحرير الفئة متاحاً منه على أي حال (مستوى الثقة الافتراضي 0 ليتوافق مع إعدادات Discourse الافتراضية)

سأقوم الآن بإنشاء موضوع جديد في قسم Customization > Plugin.

شكراً جزيلاً @Canapin لتوجيهنا نحو الاتجاه الصحيح في البداية :heart_eyes:

لقد راجعتُ كودك، عمل رائع :+1:

أعتقد أنك علّمتني أكثر مما علّمتُك!

ملاحظة بسيطة: ما أنشأته هو #customization:theme-component، وليس Customization > Plugin :slight_smile:

للتوضيح فقط، يمكن للمستوى 3 والمستوى 4 من الثقة إعادة تصنيف أي موضوع طالما تم تمكين يمكن للمستخدمين الموثوق بهم تعديل الآخرين. يجب أن يكون المستخدمون من المستوى 0/1/2 قادرين فقط على القيام بذلك على موضوعاتهم الخاصة، وخلال فترة التعديل الخاصة بهم [1]. إذا قمت بقفل المنشور الأول باستخدام مفتاح ربط المنشور، فيجب أن يمنع ذلك أيضًا تعديل الفئة (والعنوان والعلامات).

أنا لست متأكدًا بنسبة 100٪ من أنني أتابع حالة الاستخدام الخاصة بك، ولكني سعيد لأنك وجدت حلاً. :slightly_smiling_face::+1:


  1. يتم تعيينها بواسطة حد وقت تعديل المنشور للمستوى 0 والمستوى 1 و حد وقت تعديل منشورات المستوى 2 للمستوى 2 والمستوى 3 ↩︎

آه، نعم، لم أكن على علم بهذا الخيار:

إنه يمنع أي تعديل آخر (باستثناء الحذف) حتى من قبل مشرف الفئة.

ولكن لا يمكن أتمتة قفل المنشور الأول من مؤقت الموضوع أو مهمة آلية.

نعم، كنت على علم بذلك.

ومع ذلك، كان هدفي هو منع المشرفين من الاضطرار إلى التعامل مع عدة حالات من تغيير الفئات، مما قد يؤدي إلى تعقيدات في الإشراف عندما يكون الموضوع في فئة ما، ثم ينتقل إلى فئة أخرى وما إلى ذلك.

أعتقد أنه سيكون من المهم إضافته نظرًا لأنه مكون سمة، يمكن للمستخدم تجاوز هذه القيود عن طريق حقن جافاسكريبت (أعتقد) أو تمكين الوضع الآمن إذا كان متاحًا لهم (انظر إعداد تمكين الوضع الآمن).

تحتاج إلى إضافة إذا كنت تريد طريقة أكثر أمانًا للقيام بذلك.

نعم، لهذا السبب كنت أبحث أيضًا في المكونات الإضافية، ولكن بالنسبة للإصدار الأول، فإن المكون يكفي.