diff --git a/app/assets/javascripts/admin/addon/mixins/setting-component.js b/app/assets/javascripts/admin/addon/mixins/setting-component.js index 0127f5b6af0..f560e36eeb9 100644 --- a/app/assets/javascripts/admin/addon/mixins/setting-component.js +++ b/app/assets/javascripts/admin/addon/mixins/setting-component.js @@ -69,6 +69,8 @@ const DEFAULT_USER_PREFERENCES = [ "default_title_count_mode", "default_navigation_menu_categories", "default_navigation_menu_tags", + "default_sidebar_link_to_filtered_list", + "default_sidebar_show_count_of_new_items", ]; export default Mixin.create({ diff --git a/app/controllers/admin/site_settings_controller.rb b/app/controllers/admin/site_settings_controller.rb index 3954522dd22..55eaf550d8b 100644 --- a/app/controllers/admin/site_settings_controller.rb +++ b/app/controllers/admin/site_settings_controller.rb @@ -255,6 +255,8 @@ class Admin::SiteSettingsController < Admin::AdminController default_text_size: "text_size_key", default_title_count_mode: "title_count_mode_key", default_hide_profile_and_presence: "hide_profile_and_presence", + default_sidebar_link_to_filtered_list: "sidebar_link_to_filtered_list", + default_sidebar_show_count_of_new_items: "sidebar_show_count_of_new_items", } end diff --git a/app/models/user_option.rb b/app/models/user_option.rb index 95e4047281f..c19e327089f 100644 --- a/app/models/user_option.rb +++ b/app/models/user_option.rb @@ -89,6 +89,8 @@ class UserOption < ActiveRecord::Base self.title_count_mode = SiteSetting.default_title_count_mode self.hide_profile_and_presence = SiteSetting.default_hide_profile_and_presence + self.sidebar_link_to_filtered_list = SiteSetting.default_sidebar_link_to_filtered_list + self.sidebar_show_count_of_new_items = SiteSetting.default_sidebar_show_count_of_new_items true end diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index c2b6cc25855..621f2a97d25 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2351,6 +2351,8 @@ en: default_title_count_mode: "Default mode for the page title counter" enable_offline_indicator: "Display a message to users when it is detected that they have no network connection" + default_sidebar_link_to_filtered_list: "Make navigation menu links link to filtered list by default." + default_sidebar_show_count_of_new_items: "Make navigation menu links show count of new items instead of badges by default." retain_web_hook_events_period_days: "Number of days to retain web hook event records." retry_web_hook_events: "Automatically retry failed web hook events for 4 times. Time gaps between the retries are 1, 5, 25 and 125 minutes." diff --git a/config/site_settings.yml b/config/site_settings.yml index ff4a1ebb0ca..7cf6c8c5787 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -2727,6 +2727,9 @@ user_preferences: enable_offline_indicator: default: false client: true + default_sidebar_link_to_filtered_list: false + default_sidebar_show_count_of_new_items: false + api: retain_web_hook_events_period_days: default: 30 diff --git a/lib/tasks/import.rake b/lib/tasks/import.rake index aad8637404c..84f4d011529 100644 --- a/lib/tasks/import.rake +++ b/lib/tasks/import.rake @@ -166,7 +166,9 @@ def insert_user_options notification_level_when_replying, like_notification_frequency, skip_new_user_tips, - hide_profile_and_presence + hide_profile_and_presence, + sidebar_link_to_filtered_list, + sidebar_show_count_of_new_items ) SELECT u.id , #{SiteSetting.default_email_mailing_list_mode} @@ -188,6 +190,8 @@ def insert_user_options , #{SiteSetting.default_other_like_notification_frequency} , #{SiteSetting.default_other_skip_new_user_tips} , #{SiteSetting.default_hide_profile_and_presence} + , #{SiteSetting.default_sidebar_link_to_filtered_list} + , #{SiteSetting.default_sidebar_show_count_of_new_items} FROM users u LEFT JOIN user_options uo ON uo.user_id = u.id WHERE uo.user_id IS NULL diff --git a/spec/models/user_option_spec.rb b/spec/models/user_option_spec.rb index 9c5eef73d17..6ff409eae15 100644 --- a/spec/models/user_option_spec.rb +++ b/spec/models/user_option_spec.rb @@ -44,6 +44,30 @@ RSpec.describe UserOption do expect(user.user_option.email_digests).to eq(false) expect(user.user_option.digest_after_minutes).to eq(0) end + + it "should correctly set sidebar_link_to_filtered_list when `default_sidebar_link_to_filtered_list` site setting is enabled" do + SiteSetting.default_sidebar_link_to_filtered_list = true + user = Fabricate(:user) + expect(user.user_option.sidebar_link_to_filtered_list).to eq(true) + end + + it "should correctly set sidebar_link_to_filtered_list when `default_sidebar_link_to_filtered_list` site setting is disabled" do + SiteSetting.default_sidebar_link_to_filtered_list = false + user = Fabricate(:user) + expect(user.user_option.sidebar_link_to_filtered_list).to eq(false) + end + + it "should correctly set sidebar_show_count_of_new_items when `default_sidebar_show_count_of_new_items` site setting is enabled" do + SiteSetting.default_sidebar_show_count_of_new_items = true + user = Fabricate(:user) + expect(user.user_option.sidebar_show_count_of_new_items).to eq(true) + end + + it "should correctly set sidebar_show_count_of_new_items when `default_sidebar_show_count_of_new_items` site setting is disabled" do + SiteSetting.default_sidebar_show_count_of_new_items = false + user = Fabricate(:user) + expect(user.user_option.sidebar_show_count_of_new_items).to eq(false) + end end describe "site settings" do