##// END OF EJS Templates
Autocomplete issue relations on subject (#3170)....
Jean-Philippe Lang -
r4388:a8b12bcb5202
parent child
Show More
@@ -4,11 +4,12 class AutoCompletesController < ApplicationController
4 4 def issues
5 5 @issues = []
6 6 q = params[:q].to_s
7 query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
7 8 if q.match(/^\d+$/)
8 @issues << @project.issues.visible.find_by_id(q.to_i)
9 @issues << query.visible.find_by_id(q.to_i)
9 10 end
10 11 unless q.blank?
11 @issues += @project.issues.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10)
12 @issues += query.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10)
12 13 end
13 14 render :layout => false
14 15 end
@@ -1,7 +1,9
1 1 <%= error_messages_for 'relation' %>
2 2
3 3 <p><%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %>
4 <%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 6 %>
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 7 <span id="predecessor_fields" style="display:none;">
6 8 <%= l(:field_delay) %>: <%= f.text_field :delay, :size => 3 %> <%= l(:label_day_plural) %>
7 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 235 /* shows and hides ajax indicator */
222 236 Ajax.Responders.register({
223 237 onCreate: function(){
@@ -663,6 +663,7 div.autocomplete ul li span.informal {
663 663 }
664 664
665 665 #parent_issue_candidates ul li {width: 500px;}
666 #related_issue_candidates ul li {width: 500px;}
666 667
667 668 /***** Diff *****/
668 669 .diff_out { background: #fcc; }
@@ -17,4 +17,18 class AutoCompletesControllerTest < ActionController::TestCase
17 17 assert assigns(:issues).include?(Issue.find(13))
18 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 34 end
General Comments 0
You need to be logged in to leave comments. Login now