قسم الرسائل لشريط التنقل الجانبي

:information_source: الملخص يضيف روابط صندوق الوارد للرسائل الشخصية والجماعية إلى الشريط الجانبي، بما في ذلك مؤشرات الرسائل غير المقروءة
:eyeglasses: المعاينة Theme Creator
:hammer_and_wrench: المستودع GitHub - moin-Jana/sidebar-messages-section: Adds personal and group message inbox links to the sidebar, including unread message indicators.
:question: دليل التثبيت كيفية تثبيت سمة أو مكون سمة
:open_book: جديد في سمات Discourse؟ دليل المبتدئين لاستخدام سمات Discourse

تثبيت مكون السمة هذا

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

صندوق الوارد الشخصي

بشكل افتراضي، يضيف المكون رابطًا إلى صندوق الوارد الشخصي لجميع المستخدمين. باستخدام الإعداد show_personal_inbox، يمكن للمسؤولين أيضًا إخفاءه تمامًا أو إظهاره فقط للمستخدمين المسموح لهم بإنشاء رسائل خاصة بناءً على إعداد الموقع Personal message enabled groups. يعكس هذا كيفية ظهور رابط صندوق الوارد الشخصي في قائمة الإشعارات، وملف تعريف المستخدم، وقسم المجتمع في الشريط الجانبي.

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

صناديق الوارد الجماعية

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

يسمح إعداد منفصل، use_group_page_inbox، لك باختيار ما إذا كانت روابط صندوق الوارد الجماعي ستفتح في واجهة رسائل المستخدم (/my/messages/group/{group_name}) أو في صفحة المجموعة (/g/{group_name}/messages/inbox).

مؤشر غير مقروء

يعرض كل رابط صندوق وارد حالة الرسالة الحالية بناءً على تفضيل المستخدم لـ “إظهار عدد العناصر الجديدة”: إما نقطة أو العدد الرقمي. يتم عرض القيم التي تزيد عن 100 على أنها 99+.

تكوين صندوق الوارد الجماعي المتقدم

لتخصيص ترتيب صناديق الوارد الجماعية أو تغيير الاسم المعروض في الشريط الجانبي، يمكنك استخدام الإعداد advanced_group_inbox_configuration.

في هذا الإعداد يمكنك:

  • اختيار مجموعة من قائمة منسدلة
  • اختياريًا تحديد اسم مخصص سيتم عرضه في الشريط الجانبي
  • إعادة ترتيب المجموعات المكونة باستخدام الأزرار الموجودة في الأسفل

الاسم المخصص مفيد أيضًا داخل الإعداد نفسه.
إذا لم يتم توفير اسم، سيتم تسمية الإدخال باسم group 1، group 2، إلخ (بناءً على موضعه). يمكن أن يجعل إضافة اسم مؤقت عملية إعادة الترتيب أسهل، ويمكنك إزالته مرة أخرى قبل الحفظ إذا أردت.

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

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

يمكنك رؤية مثال للتكوين وكيف يؤثر على الترتيب والأسماء المعروضة في لقطات الشاشة أدناه:


موضع قسم الرسائل

لتغيير موضع قسم الرسائل، يمكنك إما استخدام CSS، على سبيل المثال

بدلاً من ذلك، يمكنك تثبيت مكون Navigation (sidebar) menu display control الذي يتضمن إعدادًا لتغيير ترتيب الأقسام في الشريط الجانبي. استخدم inbox-section كاسم للقسم عند تعديل موضعه.

15 إعجابًا

رائع، أحسنت يا موين! :clap: :tada:

4 إعجابات

اقتراح بسيط: ربما يجب أن يكون الملف javascripts/discourse/api-initializers/group-inboxes-in-sidebar.gjs ملف JS بدلاً من GJS؟

مكون رائع!


لقد أمضيت الدقائق العشر الماضية في تصفح الكود وفحص الفئات الأساسية ويجب أن أقول كم هو مذهل أن Discourse تم تصميمه (وما زال) بحيث يتناسب كل شيء بشكل جيد للغاية.

إعجابَين (2)

نعم، توفر واجهة برمجة التطبيقات (API) كل ما تحتاجه تقريبًا لجعل القسم يبدو ويعمل مثل جميع الأقسام الأخرى. يستخدمه الدردشة أيضًا، مما أثر على الأرجح على التطوير. تم تطوير الميزات في نفس الوقت.
لسوء الحظ، لا يتم دعم get badgeText()، الذي يعرض عدد المواضيع غير المقروءة في الأقسام الأساسية، لذلك اضطررت إلى أن أكون مبدعًا بعض الشيء مع الأرقام.

4 إعجابات

لم أتمكن من العثور على إعداد مسؤول لهذا، لذا هذا إعلان عام (PSA) سيخفيه عبر CSS:

