في إصدارات Discourse الأحدث، قمنا بإزالة Discourse.SiteSettings تمامًا من تطبيق JavaScript. ستجده فقط في الأماكن المخصصة للتوافق مع الإصدارات السابقة.
نفعل ذلك كجزء من هجرتنا إلى Ember CLI، ولكن أيضًا لأن ذلك هو الصواب؛ فـ Discourse.XYZ في جوهره متغير عام، مما يعني أن تبعياتنا مشتتة في كل مكان.
إذا كنت مطوّرًا لإضافات أو سِمات (themes) وتستخدم Discourse.SiteSettings في كودك، فقد حان الوقت للبدء في التفكير بالانتقال عن ذلك.
كيفية تحديث كود JavaScript الخاص بك:
-
إذا كان مرجعك عبارة عن متحكم (Controller)، أو مسار (Route)، أو نموذج (Model)، أو مكون (Component)، أو عنصر واجهة (Widget)، فيمكنك استخدام
this.siteSettingsبدلاً من ذلك. -
إذا كان ملفك ضمن مُبدئ (initializer)، فيمكنك البحث عن إعدادات الموقع باستخدام معامل الحاوية:
let siteSettings = container.lookup('site-settings:main'); -
إذا كان ملفك اختبار QUnit، فيمكنك استخدام
this.siteSettingsولكن ملاحظة: يجب أن تكون طريقة الاختبار دالة عادية وليست دالة سهم (arrow function) حتى تكونthisصحيحة:QUnit.test("اختبار شيء ما", function(assert) { this.siteSettings; // سيعمل }); QUnit.test("اختبار شيء ما", assert => { this.siteSettings; // لن يعمل });في معظم الحالات، يجب أن تتمكن من استبدال
assert => {بـfunction(assert) {وسيكون ذلك فعالاً. -
إذا كان كودك داخل دالة مساعدة (helper)، فهناك دالة جديدة تسمى
helperContext()يمكنك استيرادها واستخدامها للحصول على إعدادات الموقع داخل دالة المساعدة الخاصة بك. يرجى استخدام هذه الدالة فقط في الدوال المساعدة الفعلية!import { helperContext } from "discourse-common/lib/helpers"; function myHelper(x) { let siteSettings = helperContext().siteSettings; } -
إذا كنت تقوم بتضمين كود Discourse عبر وسم سكريبت (script tag)، فيمكنك الوصول إلى إعدادات الموقع عبر الحاوية:
<script type="text/discourse-plugin" version="0.1"> let siteSettings = api.container.lookup('site-settings:main'); </script>
لم أقم بإضافة تحذيرات الإهمال (Deprecation warnings) إلى Discourse.SiteSettings بعد، لأنني أعتقد أنه حاليًا سيكون هناك عدد كبير جدًا من التحذيرات لدرجة أنها لن تكون مفيدة فعليًا بسبب جميع السمات والإضافات الحالية التي لم يتم تحديثها بعد. بمجرد تحديث كمية كبيرة من ذلك الكود، سأضيف التحذيرات لتسهيل اكتشافها.