mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 20:16:19 +08:00
7fee3c61de
* Support for custom messages and redirects when creating posts When a post/topic is created Discourse serializes a `NewPostResult` object. Normally this contains a status like `created_post` or errors describing why the post could not be created. There are times when a plugin might want to take the inputted post and do something in the background. In this case, the plugin can return a custom `message` and `route_to` attribute in the `NewPostResult`. If present, the message will be displayed in an alert, and when "Ok" is clicked the user will be routed to the new URL. * Destroy the draft in parallel
54 lines
893 B
Ruby
54 lines
893 B
Ruby
# frozen_string_literal: true
|
|
|
|
class NewPostResult
|
|
include HasErrors
|
|
|
|
attr_reader :action
|
|
|
|
attr_accessor :reason
|
|
attr_accessor :post
|
|
attr_accessor :reviewable
|
|
attr_accessor :pending_count
|
|
attr_accessor :route_to
|
|
attr_accessor :message
|
|
|
|
def initialize(action, success = false)
|
|
@action = action
|
|
@success = success
|
|
end
|
|
|
|
def check_errors_from(obj)
|
|
if obj.errors.empty?
|
|
@success = true
|
|
else
|
|
add_errors_from(obj)
|
|
end
|
|
end
|
|
|
|
def check_errors(arr)
|
|
if arr.empty?
|
|
@success = true
|
|
else
|
|
arr.each { |e| errors.add(:base, e) unless errors[:base].include?(e) }
|
|
end
|
|
end
|
|
|
|
def queued_post
|
|
Discourse.deprecate(
|
|
"NewPostManager#queued_post is deprecated. Please use #reviewable instead.",
|
|
output_in_test: true
|
|
)
|
|
|
|
reviewable
|
|
end
|
|
|
|
def success?
|
|
@success
|
|
end
|
|
|
|
def failed?
|
|
!@success
|
|
end
|
|
|
|
end
|