تغييرات مستقبلية في قائمة المواضيع - كيفية إعداد السمات والإضافات

في إطار سعينا المستمر لتوحيد أنظمة العرض عبر قاعدة بيانات Discourse، نقوم باستبدال تنفيذ قائمة الموضوعات.

في السابق، كان هذا يستخدم نهج “المقابض الخام” (.hbr)، ويمكن تخصيصه عبر تجاوزات القوالب ومنافذ الإضافات الخام. يستخدم التنفيذ الجديد لقائمة الموضوعات مكونات Glimmer الحديثة، وقد تم بناؤه من الألف إلى الياء ليكون قابلاً للتخصيص بطرق مستدامة.

التنفيذ الجديد متاح الآن خلف الإعداد glimmer_topic_list_mode.

  • disabled: استخدام قائمة الموضوعات القديمة “المقابض الخام”.
  • auto: سيقوم بالكشف عن توافق الإضافات والمظاهر الحالية لديك. إذا كانت أي منها غير متوافقة، فسيستخدم النظام القديم؛ وإلا فسيستخدم التنفيذ الجديد.
  • enabled: سيستخدم التنفيذ الجديد لقائمة الموضوعات. إذا كانت لديك أي إضافات أو مظاهر غير متوافقة، فقد يتعطل موقعك.

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

سيتم طباعة تحذيرات في وحدة تحكم المتصفح تحدد مصدر عدم التوافق.

:timer_clock: الجدول الزمني للإطلاق

هذه تقديرات تقريبية قابلة للتغيير

الربع الرابع 2024:

  • :white_check_mark: الانتهاء من التنفيذ الأساسي
  • :white_check_mark: تحديث المظاهر/الإضافات الرسمية (قيد التقدم)
  • :white_check_mark: تم التمكين في Meta
  • :white_check_mark: نشر نصائح الترقية

الربع الأول 2025:

  • :white_check_mark: تحديث المظاهر/الإضافات الرسمية

  • :white_check_mark: سيتم تعيين glimmer_topic_list_mode افتراضيًا إلى auto؛ سيتم تمكين رسائل إيقاف الاستخدام في وحدة التحكم

  • :white_check_mark: ستؤدي إيقافات الاستخدام إلى ظهور لافتة تحذير للمسؤول لأي مشاكل متبقية

  • يجب تحديث الإضافات والمظاهر الخارجية

  • :white_check_mark: 1 مارس - تمكين قائمة الموضوعات الجديدة لجميع المواقع. سيتم تبديل الإعداد الافتراضي للموقع إلى enabled، ولكن سيظل من الممكن العودة إلى ‘disabled’

الربع الثاني 2025

  • :white_check_mark: بعد 1 أبريل - الإزالة النهائية للوضع القديم والكود المرتبط به

:eyes: ماذا يعني هذا بالنسبة لي؟

إذا كانت الإضافة أو المظهر الخاص بك يحتوي على أي ملفات “مقابض خام” (مسماة .hbr أو .raw.hbs)، فستحتاج هذه الملفات إلى تحديث لتكون متوافقة مع الإصدار الجديد. الملفات .hbs العادية لمكونات/مسارات Ember غير متأثرة بهذا التغيير.

ستكون الترقيات مطلوبة أيضًا إذا كنت تستخدم modifyClass على component:topic-list أو component:topic-list-item.

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

ما هي البدائل؟

تم تحويل بعض منافذ الإضافات القديمة إلى منافذ إضافات عادية. يمكن تحديث هذه بشكل مباشر.

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

إليك بعض الأمثلة:

:sos: ماذا عن التخصيصات الأخرى؟

إذا لم يكن من الممكن تحقيق التخصيص الخاص بك باستخدام واجهات برمجة التطبيقات الجديدة التي قدمناها، فيرجى إخبارنا عن طريق إنشاء موضوع Dev جديد للمناقشة.

:sparkles: أنا مؤلف إضافة/مظهر. كيف أقوم بتحديث مظهر/إضافة لدعم كل من قائمة الموضوعات القديمة والجديدة أثناء الانتقال؟

يتم عرض منافذ الإضافات الجديدة في كل من التنفيذ القديم والجديد لقائمة الموضوعات. لذا: عندما تقوم بتنفيذ التنفيذ الجديد، ما عليك سوى حذف موصل منفذ الإضافة القديم.

بالنسبة للتخصيصات المستندة إلى DAG التي تستبدل تجاوزات القوالب أو المنافذ غير الحديثة، ستحتاج إلى الاحتفاظ بكلا التنفيذين خلال الفترة الانتقالية.

بمجرد أن يدعم مظهرك/إضافتك كلا التنفيذين القديم والجديد، يمكنك إضافة هذا التعليق السحري في أعلى جميع ملفات .hbr الخاصة بك:

{{!-- has-modern-replacement --}}

سيؤدي هذا إلى إسكات رسائل إيقاف الاستخدام، والسماح باستخدام التنفيذ الجديد عند التعيين على الوضع “auto”.

12 إعجابًا

عذرًا على التدقيق، ولكن ألا يعني هذا في الواقع شيئًا مثل “إذا كان لدى المكون الإضافي أو السمة أي ملفات ‘raw handlebars’ لها علاقة بقائمة المواضيع فيجب تحديثها”؟

ملفات raw handlebars الخاصة بي التي لها علاقة بنماذج أخرى ستستمر في العمل بشكل جيد، أليس كذلك؟ أم أن ملفات raw handlebars ستختفي تمامًا؟ (أعتقد أنها مطلوبة لنماذج/مسارات إضافية، أليس كذلك؟)

