diff --git a/plugins/poll/plugin.rb b/plugins/poll/plugin.rb index 1bc57a76d0c53..b555a2fd01ec4 100644 --- a/plugins/poll/plugin.rb +++ b/plugins/poll/plugin.rb @@ -33,7 +33,7 @@ def vote post = Post.find(params[:post_id]) poll = PollPlugin::Poll.new(post) - unless poll.is_poll? + unless poll.has_poll_details? render status: 400, json: false return end @@ -102,7 +102,7 @@ def poll_details PollPlugin::Poll.new(object).serialize(scope.user) end def include_poll_details? - PollPlugin::Poll.new(object).is_poll? + PollPlugin::Poll.new(object).has_poll_details? end end end diff --git a/plugins/poll/poll.rb b/plugins/poll/poll.rb index c7ebfd2f70db6..9562b3e48912a 100644 --- a/plugins/poll/poll.rb +++ b/plugins/poll/poll.rb @@ -24,6 +24,18 @@ def is_poll? topic.title =~ /^#{I18n.t('poll.prefix')}/i end + def has_poll_details? + if SiteSetting.allow_user_locale? + # If we allow users to select their locale of choice we cannot detect polls + # by the prefix, so we fall back to checking if the poll details is set in + # places to make sure polls are still accessible by users using a different + # locale than the one used by the topic creator. + not self.details.nil? + else + self.is_poll? + end + end + # Called during validation of poll posts. Discourse already restricts edits to # the OP and staff, we want to make sure that: #