From 3ea387379d3b60d175a19534bf497c30ff1bba9c Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Fri, 9 Oct 2015 06:43:03 +0000 Subject: [PATCH] Merged r14618 (#20360). git-svn-id: http://svn.redmine.org/redmine/branches/2.6-stable@14653 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/project.rb | 16 +++++++++++----- test/functional/projects_controller_test.rb | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index f4d458726..0494a8298 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -526,11 +526,17 @@ class Project < ActiveRecord::Base # Returns a scope of all custom fields enabled for project issues # (explicitly associated custom fields and custom fields enabled for all projects) def all_issue_custom_fields - @all_issue_custom_fields ||= IssueCustomField. - sorted. - where("is_for_all = ? OR id IN (SELECT DISTINCT cfp.custom_field_id" + - " FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} cfp" + - " WHERE cfp.project_id = ?)", true, id) + if new_record? + @all_issue_custom_fields ||= IssueCustomField. + sorted. + where("is_for_all = ? OR id IN (?)", true, issue_custom_field_ids) + else + @all_issue_custom_fields ||= IssueCustomField. + sorted. + where("is_for_all = ? OR id IN (SELECT DISTINCT cfp.custom_field_id" + + " FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} cfp" + + " WHERE cfp.project_id = ?)", true, id) + end end # Returns an array of all custom fields enabled for project time entries diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index e73098f0a..88ba95d33 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -555,6 +555,20 @@ class ProjectsControllerTest < ActionController::TestCase assert_response 404 end + def test_get_copy_should_preselect_custom_fields + field1 = IssueCustomField.generate!(:is_for_all => false) + field2 = IssueCustomField.generate!(:is_for_all => false) + source = Project.generate!(:issue_custom_fields => [field1]) + @request.session[:user_id] = 1 + + get :copy, :id => source.id + assert_response :success + assert_select 'fieldset#project_issue_custom_fields' do + assert_select 'input[type=checkbox][value=?][checked=checked]', field1.id.to_s + assert_select 'input[type=checkbox][value=?]:not([checked])', field2.id.to_s + end + end + def test_post_copy_should_copy_requested_items @request.session[:user_id] = 1 # admin CustomField.delete_all -- 2.39.5