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]) + ) %> +
+ 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 @@ + +
+

<%= _("Members") + " (#{@total_members})" %>

+

<%= _("%s") % profile.name %>

+ <%= render "blocks/profile_info_actions/community" %> +
+ +<% 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