الترحيل من DXPR Builder 1.x أو 2.x.
يحدّث DXPR Builder 3.x في موضعه من أي إصدار 1.x أو 2.x. يبدّل Composer الشيفرة، ويشغّل drush updatedb خطافات التحديث في dxpr_builder.install التي تحوّل الإعدادات والمحتوى. تسرد هذه الصفحة ما تفعله تلك الخطافات، وما تغيّر للشيفرة المخصصة، وكيف تتحققون من النتيجة. تأتي تواريخ الإصدار من وسوم git؛ انظروا الإصدارات الأقدم.
تاريخ الإصدارات باختصار
| السلسلة | Drupal | ملاحظات |
|---|---|---|
| 7.x-1.x | Drupal 7 | بيع كـ Glazed Builder، ثم أُعيدت تسميته. |
| 1.x (8.x-1.x) | Drupal 8 و9 | اسم الآلة للوحدة dxpr_builder منذ أول إصدار 1.x في مايو 2020. وآخر إصدار 1.8.8. |
| 2.x | من Drupal 9.3 إلى 11 | CKEditor 5 ودعم وحدة Key وأول ميزات الذكاء الاصطناعي. وآخر إصدار 2.8.1. |
| 3.x | Drupal 10.2 و11 | Bootstrap 5 فقط، ووحدة Key مطلوبة، وترحيلات المحتوى، وتوليد الصفحات والصور بالذكاء الاصطناعي. |
لم يتغيّر اسم الآلة بين 1.x و3.x. ويجب ترحيل المحتوى الذي ما زال يحمل وسوم حقبة Glazed على 1.x أو 2.x قبل الترقية؛ فلم يعد 3.x يعيد كتابة اسم Glazed (انظروا أدناه).
المتطلبات قبل أن تبدؤوا
- Drupal 10.2 أو أحدث، أو Drupal 11
(
core_version_requirementفيdxpr_builder.info.yml). - وحدة Key. وهي اعتماد صلب في 3.x؛
تثبّتها
dxpr_builder_update_9020()إذا وجدهاdrush updatedbمفقودة. - مفتاح منتج صادر لـ DXPR Builder 2.0.0 أو
أحدث. يرفض نموذج الإعدادات المفاتيح دون ادعاء
dxpr_tier. - قالب يوفّر Bootstrap 5، أو خيار التحميل لـ Bootstrap 5. لم يعد تحميل Bootstrap 3 و4 موجودًا.
خطوات الترحيل
-
انسخوا قاعدة البيانات والملفات احتياطيًا:
drush sql:dump --result-file=backup.sql -
حدّثوا الشيفرة باستخدام Composer. يُنشر 3.x حاليًا كإصدارات مسبقة، فاسمحوا بها:
composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies -
شغّلوا خطافات التحديث وأعيدوا بناء ذواكر التخزين المؤقت:
drush updatedb drush cache:rebuildتعالج عدة خطافات 3.x كل قيمة حقل DXPR Builder دفعاتٍ (انظروا أدناه). وعلى المواقع الكبيرة تستغرق دقائق، لا ثواني.
-
افتحوا
/admin/dxpr_studio/dxpr_builder/settingsوتحققوا من قسم الترخيص. فبعد التحديث 9020 تكون طريقة التخزين وحدة Key ويكون المفتاحDXPR Builder JWT(dxpr_builder_jwt). -
تحققوا من تحميل ملفات Bootstrap في الصفحة نفسها. فالمواقع التي كان Bootstrap 3 أو 4 محددًا فيها أصبحت الآن على Bootstrap 5.
-
افتحوا
/admin/dxpr_studio/dxpr_builder/ai_settingsوقرّروا ما إذا كانت مفاتيح الذكاء الاصطناعي الثلاثة، المفعّلة افتراضيًا، يجب أن تبقى مفعّلة. -
زوروا الصفحات التي تستخدم DXPR Builder وتأكدوا من عرضها وتحريرها بشكل صحيح.
ما تفعله خطافات التحديث
شُحنت الخطافات المرقمة 8005 إلى 8025 في 1.x.
ويشغّل موقع 1.x كل شيء من 8026 فصاعدًا؛
ويشغّل موقع 2.8.0 أو 2.8.1 الخطاف 8040 و9014
فصاعدًا. وأسماء الدوال
dxpr_builder_update_NNNN().
أُضيفت في 2.x (تُشغَّل عند القدوم من 1.x)
| الخطاف | ما يفعله |
|---|---|
| 8026 | يحدّث تخزين مستخدمي DXPR Builder المركزي. |
| 8027 | يضيف كتلة معلومات الترخيص وعمود «DXPR Builder User» إلى View الأشخاص. |
| 8028 | ينشئ جدول dxpr_lock لقفل المحتوى. |
| 8029 | يضيف كتلة التراخيص إلى لوحة تراخيص المستخدمين. |
| 8030 | يبدّل إعداد Bootstrap بعد إزالة خيار «Bootstrap 3 Light». |
| 8031 | يُفعّل كتلة معلومات الترخيص حيث ثُبّتت معطّلة. |
| 8032 | يزيل المستخدمين المحظورين من تخزين الترخيص. |
| 8033 | يهيّئ drm_last_contact. |
| 8034 | يثبّت حقل المستخدم dxpr_user_is_disavowed وإجراءَي الإقرار والتنصل للمستخدم. |
| 8035 | يهيّئ إعداد hide_reminders. |
| 8036 | يرحّل أسماء أزرار شريط أدوات CKEditor 4 في الملفات التعريفية إلى CKEditor 5. |
| 8037 | يضيف نمط صورة افتراضيًا للصور سريعة التحميل. |
| 8038 | يمسح ذواكر التخزين المؤقت لتسجيل خدمات تكامل وحدة Key. |
| 8039 | يصلح أنماط الصور ذات الإعدادات image_scale_and_crop غير المكتملة. |
| 9007 | ينشئ مفردات ai_tone_of_voice وai_agent_commands بمصطلحات افتراضية. |
| 9008 | يضبط ai_enabled على true ويزيل المفتاح القديم ai_page_enabled. |
| 9009 | ينقل drm_last_contact من الإعدادات إلى الحالة. |
| 9010 | يمسح ذواكر التخزين المؤقت. |
| 9011 | يُفعّل زرّي AI Assistant وAI Tone of Voice في كل ملف تعريفي. |
| 9012 | يستعيد ai_page_enabled بالقيمة الافتراضية true. |
| 9013 | يضبط افتراضيات ترشيح مخرجات الذكاء الاصطناعي (ai_output_allowed_domains). |
| 9015 | يضيف ai_image_enabled بالقيمة الافتراضية true. |
أُضيفت في 3.x (تُشغَّل عند القدوم من 1.x أو 2.x)
| الخطاف | ما يفعله |
|---|---|
| 8040 | يوحّد bootstrap إلى bs5؛ وتُعاد كتابة القيمتين 1 (Bootstrap 3) وbs4. |
| 9014 | دفعة: يحوّل وسوم Owl Carousel في المحتوى إلى معرض Bootstrap (src/Migration/OwlCarouselMigration.php). |
| 9016 | يضيف ai_user_model_selection بالقيمة الافتراضية true. |
| 9017 | دفعة: يحوّل عدّادات circliful الدائرية إلى وسوم تقدم Bootstrap (CircleCounterMigration.php). |
| 9018 | دفعة: يحوّل وسوم شريط التقدم القديمة إلى بنية تقدم Bootstrap (ProgressBarMigration.php). |
| 9020 | يثبّت وحدة Key، وينقل json_web_token إلى كيان Key dxpr_builder_jwt، ويضبط api_key_storage على key ويمسح قيمة النص الصريح. |
| 9021 | يملأ بأثر رجعي خاصية type لقوالب المستخدم من وسومها. |
| 9022 | دفعة: يضيف data-entity-type وdata-entity-uuid إلى روابط /node/N الداخلية (EntityLinkMigration.php). |
| 9023 | دفعة: يصلح تنسيق النص والملخص وقيم الدلتا المحذوفة التي فقدها التحديث 9022 على حقول text_with_summary. |
| 9024 | دفعة: يُثري الروابط الداخلية ذات الأسماء المستعارة بالطريقة نفسها كما في 9022 (AliasLinkMigration.php). |
| 9025 | يمسح tone_of_voice_vocabulary عندما يشير إلى مفردات لم تعد موجودة. |
| 9026 | يمسح json_web_token المحفوظ كنص صريح والمتروك في الإعدادات عندما يكون المفتاح في كيان Key. |
لا يوجد تحديث 9019.
ترحيلات المحتوى
يشغّل 3.x ترحيلات المحتوى دفعاتٍ فقط؛ ولم يعد هناك تحويل وقت العرض. وتسرد صفحة حالة الترحيل (/admin/dxpr_studio/dxpr_builder/migration-status) وتقرير الحالة المحتوى المعلّق. وترحّله خطافات التحديث أعلاه، وكذلك إجراءا التشغيل الآن وتشغيل كل الترحيلات المعلّقة على تلك الصفحة. والترحيلات خدمات موسومة بـ dxpr_builder.content_migration (dxpr_builder.services.yml). والدفعة التي تسجّل إخفاقات لا تُعلَّم مكتملة؛ فتُسجَّل العناصر الفاشلة وتبقى معلّقة.
أُزيلت إعادة كتابة السلسلة glazed_to_dxpr التي طبّقها 1.x و2.x وقت العرض. أُسقط اسم Glazed مع 1.0.0 في مايو 2020 ويُفترض أن كل محتوى حقبتَي Glazed وCarbide رُحّل بتلك الإصدارات. وكانت إعادة الكتابة مجرّد استبدال سلسلة. فعلى المواقع التي يذكر محتواها Glazed فقط (مقالات الدعم وروابط التوثيق)، كانت ستعيد كتابة النثر وتكسر الروابط بدل ترحيل الوسوم. والمواقع التي ما زالت تحمل أسماء فئات Glazed في محتوى مخزّن يجب أن تشغّل إصدار 2.x أولًا.
تغييرات الشيفرة المخصصة
منسّق الحقل
معرّف منسّق الحقل هو dxpr_builder_text (التسمية «DXPR Builder»، وsrc/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php)، دون تغيير منذ 1.x. وله إعداد واحد، profile، فارغ للافتراضي حسب الدور أو معرّف ملف تعريفي. تحققوا من أن كل حقل منشئ ما زال يستخدم هذا المنسّق في إعدادات عرضه؛ ويقتصر إصلاح التحديث 9023 على الحقول التي تفعله.
الخطافات
dxpr_builder.api.php توثّق خطافات 3.x. أعيدوا تسمية خطافات Glazed Builder كما يلي:
| خطاف Glazed Builder | خطاف DXPR Builder 3.x |
|---|---|
hook_glazed_builder_classes() |
hook_dxpr_builder_classes_alter(array &$dxpr_builder_classes) |
hook_glazed_builder_buttons_folders() |
hook_dxpr_builder_element_buttons_folders_alter(array &$dxpr_element_buttons_folders) |
hook_glazed_builder_elements_folders() |
أُزيل؛ لا خطاف بديل. |
| لا شيء | hook_dxpr_builder_icon_sets_alter(array &$icon_sets)، جديد. تُعلَن مجموعات الأيقونات في ملفات MODULE.dxpr_icon_sets.yml. |
CSS وفئات الأدوات
يجب أن تستخدم CSS المخصصة التي تستهدف أسماء فئات Glazed أسماء DXPR، مثل dxpr-theme-util وpanel-dxpr وdxpr-builder. وتُوفَّر فئات الأدوات المعروضة في المحرر عبر hook_dxpr_builder_classes_alter().
الإعدادات والنشر
- أزيلوا
json_web_tokenمن أي إعدادات مُسلَّمة؛ فبعد التحديث 9020 يكون المفتاح في كيان Keydxpr_builder_jwt. ويستخدم ذلك المفتاح موفّر الإعدادات، فيُصدَّر المفتاح كـkey.key.dxpr_builder_jwt. بدّلوه إلى موفّر الملف أو البيئة في/admin/config/system/keysلإبعاده عن الصادرات. - تشمل صادرات الإعدادات الآن مفردتَي الذكاء الاصطناعي ومصطلحاتهما.
- تصدّر الملفات التعريفية أسماء أزرار CKEditor 5 في
inline_buttonsوmodal_buttons.
استكشاف الأخطاء وإصلاحها
إذا لم يُعرض المحتوى بشكل صحيح بعد التحديث:
- شغّلوا
drush cache:rebuild. - تحققوا من
/admin/reports/dblogلرسائل من قناةdxpr_builder؛ فترحيلات الدفعات تسجّل العناصر التي تتخطاها. - تأكدوا من أن إعدادات عرض كل حقل منشئ ما زالت تستخدم منسّق DXPR Builder.
- تأكدوا من أن القالب يحمّل Bootstrap 5، أو فعّلوا التحميل في
/admin/dxpr_studio/dxpr_builder/settings.

ما الخطوة التالية؟
- التحديث: تحديثات روتينية ضمن سلسلة
- سجل التغييرات: ما غيّره كل إصدار
- مرجع الإعدادات: كل مفتاح تمسه خطافات التحديث