هل يمكننا حذف جميع الرسائل 'تم تصعيدها تلقائيًا' دفعة واحدة؟

تم البحث قبل النشر:
أحب “الزيادة التلقائية للمواضيع” للحفاظ على تحديث المواضيع. لكنني كنت أتمنى ألا تُعرض للزوار عشرات الرسائل “التي تمت زيادتها تلقائيًا” عند زيارتهم للمواضيع.

هل هناك طريقة لحذفها بشكل دوري، يدويًا أو تلقائيًا (أو كليهما)؟

أسأل هذا لأنني وجدت أنه على مستواي، مهما كانت رغبتي، فقد تم بالفعل الاعتناء بها في الغالب.

مرحباً @Bathinda!
يمكنك النقر يدويًا على أيقونة الحذف، مثل أي منشور آخر:

شكرًا لك، ولكن هذه ليست طريقة عملية لحذف مئات الرسائل المتكررة في مواضيع مختلفة.

لم أتمكن حتى من تحديد جميع الرسائل “المتكررة” في موضوع واحد.

لا توجد ميزة مدمجة لمثل هذا الإجراء المجمع.

يمكنك استخدام نص برمجي لـ Rails لحذف رسائل الترقية التلقائية الموجودة، شيء مثل:

  1. تسجيل الدخول عبر SSH إلى الخادم الخاص بك
  2. cd /var/discourse
  3. ./launcher enter app
  4. rails c
  5. Post.where("action_code = 'autobumped'").destroy_all

:warning: قم دائمًا بعمل نسخة احتياطية أولاً بالطبع، فقط في حالة.

هذا جيد بما فيه الكفاية.
شكرا لك.

هل هناك أمر يمكننا من خلاله أولاً سرد/رؤية كل تلك الرسائل قبل إعطاء أمر “destroy (delete)”؟

أفضل طريقة ستكون القيام بذلك من واجهة Discourse باستخدام Data Explorer:

استخدم الاستعلام التالي:

SELECT * from posts
WHERE action_code = 'autobumped'

آه!! هذا هو الاستعلام الذي سيجعلني سعيدًا. شكرًا لك مرة أخرى.

على الرغم من أن الاستعلام المقترح يُظهر المواضيع التي تحتوي على رسائل “auto-bumped” في جميع المواضيع. لكنه لم يكن مفيدًا للغاية.


إنه يُرجع فقط مئات المواضيع التي تحتوي على آلاف الرسائل “Auto-Bumped”، ولكنه لا يخبرنا بعدد هذه الرسائل الموجودة في كم عدد المواضيع.

لذلك، أعتقد أنني سأضطر في النهاية إلى استخدام الفأس في “الغرف المظلمة” لوحدة تحكم Rails فقط (وهو أمر مخيف بعض الشيء).

أنا قلق بعض الشيء لأن هذا سيؤثر على آلاف المواضيع/المنشورات دفعة واحدة. لو كان هناك زر “تحديد الكل” داخل المواضيع الذي يحدد جميع رسائل الرفع معًا ويمكننا حذف تلك الرسائل بنقرة واحدة داخل أي موضوع. وإذا أراد أي شخص حذف جميع هذه الرسائل في جميع المواضيع بأمر واحد فقط فسيتعين عليه إدخال ‘rails’.

أنا لا أشتكي. أنا فقط أعبر عن نفسي.

هل سيطلب السطر الخامس من أمر rails الذي أخبرتني به أو يطالب بأي شيء قبل حذف كل هذه المشاركات؟ أم أنه سينفذ فقط ما طُلب منه، دون أي تحذير وما إلى ذلك، أو فرصة للاسترداد؟

إذا أمكن، هل يمكننا حذف “رسائل الرفع” من أي موضوع أولاً، بدلاً من الحذف من الموقع بأكمله؟

أيضًا، هل يمكنك من فضلك اقتراح/إخباري بأمر rails لعرض بعض العينات من المشاركات التي سنقوم بحذفها؟