3 إعجابات

"Raw handlebars" تعني قوالبنا الخاصة بـ discourse، والتي لها امتداد الملف .hbr (أو تاريخيًا .raw.hbs). لقد استخدمنا هذا النظام فقط لقائمة المواضيع، وبعض الأجزاء الداخلية لـ ‘الإكمال التلقائي’.

الملفات الأخرى .hbs (على سبيل المثال، لمكونات Ember، أو المسارات) لم تتأثر.

سأقوم بتحديث المنشور الأصلي لجعله أكثر وضوحًا. شكرًا @pfaffman!

تعديل: ها نحن ذا:

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

أوه. لقد حاولت حقًا توضيح الأمر. لقد ذكرت الامتدادات بوضوح. لا أعتقد أنه يمكنك جعله أوضح. أعتقد أن هذا الخطأ مني. :person_shrugging:

ولكن ربما كانت الجملة الإضافية ستساعدني في القراءة.

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

شكراً للمشاركة. لقد كنت خائفاً من هذا منذ فترة طويلة وهو قادم…:grimacing: لن يبدو الأمر سهلاً… :sweat_smile: لكن محول القيمة سيجعل الأمر أسهل على الأرجح.:crossed_fingers:

إعجابَين (2)

أعتقد أن GitHub - discourse/discourse-topic-excerpts: Add topic excerpts to all topics in the topic list لم يتم تحديثه بعد؟

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

نعم، لا يزال لدينا الكثير من السمات/الإضافات الرسمية التي تنتظر الترقية. سأقوم بتمديد هذه النقطة إلى الربع الأول في المنشور الأصلي :writing_hand:

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

شكرا! أستمتع بتجربة المطور حتى الآن! سأخبرك إذا أثار TLP أي مشاكل عندما أصل إلى ذلك.

إعجابَين (2)

رائع! قائمة الموضوعات الرسمية المصغرة هي إحدى القوائم التي انتهينا من تحديثها، لذا قد تكون مرجعًا مفيدًا.

إعجابَين (2)

أوه، عذراً! قام @isaac بتحديث topic-excerpts الأسبوع الماضي: DEV: Update plugin for `glimmer-topic-list` (#34) · discourse/discourse-topic-excerpts@0dd3c6c · GitHub

لذا يجب أن يعمل بشكل جيد تحت قائمة الموضوعات الجديدة :crossed_fingers:

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

أواجه المشكلة التالية:

كلا الإصدارين محدثان.

عند إضافة عمود، ما هي الطريقة الاستراتيجية لإضافة رأس عمود قابل للفرز؟

باستخدام:

api.registerValueTransformer("topic-list-header-sortable-column"

بالإضافة إلى المحول الآخر؟

      api.registerValueTransformer(
        "topic-list-columns",

لا يبدو أن هذا يعمل بمفرده؟ :thinking:

مرحباً @isaac. إذا كان عليّ التخمين: ربما تحتاج المنطق الجديد إلى تحديث للتعامل مع المواضيع غير المصنفة؟

المحول الذي وجدته هو لتجاوز قابلية الفرز للأعمدة الموجودة (على سبيل المثال، نقوم بذلك في discourse-calendar لـ منع استخدام أي طرق فرز أخرى عندما تكون في عرض الموضوع الزمني)

إذا كنت تضيف عمودًا جديدًا، فيجب عليك ‘فقط’ أن تكون قادرًا على تحديد رأسك باستخدام مكون SortableColumn. على سبيل المثال، إليك واحد في النواة:

(أحد الأشياء الرائعة حقًا في الواجهة البرمجية الجديدة هو أن جميع الأعمدة الأساسية معرفة باستخدام نفس الواجهة البرمجية التي تستخدمها من السمات/الإضافات!)

إعجابَين (2)

نعم لاحظت ذلك عندما أجريت بحثًا في التعليمات البرمجية، لطيف!

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

Fixed :slight_smile:

إعجابَين (2)

س: هل من الممكن تعيين مكون كامل إلى خلية، وليس مجرد <template>؟

على سبيل المثال، ماذا لو أردت عرض زر شفاف في خلية تتطلب بعض المنطق البسيط لجافاسكريبت؟

نعم! من الناحية الفنية، فإن وسم القالب الفارغ ينشئ “مكون قالب فقط”. يشبه هذا النوع من المكونات الذي تحصل عليه عند وضع ملف .hbs فارغ تحت الدليل components/.

لذلك نعم، استيراد وتمرير فئة مكون عادية سيعمل بنفس الطريقة. سيعمل حتى مع المكونات الكلاسيكية! (على الرغم من أننا نوصي بالطبع باستخدام مكونات Glimmer الحديثة).

إعجابَين (2)

هذا رائع تمامًا!
هذا يغير … الكثير! :exploding_head:

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

سؤال غبي، ربما.

ولكن كيف يمكن تطبيق التغييرات على … قائمة مواضيع الجوال؟

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

بالنسبة للهواتف المحمولة، لدينا مجموعة من منافذ الإضافات الجديدة (بما في ذلك منافذ التغليف).

أو بدلاً من ذلك، يمكنك استخدام valueTransformer لفرض عرض سطح المكتب في كل مكان (نحن نفعل ذلك بالنسبة لـ topic-thumbnails).

أخطط لكتابة “كيفية تخصيص قائمة المواضيع” أكثر تفصيلاً Documentation > Developer Guides الأسبوع المقبل، لذلك سأحرص على تضمين تلك المعلومات هناك.

4 إعجابات