@@ -4,11 +4,12 class AutoCompletesController < ApplicationController | |||||
4 | def issues |
|
4 | def issues | |
5 | @issues = [] |
|
5 | @issues = [] | |
6 | q = params[:q].to_s |
|
6 | q = params[:q].to_s | |
|
7 | query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues | |||
7 | if q.match(/^\d+$/) |
|
8 | if q.match(/^\d+$/) | |
8 |
@issues << |
|
9 | @issues << query.visible.find_by_id(q.to_i) | |
9 | end |
|
10 | end | |
10 | unless q.blank? |
|
11 | unless q.blank? | |
11 |
@issues += |
|
12 | @issues += query.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10) | |
12 | end |
|
13 | end | |
13 | render :layout => false |
|
14 | render :layout => false | |
14 | end |
|
15 | end |
@@ -1,7 +1,9 | |||||
1 | <%= error_messages_for 'relation' %> |
|
1 | <%= error_messages_for 'relation' %> | |
2 |
|
2 | |||
3 | <p><%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %> |
|
3 | <p><%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %> | |
4 |
<%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => |
|
4 | <%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 10 %> | |
|
5 | <div id="related_issue_candidates" class="autocomplete"></div> | |||
|
6 | <%= javascript_tag "observeRelatedIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %> | |||
5 | <span id="predecessor_fields" style="display:none;"> |
|
7 | <span id="predecessor_fields" style="display:none;"> | |
6 | <%= l(:field_delay) %>: <%= f.text_field :delay, :size => 3 %> <%= l(:label_day_plural) %> |
|
8 | <%= l(:field_delay) %>: <%= f.text_field :delay, :size => 3 %> <%= l(:label_day_plural) %> | |
7 | </span> |
|
9 | </span> |
@@ -218,6 +218,20 function observeParentIssueField(url) { | |||||
218 | }}); |
|
218 | }}); | |
219 | } |
|
219 | } | |
220 |
|
220 | |||
|
221 | function observeRelatedIssueField(url) { | |||
|
222 | new Ajax.Autocompleter('relation_issue_to_id', | |||
|
223 | 'related_issue_candidates', | |||
|
224 | url, | |||
|
225 | { minChars: 3, | |||
|
226 | frequency: 0.5, | |||
|
227 | paramName: 'q', | |||
|
228 | updateElement: function(value) { | |||
|
229 | document.getElementById('relation_issue_to_id').value = value.id; | |||
|
230 | }, | |||
|
231 | parameters: 'scope=all' | |||
|
232 | }); | |||
|
233 | } | |||
|
234 | ||||
221 | /* shows and hides ajax indicator */ |
|
235 | /* shows and hides ajax indicator */ | |
222 | Ajax.Responders.register({ |
|
236 | Ajax.Responders.register({ | |
223 | onCreate: function(){ |
|
237 | onCreate: function(){ |
@@ -663,6 +663,7 div.autocomplete ul li span.informal { | |||||
663 | } |
|
663 | } | |
664 |
|
664 | |||
665 | #parent_issue_candidates ul li {width: 500px;} |
|
665 | #parent_issue_candidates ul li {width: 500px;} | |
|
666 | #related_issue_candidates ul li {width: 500px;} | |||
666 |
|
667 | |||
667 | /***** Diff *****/ |
|
668 | /***** Diff *****/ | |
668 | .diff_out { background: #fcc; } |
|
669 | .diff_out { background: #fcc; } |
@@ -17,4 +17,18 class AutoCompletesControllerTest < ActionController::TestCase | |||||
17 | assert assigns(:issues).include?(Issue.find(13)) |
|
17 | assert assigns(:issues).include?(Issue.find(13)) | |
18 | end |
|
18 | end | |
19 |
|
19 | |||
|
20 | def test_auto_complete_with_scope_all_and_cross_project_relations | |||
|
21 | Setting.cross_project_issue_relations = '1' | |||
|
22 | get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all' | |||
|
23 | assert_response :success | |||
|
24 | assert_not_nil assigns(:issues) | |||
|
25 | assert assigns(:issues).include?(Issue.find(13)) | |||
|
26 | end | |||
|
27 | ||||
|
28 | def test_auto_complete_with_scope_all_without_cross_project_relations | |||
|
29 | Setting.cross_project_issue_relations = '0' | |||
|
30 | get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all' | |||
|
31 | assert_response :success | |||
|
32 | assert_equal [nil], assigns(:issues) | |||
|
33 | end | |||
20 | end |
|
34 | end |
General Comments 0
You need to be logged in to leave comments.
Login now