Bulk topic timers

For adding topic timers, e.g., close topic 1 month after last update, it would be great to have a bulk option. This would allow for adding topic timers to multiple topics at once, without going into each individual topic.

إعجابَين (2)

Interesting idea. Are you referring to this modal?

If so, an edge cases to consider: What happens if there’s already a topic timer on one (or more) of the selected topics?

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

Yes, exactly this modal.

I’d find it natural to have the same behavior as if the set topic timer action is performed again on a topic that already has one, i.e., overwrite the existing timer.

إعجابَين (2)

May I ask why the “Auto-close topic hours” setting on the category isn’t enough?
Are you adding these timers on topics spanning multiple categories?

3 إعجابات

Absolutely. I’ve added this setting (720 hours and ticked Don’t close until the last post in the topic is at least this old) and it seems to affect only newly added topics, not those that are currently in this category.

I wanted to bulk add the topic timer to the topics that already existed in the category.

4 إعجابات

I thought we had a rails command to apply the category setting retroactively too all topics within the category, but I’m failing to find it right now. I’ll keep looking…

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

This is a pretty unique request, why not consume the api, my feeling is that your own custom sword here will fit way better

4 إعجابات

Thanks for the suggestion.

I’ve went with a combination of database queries to identify the relevant topic IDs and requests to the timer API.

لقد وجدت هذا الموضوع للتو، وأبحث عن نفس الوظيفة.

هل يمكن لأي شخص مشاركة كيف يمكنني تطبيق مؤقت على جميع المواضيع داخل فئة؟ لقد قمت بالفعل بإنشاء مئات المواضيع الخاصة بالتوثيق واكتشفت هذه الميزة للتو وأرغب في تطبيقها بأثر رجعي.

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

شكرًا!

@fhe هل هناك أي فرصة لمشاركة ما فعلته لتحقيق ذلك؟

لم أقم بأي ملاحظات للأسف :innocent:

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

1. الحصول على معرفات المواضيع ذات الصلة

سيؤدي هذا إلى الحصول على أي معرفات مواضيع من الفئة ذات المعرف 11 والتي لم يتم حذفها وليست مغلقة.

SELECT id FROM topics WHERE category_id = 11 AND deleted_at IS NULL AND closed = FALSE ORDER BY id

لنفترض أن النتيجة هي 3, 6, 12, 24

2. إنشاء مؤقتات المواضيع

بعد ذلك، أدخل وحدة تحكم Rails في الحاوية الخاصة بك واستخدم شيئًا مثل

auto_close_hours = 720
topic_ids = [3,6,12,24]
Topic.where(id: topic_ids).find_each do |topic|
    topic.set_or_create_timer(
        TopicTimer.types[:close],
        auto_close_hours,
        based_on_last_post: true
    )
    MessageBus.publish("/topic/#{topic.id}", reload_topic: true)
end

يرجى الاختبار بموضوع واحد أولاً، آمل أن يساعد هذا!

إعجابَين (2)