هناك بعض الأمور الغريبة التي تحدث من منظور تجربة المستخدم (UX) عندما يتم تعطيل جميع رسائل البريد الإلكتروني. أعتبر هذه أخطاءً.
- الجميع، بما في ذلك الأشخاص غير الموظفين، يتلقون رسالة تفيد بأن النظام لا يرسل رسائل بريد إلكتروني. يبدو أنه لا توجد طريقة لإسكات هذا الإشعار. لا أستطيع أن أتخيل سببًا لاستمرار تنبيه المستخدمين بهذا الأمر. ربما يكون من المقبول إظهار هذا الإشعار للموظفين أو المدراء فقط. ربما كان هذا قرارًا واعيًا في وقت ما، لكنني لم أستطع العثور على مناقشة حوله.
if (
this.siteSettings.disable_emails === "yes" ||
this.siteSettings.disable_emails === "non-staff"
) {
notices.push(
Notice.create({
text: I18n.t("emails_are_disabled"), // "All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent."
id: "alert-emails-disabled",
})
);
}
أعتقد أنه يجب تعديل الشرط ليصبح:
if (
this.get("currentUser.staff") && // أو currentUser.admin
(this.siteSettings.disable_emails === "yes" ||
this.siteSettings.disable_emails === "non-staff")
) {
…
أو على الأقل إضافة إعداد لتحديد من يتلقى هذا الإشعار (مثل: الجميع/الموظفين/المدراء/لا أحد).
أيضًا، في هذا الإصلاح: https://github.com/discourse/discourse/commit/acc121fd27e53fb70c888b58939027fbefba9c6f، يبدو أن الفكرة كانت أن إشعار تعطيل البريد الإلكتروني يجب أن يظهر فقط للموظفين، لكن الاختبارات https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/tests/acceptance/email-notice-test.js#L24 تؤكد أن الجميع يرى الإشعار.
ملاحظة ثانوية: أجد أن جميع الاختبارات بصيغة test("when … مربكة بعض الشيء. على سبيل المثال: الاختبار المسمى “When enabled” يفحص فعليًا قيمة disable_emails = "yes"، وهو ما، رغم أنني أفهم أن الاختبارات تهدف إلى فحص تغيير الإعدادات، إلا أنه في الواقع يفحص حالة تعطيل البريد الإلكتروني، والعكس صحيح حيث يفحص الاختبار المسمى “When disabled” حالة تفعيل البريد الإلكتروني. أعتقد أن التسميات تشير إلى القيم المحددة أكثر من التأثير النهائي، وهو ما قد يكون العرف المتبع في المشروع. وفي هذه الحالة، لا بأس بذلك. لكن يبدو غريبًا من منظور شخص جديد.
- سواء تم تعيين
disable_emailsإلى “yes” أو “non-staff”، فإن قسم البريد الإلكتروني لا يزال يظهر في صفحة تفضيلات المستخدم للجميع. وهذا غريب لأن القالب يحتوي على فحوصات لتعطيل أجزاء منه عند تعطيل الملخصات أو القوائم البريدية.
كما ترون، لا يوجد فحص هنا: https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/templates/preferences.hbs#L18
<li class="nav-emails">
{{#link-to "preferences.emails"}}
{{i18n "user.preferences_nav.emails"}}
{{/link-to}}
</li>
في نسختي، لدي شيء من هذا القبيل: (لا أعرف إذا كان هذا هو الأسلوب الذي تتبعونه، بالمناسبة) أنا منفتح على الاقتراحات ![]()
{{#if (show-emails-preferences model siteSettings.disable_emails)}}
<li class="nav-emails">
{{#link-to "preferences.emails"}}
{{i18n "user.preferences_nav.emails"}}
{{/link-to}}
</li>
{{/if}}
حيث يتم تعريف show-emails-preferences في دالة مساعدة (helper) على النحو التالي:
registerUnbound("show-emails-preferences", (model, disable_emails, args) => {
let result = true;
if(disable_emails === 'yes'){
result = false;
}else if(disable_emails === 'non-staff'){
result = model.staff ? true : false;
}else{
result = true;
}
return result;
});
أخبرني إذا كان أي من هذه الاقتراحات يبدو تحسينًا يستحق العمل عليه، وسأقوم بإنشاء طلب دمج (PR).
تحياتي