مرحباً!
لقد قمت بتعديل المكون الإضافي ليناسب احتياجاتي، وأود أن أشارك ما فعلته، وسير عملي الحالي، وبعض الأسئلة/الطلبات للحصول على المشورة.
1. تعديلاتي
مسار الملف والمحتوى:
الملف: app/jobs/scheduled/update-all-titles.rb
# frozen_string_literal: true
module AddTitleBasedOnTrustLevel
class UpdateTitles < ::Jobs::Scheduled
every SiteSetting.update_title_frequency.hours
def execute(args)
group_titles = JSON.parse(SiteSetting.group_trust_level_titles || "{}")
User.find_each do |user|
# تخطي المسؤولين والمشرفين، لا تقم بتحديث ألقابهم
next if user.admin? || user.moderator?
group_id = user.primary_group_id
next unless group_id
group = Group.find_by(id: group_id)
next unless group
group_key = group.name.downcase
tl = user.trust_level
titles = group_titles[group_key]
next unless titles.is_a?(Array)
next unless tl >= 1 && tl <= 4
new_title = titles[tl]
next unless new_title.present?
user.update_column(:title, new_title) if user.title != new_title
end
end
end
end
الملف: config/settings.yml
plugins:
add_title_based_on_trust_level_enabled:
default: false
client: true
group_trust_level_titles:
default: '{"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"], "developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]}'
type: string
client: true
multiline: true
update_title_frequency:
default: 24
type: integer
2. كيف اختبرت
أقوم حاليًا بتشغيل هذا المنطق يدويًا عبر وحدة تحكم Rails للتحقق مما إذا كانت الوظيفة تعمل. إنها تقوم بتحديث ألقاب المستخدمين بشكل جماعي وفقًا لمتطلباتي.
3. مشكلة إدخال إعدادات المكون الإضافي
لا يوجد زر “إعدادات” لهذا المكون الإضافي في صفحة /admin/plugins. في الوقت الحالي، لتغيير التكوين، يتعين عليّ زيارة /admin/plugins/add-title-based-on-trust-level/settings مباشرةً. هل هناك طريقة لجعل زر الإعدادات أو الرابط يظهر في صفحة المكونات الإضافية لسهولة الوصول؟
4. إعداداتي الحالية
هذا هو تكوين JSON الحالي الخاص بي (سأرفق لقطة شاشة أيضًا):
{
"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"],
"developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]
}
5. أسئلة / تحسينات محتملة
- هل هذا النهج (التكرار عبر كل مستخدم وتحديث لقبه) يخاطر بمشاكل الأداء إذا كان هناك الكثير من المستخدمين؟ هل هناك أفضل ممارسة أفضل لهذا؟
- أي نصيحة بشأن التحسين، سواء للوظيفة المجدولة أو لواجهة مستخدم إعدادات المسؤول؟
- هل هناك أي شيء غير آمن أو إشكالي في طريقتي يجب أن أكون حذرًا بشأنه؟
شكراً جزيلاً على عملكم الرائع وهذا المكون الإضافي المفيد!
إذا كانت لديك أي اقتراحات، أو إذا كنت تخطط لتحسين تكوين ألقاب المجموعات + مستويات الثقة في المستقبل، فسأحب أن أسمع أفكارك.

