]> source.dussan.org Git - redmine.git/commitdiff
Fixed that watchers list is not updated when changing project on the new issue form...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 6 Apr 2017 19:57:00 +0000 (19:57 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 6 Apr 2017 19:57:00 +0000 (19:57 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@16511 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue.rb
app/views/issues/_watchers_form.html.erb [new file with mode: 0644]
app/views/issues/new.html.erb
app/views/issues/new.js.erb
test/unit/issue_test.rb

index fc96e909cade7e45bc95b57e26fb2111d21bc132..4d3d1dbe17790de849f871837610ce4f83eec39d 100644 (file)
@@ -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 (file)
index 0000000..6d349f4
--- /dev/null
@@ -0,0 +1,14 @@
+<% if @issue.safe_attribute? 'watcher_user_ids' -%>
+  <p id="watchers_form"><label><%= l(:label_issue_watchers) %></label>
+  <span id="watchers_inputs">
+    <%= watchers_checkboxes(@issue, users_for_new_issue_watchers(@issue)) %>
+  </span>
+  <span class="search_for_watchers">
+  <%= link_to l(:label_search_for_watchers),
+              {:controller => 'watchers', :action => 'new', :project_id => @issue.project},
+              :class => 'icon icon-add-bullet',
+              :remote => true,
+              :method => 'get' %>
+  </span>
+  </p>
+<% end %>
index ec7f262e3188eea7fa08f827ae2192282065c5a9..1c2c8bac8f8da3cb103ccbf1aa64092b49f3036b 100644 (file)
 
     <p id="attachments_form"><label><%= l(:label_attachment_plural) %></label><%= render :partial => 'attachments/form', :locals => {:container => @issue} %></p>
 
-    <% if @issue.safe_attribute? 'watcher_user_ids' -%>
-      <p id="watchers_form"><label><%= l(:label_issue_watchers) %></label>
-      <span id="watchers_inputs">
-        <%= watchers_checkboxes(@issue, users_for_new_issue_watchers(@issue)) %>
-      </span>
-      <span class="search_for_watchers">
-      <%= link_to l(:label_search_for_watchers),
-                  {:controller => 'watchers', :action => 'new', :project_id => @issue.project},
-                  :class => 'icon icon-add-bullet',
-                  :remote => true,
-                  :method => 'get' %>
-      </span>
-      </p>
-    <% end %>
+    <div id="watchers_form_container">
+      <%= render :partial => 'issues/watchers_form' %>
+    </div>
   </div>
 
   <%= submit_tag l(:button_create) %>
index a0c9ad052a4bed15e4aab47cca7efd33f1ddc1f7..c751b5750d027776192931922f93ba9a5efc73bd 100644 (file)
@@ -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 %>
index 36cbc6dcbfa49a5f24cc9e9f1736a22064918935..68a2b54c5491c3bdc38f34eb1450759eef7678f4 100644 (file)
@@ -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))