مرحباً بالجميع! كخطوة أخيرة في جهودنا للابتعاد عن نظام العرض القديم “widget” (الأداة)، فإننا نوقف استخدام الأدوات في Discourse وسنقوم بتعطيلها بالكامل قريباً.
الجدول الزمني
هذه تقديرات قابلة للتغيير
يوليو 2025:
إضافة تحذيرات الإيقاف في النظام الأساسي وإعداد موقع تجريبي لتعطيلها
يجب ترقية المكونات الإضافية والثيمات الخاصة بالجهات الخارجية.
الربع الرابع 2025:
سيتم تعطيل نظام عرض الأدوات افتراضياً باستخدام deactivate_widgets_rendering: true. ستكون هناك فترة قصيرة يمكن إعادة تمكينه فيها يدوياً.
إزالة الكود القديم وتعطيل نظام عرض الأدوات
المكونات الإضافية والثيمات غير المتوافقة ستتوقف عن العمل بشكل صحيح بعد ذلك.
ماذا يعني هذا بالنسبة لك؟
إذا كانت أي من المكونات الإضافية أو الثيمات الخاصة بك تستخدم واجهات برمجة تطبيقات (APIs) خاصة بـ “الأدوات”، فستحتاج إلى تحديثها لاستخدام واجهات برمجة تطبيقات أحدث أو Glimmer Components قبل الموعد النهائي للربع الرابع من عام 2025.
لدي مكونات إضافية أو ثيمات مخصصة مثبتة. هل أحتاج إلى تحديثها؟
ستحتاج إلى تحديث المكونات الإضافية أو الثيمات الخاصة بك إذا كانت تستخدم أياً مما يلي:
createWidget
decorateWidget أو changeWidgetSetting أو reopenWidget أو attachWidgetAction
المكون MountWidget
نصيحة احترافية: إذا كان لديك ملحقات تستخدم أياً من هذه التخصيصات، فسترى تحذيراً في وحدة التحكم (console) يحدد المكون الإضافي أو المكون الذي يحتاج إلى الترقية.
هام: إذا كنت تستخدم أكثر من ثيم واحد في نسختك، فتأكد من فحصها جميعاً لأن التحذيرات ستظهر فقط للمكونات الإضافية النشطة والثيمات ومكونات الثيمات المستخدمة حالياً.
معرّف الإيقاف هو: discourse.widgets-end-of-life
كيف يرتبط هذا بالتحديث الأخير لـ post-stream؟
كان تدفق المنشورات (post-stream) هو الجزء الرئيسي الأخير في Discourse الذي لا يزال يستخدم نظام عرض الأدوات. مع تحديثه، يمكننا الآن المضي قدماً في التقاعد الكامل لنظام الأدوات. ألقِ نظرة على دليل الترقية لمزيد من التفاصيل حول تلك التغييرات.
كيف أقوم بالترقية؟
إذا كنت تستخدم مكوناً إضافياً أو ثيماً من جهة خارجية: تحقق مما إذا كان المؤلف قد أصدر نسخة مُحدّثة متوافقة مع النظام الجديد.
إذا كنت مؤلف مكون إضافي/ثيم:
استبدل الأدوات المخصصة الخاصة بك بـ Glimmer Components
استخدم موصلات plugin-outlet لإدراجها في واجهة المستخدم
تحقق من أدلة المطورين للحصول على مزيد من المعلومات حول إجراء هذه التحديثات.
عندما تقوم بتحديث تثبيت Discourse الخاص بك في المرة القادمة، سيتم تعطيل نظام عرض الأدوات (widget rendering system) الآن، ولن يتم عرض أي تخصيص يعتمد على الأدوات بعد الآن.
في الوقت الحالي، في المواقع غير المتوافقة، يمكن للمسؤول إعادة تمكين السلوك القديم عن طريق تعديل قيم الإعداد التالي:
deactivate_widgets_rendering
هذه هي المرحلة النهائية قبل إزالة الكود القديم من قاعدة كود Discourse، والذي من المتوقع أن يحدث في غضون شهر تقريبًا. بعد ذلك، لن يكون من الممكن إعادة تمكين الأدوات بعد الآن.
ربما سؤال سخيف، ولكن هل تعتقد أنه سيكون من الممكن لـ Discourse تقديم ملف .md يحتوي على دليل/مساعدات يمكن تغذية أداة سطر الأوامر (CLI) التي يختارها المرء للمساعدة في ترحيل مكون إضافي (plugin component)؟
لقد حاولنا تقديم إرشادات ترحيل للأنماط التخصيص الأكثر شيوعًا، مثل تلك التي عدلت تدفق المنشورات.
من الصعب كتابة دليل أكثر شمولاً لأن كل شيء تقريبًا يمكن إجراؤه باستخدام الأدوات المصغرة (widgets)، لذا يجب تحويل احتياجات التخصيص المتبقية إلى مكونات (components) على أساس كل حالة على حدة.
أنا أراقب هذه المواضيع وسنحاول الإجابة على الأسئلة المنشورة هنا لمساعدة أولئك الذين ما زالوا بحاجة إلى الترحيل.
لقد ألقيت نظرة سريعة على الكود الذي يبدو أنه يسبب الإهمال (deprecation) في منتدىك باستخدام وحدة تحكم المتصفح (browser console)، ويبدو أنه السطر التالي:
const { iconNode } = require("discourse-common/lib/icon-library");
let iconsjira = iconNode('icons-jira');
تم استخدام iconNode فقط بواسطة الأدوات المصغرة (widgets)، والآن هي دالة لا تفعل شيئًا (noop function). في الكود الخاص بك، لا يبدو أن هذا المتغير قيد الاستخدام، لذلك يجب أن يكون من الآمن إزالة هذين السطرين.