From 7491c4abcae487e89e778890f7c0aa6357887fdf Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Sat, 17 May 2025 17:41:47 +0300 Subject: [PATCH] Adapt basic language select to update single language value --- .../preferences/basic_preferences_controller.rb | 2 +- app/views/preferences/basic_preferences/show.html.erb | 8 +++++++- config/locales/en.yml | 1 + .../preferences/basic_preferences_controller_test.rb | 6 +++--- test/system/preferences_test.rb | 10 +++++++++- test/system/view_communities_test.rb | 2 +- 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/controllers/preferences/basic_preferences_controller.rb b/app/controllers/preferences/basic_preferences_controller.rb index 90a2278ee..dba739bd6 100644 --- a/app/controllers/preferences/basic_preferences_controller.rb +++ b/app/controllers/preferences/basic_preferences_controller.rb @@ -3,7 +3,7 @@ module Preferences private def update_preferences - current_user.languages = params[:user][:languages].split(",") + current_user.languages = [params[:language]] current_user.preferred_editor = if params[:user][:preferred_editor] == "default" nil diff --git a/app/views/preferences/basic_preferences/show.html.erb b/app/views/preferences/basic_preferences/show.html.erb index 1927aa6d1..aa9ab8545 100644 --- a/app/views/preferences/basic_preferences/show.html.erb +++ b/app/views/preferences/basic_preferences/show.html.erb @@ -8,7 +8,13 @@ <%= bootstrap_form_for current_user, :url => { :action => :update } do |f| %> <%= f.select :preferred_editor, [[t("editor.default", :name => t("editor.#{Settings.default_editor}.name")), "default"]] + Editors::AVAILABLE_EDITORS.collect { |e| [t("editor.#{e}.description"), e] } %> - <%= f.select :languages, AVAILABLE_LANGUAGES.map { |e| [e[:native_name], e[:code]] } %> +
+ <%= label_tag "language", t(".preferred_language"), :class => "form-label" %> + <%= select_tag "language", + options_for_select(AVAILABLE_LANGUAGES.map { |e| [e[:native_name], e[:code]] }, + I18n.locale), + :class => "form-select" %> +
<%= label_tag "site_color_scheme", t(".preferred_site_color_scheme"), :class => "form-label" %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 275abd21e..77122584f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1960,6 +1960,7 @@ en: basic_preferences: show: title: My Preferences + preferred_language: Preferred Language preferred_site_color_scheme: Preferred Website Color Scheme site_color_schemes: auto: Auto diff --git a/test/controllers/preferences/basic_preferences_controller_test.rb b/test/controllers/preferences/basic_preferences_controller_test.rb index 924f5ae84..b6195717c 100644 --- a/test/controllers/preferences/basic_preferences_controller_test.rb +++ b/test/controllers/preferences/basic_preferences_controller_test.rb @@ -28,7 +28,7 @@ module Preferences session_for(user) # Changing to a invalid editor should fail - put basic_preferences_path, :params => { :user => { :preferred_editor => "unknown", :languages => [] } } + put basic_preferences_path, :params => { :user => { :preferred_editor => "unknown" } } assert_response :success assert_template :show assert_select ".alert-success", false @@ -39,7 +39,7 @@ module Preferences assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v # Changing to a valid editor should work - put basic_preferences_path, :params => { :user => { :preferred_editor => "id", :languages => [] } } + put basic_preferences_path, :params => { :user => { :preferred_editor => "id" } } assert_redirected_to basic_preferences_path follow_redirect! assert_template :show @@ -50,7 +50,7 @@ module Preferences assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v # Changing to the default editor should work - put basic_preferences_path, :params => { :user => { :preferred_editor => "default", :languages => [] } } + put basic_preferences_path, :params => { :user => { :preferred_editor => "default" } } assert_redirected_to basic_preferences_path follow_redirect! assert_template :show diff --git a/test/system/preferences_test.rb b/test/system/preferences_test.rb index afcb53ecb..da2247796 100644 --- a/test/system/preferences_test.rb +++ b/test/system/preferences_test.rb @@ -1,6 +1,14 @@ require "application_system_test_case" class PreferencesTest < ApplicationSystemTestCase + test "shown English as selected language when user has unknown language in preferences" do + sign_in_as(create(:user, :languages => ["unknown"])) + + visit basic_preferences_path + + assert_select "Preferred Language", :selected => "English" + end + test "flash message shows in original language" do sign_in_as(create(:user)) @@ -14,7 +22,7 @@ class PreferencesTest < ApplicationSystemTestCase sign_in_as(create(:user)) visit basic_preferences_path - select "français", :from => "Preferred Languages" + select "français", :from => "Preferred Language" click_on "Update Preferences" assert_content "Préférences mises à jour" diff --git a/test/system/view_communities_test.rb b/test/system/view_communities_test.rb index e0056dbd4..1384af2b7 100644 --- a/test/system/view_communities_test.rb +++ b/test/system/view_communities_test.rb @@ -12,7 +12,7 @@ class ViewCommunitiesTest < ApplicationSystemTestCase sign_in_as(create(:user)) visit basic_preferences_path - select "français", :from => "Preferred Languages" + select "français", :from => "Preferred Language" click_on "Update Preferences" visit "/communities" -- 2.39.5