شكرًا.

قد يساعد شيء كهذا في مستكشف البيانات في تقديم نظرة عامة:


SELECT p.topic_id,
       COUNT(p.id) AS count
FROM posts p
WHERE action_code = 'autobumped'
GROUP BY p.topic_id
ORDER BY count DESC

ومع ذلك، سأقدم تحذيرًا بشأن استخدام وحدة تحكم Rails لإجراء تغييرات كهذه على موقع مباشر إذا لم تكن لديك خبرة بها. قد ترغب في إنشاء موقع اختبار والتدرب قبل البدء. :+1:

نعم، لقد حلّت المشكلة قدر ما قدمه المصممون/المطورون.

ولكنني ما زلت أود أن أقول إنه يجب أن يكون هناك أمر “مسؤول” في إعدادات المسؤول أو في الموضوع الذي يتم عرضه، لتحديد جميع “الرسائل المكررة (المُعززة تلقائيًا)” في أي موضوع واحد أو جميع المواضيع ثم إزالتها، كلما رغب المسؤول في ذلك.

ربما يمكنك إخفاء تلك الرسائل باستخدام CSS بدلاً من ذلك؟ للأسف، لا أعتقد أن أداة post-small-action تتضمن حاليًا نوع الإجراء كفئة CSS، لذلك لا يمكنك استهداف رسائل الدفع على وجه التحديد. ربما يمكن لمكون سمة أن يساعد؟

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

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

لم أقم بالكثير مع واجهة برمجة تطبيقات المكونات الإضافية، لكنني رأيت أن هناك طريقة يمكنها إضافة فئات إلى منشورات الإجراءات الصغيرة:

لذلك قمت بإنشاء مكون سمة يتضمن هذا في قسم الرأس (Head):

<script type="text/discourse-plugin" version="1.6.0">
  api.addPostSmallActionClassesCallback(post => {
    return ["small-action-" + post.actionCode]
  });
</script>

… وهذا في قسم CSS:

.small-action.small-action-autobumped {
  display: none;
}

… واختفت رسالة التحديث التلقائي!

لم أقم بأي اختبارات أخرى، لذلك لا أعرف ما إذا كانت ستكون هناك أي آثار جانبية أخرى. من الممكن أن تتعارض فئات small-action-[...] في مكان آخر في التطبيق، وفي هذه الحالة يجب عليك اختيار بادئة مضمونة لتكون فريدة.

لاحظ أنه تم إضافة الدالة addPostSmallActionClassesCallback الشهر الماضي فقط، لذا تحتاج إلى استخدام إصدار حديث جدًا من Discourse:

شكرًا لك.
يرجى توضيح هذه العبارة الأخيرة: في هذه الحالة، يجب عليك اختيار بادئة مضمونة التفرد.

على سبيل المثال، يمكنك استخدام البادئة bathinda-، والتي سيتم ضمان عدم تعارضها مع أي شيء في Discourse سواء الآن أو في المستقبل. سيبدو الأمر شيئًا كهذا:

Head:

<script type="text/discourse-plugin" version="1.6.0">
  api.addPostSmallActionClassesCallback(post => {
    return ["bathinda-" + post.actionCode]
  });
</script>

CSS:

.small-action.bathinda-autobumped {
  display: none;
}

@simonk

شكراً مرة أخرى. تم إنشاء المكون واستخدامه/تفعيله بنجاح.
على الرغم من أنه بعد إخفاء رسائل ‘Automatically Bumped’، يبدو الأمر هكذا.

إنه “غير محبب” بعض الشيء، ولكنه أفضل من عدم وجود حلول/حلول أخرى.

أوه، فهمت، هذا بسبب رسائل الفجوة الزمنية التي لم يتم إخفاؤها. هذا أمر صعب لأنك لا تستطيع استهداف عنصر سابق باستخدام CSS.