هذه مسودة، وقد تحتاج إلى بعض العمل الإضافي.
المفردات
- trigger: يمثل اسم المشغل، على سبيل المثال:
user_added_to_group - triggerable: يمثل منطق الكود المرتبط بالمشغل، على سبيل المثال:
triggers/user_added_to_group_.rb - script: يمثل اسم النص البرمجي، على سبيل المثال:
send_pms - scriptable: يمثل منطق الكود المرتبط بالنص البرمجي، على سبيل المثال:
scripts/send_pms.rb
واجهة برمجة تطبيقات المكون الإضافي (Plugin API)
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
واجهة برمجة تطبيقات النص البرمجي (Scriptable API)
حقل (field)
field :name, component: يتيح لك إضافة قيمة قابلة للتخصيص في واجهة المستخدم الخاصة بالأتمتة الخاصة بك.
قائمة المكونات الصالحة:
# foo يجب أن يكون فريدًا ويمثل اسم الحقل الخاص بك.
field :foo, component: :text # ينشئ حقل إدخال نصي
field :foo, component: :list # ينشئ حقل إدخال نصي متعدد التحديدات حيث يمكن للمستخدمين إدخال القيم
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # ينشئ مربع تحكم مع محتوى مخصص
field :foo, component: :boolean # ينشئ مربع اختيار
field :foo, component: :category # ينشئ منتقي فئات
field :foo, component: :group # ينشئ منتقي مجموعات
field :foo, component: :date_time # ينشئ منتقي تاريخ ووقت
field :foo, component: :tags # ينشئ منتقي علامات
field :foo, component: :user # ينشئ منتقي مستخدمين
field :foo, component: :pms # يسمح بإنشاء قالب رسالة خاصة واحدة أو أكثر
field :foo, component: :categories # يسمح بتحديد صفر أو أكثر من الفئات
field :foo, component: :key-value # يسمح بإنشاء أزواج مفتاح-قيمة
field :foo, component: :message # يسمح بإنشاء رسالة خاصة مع متغيرات قابلة للاستبدال
field :foo, component: :trustlevel # يسمح بتحديد مستوى ثقة واحد أو أكثر
المشغلات (triggerables) والمشغل! (triggerable!)
# يتيح لك تحديد قائمة المشغلات المسموح بها لنص برمجي
triggerables %i[recurring]
# يتيح لك فرض مشغل لنصك البرمجي ويتيح لك أيضًا فرض بعض الحالات على الحقول
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
العناصر النائبة (placeholders)
# يتيح لك تمييز مفتاح كقابل للاستبدال في النصوص باستخدام صيغة العنصر النائب `%%sender%%`
placeholder :sender
لاحظ أن مسؤولية النص البرمجي هي توفير قيم للعناصر النائبة وتطبيق الاستبدال باستخدام input = utils.apply_placeholders(input, { sender: 'bob' })
النص البرمجي (script)
هذا هو جوهر الأتمتة وحيث تحدث كل المنطق.
# يتم إرسال السياق عند تشغيل الأتمتة، ويمكن أن يختلف كثيرًا بين المشغلات
script do |context, fields, automation|
end
التوطين (Localization)
كل حقل ستستخدمه سيعتمد على مفاتيح i18n وسيتم تقسيمه حسب اسم المشغل/النص البرمجي.
على سبيل المثال، نص برمجي بهذه المحتويات:
field :post_created_edited, component: :category
سيتطلب المفاتيح التالية في client.en.yml:
en:
js:
discourse_automation:
scriptables:
post_created_edited:
fields:
restricted_category:
label: Category
description: Optional, allows to limit trigger execution to this category
لاحظ أن الوصف اختياري هنا.
هذه الوثيقة تخضع للتحكم في الإصدار - اقترح تغييرات على github.