Project

General

Profile

Patch #24877 » filter_autocomplete_issues_by_status.patch

Marius BĂLTEANU, 2017-01-19 09:46

View differences:

app/controllers/auto_completes_controller.rb
21 21
  def issues
22 22
    @issues = []
23 23
    q = (params[:q] || params[:term]).to_s.strip
24
    status = params[:status].to_s.strip
24 25
    if q.present?
25 26
      scope = Issue.cross_project_scope(@project, params[:scope]).visible
27
      scope = scope.open if status == 'o'
28
      scope = scope.joins(:status).where("#{IssueStatus.table_name}.is_closed = 1") if status == 'c'
26 29
      if q.match(/\A#?(\d+)\z/)
27 30
        @issues << scope.find_by_id($1.to_i)
28 31
      end
32

  
29 33
      @issues += scope.where("LOWER(#{Issue.table_name}.subject) LIKE LOWER(?)", "%#{q}%").order("#{Issue.table_name}.id DESC").limit(10).to_a
30 34
      @issues.compact!
31 35
    end
app/views/issues/_attributes.html.erb
47 47
<div class="splitcontentright">
48 48
<% if @issue.safe_attribute? 'parent_issue_id' %>
49 49
<p id="parent_issue"><%= f.text_field :parent_issue_id, :size => 10, :required => @issue.required_attribute?('parent_issue_id') %></p>
50
<%= javascript_tag "observeAutocompleteField('issue_parent_issue_id', '#{escape_javascript auto_complete_issues_path(:project_id => @issue.project, :scope => Setting.cross_project_subtasks)}')" %>
50
<%= javascript_tag "observeAutocompleteField('issue_parent_issue_id', '#{escape_javascript auto_complete_issues_path(:project_id => @issue.project, :scope => Setting.cross_project_subtasks, :status => @issue.closed? ? 'c' : 'o')}')" %>
51 51
<% end %>
52 52

  
53 53
<% if @issue.safe_attribute? 'start_date' %>
test/functional/auto_completes_controller_test.rb
81 81
    assert_equal 13, issue['value']
82 82
    assert_equal 'Bug #13: Subproject issue two', issue['label']
83 83
  end
84

  
85
  def test_auto_complete_with_status_o_should_return_open_issues_only
86
    get :issues, :project_id => 'ecookbook', :q => 'issue', :status => 'o'
87
    assert_response :success
88
    assert_include "Issue due today", response.body
89
    assert_not_include "closed", response.body
90
  end
91

  
92
  def test_auto_complete_with_status_c_should_return_closed_issues_only
93
    get :issues, :project_id => 'ecookbook', :q => 'issue', :status => 'c'
94
    assert_response :success
95
    assert_include "closed", response.body
96
    assert_not_include "Issue due today", response.body
97
  end
84 98
end
(1-1/3)