mirror of
https://github.com/discourse/discourse.git
synced 2025-06-03 02:48:28 +08:00
Merge pull request #4675 from tgxworld/fix_polls_forever_broken_if_approval_required
FIX: Polls permanently broken if post requires approval.
This commit is contained in:
@ -295,11 +295,11 @@ after_initialize do
|
||||
end
|
||||
end
|
||||
|
||||
validate(:post, :validate_polls) do
|
||||
validate(:post, :validate_polls) do |force=nil|
|
||||
return if !SiteSetting.poll_enabled? && (self.user && !self.user.staff?)
|
||||
|
||||
# only care when raw has changed!
|
||||
return unless self.raw_changed?
|
||||
return unless self.raw_changed? || force
|
||||
|
||||
validator = DiscoursePoll::PollsValidator.new(self)
|
||||
return unless (polls = validator.validate_polls)
|
||||
@ -316,6 +316,29 @@ after_initialize do
|
||||
true
|
||||
end
|
||||
|
||||
NewPostManager.add_handler(1) do |manager|
|
||||
post = Post.new(raw: manager.args[:raw])
|
||||
|
||||
if !DiscoursePoll::PollsValidator.new(post).validate_polls
|
||||
result = NewPostResult.new(:poll, false)
|
||||
|
||||
post.errors.full_messages.each do |message|
|
||||
result.errors[:base] << message
|
||||
end
|
||||
|
||||
result
|
||||
else
|
||||
manager.args["is_poll"] = true
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
on(:approved_post) do |queued_post, created_post|
|
||||
if queued_post.post_options["is_poll"]
|
||||
created_post.validate_polls(true)
|
||||
end
|
||||
end
|
||||
|
||||
Post.register_custom_field_type(DiscoursePoll::POLLS_CUSTOM_FIELD, :json)
|
||||
Post.register_custom_field_type(DiscoursePoll::VOTES_CUSTOM_FIELD, :json)
|
||||
|
||||
|
Reference in New Issue
Block a user