mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 21:35:48 +08:00
bddffa7f9a
All flags should end up in one of the three dispositions - Agree - Disagree - Defer In the administration area, the *active* flags section displays 4 buttons - Agree (hide post + send PM) - Disagree - Defer - Delete Clicking "Delete" will open a modal that offer to - Delete Post & Defer Flags - Delete Post & Agree with Flags - Delete Spammer (if available) When the flag has a list associated, the list will now display 1 response and 1 reply and a "show more..." link if there are more in the conversation. Replying to the conversation will NOT give a disposition. Moderators must click the buttons that does that. If someone clicks one buttons, this will add a default moderator message from that moderator saying what happened. The *old* flags section now displays the proper dispositions and is super duper fast (no more N+9999 queries). FIX: the old list includes deleted topics FIX: the lists now properly display the topic states (deleted, closed, archived, hidden, PM) FIX: flagging a topic that you've already flagged the first post
56 lines
1.3 KiB
Ruby
56 lines
1.3 KiB
Ruby
class PostJobsEnqueuer
|
|
def initialize(post, topic, new_topic, opts={})
|
|
@post = post
|
|
@topic = topic
|
|
@new_topic = new_topic
|
|
@opts = opts
|
|
end
|
|
|
|
def enqueue_jobs
|
|
# We need to enqueue jobs after the transaction. Otherwise they might begin before the data has
|
|
# been comitted.
|
|
feature_topic_users unless @opts[:import_mode]
|
|
trigger_post_post_process
|
|
unless skip_after_create?
|
|
after_post_create
|
|
after_topic_create
|
|
end
|
|
end
|
|
|
|
|
|
private
|
|
|
|
def feature_topic_users
|
|
Jobs.enqueue(:feature_topic_users, topic_id: @topic.id)
|
|
end
|
|
|
|
def trigger_post_post_process
|
|
@post.trigger_post_process
|
|
end
|
|
|
|
def after_post_create
|
|
TopicTrackingState.publish_unread(@post) if @post.post_number > 1
|
|
|
|
Jobs.enqueue_in(
|
|
SiteSetting.email_time_window_mins.minutes,
|
|
:notify_mailing_list_subscribers,
|
|
post_id: @post.id
|
|
)
|
|
end
|
|
|
|
def after_topic_create
|
|
return unless @new_topic
|
|
# Don't publish invisible topics
|
|
return unless @topic.visible?
|
|
|
|
@topic.posters = @topic.posters_summary
|
|
@topic.posts_count = 1
|
|
|
|
TopicTrackingState.publish_new(@topic)
|
|
end
|
|
|
|
def skip_after_create?
|
|
@opts[:import_mode] || @topic.private_message? || @post.post_type == Post.types[:moderator_action]
|
|
end
|
|
end
|