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

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

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

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

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

إعجابَين (2)

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

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

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

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

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

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

إعجابَين (2)

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

إعجابَين (2)

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

إعجابَين (2)

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

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

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

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

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

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

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

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

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

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

إعجابَين (2)

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

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

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

إعجابَين (2)

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

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

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

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

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

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

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

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

3 إعجابات

لقد نظرت في الكود الخاص بك، عمل رائع :+1:

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

ملاحظة فقط، ما قمت بإنشائه هو #theme-component، وليس Plugin :slight_smile:

إعجابَين (2)

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

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


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

3 إعجابات

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

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

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

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

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

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

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

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

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

إعجابَين (2)

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

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

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