]> source.dussan.org Git - redmine.git/commitdiff
Fixed that the bulk edit/copy form does not propose versions and categories for the...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 1 Mar 2012 20:22:08 +0000 (20:22 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 1 Mar 2012 20:22:08 +0000 (20:22 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9046 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/issues_controller.rb
app/views/issues/bulk_edit.html.erb
test/functional/issues_controller_test.rb

index 63b3412be4d16acd4cf249b17575b7f06b637350..b1a383c6608c865f9afeb3d3f3214b2c6a6bc2f6 100644 (file)
@@ -221,7 +221,7 @@ class IssuesController < ApplicationController
     if User.current.allowed_to?(:move_issues, @projects)
       @allowed_projects = Issue.allowed_target_projects_on_move
       if params[:issue]
-        @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:issue][:project_id]}
+        @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:issue][:project_id].to_s}
         if @target_project
           target_projects = [@target_project]
         end
@@ -233,6 +233,8 @@ class IssuesController < ApplicationController
     @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(:&)
+    @versions = target_projects.map {|p| p.shared_versions.open}.reduce(:&)
+    @categories = target_projects.map {|p| p.issue_categories}.reduce(:&)
 
     @safe_attributes = @issues.map(&:safe_attribute_names).reduce(:&)
     render :layout => false if request.xhr?
index 13200d726fa3418163cd7ff17c9097b9f2651e3b..0263ab91672af030ebfd0ec62f53b8dd8081d8b8 100644 (file)
                                  content_tag('option', l(:label_nobody), :value => 'none') +
                                  principals_options_for_select(@assignables)) %>
 </p>
-<% if @project %>
 <p>
   <label for='issue_category_id'><%= l(:field_category) %></label>
   <%= select_tag('issue[category_id]', content_tag('option', l(:label_no_change_option), :value => '') +
                                 content_tag('option', l(:label_none), :value => 'none') +
-                                options_from_collection_for_select(@project.issue_categories, :id, :name)) %>
+                                options_from_collection_for_select(@categories, :id, :name)) %>
 </p>
-<% end %>
-<% #TODO: allow editing versions when multiple projects %>
-<% if @project %>
 <p>
   <label for='issue_fixed_version_id'><%= l(:field_fixed_version) %></label>
   <%= select_tag('issue[fixed_version_id]', content_tag('option', l(:label_no_change_option), :value => '') +
                                    content_tag('option', l(:label_none), :value => 'none') +
-                                   version_options_for_select(@project.shared_versions.open.sort)) %>
+                                   version_options_for_select(@versions.sort)) %>
 </p>
-<% end %>
 
 <% @custom_fields.each do |custom_field| %>
   <p><label><%= h(custom_field.name) %></label> <%= custom_field_tag_for_bulk_edit('issue', custom_field, @projects) %></p>
index f85d157ce92793242bbcd60246e5410d19d2fcc8..04df391a12d2816becedda39b1714dac4f0748ee 100644 (file)
@@ -2672,6 +2672,28 @@ class IssuesControllerTest < ActionController::TestCase
       :children => {:count => 3} # 2 statuses + "no change" option
   end
 
+  def test_bulk_edit_should_propose_target_project_open_shared_versions
+    @request.session[:user_id] = 2
+    post :bulk_edit, :ids => [1, 2, 6], :issue => {:project_id => 1}
+    assert_response :success
+    assert_template 'bulk_edit'
+    assert_equal Project.find(1).shared_versions.open.all.sort, assigns(:versions).sort
+    assert_tag 'select',
+      :attributes => {:name => 'issue[fixed_version_id]'},
+      :descendant => {:tag => 'option', :content => '2.0'}
+  end
+
+  def test_bulk_edit_should_propose_target_project_categories
+    @request.session[:user_id] = 2
+    post :bulk_edit, :ids => [1, 2, 6], :issue => {:project_id => 1}
+    assert_response :success
+    assert_template 'bulk_edit'
+    assert_equal Project.find(1).issue_categories.sort, assigns(:categories).sort
+    assert_tag 'select',
+      :attributes => {:name => 'issue[category_id]'},
+      :descendant => {:tag => 'option', :content => 'Recipes'}
+  end
+
   def test_bulk_update
     @request.session[:user_id] = 2
     # update issues priority