Admin: user sorting
This commit is contained in:
parent
9c824888c8
commit
4e0da2325b
|
@ -4,6 +4,7 @@ class Admin::UsersController < Admin::ApplicationController
|
|||
def index
|
||||
@users = User.filter(params[:filter])
|
||||
@users = @users.search(params[:name]) if params[:name].present?
|
||||
@users = @users.sort(@sort = params[:sort])
|
||||
@users = @users.alphabetically.page(params[:page])
|
||||
end
|
||||
|
||||
|
|
|
@ -30,18 +30,18 @@ class SnippetsFinder
|
|||
snippets = user.snippets.fresh.non_expired
|
||||
|
||||
if user == current_user
|
||||
snippets = case scope
|
||||
when 'are_internal' then
|
||||
snippets.are_internal
|
||||
when 'are_private' then
|
||||
snippets.are_private
|
||||
when 'are_public' then
|
||||
snippets.are_public
|
||||
else
|
||||
snippets
|
||||
end
|
||||
case scope
|
||||
when 'are_internal' then
|
||||
snippets.are_internal
|
||||
when 'are_private' then
|
||||
snippets.are_private
|
||||
when 'are_public' then
|
||||
snippets.are_public
|
||||
else
|
||||
snippets
|
||||
end
|
||||
else
|
||||
snippets = snippets.public_and_internal
|
||||
snippets.public_and_internal
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -196,6 +196,16 @@ class User < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
def sort(method)
|
||||
case method.to_s
|
||||
when 'recent_sign_in' then reorder('users.last_sign_in_at DESC')
|
||||
when 'oldest_sign_in' then reorder('users.last_sign_in_at ASC')
|
||||
when 'recently_created' then reorder('users.created_at DESC')
|
||||
when 'late_created' then reorder('users.created_at ASC')
|
||||
else reorder("users.name ASC")
|
||||
end
|
||||
end
|
||||
|
||||
def find_for_commit(email, name)
|
||||
# Prefer email match over name match
|
||||
User.where(email: email).first ||
|
||||
|
|
|
@ -32,6 +32,26 @@
|
|||
.panel-heading
|
||||
Users (#{@users.total_count})
|
||||
.panel-head-actions
|
||||
.dropdown.inline
|
||||
%a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"}
|
||||
%span.light sort:
|
||||
- if @sort.present?
|
||||
= @sort.humanize
|
||||
- else
|
||||
Name
|
||||
%b.caret
|
||||
%ul.dropdown-menu
|
||||
%li
|
||||
= link_to admin_users_path(sort: nil) do
|
||||
Name
|
||||
= link_to admin_users_path(sort: 'recent_sign_in') do
|
||||
Recent sign in
|
||||
= link_to admin_users_path(sort: 'oldest_sign_in') do
|
||||
Oldest sign in
|
||||
= link_to admin_users_path(sort: 'recently_created') do
|
||||
Recently created
|
||||
= link_to admin_users_path(sort: 'late_created') do
|
||||
Late created
|
||||
= link_to 'New User', new_admin_user_path, class: "btn btn-new"
|
||||
%ul.well-list
|
||||
- @users.each do |user|
|
||||
|
|
|
@ -429,4 +429,32 @@ describe User do
|
|||
expect(user.starred?(project)).to be_false
|
||||
end
|
||||
end
|
||||
|
||||
describe "#sort" do
|
||||
before do
|
||||
User.delete_all
|
||||
@user = create :user, created_at: Date.today, last_sign_in_at: Date.today, name: 'Alpha'
|
||||
@user1 = create :user, created_at: Date.today - 1, last_sign_in_at: Date.today - 1, name: 'Omega'
|
||||
end
|
||||
|
||||
it "sorts users as recently_signed_in" do
|
||||
User.sort('recent_sign_in').first.should == @user
|
||||
end
|
||||
|
||||
it "sorts users as late_signed_in" do
|
||||
User.sort('oldest_sign_in').first.should == @user1
|
||||
end
|
||||
|
||||
it "sorts users as recently_created" do
|
||||
User.sort('recently_created').first.should == @user
|
||||
end
|
||||
|
||||
it "sorts users as late_created" do
|
||||
User.sort('late_created').first.should == @user1
|
||||
end
|
||||
|
||||
it "sorts users by name when nil is passed" do
|
||||
User.sort(nil).first.should == @user
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue