إعادة تصميم المحرر خلف enable_new_composer_actions
يُقدّم هذا تحديثًا لتجربة المحرر المعاد تصميمها ويُطلقها خلف تغيير تجريبي جديد (alpha upcoming-change). مع إيقاف العلم (الافتراضي)، لا يحدث أي تغيير مرئي. يمكن للمسؤولين الاختيار للانضمام عبر صفحة التغييرات القادمة في لوحة الإدارة.
التغييرات عند تفعيل العلم
قائمة منسدلة موحدة للإجراءات. تم استبدال قائمة composer-actions القديمة المبنية على SelectKit بمكون Glimmer/DMenu جديد (composer-actions-new.gjs). لا تزال تعرض جميع صفوف تبديل الوضع نفسها (الرد على الموضوع، الرد كموضوع جديد، إنشاء رسالة خاصة، إلخ) مع تسميات وأيقونات أوضح.
التبديلات تظهر مع الإجراءات. تُعرض خيارات «همس» / «بدون تنبيه» / «غير مدرج» الآن كعناصر <DToggleSwitch> في أسفل القائمة المنسدلة نفسها — بدون قائمة أزرار مركبة منفصلة. تبقى حالة التبديل ثابتة عند تبديل الوضع (مثلًا: تفعيل الهمس → التبديل من «الرد على موضوع» إلى «الرد على منشور» → لا يزال الوضع همسًا).
شارة مؤشر الهمس. يوجد زر صغير على يمين زر القائمة المنسدلة يعرض حالة الهمس الحالية في نسختين بصريتين: --public (لون ثانوي، أيقونة عين، «سيظهر الرد») و --whispering (خلفية باللون المتوسط/المنخفض جدًا للون الأساسي، أيقونة عين مشطوبة، «في وضع الهمس»). عند النقر عليه يتم تبديل وضع الهمس — عبر نفس مسار الكود المستخدم داخل القائمة المنسدلة، مما يضمن تزامن الحالتين. كما تتغير أيقونة الزر نفسه إلى far-eye-slash عند تفعيل الهمس.
تجربة تحرير المنشورات. عند تحرير منشور، تنكمش القائمة المنسدلة لتصبح تسمية ثابتة بدون سهم (أيقونة قلم + «تحرير المنشور»). زر «إضافة سبب التحرير» الذي كان موجودًا سابقًا في مكان آخر ضمن واجهة المحرر تم دمجه في هذا الزر الثابت كزر قابل للنقر باسم «صف تحريرك»؛ عند النقر عليه، يتم استبدال التسمية بحقل إدخال نصي مرتبط بـ composer.editReason مع التركيز عليه تلقائيًا.
واجهة المحرر. تم إزالة النص/الـ span المسمى .action-title — حيث يعرض زر القائمة المنسدلة نفسه الوضع الحالي.
روابط المنشورات/المواضيع ستظهر فقط عند الضرورة. سيظهر رابط الموضوع عند التنقل بعيدًا عن الموضوع، وسيظهر رابط المنشور عند التمرير بعيدًا عن المنشور أو التنقل بعيدًا عنه.
ملاحظات لمطوري الإضافات
المكون الجديد ليس فئة فرعية من SelectKit، لذا لا تصل إليه واجهات البرمجة القديمة للإضافات. لدعم كلتا الحالتين (مع العلم مفعّل أو معطل) خلال هذه المرحلة التجريبية، يجب على الإضافات تسجيل كلا الواجهتين:
api.registerBehaviorTransformer("composer-actions-on-select", ({ context, next }) => { if (context.actionId === "foo") { ...; return; } next(); })
شكل الصف ({ name, description, icon, id }) متطابق في كلتا الحالتين. يستلم محوّل السلوك { actionId, options, model } في سياقه.
الإضافات التي تسجل فقط الواجهات القديمة ستختفي صامتًا من المحرر بمجرد تفعيل المسؤول للعلم. أما الإضافات التي تسجل فقط المحولات الجديدة فستكون غير مرئية طالما العلم معطل (وهو الوضع الافتراضي للجميع عند الدمج).
المراجع:
discourse-post-voting/extend-composer-actions.js — مثال عملي على التسجيل المزدوج (ضمن النواة)
حالة العلم هي تجريبية (alpha) — مخصصة للاختبار الداخلي فقط.
يجب على الإضافات التي تتكامل مع إجراءات المحرر إضافة التسجيل المزدوج قبل الترقية إلى beta/stable.
الاختبارات تغطي الحالتين: تغطي المواصفات الحالية للقبول/النظام حالة العلم المعطل؛ بينما تغطي ملفات *-new-test.js الشقيقة حالة العلم المفعّل (بالإضافة إلى محددات DOM للمكون الجديد الخاصة بالقائمة المنسدلة الموحدة، عناصر التبديل، شارة الهمس، وشرائح التسمية المنقسمة).
كان هذا هو الحال دائمًا، حيث أن إضافة تصويت المنشورات تعمل على مستوى الموقع بأكمله بدلاً من أن تكون محددة حسب الفئة. إعدادات مستوى الفئة الخاصة بها تتعلق فقط بتعيين الافتراضي، وليس تقييد استخدامها.
نحن في مرحلة انتقالية بسيطة مع إضافة تصويت المنشورات… أعتقد أننا سنحتاج إلى تحديد خطة هجرة لتجنب تعطيل الاستخدام الأعمّ لها قبل تقييدها على فئات محددة، فقط لأن نوع “الأفكار” مفهوم جديد نسبيًا.
الأخبار الجيدة هي أنه في هذه الأثناء، لدينا هُكّان (hooks) للسماح بذلك في مكون سمة… هذا يعمل في مُهيّئ (initializer) لعرض زر التبديل فقط في فئة الأفكار:
ألا تظن أنه أمر غريب بعض الشيء أن تشرح لي تفاصيل وضع الأمان وكيفية العثور على إصدار Discourse الخاص بي؟
كما يمكنك أن ترى في الفيديو أعلاه (أعدت رفعه - لا أعرف سبب تعطله اليوم)، كنت قد فعّلت وضع الأمان.
الإصدار الحالي هو 2a08d5d (كان مختلفاً عندما كتبت التقرير). يمكنني أيضاً إعادة إنتاج المشكلة هنا - لقد اخترت منتدائي فقط لأن المدراء لديهم المزيد من الخيارات، لذا كان القوائم المخفية أكثر وضوحاً. أما على Meta فهي بالكاد مرئية. في معظم الأحيان يبدو أن الزر لا يعمل على الإطلاق.
سأقوم بتحديث Discourse بـ هذا الإصلاح المقصود وأخطركم عند دمج التغييرات. *تحديث: تم دمج التغييرات، وسترون الإصلاح في نشراتكم القادمة التي تعمل بالإصدار d82dc7c أو الأحدث.
ملاحظة جانبية: بما أن التعديلات على آخر منشور لم تعد ترفع الموضوع إلى الأعلى، فإن التعديل لا يعمل بشكل جيد كإشعار. أحد زملائك قال مرة إنه يجب فقط نشر تحديثات منفصلة بدلاً من ذلك. من المثير للاهتمام أنكم لا تفعلون ذلك بأنفسكم في كثير من الأحيان.