##// END OF EJS Templates
Possibility to define the default enable trackers when creating a project (#13175)....
Jean-Philippe Lang -
r11164:4e9fbeb85165
parent child
Show More
@@ -53,7 +53,7 module SettingsHelper
53 53 check_box_tag(
54 54 "settings[#{setting}][]",
55 55 value,
56 Setting.send(setting).include?(value),
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