From 6a3caadded3cb3c8b3fd1ee2cd4772ed73274dac Mon Sep 17 00:00:00 2001 From: Arthur Del Esposte Date: Wed, 15 Jan 2014 11:26:04 -0200 Subject: [PATCH] sort_members: sort community members alphabetically in manage members and view all page --- app/controllers/my_profile/profile_members_controller.rb | 2 +- app/controllers/public/profile_controller.rb | 2 +- app/models/profile.rb | 4 ++++ app/views/profile_members/_members_list.rhtml | 2 +- test/unit/profile_test.rb | 24 ++++++++++++++++++++++++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/controllers/my_profile/profile_members_controller.rb b/app/controllers/my_profile/profile_members_controller.rb index 654ce5b..c1f9558 100644 --- a/app/controllers/my_profile/profile_members_controller.rb +++ b/app/controllers/my_profile/profile_members_controller.rb @@ -2,7 +2,7 @@ class ProfileMembersController < MyProfileController protect 'manage_memberships', :profile def index - @members = profile.members + @members = profile.members_by_name @member_role = environment.roles.find_by_name('member') end diff --git a/app/controllers/public/profile_controller.rb b/app/controllers/public/profile_controller.rb index dae4655..39d3573 100644 --- a/app/controllers/public/profile_controller.rb +++ b/app/controllers/public/profile_controller.rb @@ -67,7 +67,7 @@ class ProfileController < PublicController def members if is_cache_expired?(profile.members_cache_key(params)) - @members = profile.members.includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage]) + @members = profile.members_by_name.includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage]) end end diff --git a/app/models/profile.rb b/app/models/profile.rb index c9e4038..0db8e02 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -87,6 +87,10 @@ class Profile < ActiveRecord::Base scopes.size == 1 ? scopes.first : Person.or_scope(scopes) end + def members_by_name + members.order(:name) + end + def members_count members.count end diff --git a/app/views/profile_members/_members_list.rhtml b/app/views/profile_members/_members_list.rhtml index 161a389..811baae 100644 --- a/app/views/profile_members/_members_list.rhtml +++ b/app/views/profile_members/_members_list.rhtml @@ -1,4 +1,4 @@ -<% collection = @collection == :profile_admins ? profile.admins : profile.members %> +<% collection = @collection == :profile_admins ? profile.admins : profile.members_by_name %> <% title = @title ? @title : _('Current members') %> <% remove_action = @remove_action ? @remove_action : {:action => 'unassociate'} %> diff --git a/test/unit/profile_test.rb b/test/unit/profile_test.rb index 2c77343..e824a75 100644 --- a/test/unit/profile_test.rb +++ b/test/unit/profile_test.rb @@ -1692,6 +1692,30 @@ class ProfileTest < ActiveSupport::TestCase assert_equal 1, community.members_count end + should 'order members by name alphabetically considering special characters' do + community = fast_create(Community) + + community.add_member(create_user('José').person) + community.add_member(create_user('João').person) + community.add_member(create_user('Mariana').person) + members = community.members_by_name + + assert_equal "João", members.first.name + assert_equal "Mariana", members.last.name + end + + should 'order members by name alphabetically considering upper and lower cases' do + community = fast_create(Community) + + community.add_member(create_user('mariana').person) + community.add_member(create_user('João').person) + community.add_member(create_user('guest').person) + members = community.members_by_name + + assert_equal "guest", members.first.name + assert_equal "mariana", members.last.name + end + should 'know if url is the profile homepage' do profile = fast_create(Profile) -- libgit2 0.21.2