.sidebar-section-link[data-link-name="my-messages"] {
    display: none;
}
إعجابَين (2)

لماذا تفضل إخفاء الرابط باستخدام CSS بدلاً من استخدام الخيار الحالي للمسؤولين لتخصيص الشريط الجانبي؟ يبدو أن الإخفاء باستخدام CSS أكثر عرضة للتعطل من استخدام خيارات Discourse المضمنة.

إعجابَين (2)

ديرب، أنت على حق. كنت أُفرط في التفكير، معتقدًا أنها ستكون إعدادًا في وحدة التحكم الإدارية و/أو وظيفة أساسية.

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

لست الوحيد الذي كان يبحث هناك. :joy:


هذا مكون رائع!

إعجابَين (2)

لقد قمت بتوسيع الملاحظة:

5 إعجابات

نعم فعلت. ولكن بصفتنا مسؤولين، غالبًا ما نعتاد على المرور عبر لوحة المسؤول. :wink:. لذلك عند تصفح التعليمات، قد نتغاضى عن بعض التفاصيل.

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

منذ زمن بعيد مع نظام أندرويد على سبيل المثال، إذا كنت أتذكر، كان Gingerbread يحتوي على Nav (التنقل) و Maps (الخرائط). قضيت حوالي 10 دقائق في البحث عن Nav بعد أن دمجوه مع Maps في تحديث. :joy:

هذا مكون سمة رائع يناسب المواقع التي تعتمد بشكل كبير على الرسائل! شكرًا لـ @moin على عملك الممتاز!

لجعله أفضل لأولئك الذين يستخدمون المجموعات كثيرًا (الرسائل هي مكون كبير في ذلك)، هل تمانع في النظر في هذه الاقتراحات؟

موضع قابل للتحديد في الشريط الجانبي

للتأكيد على الرسائل بشكل أكبر في واجهة المستخدم، أود أن تكون في الجزء العلوي من الشريط الجانبي (أي مباشرة تحت الروابط). في الأساس، أريد أن يتمكن الأشخاص من رؤية رسائلهم الأخيرة (لكل مجموعة) بسهولة في لمحة دون الاعتماد على الإشعارات.

لقد استخدمت CSS هذا لتحقيق ذلك، لكنني أشك في أنني لست الوحيد الذي سيكون هذا مفيدًا له:

/* تأكد من ظهور قسم الرسائل أولاً في حاوية flexbox */
.sidebar-section-wrapper {
  order: 1;
}
.sidebar-section-wrapper[data-section-name="inbox-section"] {
  order: 0;
}

افتح صناديق البريد الوارد للمجموعات في سياق المجموعة

أريد أن يتمكن المستخدمون من العثور بسهولة على مجموعاتهم والتفاعل معها. من المنطقي بالنسبة لي أن يعملوا مع الرسائل في صندوق الوارد الذي يتم الوصول إليه من صفحة المجموعة (أي /g/the-group/messages/inbox) بدلاً من صفحة صندوق الوارد الشخصي الخاصة بهم (أي /my/messages/group/the-group)

هذا يمنحهم صفحة نظيفة تتمحور حول المجموعة، مع سهولة الوصول إلى أعضاء المجموعة والإعدادات الأخرى:

سيكون من الرائع أن يتم تنظيم هذا بواسطة إعداد في مكون السمة (TC).

3 إعجابات

لقد فكرت في هذا، حول أي مسار هو الإعداد الافتراضي الأفضل وإعداد، لكنني أزلته لسبب لا أتذكره الآن. سألقي نظرة غدًا لاحقًا. أعتقد أن الأمر كان يتعلق بمؤشر الرسائل غير المقروءة. هل ستفضل هذا المسار حتى لو كانت النتيجة هي عدم وجود مؤشر للرسائل غير المقروءة؟

أعتقد أن الموضع الحالي هو نفسه قسم الرسائل الذي كان في النواة.
يوجد بالفعل مكون رائع حول تغيير ترتيب الأقسام في الشريط الجانبي: Navigation (sidebar) menu display control
لتجنب التعارضات لأن كلا المكونين يحاولان تجاوز الترتيب، قد يكون من المنطقي أن يستخدم المسؤولون الذين يريدون ترتيبًا مختلفًا المكون الحالي (أكد المؤلف أنه يعمل باستخدام “inbox-section” كاسم للقسم).
سيتعين علي أن أرى ما إذا كان بإمكاني تقديم إعداد إضافي لهذا. على أي حال، أريد تجنب تداخل المكونات مع بعضها البعض.

إعجابَين (2)

لقد كنت أعبث بهذا في شوكتي، ووجدت الشيء نفسه. إنه يعمل، ولكنه يفقد كلاً من مؤشر الرسائل غير المقروءة وتمييز الرابط في الشريط الجانبي. كلا الأمرين لهما قيمة عالية بالفعل!

