@@ -53,7 +53,7 module SettingsHelper | |||
|
53 | 53 | check_box_tag( |
|
54 | 54 | "settings[#{setting}][]", |
|
55 | 55 | value, |
|
56 |
|
|
|
56 | setting_values.include?(value), | |
|
57 | 57 | :id => nil |
|
58 | 58 | ) + text.to_s, |
|
59 | 59 | :class => (options[:inline] ? 'inline' : 'block') |
@@ -126,9 +126,14 class Project < ActiveRecord::Base | |||
|
126 | 126 | self.enabled_module_names = Setting.default_projects_modules |
|
127 | 127 | end |
|
128 | 128 | if !initialized.key?('trackers') && !initialized.key?('tracker_ids') |
|
129 | default = Setting.default_projects_tracker_ids | |
|
130 | if default.is_a?(Array) | |
|
131 | self.trackers = Tracker.where(:id => default.map(&:to_i)).sorted.all | |
|
132 | else | |
|
129 | 133 | self.trackers = Tracker.sorted.all |
|
130 | 134 | end |
|
131 | 135 | end |
|
136 | end | |
|
132 | 137 | |
|
133 | 138 | def identifier=(identifier) |
|
134 | 139 | super unless identifier_frozen? |
@@ -6,6 +6,9 | |||
|
6 | 6 | <p><%= setting_multiselect(:default_projects_modules, |
|
7 | 7 | Redmine::AccessControl.available_project_modules.collect {|m| [l_or_humanize(m, :prefix => "project_module_"), m.to_s]}) %></p> |
|
8 | 8 | |
|
9 | <p><%= setting_multiselect(:default_projects_tracker_ids, | |
|
10 | Tracker.sorted.all.collect {|t| [t.name, t.id.to_s]}) %></p> | |
|
11 | ||
|
9 | 12 | <p><%= setting_check_box :sequential_project_identifiers %></p> |
|
10 | 13 | |
|
11 | 14 | <p><%= setting_select :new_project_user_role_id, |
@@ -179,6 +179,9 default_projects_modules: | |||
|
179 | 179 | - boards |
|
180 | 180 | - calendar |
|
181 | 181 | - gantt |
|
182 | default_projects_tracker_ids: | |
|
183 | serialized: true | |
|
184 | default: | |
|
182 | 185 | # Role given to a non-admin user who creates a project |
|
183 | 186 | new_project_user_role_id: |
|
184 | 187 | format: int |
@@ -87,7 +87,15 class ActiveSupport::TestCase | |||
|
87 | 87 | end |
|
88 | 88 | |
|
89 | 89 | def with_settings(options, &block) |
|
90 | saved_settings = options.keys.inject({}) {|h, k| h[k] = Setting[k].is_a?(Symbol) ? Setting[k] : Setting[k].dup; h} | |
|
90 | saved_settings = options.keys.inject({}) do |h, k| | |
|
91 | h[k] = case Setting[k] | |
|
92 | when Symbol, false, true, nil | |
|
93 | Setting[k] | |
|
94 | else | |
|
95 | Setting[k].dup | |
|
96 | end | |
|
97 | h | |
|
98 | end | |
|
91 | 99 | options.each {|k, v| Setting[k] = v} |
|
92 | 100 | yield |
|
93 | 101 | ensure |
@@ -74,9 +74,30 class ProjectTest < ActiveSupport::TestCase | |||
|
74 | 74 | with_settings :default_projects_modules => ['issue_tracking', 'repository'] do |
|
75 | 75 | assert_equal ['issue_tracking', 'repository'], Project.new.enabled_module_names |
|
76 | 76 | end |
|
77 | end | |
|
78 | ||
|
79 | def test_default_trackers_should_match_default_tracker_ids_setting | |
|
80 | with_settings :default_projects_tracker_ids => ['1', '3'] do | |
|
81 | assert_equal Tracker.find(1, 3).sort, Project.new.trackers.sort | |
|
82 | end | |
|
83 | end | |
|
77 | 84 | |
|
85 | def test_default_trackers_should_be_all_trackers_with_blank_setting | |
|
86 | with_settings :default_projects_tracker_ids => nil do | |
|
78 | 87 | assert_equal Tracker.all.sort, Project.new.trackers.sort |
|
79 | assert_equal Tracker.find(1, 3).sort, Project.new(:tracker_ids => [1, 3]).trackers.sort | |
|
88 | end | |
|
89 | end | |
|
90 | ||
|
91 | def test_default_trackers_should_be_empty_with_empty_setting | |
|
92 | with_settings :default_projects_tracker_ids => [] do | |
|
93 | assert_equal [], Project.new.trackers | |
|
94 | end | |
|
95 | end | |
|
96 | ||
|
97 | def test_default_trackers_should_not_replace_initialized_trackers | |
|
98 | with_settings :default_projects_tracker_ids => ['1', '3'] do | |
|
99 | assert_equal Tracker.find(1, 2).sort, Project.new(:tracker_ids => [1, 2]).trackers.sort | |
|
100 | end | |
|
80 | 101 | end |
|
81 | 102 | |
|
82 | 103 | def test_update |
General Comments 0
You need to be logged in to leave comments.
Login now