summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2017-05-13 09:20:29 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2017-05-13 09:20:29 +0000
commit23dc61685066faab63f366fc5d7f88f985431359 (patch)
treedb4000125a8a56688c01c67838b920dcd99418fa
parentc7cff810e8060e2e887330451bba0536b3e8c2f5 (diff)
downloadredmine-23dc61685066faab63f366fc5d7f88f985431359.tar.gz
redmine-23dc61685066faab63f366fc5d7f88f985431359.zip
Moves project quick search to a dedicated action.
git-svn-id: http://svn.redmine.org/redmine/trunk@16550 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/projects_controller.rb23
-rw-r--r--app/helpers/application_helper.rb2
-rw-r--r--app/views/projects/autocomplete.js.erb (renamed from app/views/projects/index.js.erb)0
-rw-r--r--config/routes.rb4
-rw-r--r--test/functional/projects_controller_test.rb4
-rw-r--r--test/integration/routing/projects_test.rb2
6 files changed, 23 insertions, 12 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 99a39af3b..ec0c13119 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -20,8 +20,8 @@ class ProjectsController < ApplicationController
menu_item :settings, :only => :settings
menu_item :projects, :only => [:index, :new, :copy, :create]
- before_action :find_project, :except => [ :index, :list, :new, :create, :copy ]
- before_action :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
+ before_action :find_project, :except => [ :index, :autocomplete, :list, :new, :create, :copy ]
+ before_action :authorize, :except => [ :index, :autocomplete, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
before_action :authorize_global, :only => [:new, :create]
before_action :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
accept_rss_auth :index
@@ -50,13 +50,6 @@ class ProjectsController < ApplicationController
end
@projects = scope.to_a
}
- format.js {
- if params[:q].present?
- @projects = Project.visible.like(params[:q]).to_a
- else
- @projects = User.current.projects.to_a
- end
- }
format.api {
@offset, @limit = api_offset_and_limit
@project_count = scope.count
@@ -69,6 +62,18 @@ class ProjectsController < ApplicationController
end
end
+ def autocomplete
+ respond_to do |format|
+ format.js {
+ if params[:q].present?
+ @projects = Project.visible.like(params[:q]).to_a
+ else
+ @projects = User.current.projects.to_a
+ end
+ }
+ end
+ end
+
def new
@issue_custom_fields = IssueCustomField.sorted.to_a
@trackers = Tracker.sorted.to_a
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 29bc54157..94382a37b 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -370,7 +370,7 @@ module ApplicationHelper
projects = projects_for_jump_box(User.current)
text = @project.try(:name) || l(:label_jump_to_a_project)
trigger = content_tag('span', text, :class => 'drdn-trigger')
- q = text_field_tag('q', '', :id => 'projects-quick-search', :class => 'autocomplete', :data => {:automcomplete_url => projects_path(:format => 'js')}, :autocomplete => 'off')
+ q = text_field_tag('q', '', :id => 'projects-quick-search', :class => 'autocomplete', :data => {:automcomplete_url => autocomplete_projects_path(:format => 'js')}, :autocomplete => 'off')
all = link_to(l(:label_project_all), projects_path(:jump => current_menu_item), :class => (@project.nil? && controller.class.main_menu ? 'selected' : nil))
content = content_tag('div',
content_tag('div', q, :class => 'quick-search') +
diff --git a/app/views/projects/index.js.erb b/app/views/projects/autocomplete.js.erb
index de6c3f579..de6c3f579 100644
--- a/app/views/projects/index.js.erb
+++ b/app/views/projects/autocomplete.js.erb
diff --git a/config/routes.rb b/config/routes.rb
index ab1e1bcab..ae7c6c98a 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -101,6 +101,10 @@ Rails.application.routes.draw do
delete 'issues/:object_id/watchers/:user_id' => 'watchers#destroy', :object_type => 'issue'
resources :projects do
+ collection do
+ get 'autocomplete'
+ end
+
member do
get 'settings(/:tab)', :action => 'settings', :as => 'settings'
post 'modules'
diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb
index db81206fb..92d5f4a56 100644
--- a/test/functional/projects_controller_test.rb
+++ b/test/functional/projects_controller_test.rb
@@ -52,8 +52,8 @@ class ProjectsControllerTest < Redmine::ControllerTest
assert_select 'feed>entry', :count => Project.visible(User.current).count
end
- def test_index_js
- xhr :get, :index, :format => 'js', :q => 'coo'
+ def test_autocomplete_js
+ xhr :get, :autocomplete, :format => 'js', :q => 'coo'
assert_response :success
assert_equal 'text/javascript', response.content_type
end
diff --git a/test/integration/routing/projects_test.rb b/test/integration/routing/projects_test.rb
index ed68ec69d..a7e3e96e7 100644
--- a/test/integration/routing/projects_test.rb
+++ b/test/integration/routing/projects_test.rb
@@ -24,6 +24,8 @@ class RoutingProjectsTest < Redmine::RoutingTest
should_route 'GET /projects/new' => 'projects#new'
should_route 'POST /projects' => 'projects#create'
+ should_route 'GET /projects/autocomplete.js' => 'projects#autocomplete', :format => 'js'
+
should_route 'GET /projects/foo' => 'projects#show', :id => 'foo'
should_route 'PUT /projects/foo' => 'projects#update', :id => 'foo'
should_route 'DELETE /projects/foo' => 'projects#destroy', :id => 'foo'