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
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
<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 %>
: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'