diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2012-02-11 12:03:48 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2012-02-11 12:03:48 +0000 |
commit | 2ec55c5337f9eaf35a30257a416d87f99f7bae27 (patch) | |
tree | e34f151bdab3f45db2ea96f94367add55791de0a | |
parent | 004968caf3691f29cc1e68c7d54ef02777ff5314 (diff) | |
download | redmine-2ec55c5337f9eaf35a30257a416d87f99f7bae27.tar.gz redmine-2ec55c5337f9eaf35a30257a416d87f99f7bae27.zip |
Only show statuses that can be applied to all issues on the bulk edit form (#10181).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8844 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/issues_controller.rb | 2 | ||||
-rw-r--r-- | test/functional/issues_controller_test.rb | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 4e3fe8aef..16a0fe723 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -229,7 +229,7 @@ class IssuesController < ApplicationController end target_projects ||= @projects - @available_statuses = target_projects.map{|p|Workflow.available_statuses(p)}.reduce(:&) + @available_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&) @custom_fields = target_projects.map{|p|p.all_issue_custom_fields}.reduce(:&) @assignables = target_projects.map(&:assignable_users).reduce(:&) @trackers = target_projects.map(&:trackers).reduce(:&) diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 6f37bd720..9a5a7cf29 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -2523,6 +2523,26 @@ class IssuesControllerTest < ActionController::TestCase } end + def test_bulk_edit_should_only_propose_statuses_allowed_for_all_issues + Workflow.delete_all + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 1) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4) + Workflow.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 2, :new_status_id => 1) + Workflow.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 2, :new_status_id => 3) + Workflow.create!(:role_id => 1, :tracker_id => 2, :old_status_id => 2, :new_status_id => 5) + @request.session[:user_id] = 2 + get :bulk_edit, :ids => [1, 2] + + assert_response :success + statuses = assigns(:available_statuses) + assert_not_nil statuses + assert_equal [1, 3], statuses.map(&:id).sort + + assert_tag 'select', :attributes => {:name => 'issue[status_id]'}, + :children => {:count => 3} # 2 statuses + "no change" option + end + def test_bulk_update @request.session[:user_id] = 2 # update issues priority |