From 9506ff1f4000c9a2fd3d4fcddb19b269d1c37ca6 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Thu, 6 Apr 2017 19:57:00 +0000 Subject: [PATCH] Fixed that watchers list is not updated when changing project on the new issue form (#17762). git-svn-id: http://svn.redmine.org/redmine/trunk@16511 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/issue.rb | 3 +++ app/views/issues/_watchers_form.html.erb | 14 ++++++++++++++ app/views/issues/new.html.erb | 17 +++-------------- app/views/issues/new.js.erb | 3 +++ test/unit/issue_test.rb | 10 ++++++++++ 5 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 app/views/issues/_watchers_form.html.erb diff --git a/app/models/issue.rb b/app/models/issue.rb index fc96e909c..4d3d1dbe1 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -375,6 +375,9 @@ class Issue < ActiveRecord::Base def project=(project, keep_tracker=false) project_was = self.project association(:project).writer(project) + if project != project_was + @safe_attribute_names = nil + end if project_was && project && project_was != project @assignable_versions = nil diff --git a/app/views/issues/_watchers_form.html.erb b/app/views/issues/_watchers_form.html.erb new file mode 100644 index 000000000..6d349f4a3 --- /dev/null +++ b/app/views/issues/_watchers_form.html.erb @@ -0,0 +1,14 @@ +<% if @issue.safe_attribute? 'watcher_user_ids' -%> +

+ + <%= watchers_checkboxes(@issue, users_for_new_issue_watchers(@issue)) %> + + + <%= link_to l(:label_search_for_watchers), + {:controller => 'watchers', :action => 'new', :project_id => @issue.project}, + :class => 'icon icon-add-bullet', + :remote => true, + :method => 'get' %> + +

+<% end %> diff --git a/app/views/issues/new.html.erb b/app/views/issues/new.html.erb index ec7f262e3..1c2c8bac8 100644 --- a/app/views/issues/new.html.erb +++ b/app/views/issues/new.html.erb @@ -32,20 +32,9 @@

<%= render :partial => 'attachments/form', :locals => {:container => @issue} %>

- <% if @issue.safe_attribute? 'watcher_user_ids' -%> -

- - <%= watchers_checkboxes(@issue, users_for_new_issue_watchers(@issue)) %> - - - <%= link_to l(:label_search_for_watchers), - {:controller => 'watchers', :action => 'new', :project_id => @issue.project}, - :class => 'icon icon-add-bullet', - :remote => true, - :method => 'get' %> - -

- <% end %> +
+ <%= render :partial => 'issues/watchers_form' %> +
<%= submit_tag l(:button_create) %> diff --git a/app/views/issues/new.js.erb b/app/views/issues/new.js.erb index a0c9ad052..c751b5750 100644 --- a/app/views/issues/new.js.erb +++ b/app/views/issues/new.js.erb @@ -1 +1,4 @@ replaceIssueFormWith('<%= escape_javascript(render :partial => 'form') %>'); +<% if params[:form_update_triggered_by] == "issue_project_id" %> +$("#watchers_form_container").html('<%= escape_javascript(render :partial => 'issues/watchers_form') %>'); +<% end %> diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index 36cbc6dcb..68a2b54c5 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -803,6 +803,16 @@ class IssueTest < ActiveSupport::TestCase assert_equal 1, issue.status_id end + def test_safe_attributes_names_should_be_updated_when_changing_project + issue = Issue.new + with_current_user(User.find(2)) do + assert_not_include 'watcher_user_ids', issue.safe_attribute_names + + issue.project_id = 1 + assert_include 'watcher_user_ids', issue.safe_attribute_names + end + end + def test_safe_attributes_names_should_not_include_disabled_field tracker = Tracker.new(:core_fields => %w(assigned_to_id fixed_version_id)) -- 2.39.5