أنواع الكائنات لإعداد السمة

الراوي: “لم يتم إنجازه ذلك الأسبوع.” :upside_down_face:

إعجابَين (2)

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

4 إعجابات

هل سيتم إدراج هذا في قائمة شخص ما في أي وقت قريب؟

أيضًا، من المروع جدًا أن جميعها تحمل اسم “field_name-X”. هل سيكون من الممكن وجود اسم حقل يمكن استخدامه هناك؟ الاضطرار إلى النقر على كل واحد منها لمعرفة ما هو موجود هو كابوس إذا كان لديك أكثر من عدد قليل من الكائنات.

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

إعجابَين (2)

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

يتم تعيين حقل الاسم كمعرف لكل رابط، حتى تتمكن من رؤية أي رابط هو أي رابط

إعجابَين (2)

رائع. اعتقدت أنني قد أغفلت ذلك ولكني لم أتمكن من العثور عليه من قبل. شكرًا!

تحرير: والآن استخدمت خاصية identifier وأضفت حقلاً ‘order’، لذلك ليس الأمر سيئًا للغاية. ما زلت أعتقد أن القدرة على إعادة ترتيب الإعدادات ستكون لطيفة، وهي متاحة مع المصفوفات. . .

شكرًا مرة أخرى على مساعدتك.

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

لقد قمت بعمل التزام منذ فترة يضيف إعادة ترتيب للكائنات. إليك إعداد اختبار صغير لإظهار الأزرار:

10 إعجابات

أعتقد أنه من المفيد الإعلان عن أننا حصلنا الآن على uploads كخيار لنوع الحقل، وأعتقد أنه تم ذكره في مكان ما، ولكن من الجيد ذكره مرة أخرى أن type: objects يعمل في إعدادات السمة وإعدادات الموقع (الإضافات).

10 إعجابات

الصحيح هو upload

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

شكرًا لك! سيتم الإصلاح في

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

هل يدعم نوع الكائن (objects) حدًا أقصى (max)؟ لقد جربته، ويبدو أنه لا يعمل.

هل تقصد ذلك لحقل من نوع string في شجرة الكائنات؟
جرب max_length

راجع #التحقق من صحة أنواع string في هذا الموضوع؛ أو مثال عملي:

أعتقد أنه يشير إلى:

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

نعم، أعني تحديد الحد الأقصى لعدد العناصر في مصفوفة objects.

حاليًا، لا يدعم النظام الرسمي هذه الميزة، لذا قمت بتوسيع الوظيفة المقابلة في مكون موضوع خاص مخصص، مع الإعدادات التالية (للاستشارة فقط):

إعداد تحديد الحد الأقصى لعدد العناصر في المصفوفة:

themes/quectel-custom-homepage/settings.yml

banner_images:
  type: objects
  default: []
  schema:
    name: "صور الشريط الإعلاني"
    max: 9 // إعداد توسيعي جديد، يحدد الحد الأقصى لعدد العناصر في المصفوفة
    identifier: image_url
    properties:
      image_url:
        type: upload
        required: true
      link_url:
        type: string
        min: 0
        max: 1023

الكود المحدد للتوسيع:

themes/quectel-custom-homepage/javascripts/discourse/api-initializers/quectel-custom-homepage.gjs

import { action } from "@ember/object";
import { apiInitializer } from "discourse/lib/api";
import classPrepend from "discourse/lib/class-prepend";
import { i18n } from "discourse-i18n";

export default apiInitializer(() => {
  // استخدام classPrepend لتوسيع مكون SchemaSettingNewEditor لدعم حد max لنوع objects
  // يتم تحميل هذا المكون فقط في سياق المشرفين
  let SchemaSettingNewEditor;
  try {
    SchemaSettingNewEditor =
      require("discourse/admin/components/schema-setting/editor").default;
  } catch {
    // لا يمكن للمستخدمين غير المشرفين تحميل هذا المكون، تخطي التوسيع
    return;
  }

  classPrepend(SchemaSettingNewEditor, (Superclass) => {
    return class extends Superclass {
      @action
      addItem() {
        // التحقق مما إذا تم الوصول إلى حد max
        const maxLimit = this.args.setting.max || this.activeSchema?.max;

        if (maxLimit && this.activeData.length >= maxLimit) {
          this.validationErrorMessage = i18n(
            themePrefix("theme_settings.errors.objects_value_not_valid_max"),
            {
              count: maxLimit,
            }
          );
          return;
        }

        return super.addItem(...arguments);
      }

      @action
      addChildItem(propertyName, parentNodeIndex) {
        const propertySchema = this.activeSchema.properties[propertyName];

        // التحقق مما إذا تم الوصول إلى حد max
        if (
          propertySchema?.max &&
          this.activeData[parentNodeIndex][propertyName].length >=
            propertySchema.max
        ) {
          this.validationErrorMessage = i18n(
            themePrefix("theme_settings.errors.objects_value_not_valid_max"),
            {
              count: propertySchema.max,
            }
          );
          return;
        }

        return super.addChildItem(...arguments);
      }
    };
  });
});

إعدادات ترجمة الموضوع:

themes/quectel-custom-homepage/locales/zh_CN.yml

zh_CN:
  theme_settings:
    errors:
      objects_value_not_valid_max: "لا يمكن أن يتجاوز العدد %{count} عنصرًا"

النتيجة المحددة:

  1. رسالة الخطأ
  2. عدم القدرة على إضافة المزيد
إعجاب واحد (1)