summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-10-24 17:12:39 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-10-24 17:12:39 +0000
commit16eda4c5c91c55a09eec7a1d04b9db98aeb4ece5 (patch)
tree5e613765f4d5e5f9883a227abddd7db2397b66eb
parentb4101c8b65ecab179a3af492023d95a20d4bc388 (diff)
downloadredmine-16eda4c5c91c55a09eec7a1d04b9db98aeb4ece5.tar.gz
redmine-16eda4c5c91c55a09eec7a1d04b9db98aeb4ece5.zip
Adds the ability to search for a project name or identifier on the administration projects list.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@1947 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/admin_controller.rb14
-rw-r--r--app/helpers/admin_helper.rb2
-rw-r--r--app/views/admin/projects.rhtml6
-rw-r--r--test/functional/admin_controller_test.rb19
4 files changed, 33 insertions, 8 deletions
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb
index a6df49dcd..777c31d70 100644
--- a/app/controllers/admin_controller.rb
+++ b/app/controllers/admin_controller.rb
@@ -29,16 +29,20 @@ class AdminController < ApplicationController
sort_init 'name', 'asc'
sort_update
- @status = params[:status] ? params[:status].to_i : 0
- conditions = nil
- conditions = ["status=?", @status] unless @status == 0
+ @status = params[:status] ? params[:status].to_i : 1
+ c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
- @project_count = Project.count(:conditions => conditions)
+ unless params[:name].blank?
+ name = "%#{params[:name].strip.downcase}%"
+ c << ["LOWER(identifier) LIKE ? OR LOWER(name) LIKE ?", name, name]
+ end
+
+ @project_count = Project.count(:conditions => c.conditions)
@project_pages = Paginator.new self, @project_count,
per_page_option,
params['page']
@projects = Project.find :all, :order => sort_clause,
- :conditions => conditions,
+ :conditions => c.conditions,
:limit => @project_pages.items_per_page,
:offset => @project_pages.current.offset
diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb
index 1b41d8374..8f81f66ba 100644
--- a/app/helpers/admin_helper.rb
+++ b/app/helpers/admin_helper.rb
@@ -17,7 +17,7 @@
module AdminHelper
def project_status_options_for_select(selected)
- options_for_select([[l(:label_all), "*"],
+ options_for_select([[l(:label_all), ''],
[l(:status_active), 1]], selected)
end
end
diff --git a/app/views/admin/projects.rhtml b/app/views/admin/projects.rhtml
index c42845622..6c7a21fb5 100644
--- a/app/views/admin/projects.rhtml
+++ b/app/views/admin/projects.rhtml
@@ -4,11 +4,13 @@
<h2><%=l(:label_project_plural)%></h2>
-<% form_tag() do %>
+<% form_tag({}, :method => :get) do %>
<fieldset><legend><%= l(:label_filter_plural) %></legend>
<label><%= l(:field_status) %> :</label>
<%= select_tag 'status', project_status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;" %>
-<%= submit_tag l(:button_apply), :class => "small" %>
+<label><%= l(:label_project) %>:</label>
+<%= text_field_tag 'name', params[:name], :size => 30 %>
+<%= submit_tag l(:button_apply), :class => "small", :name => nil %>
</fieldset>
<% end %>
&nbsp;
diff --git a/test/functional/admin_controller_test.rb b/test/functional/admin_controller_test.rb
index 05205b399..7c2626082 100644
--- a/test/functional/admin_controller_test.rb
+++ b/test/functional/admin_controller_test.rb
@@ -45,6 +45,25 @@ class AdminControllerTest < Test::Unit::TestCase
:attributes => { :class => /nodata/ }
end
+ def test_projects
+ get :projects
+ assert_response :success
+ assert_template 'projects'
+ assert_not_nil assigns(:projects)
+ # active projects only
+ assert_nil assigns(:projects).detect {|u| !u.active?}
+ end
+
+ def test_projects_with_name_filter
+ get :projects, :name => 'store', :status => ''
+ assert_response :success
+ assert_template 'projects'
+ projects = assigns(:projects)
+ assert_not_nil projects
+ assert_equal 1, projects.size
+ assert_equal 'OnlineStore', projects.first.name
+ end
+
def test_load_default_configuration_data
delete_configuration_data
post :default_configuration, :lang => 'fr'