@@ -77,7 +77,6 class ProjectsController < ApplicationController | |||
|
77 | 77 | @project = Project.new |
|
78 | 78 | @project.safe_attributes = params[:project] |
|
79 | 79 | |
|
80 | @project.enabled_module_names = params[:enabled_modules] if params[:enabled_modules] | |
|
81 | 80 | if validate_parent_id && @project.save |
|
82 | 81 | @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') |
|
83 | 82 | # Add current user as a project member if he is not admin |
@@ -66,7 +66,7 class Project < ActiveRecord::Base | |||
|
66 | 66 | :url => Proc.new {|o| {:controller => 'projects', :action => 'show', :id => o}}, |
|
67 | 67 | :author => nil |
|
68 | 68 | |
|
69 |
attr_protected :status |
|
|
69 | attr_protected :status | |
|
70 | 70 | |
|
71 | 71 | validates_presence_of :name, :identifier |
|
72 | 72 | validates_uniqueness_of :identifier |
@@ -533,6 +533,9 class Project < ActiveRecord::Base | |||
|
533 | 533 | 'tracker_ids', |
|
534 | 534 | 'issue_custom_field_ids' |
|
535 | 535 | |
|
536 | safe_attributes 'enabled_module_names', | |
|
537 | :if => lambda {|project, user| project.new_record? || user.allowed_to?(:select_project_modules, project) } | |
|
538 | ||
|
536 | 539 | # Returns an array of projects that are in this project's hierarchy |
|
537 | 540 | # |
|
538 | 541 | # Example: parents, children, siblings |
@@ -6,11 +6,11 | |||
|
6 | 6 | <fieldset class="box"><legend><%= l(:label_module_plural) %></legend> |
|
7 | 7 | <% Redmine::AccessControl.available_project_modules.each do |m| %> |
|
8 | 8 | <label class="floating"> |
|
9 | <%= check_box_tag 'enabled_modules[]', m, @project.module_enabled?(m) %> | |
|
9 | <%= check_box_tag 'project[enabled_module_names][]', m, @project.module_enabled?(m) %> | |
|
10 | 10 | <%= l_or_humanize(m, :prefix => "project_module_") %> |
|
11 | 11 | </label> |
|
12 | 12 | <% end %> |
|
13 | <%= hidden_field_tag 'enabled_modules[]', '' %> | |
|
13 | <%= hidden_field_tag 'project[enabled_module_names][]', '' %> | |
|
14 | 14 | |
|
15 | 15 | </fieldset> |
|
16 | 16 |
@@ -7,6 +7,7 roles_001: | |||
|
7 | 7 | --- |
|
8 | 8 | - :add_project |
|
9 | 9 | - :edit_project |
|
10 | - :select_project_modules | |
|
10 | 11 | - :manage_members |
|
11 | 12 | - :manage_versions |
|
12 | 13 | - :manage_categories |
@@ -154,7 +154,8 class ProjectsControllerTest < ActionController::TestCase | |||
|
154 | 154 | :custom_field_values => { '3' => 'Beta' }, |
|
155 | 155 | :tracker_ids => ['1', '3'], |
|
156 | 156 | # an issue custom field that is not for all project |
|
157 | :issue_custom_field_ids => ['9'] | |
|
157 | :issue_custom_field_ids => ['9'], | |
|
158 | :enabled_module_names => ['issue_tracking', 'news', 'repository'] | |
|
158 | 159 | } |
|
159 | 160 | assert_redirected_to '/projects/blog/settings' |
|
160 | 161 | |
@@ -167,6 +168,7 class ProjectsControllerTest < ActionController::TestCase | |||
|
167 | 168 | assert_nil project.parent |
|
168 | 169 | assert_equal 'Beta', project.custom_value_for(3).value |
|
169 | 170 | assert_equal [1, 3], project.trackers.map(&:id).sort |
|
171 | assert_equal ['issue_tracking', 'news', 'repository'], project.enabled_module_names.sort | |
|
170 | 172 | assert project.issue_custom_fields.include?(IssueCustomField.find(9)) |
|
171 | 173 | end |
|
172 | 174 | |
@@ -197,7 +199,9 class ProjectsControllerTest < ActionController::TestCase | |||
|
197 | 199 | :description => "weblog", |
|
198 | 200 | :identifier => "blog", |
|
199 | 201 | :is_public => 1, |
|
200 | :custom_field_values => { '3' => 'Beta' } | |
|
202 | :custom_field_values => { '3' => 'Beta' }, | |
|
203 | :tracker_ids => ['1', '3'], | |
|
204 | :enabled_module_names => ['issue_tracking', 'news', 'repository'] | |
|
201 | 205 | } |
|
202 | 206 | |
|
203 | 207 | assert_redirected_to '/projects/blog/settings' |
@@ -206,6 +210,8 class ProjectsControllerTest < ActionController::TestCase | |||
|
206 | 210 | assert_kind_of Project, project |
|
207 | 211 | assert_equal 'weblog', project.description |
|
208 | 212 | assert_equal true, project.is_public? |
|
213 | assert_equal [1, 3], project.trackers.map(&:id).sort | |
|
214 | assert_equal ['issue_tracking', 'news', 'repository'], project.enabled_module_names.sort | |
|
209 | 215 | |
|
210 | 216 | # User should be added as a project member |
|
211 | 217 | assert User.find(9).member_of?(project) |
@@ -122,12 +122,35 class ApiTest::ProjectsTest < ActionController::IntegrationTest | |||
|
122 | 122 | project = Project.first(:order => 'id DESC') |
|
123 | 123 | assert_equal 'API test', project.name |
|
124 | 124 | assert_equal 'api-test', project.identifier |
|
125 | assert_equal ['issue_tracking', 'repository'], project.enabled_module_names | |
|
125 | assert_equal ['issue_tracking', 'repository'], project.enabled_module_names.sort | |
|
126 | assert_equal Tracker.all.size, project.trackers.size | |
|
126 | 127 | |
|
127 | 128 | assert_response :created |
|
128 | 129 | assert_equal 'application/xml', @response.content_type |
|
129 | 130 | assert_tag 'project', :child => {:tag => 'id', :content => project.id.to_s} |
|
130 | 131 | end |
|
132 | ||
|
133 | should "accept enabled_module_names attribute" do | |
|
134 | @parameters[:project].merge!({:enabled_module_names => ['issue_tracking', 'news', 'time_tracking']}) | |
|
135 | ||
|
136 | assert_difference('Project.count') do | |
|
137 | post '/projects.xml', @parameters, :authorization => credentials('admin') | |
|
138 | end | |
|
139 | ||
|
140 | project = Project.first(:order => 'id DESC') | |
|
141 | assert_equal ['issue_tracking', 'news', 'time_tracking'], project.enabled_module_names.sort | |
|
142 | end | |
|
143 | ||
|
144 | should "accept tracker_ids attribute" do | |
|
145 | @parameters[:project].merge!({:tracker_ids => [1, 3]}) | |
|
146 | ||
|
147 | assert_difference('Project.count') do | |
|
148 | post '/projects.xml', @parameters, :authorization => credentials('admin') | |
|
149 | end | |
|
150 | ||
|
151 | project = Project.first(:order => 'id DESC') | |
|
152 | assert_equal [1, 3], project.trackers.map(&:id).sort | |
|
153 | end | |
|
131 | 154 | end |
|
132 | 155 | end |
|
133 | 156 | |
@@ -171,6 +194,28 class ApiTest::ProjectsTest < ActionController::IntegrationTest | |||
|
171 | 194 | project = Project.find(2) |
|
172 | 195 | assert_equal 'API update', project.name |
|
173 | 196 | end |
|
197 | ||
|
198 | should "accept enabled_module_names attribute" do | |
|
199 | @parameters[:project].merge!({:enabled_module_names => ['issue_tracking', 'news', 'time_tracking']}) | |
|
200 | ||
|
201 | assert_no_difference 'Project.count' do | |
|
202 | put '/projects/2.xml', @parameters, :authorization => credentials('admin') | |
|
203 | end | |
|
204 | assert_response :ok | |
|
205 | project = Project.find(2) | |
|
206 | assert_equal ['issue_tracking', 'news', 'time_tracking'], project.enabled_module_names.sort | |
|
207 | end | |
|
208 | ||
|
209 | should "accept tracker_ids attribute" do | |
|
210 | @parameters[:project].merge!({:tracker_ids => [1, 3]}) | |
|
211 | ||
|
212 | assert_no_difference 'Project.count' do | |
|
213 | put '/projects/2.xml', @parameters, :authorization => credentials('admin') | |
|
214 | end | |
|
215 | assert_response :ok | |
|
216 | project = Project.find(2) | |
|
217 | assert_equal [1, 3], project.trackers.map(&:id).sort | |
|
218 | end | |
|
174 | 219 | end |
|
175 | 220 | end |
|
176 | 221 |
General Comments 0
You need to be logged in to leave comments.
Login now