diff --git a/app/models/user_preference.rb b/app/models/user_preference.rb index e1842b131..fc1c3829b 100644 --- a/app/models/user_preference.rb +++ b/app/models/user_preference.rb @@ -59,7 +59,8 @@ class UserPreference < ApplicationRecord self.no_self_notified = Setting.default_users_no_self_notified end unless attributes && attributes.key?(:auto_watch_on) - self.auto_watch_on = AUTO_WATCH_ON_OPTIONS + value = Setting.default_users_auto_watch_on + self.auto_watch_on = value.nil? ? AUTO_WATCH_ON_OPTIONS : value end end self.others ||= {} diff --git a/app/views/settings/_users.html.erb b/app/views/settings/_users.html.erb index 3482b22d6..cc40dec58 100644 --- a/app/views/settings/_users.html.erb +++ b/app/views/settings/_users.html.erb @@ -20,6 +20,7 @@
<%= setting_select(:default_notification_option, User.valid_notification_options.collect {|o| [l(o.last), o.first.to_s]}) %>
<%= setting_check_box :default_users_no_self_notified, :label => :label_user_mail_no_self_notified %>
<%= setting_select :default_users_time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :label => :field_time_zone, :blank => :label_none %>
+<%= setting_multiselect :default_users_auto_watch_on, UserPreference::AUTO_WATCH_ON_OPTIONS.map {|o| [l("label_auto_watch_on_#{o}"), o]}, :label => :label_auto_watch_on %>
diff --git a/config/settings.yml b/config/settings.yml index b1217fc0a..753cd5b49 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -301,6 +301,11 @@ default_users_no_self_notified: default: 1 default_users_time_zone: default: "" +default_users_auto_watch_on: + serialized: true + default: + - issue_created + - issue_contributed_to # encodings used to convert files content to UTF-8 # multiple values accepted, comma separated repositories_encodings: diff --git a/test/unit/user_preference_test.rb b/test/unit/user_preference_test.rb index 1eea63917..fd51b1d9f 100644 --- a/test/unit/user_preference_test.rb +++ b/test/unit/user_preference_test.rb @@ -56,8 +56,21 @@ class UserPreferenceTest < ActiveSupport::TestCase end def test_auto_watch_on_should_default_to_setting - preference = UserPreference.new - assert_equal %w[issue_created issue_contributed_to], preference.auto_watch_on + with_settings :default_users_auto_watch_on => ['issue_created'] do + preference = UserPreference.new + assert_equal ['issue_created'], preference.auto_watch_on + end + with_settings :default_users_auto_watch_on => [] do + preference = UserPreference.new + assert_equal [], preference.auto_watch_on + end + end + + def test_auto_watch_on_should_default_to_options + with_settings :default_users_auto_watch_on => nil do + preference = UserPreference.new + assert_equal %w[issue_created issue_contributed_to], preference.auto_watch_on + end end def test_create