mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-23 23:58:31 -05:00
FIX: 🈂️ Allow closing polls in multi-locale sites
This commit is contained in:
parent
1ec46e3efd
commit
06f02ce9fc
7 changed files with 25 additions and 24 deletions
|
@ -147,8 +147,8 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_locale
|
def set_locale
|
||||||
I18n.locale = if SiteSetting.allow_user_locale && current_user && current_user.locale.present?
|
I18n.locale = if current_user
|
||||||
current_user.locale
|
current_user.effective_locale
|
||||||
else
|
else
|
||||||
SiteSetting.default_locale
|
SiteSetting.default_locale
|
||||||
end
|
end
|
||||||
|
|
|
@ -138,6 +138,14 @@ class User < ActiveRecord::Base
|
||||||
User.where(username_lower: lower).blank?
|
User.where(username_lower: lower).blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def effective_locale
|
||||||
|
if SiteSetting.allow_user_locale && self.locale.present?
|
||||||
|
self.locale
|
||||||
|
else
|
||||||
|
SiteSetting.default_locale
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
EMAIL = %r{([^@]+)@([^\.]+)}
|
EMAIL = %r{([^@]+)@([^\.]+)}
|
||||||
|
|
||||||
def self.new_from_params(params)
|
def self.new_from_params(params)
|
||||||
|
|
|
@ -118,11 +118,7 @@ class PostAlerter
|
||||||
if collapsed
|
if collapsed
|
||||||
post = first_unread_post(user,post.topic) || post
|
post = first_unread_post(user,post.topic) || post
|
||||||
count = unread_count(user, post.topic)
|
count = unread_count(user, post.topic)
|
||||||
I18n.with_locale(if SiteSetting.allow_user_locale && user.locale.present?
|
I18n.with_locale(user.effective_locale) do
|
||||||
user.locale
|
|
||||||
else
|
|
||||||
SiteSetting.default_locale
|
|
||||||
end) do
|
|
||||||
opts[:display_username] = I18n.t('embed.replies', count: count) if count > 1
|
opts[:display_username] = I18n.t('embed.replies', count: count) if count > 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,7 +9,7 @@ Allows you to add a poll to the first post of a topic.
|
||||||
|
|
||||||
## Closing the poll
|
## Closing the poll
|
||||||
|
|
||||||
Change the start of the topic title from "Poll: " to "Closed Poll: ". This feature is disabled if the `allow_user_locale` site setting is enabled.
|
Change the start of the topic title from "Poll: " to "Closed Poll: ". This feature uses the locale of the user who started the topic.
|
||||||
|
|
||||||
_Note: closing a topic will also close the poll._
|
_Note: closing a topic will also close the poll._
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ export default DiscourseController.extend({
|
||||||
showResults: Em.computed.oneWay('poll.closed'),
|
showResults: Em.computed.oneWay('poll.closed'),
|
||||||
disableRadio: Em.computed.any('poll.closed', 'loading'),
|
disableRadio: Em.computed.any('poll.closed', 'loading'),
|
||||||
showToggleClosePoll: function() {
|
showToggleClosePoll: function() {
|
||||||
return this.get('poll.post.topic.details.can_edit') && !Discourse.SiteSettings.allow_user_locale;
|
return this.get('poll.post.topic.details.can_edit');
|
||||||
}.property('poll.post.topic.details.can_edit'),
|
}.property('poll.post.topic.details.can_edit'),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
|
|
|
@ -80,11 +80,13 @@ after_initialize do
|
||||||
end
|
end
|
||||||
|
|
||||||
# Modify topic title.
|
# Modify topic title.
|
||||||
|
I18n.with_locale(topic.user.effective_locale) do
|
||||||
if topic.title =~ /^(#{I18n.t('poll.prefix').strip})\s?:/i
|
if topic.title =~ /^(#{I18n.t('poll.prefix').strip})\s?:/i
|
||||||
topic.title = topic.title.gsub(/^(#{I18n.t('poll.prefix').strip})\s?:/i, I18n.t('poll.closed_prefix') + ':')
|
topic.title = topic.title.gsub(/^(#{I18n.t('poll.prefix').strip})\s?:/i, I18n.t('poll.closed_prefix') + ':')
|
||||||
elsif topic.title =~ /^(#{I18n.t('poll.closed_prefix').strip})\s?:/i
|
elsif topic.title =~ /^(#{I18n.t('poll.closed_prefix').strip})\s?:/i
|
||||||
topic.title = topic.title.gsub(/^(#{I18n.t('poll.closed_prefix').strip})\s?:/i, I18n.t('poll.prefix') + ':')
|
topic.title = topic.title.gsub(/^(#{I18n.t('poll.closed_prefix').strip})\s?:/i, I18n.t('poll.prefix') + ':')
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
topic.acting_user = current_user
|
topic.acting_user = current_user
|
||||||
topic.save!
|
topic.save!
|
||||||
|
|
|
@ -21,20 +21,14 @@ module ::PollPlugin
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
I18n.with_locale(topic.user.effective_locale) do
|
||||||
topic.title =~ /^(#{I18n.t('poll.prefix').strip}|#{I18n.t('poll.closed_prefix').strip})\s?:/i
|
topic.title =~ /^(#{I18n.t('poll.prefix').strip}|#{I18n.t('poll.closed_prefix').strip})\s?:/i
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def has_poll_details?
|
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?
|
self.is_poll?
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
# Called during validation of poll posts. Discourse already restricts edits to
|
# Called during validation of poll posts. Discourse already restricts edits to
|
||||||
# the OP and staff, we want to make sure that:
|
# the OP and staff, we want to make sure that:
|
||||||
|
@ -60,7 +54,8 @@ module ::PollPlugin
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_closed?
|
def is_closed?
|
||||||
@post.topic.closed? || @post.topic.archived? || (!SiteSetting.allow_user_locale? && (@post.topic.title =~ /^#{I18n.t('poll.closed_prefix')}/i) === 0)
|
topic = @post.topic
|
||||||
|
topic.closed? || topic.archived? || (topic.title =~ /^#{I18n.t('poll.closed_prefix', locale: topic.user.effective_locale)}/i) === 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def options
|
def options
|
||||||
|
|
Loading…
Reference in a new issue