Patch #22345 » 0001-Do-not-propose-trackers-which-disallow-parent_issue_.patch
app/helpers/issues_helper.rb | ||
---|---|---|
162 | 162 |
# Returns a link for adding a new subtask to the given issue |
163 | 163 |
def link_to_new_subtask(issue) |
164 | 164 |
attrs = { |
165 |
:tracker_id => issue.tracker, |
|
166 | 165 |
:parent_issue_id => issue |
167 | 166 |
} |
167 |
attrs[:tracker_id] = issue.tracker unless issue.tracker.disabled_core_fields.include?('parent_issue_id') |
|
168 | 168 |
link_to(l(:button_add), new_project_issue_path(issue.project, :issue => attrs)) |
169 | 169 |
end |
170 | 170 |
app/views/issues/_form.html.erb | ||
---|---|---|
14 | 14 |
<% end %> |
15 | 15 | |
16 | 16 |
<% if @issue.safe_attribute? 'tracker_id' %> |
17 |
<p><%= f.select :tracker_id, @issue.project.trackers.collect {|t| [t.name, t.id]}, {:required => true}, |
|
17 |
<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},
|
|
18 | 18 |
:onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)" %></p> |
19 | 19 |
<% end %> |
20 | 20 |
test/functional/issues_controller_test.rb | ||
---|---|---|
1988 | 1988 |
assert_response 404 |
1989 | 1989 |
end |
1990 | 1990 | |
1991 |
def test_new_with_parent_id_should_only_propose_valid_trackers |
|
1992 |
@request.session[:user_id] = 2 |
|
1993 |
t = Tracker.find(3) |
|
1994 |
assert !t.disabled_core_fields.include?('parent_issue_id') |
|
1995 | ||
1996 |
get :new, :project_id => 1, issue: { parent_issue_id: 1 } |
|
1997 |
assert_response :success |
|
1998 |
assert_select 'option', text: /#{t.name}/, count: 1 |
|
1999 | ||
2000 |
t.core_fields = Tracker::CORE_FIELDS - ['parent_issue_id'] |
|
2001 |
t.save! |
|
2002 |
assert t.disabled_core_fields.include?('parent_issue_id') |
|
2003 |
get :new, :project_id => 1, issue: { parent_issue_id: 1 } |
|
2004 |
assert_response :success |
|
2005 |
assert_select 'option', text: /#{t.name}/, count: 0 |
|
2006 |
end |
|
2007 | ||
1991 | 2008 |
def test_update_form_for_new_issue |
1992 | 2009 |
@request.session[:user_id] = 2 |
1993 | 2010 |
xhr :post, :new, :project_id => 1, |