summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2016-04-24 15:22:18 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2016-04-24 15:22:18 +0000
commit83d4c9c50b05df57ee36fe32eb0990806d960151 (patch)
treeebd22eb08e0cbc96e9430da04b9e4ce8be8afec2
parent6376762917788a9a9daad35236fac46065a98cab (diff)
downloadredmine-83d4c9c50b05df57ee36fe32eb0990806d960151.tar.gz
redmine-83d4c9c50b05df57ee36fe32eb0990806d960151.zip
Do not propose trackers which disallow parent_issue_id for new child issues (#22345).
also removes the tracker_id from the "Add new child issue" link in case it doesn't allow parent_issue_id Patch by Jens Kraemer. git-svn-id: http://svn.redmine.org/redmine/trunk@15359 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/helpers/issues_helper.rb2
-rw-r--r--app/views/issues/_form.html.erb2
-rw-r--r--test/functional/issues_controller_test.rb17
3 files changed, 19 insertions, 2 deletions
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 0d6f69913..b505765d8 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -162,9 +162,9 @@ module IssuesHelper
# Returns a link for adding a new subtask to the given issue
def link_to_new_subtask(issue)
attrs = {
- :tracker_id => issue.tracker,
:parent_issue_id => issue
}
+ attrs[:tracker_id] = issue.tracker unless issue.tracker.disabled_core_fields.include?('parent_issue_id')
link_to(l(:button_add), new_project_issue_path(issue.project, :issue => attrs))
end
diff --git a/app/views/issues/_form.html.erb b/app/views/issues/_form.html.erb
index 5c0ced141..f9907c345 100644
--- a/app/views/issues/_form.html.erb
+++ b/app/views/issues/_form.html.erb
@@ -14,7 +14,7 @@
<% end %>
<% if @issue.safe_attribute? 'tracker_id' %>
-<p><%= f.select :tracker_id, @issue.project.trackers.collect {|t| [t.name, t.id]}, {:required => true},
+<p><%= f.select :tracker_id, @issue.project.trackers.reject { |t| @issue.new_record? && @issue.parent_issue_id.present? && @issue.tracker_id != t.id && t.disabled_core_fields.include?('parent_issue_id') }.collect {|t| [t.name, t.id]}, {:required => true},
:onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)" %></p>
<% end %>
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index 14489dcb8..0a021289a 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -2017,6 +2017,23 @@ class IssuesControllerTest < ActionController::TestCase
get :new, :project_id => 'invalid'
assert_response 404
end
+
+ def test_new_with_parent_id_should_only_propose_valid_trackers
+ @request.session[:user_id] = 2
+ t = Tracker.find(3)
+ assert !t.disabled_core_fields.include?('parent_issue_id')
+
+ get :new, :project_id => 1, issue: { parent_issue_id: 1 }
+ assert_response :success
+ assert_select 'option', text: /#{t.name}/, count: 1
+
+ t.core_fields = Tracker::CORE_FIELDS - ['parent_issue_id']
+ t.save!
+ assert t.disabled_core_fields.include?('parent_issue_id')
+ get :new, :project_id => 1, issue: { parent_issue_id: 1 }
+ assert_response :success
+ assert_select 'option', text: /#{t.name}/, count: 0
+ end
def test_update_form_for_new_issue
@request.session[:user_id] = 2