لقد قمت بطلب سحب (PR) لما وصلت إليه:

ولكن لكي ينجح الأمر حقًا، فإنه يحتاج حقًا إلى عمل مؤشر الرسائل غير المقروءة وتمييز الرابط، أليس كذلك؟

نقطة جيدة! هذه فكرة أفضل بكثير. ويا للخزي، أنا في الواقع أحد مؤلفي TC هذا!

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

لماذا استخدمت href بدلاً من route؟ أعتقد أن href لم يعمل مع مؤشرات عدم القراءة على الإطلاق. كنت أكثر قلقًا بشأن أن الأرقام الموجودة على المسار group.messages.inbox لم تكن متاحة بالطريقة التي يمكنك بها استخدامها في userPrivateMessages.

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

لأنني مطور سيئ، وجربت الكثير من الأشياء حتى استقر شيء ما! ربما يرجع ذلك أيضًا إلى اعتمادي غير الصحي على الذكاء الاصطناعي التوليدي غير الذكي جدًا :wink:.

لقد حاولت استخدام المسارات (routes)، لكنني لم أتمكن فعليًا من جعلها تتجاوز المسارات الموجودة. لذلك استسلمت.

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

لا تتردد في “تحسينه”!

(بالمناسبة، قام @moin الرائع بذلك بالضبط، حيث أضاف الوظيفة - مما جعلها تعمل بشكل صحيح!)

إعجابَين (2)

هذا يعمل بشكل جيد بالفعل. ومن المثير للإحراج بعض الشيء، أنني أحد مؤلفي هذا المكون الإضافي (ثانوي جدًا لـ @lilly) :flushed_face:!

سيكون من الرائع وجود هذا في المنشور الأصلي (OP).

إعجابَين (2)

طلب @nathank خيارًا لتغيير ترتيب صناديق البريد الواردة للمجموعات في الشريط الجانبي. لقد طلبت سابقًا أفكارًا حول أفضل طريقة للتعامل مع هذا في https://meta.discourse.org/t/configuring-the-order-of-groups-in-theme-component-settings/391101، وأعتقد أنني توصلت الآن إلى حل.
لقد جمعت هذا مع طلب عرض الاسم الكامل للمجموعة بدلاً من اسمها المختصر. نظرًا لأن الاسم الكامل ليس متاحًا بسهولة في هذا السياق، فإن الحل هو السماح للمسؤولين بتعريف “اسم عرض مخصص” بدلاً من ذلك. الحقل الذي كان سيُستخدم سابقًا فقط لعرض اسم المجموعة في الإعدادات يُستخدم الآن أيضًا للتحكم في الاسم المعروض في الشريط الجانبي.

يتم التعامل مع كلتا الميزتين عبر الإعداد الجديد advanced_group_inbox_configuration.

في هذا الإعداد، يمكنك:

  • تحديد مجموعة من قائمة منسدلة
  • تحديد اسم مخصص اختياري سيتم عرضه في الشريط الجانبي
  • إعادة ترتيب المجموعات المكونة باستخدام الأزرار الموجودة في الأسفل

الاسم المخصص مفيد أيضًا داخل الإعداد نفسه.
إذا لم يتم توفير اسم، سيتم تسمية الإدخال باسم group 1، group 2، وما إلى ذلك (بناءً على موضعه). يمكن أن يجعل إضافة اسم مؤقت عملية إعادة الترتيب أسهل، ويمكنك إزالته مرة أخرى قبل الحفظ إذا أردت.

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


في هذا المثال، لم يتم إدخال اسم مخصص لمجموعة المشرفين، ولهذا السبب تظهر باسم group 1 في التكوين. المجموعات الأخرى لها أسماء مخصصة.

ينتج عن هذا التكوين:


هنا يمكنك أن ترى أن صناديق البريد الواردة ‘doggo-daily’ و ‘cat_pics’ قد تبادلت المواقع وتظهر بدون واصلات أو شرطات سفلية. يظهر صندوق البريد الوارد ‘Team’ أسفل تلك المكونة في الإعداد المتقدم.
يمكنك أيضًا رؤية تحذير خاص بالمسؤول فقط، يظهر لأن مجموعة ‘admin’ تمت إضافتها إلى التكوين المتقدم وإلى الإعداد hide_group_inboxes في نفس الوقت.

4 إعجابات

هذا رائع ببساطة لأولئك الذين يستخدمون المجموعات للتواصل. عمل رائع، @Moin!

شكرًا لك على الاستماع إلى آراء الآخرين (وأنا) والتفاعل معها بنشاط - وإنتاج مكون سمة مصمم جيدًا وعملي يحل مشكلة طويلة الأمد بأناقة.

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