# Redmine - project management software
-# Copyright (C) 2006-2010 Jean-Philippe Lang
+# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@limit = per_page_option
end
+ scope = User
+ scope = scope.in_group(params[:group_id].to_i) if params[:group_id].present?
+
@status = params[:status] ? params[:status].to_i : 1
c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
c << ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ? OR LOWER(mail) LIKE ?", name, name, name, name]
end
- @user_count = User.count(:conditions => c.conditions)
+ @user_count = scope.count(:conditions => c.conditions)
@user_pages = Paginator.new self, @user_count, @limit, params['page']
@offset ||= @user_pages.current.offset
- @users = User.find :all,
+ @users = scope.find :all,
:order => sort_clause,
:conditions => c.conditions,
:limit => @limit,
:offset => @offset
respond_to do |format|
- format.html { render :layout => !request.xhr? }
+ format.html {
+ @groups = Group.all.sort
+ render :layout => !request.xhr?
+ }
format.api
end
end
before_destroy :remove_references_before_destroy
+ named_scope :in_group, lambda {|group|
+ group_id = group.is_a?(Group) ? group.id : group.to_i
+ { :conditions => ["#{User.table_name}.id IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id] }
+ }
+
def before_create
self.mail_notification = Setting.default_notification_option if self.mail_notification.blank?
true
<fieldset><legend><%= l(:label_filter_plural) %></legend>
<label><%= l(:field_status) %>:</label>
<%= select_tag 'status', users_status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;" %>
+
+<% if @groups.present? %>
+<label><%= l(:label_group) %>:</label>
+<%= select_tag 'group_id', '<option></option>' + options_from_collection_for_select(@groups, :id, :name, params[:group_id].to_i), :onchange => "this.form.submit(); return false;" %>
+<% end %>
+
<label><%= l(:label_user) %>:</label>
<%= text_field_tag 'name', params[:name], :size => 30 %>
<%= submit_tag l(:button_apply), :class => "small", :name => nil %>
-# redMine - project management software
-# Copyright (C) 2006-2007 Jean-Philippe Lang
+# Redmine - project management software
+# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
class UsersControllerTest < ActionController::TestCase
include Redmine::I18n
- fixtures :users, :projects, :members, :member_roles, :roles, :auth_sources, :custom_fields, :custom_values
+ fixtures :users, :projects, :members, :member_roles, :roles, :auth_sources, :custom_fields, :custom_values, :groups_users
def setup
@controller = UsersController.new
assert_equal 'John', users.first.firstname
end
+ def test_index_with_group_filter
+ get :index, :group_id => '10'
+ assert_response :success
+ assert_template 'index'
+ users = assigns(:users)
+ assert users.any?
+ assert_equal([], (users - Group.find(10).users))
+ end
+
def test_show
@request.session[:user_id] = nil
get :show, :id => 2