git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2137 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/0.9.0
@@ -51,8 +51,9 @@ class RepositoriesController < ApplicationController | |||
@users += User.find_all_by_id(additional_user_ids) unless additional_user_ids.empty? | |||
@users.compact! | |||
@users.sort! | |||
if request.post? | |||
@repository.committer_ids = params[:committers] | |||
if request.post? && params[:committers].is_a?(Hash) | |||
# Build a hash with repository usernames as keys and corresponding user ids as values | |||
@repository.committer_ids = params[:committers].values.inject({}) {|h, c| h[c.first] = c.last; h} | |||
flash[:notice] = l(:notice_successful_update) | |||
redirect_to :action => 'committers', :id => @project | |||
end |
@@ -15,11 +15,16 @@ | |||
</tr> | |||
</thead> | |||
<tbody> | |||
<% i = 0 -%> | |||
<% @committers.each do |committer, user_id| -%> | |||
<tr class="<%= cycle 'odd', 'even' %>"> | |||
<td><%=h committer %></td> | |||
<td><%= select_tag "committers[#{committer}]", content_tag('option', "-- #{l :actionview_instancetag_blank_option} --", :value => '') + options_from_collection_for_select(@users, 'id', 'name', user_id.to_i) %></td> | |||
<td> | |||
<%= hidden_field_tag "committers[#{i}][]", committer %> | |||
<%= select_tag "committers[#{i}][]", content_tag('option', "-- #{l :actionview_instancetag_blank_option} --", :value => '') + options_from_collection_for_select(@users, 'id', 'name', user_id.to_i) %> | |||
</td> | |||
</tr> | |||
<% i += 1 -%> | |||
<% end -%> | |||
</tbody> | |||
</table> |
@@ -73,12 +73,12 @@ class RepositoriesControllerTest < Test::Unit::TestCase | |||
assert_tag :td, :content => 'dlopper', | |||
:sibling => { :tag => 'td', | |||
:child => { :tag => 'select', :attributes => { :name => 'committers[dlopper]' }, | |||
:child => { :tag => 'select', :attributes => { :name => %r{^committers\[\d+\]\[\]$} }, | |||
:child => { :tag => 'option', :content => 'Dave Lopper', | |||
:attributes => { :value => '3', :selected => 'selected' }}}} | |||
assert_tag :td, :content => 'foo', | |||
:sibling => { :tag => 'td', | |||
:child => { :tag => 'select', :attributes => { :name => 'committers[foo]' }}} | |||
:child => { :tag => 'select', :attributes => { :name => %r{^committers\[\d+\]\[\]$} }}} | |||
assert_no_tag :td, :content => 'foo', | |||
:sibling => { :tag => 'td', | |||
:descendant => { :tag => 'option', :attributes => { :selected => 'selected' }}} | |||
@@ -90,7 +90,7 @@ class RepositoriesControllerTest < Test::Unit::TestCase | |||
c = Changeset.create!(:repository => Project.find(1).repository, :committer => 'foo', :committed_on => Time.now, :revision => 100, :comments => 'Committed by foo.') | |||
assert_no_difference "Changeset.count(:conditions => 'user_id = 3')" do | |||
post :committers, :id => 1, :committers => { 'foo' => '2', 'dlopper' => '3'} | |||
post :committers, :id => 1, :committers => { '0' => ['foo', '2'], '1' => ['dlopper', '3']} | |||
assert_redirected_to '/repositories/committers/ecookbook' | |||
assert_equal User.find(2), c.reload.user | |||
end |