Change language opt-out to language opt-in (#7823)

* Switch filtered_languages to chosen_languages

* Adjust interface

* Remove unused translations
This commit is contained in:
Eugen Rochko
2018-06-17 13:54:02 +02:00
committed by GitHub
parent 31e5d7efd7
commit 7eec279c7f
41 changed files with 32 additions and 113 deletions

View File

@ -27,7 +27,7 @@ class Settings::PreferencesController < ApplicationController
def user_params
params.require(:user).permit(
:locale,
filtered_languages: []
chosen_languages: []
)
end

View File

@ -141,7 +141,7 @@ class Account < ApplicationRecord
prefix: true,
allow_nil: true
delegate :filtered_languages, to: :user, prefix: false, allow_nil: true
delegate :chosen_languages, to: :user, prefix: false, allow_nil: true
def local?
domain.nil?

View File

@ -190,8 +190,8 @@ class Status < ApplicationRecord
before_validation :set_local
class << self
def not_in_filtered_languages(account)
where(language: nil).or where.not(language: account.filtered_languages)
def in_chosen_languages(account)
where(language: nil).or where(language: account.chosen_languages)
end
def as_home_timeline(account)
@ -333,7 +333,7 @@ class Status < ApplicationRecord
def filter_timeline_for_account(query, account, local_only)
query = query.not_excluded_by_account(account)
query = query.not_domain_blocked_by_account(account) unless local_only
query = query.not_in_filtered_languages(account) if account.filtered_languages.present?
query = query.in_chosen_languages(account) if account.chosen_languages.present?
query.merge(account_silencing_filter(account))
end

View File

@ -35,6 +35,7 @@
# moderator :boolean default(FALSE), not null
# invite_id :bigint(8)
# remember_token :string
# chosen_languages :string is an Array
#
class User < ApplicationRecord
@ -317,7 +318,9 @@ class User < ApplicationRecord
private
def sanitize_languages
filtered_languages.reject!(&:blank?)
return if chosen_languages.nil?
chosen_languages.reject!(&:blank?)
self.chosen_languages = nil if chosen_languages.empty?
end
def prepare_new_user!

View File

@ -12,7 +12,7 @@
.fields-group
= f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale
= f.input :filtered_languages, collection: filterable_languages, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
= f.input :chosen_languages, collection: filterable_languages.sort, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
%h4= t 'preferences.publishing'