إعدادات الإضافات التابعة... رائعة!

أوه … هذا حقاً :chefs_kiss:

دعوني أوضح ذلك.

إليك المحدد في أحدث إصدار من Chatbot، لاحظ أنه في حالة “إيقاف”:

الآن دعنا نغير هذا الاختيار:

وتظهر الإعدادات التي تحتاج فقط إلى النظر فيها عند اختيار هذه القيمة، وكأنها :sparkles:

هذه طريقة رائعة حقاً لتقليل الفوضى غير الضرورية في إعدادات الإضافات وجعل الأمور أسهل في الإعداد مع تقليل العبء المعرفي :tada:

Daniel Labelle's Fast Cleaning Challenge

12 إعجابًا

فكّ يسقط من دهشته لقد كنت أنتظر شيئاً كهذا منذ فترة طويلة جداً. يسرع للتحقق من المستودع هل توجد أي وثائق حول هذا؟

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

لا تتردد في استخدام Chatbot كمثال مفيد نوعًا ما على كيفية استخدامه:

وأنا متأكد من أن هناك مجموعة من الاستخدامات في النواة الآن …

إعجابَين (2)

توجد توثيقات، لكنها حالياً مجزأة إلى حد ما بدلاً من أن تكون مقدمة كدليل مطور مستقل.

المراجع الأساسية المعتمدة هي:

  • توثيق المخطط في config/site_settings.yml:52، ويغطي depends_on وdepends_on_values وdepends_behavior وdependent_setting_display.

  • إرشادات وأمثلة أكثر تفصيلاً في .skills/discourse-site-settings/SKILL.md:203.

  • مواصفات سلوك الخلفية في spec/lib/site_setting_extension_spec.rb:706.

  • حل تبعيات الواجهة الأمامية في frontend/discourse/admin/services/admin-site-setting-store.js:41.

  • أمثلة واجهة المستخدم في frontend/discourse/tests/acceptance/admin-site-settings-test.js:142.

النحو الأساسي هو:

child_setting:
  default: ""
  depends_on:
     - parent_setting
  depends_behavior: "hidden"

بالنسبة للآباء من نوع enum أو string:

 child_setting:
    default: ""
    depends_on:
      - parent_setting
    depends_on_values:
      parent_setting:
        - enabled_mode
        - another_mode
    depends_behavior: "hidden"
    dependent_setting_display: "inline"

قيد مهم: يمكن أن تحتوي التبعيات على عدة آباء مباشرين، لكن حل التبعيات ليس متعدٍ. لا يؤدي السلسلة المتداخلة مثل A → B → C تلقائياً إلى جعل C تأخذ في الاعتبار ما إذا كان B مخفياً بواسطة A؛ بل تقيم C فقط القيمة المخزنة لـ B.

4 إعجابات