diff --git a/lib/ext/profile_controller.rb b/lib/ext/profile_controller.rb
index bd21b16..95cd530 100644
--- a/lib/ext/profile_controller.rb
+++ b/lib/ext/profile_controller.rb
@@ -20,4 +20,21 @@ class ProfileController
@communities = type.paginate(:per_page => per_page, :page => params[:npage], :total_entries => type.count)
end
end
+
+ def members
+ if is_cache_expired?(profile.members_cache_key(params))
+ all_members = if params[:sort] and params[:sort] == "desc"
+ profile.members.order("name desc")
+ else
+ profile.members.order("name asc")
+ end
+ @profile_admins = profile.admins
+ @profile_members = all_members - @profile_admins
+ @profile_members = @profile_members.paginate(:per_page => members_per_page, :page => params[:npage], :total_entries => @profile_members.size)
+ @profile_admins = @profile_admins.paginate(:per_page => members_per_page, :page => params[:npage], :total_entries => @profile_admins.size)
+ @total_members = all_members.size
+ @profile_members_url = url_for(:controller => "profile", :action => "members")
+ end
+ end
+
end
diff --git a/views/profile/_profile_members_list.html.erb b/views/profile/_profile_members_list.html.erb
new file mode 100644
index 0000000..0e6c700
--- /dev/null
+++ b/views/profile/_profile_members_list.html.erb
@@ -0,0 +1,14 @@
+
+ <%= label_tag("sort-#{role}", _("Sort by:")) %>
+ <%= select_tag("sort-#{role}",
+ options_for_select([
+ [_("Name A-Z"), 'asc'],
+ [_("Name Z-A"), 'desc'],
+ ], :selected=>params[:sort])
+ ) %>
+
+
+ <% users.each do |u| %>
+ <%= profile_image_link(u) %>
+ <% end %>
+
diff --git a/views/profile/members.html.erb b/views/profile/members.html.erb
new file mode 100644
index 0000000..4940513
--- /dev/null
+++ b/views/profile/members.html.erb
@@ -0,0 +1,72 @@
+
+
+
+<% cache_timeout(profile.members_cache_key(params), 4.hours) do %>
+
+ <% tabs = [] %>
+
+ <% div_members = content_tag :div, :class => "profile-members" do
+ render :partial => 'profile_members_list',
+ :locals => {
+ :users => @profile_members,
+ :role => "members"
+ }
+
+ end %>
+
+ <% members_pagination = content_tag :div, :class => "pagination-profile-members" do
+ pagination_links @profile_members, :param_name => 'npage'
+ end %>
+
+
+ <% tabs << {:title => "#{@profile_members.size} "+_("Members"),
+ :id => "members-tab",
+ :content => (div_members + members_pagination)
+ } %>
+
+ <% div_admins = content_tag :div, :class => "profile-admins" do
+ render :partial => 'profile_members_list',
+ :locals => {
+ :users => @profile_admins,
+ :role => "admins"
+ }
+ end %>
+
+ <% admins_pagination = content_tag :div, :class => "pagination-profile-admins" do
+ pagination_links @profile_admins, :param_name => 'npage'
+ end %>
+
+ <% tabs << {:title => "#{@profile_admins.size} "+_("Administrators"),
+ :id => "admins-tab",
+ :content => (div_admins+admins_pagination)
+ } %>
+
+
+
+
+ <%= render_tabs(tabs) %>
+ <% end %>
+
+
+
+<% button_bar do %>
+ <%= button :back, _('Go back'), { :controller => 'profile' } %>
+ <% if profile.community? and user %>
+ <% if user.has_permission?(:invite_members, profile) %>
+ <%= button :person, _('Invite people to join'), :controller => 'invite', :action => 'invite_friends' %>
+ <% end %>
+ <% if user.has_permission?(:send_mail_to_members, profile) %>
+ <%= button :send, _('Send e-mail to members'), :controller => 'profile', :action => 'send_mail' %>
+ <% end %>
+ <% end %>
+<% end %>
+
+<%= hidden_field_tag "profile_url", @profile_members_url %>
+<%= hidden_field_tag "sort", "asc" %>
+
+
+<%= javascript_include_tag "members_page.js" %>
--
libgit2 0.21.2