Commit af9d7fafa9089e51db60f43b60a4fedebe053843
1 parent
d41e404e
Exists in
spb-stable
and in
3 other branches
Adopt Group#members page for large groups (> 100 users)
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
5 changed files
with
42 additions
and
12 deletions
Show diff stats
app/assets/stylesheets/application.scss
app/controllers/groups_controller.rb
| ... | ... | @@ -63,7 +63,14 @@ class GroupsController < ApplicationController |
| 63 | 63 | |
| 64 | 64 | def members |
| 65 | 65 | @project = group.projects.find(params[:project_id]) if params[:project_id] |
| 66 | - @members = group.users_groups.order('group_access DESC') | |
| 66 | + @members = group.users_groups | |
| 67 | + | |
| 68 | + if params[:search].present? | |
| 69 | + users = group.users.search(params[:search]) | |
| 70 | + @members = @members.where(user_id: users) | |
| 71 | + end | |
| 72 | + | |
| 73 | + @members = @members.order('group_access DESC').page(params[:page]).per(50) | |
| 67 | 74 | @users_group = UsersGroup.new |
| 68 | 75 | end |
| 69 | 76 | ... | ... |
app/views/groups/_new_group_member.html.haml
| 1 | 1 | = form_for @users_group, url: group_users_groups_path(@group), html: { class: 'form-horizontal users-group-form' } do |f| |
| 2 | - %h4.append-bottom-20 | |
| 3 | - New member(s) for | |
| 4 | - %strong #{@group.name} | |
| 5 | - group | |
| 6 | - | |
| 7 | - %p 1. Choose users you want in the group | |
| 8 | 2 | .form-group |
| 9 | 3 | = f.label :user_ids, "People", class: 'control-label' |
| 10 | 4 | .col-sm-10= users_select_tag(:user_ids, multiple: true, class: 'input-large') |
| 11 | 5 | |
| 12 | - %p 2. Set access level for them | |
| 13 | 6 | .form-group |
| 14 | 7 | = f.label :group_access, "Group Access", class: 'control-label' |
| 15 | 8 | .col-sm-10= select_tag :group_access, options_for_select(UsersGroup.group_access_roles, @users_group.group_access), class: "project-access-select select2" | ... | ... |
app/views/groups/members.html.haml
| ... | ... | @@ -6,14 +6,34 @@ |
| 6 | 6 | %strong= link_to "here", help_permissions_path, class: "vlink" |
| 7 | 7 | |
| 8 | 8 | %hr |
| 9 | -.ui-box | |
| 9 | + | |
| 10 | +.clearfix | |
| 11 | + = form_tag members_group_path(@group), method: :get, class: 'form-inline member-search-form' do | |
| 12 | + .form-group | |
| 13 | + = search_field_tag :search, params[:search], { placeholder: 'Find member by name', class: 'form-control search-text-input input-mn-300' } | |
| 14 | + = submit_tag 'Search', class: 'btn' | |
| 15 | + | |
| 16 | + - if current_user.can? :manage_group, @group | |
| 17 | + .pull-right | |
| 18 | + = link_to '#', class: 'btn btn-new js-toggle-visibility-link' do | |
| 19 | + Add members | |
| 20 | + %i.icon-chevron-down | |
| 21 | + | |
| 22 | + .js-toggle-visibility-container.hide.new-group-member-holder | |
| 23 | + = render "new_group_member" | |
| 24 | + | |
| 25 | +.ui-box.prepend-top-20 | |
| 10 | 26 | .title |
| 11 | 27 | %strong #{@group.name} |
| 12 | 28 | group members |
| 13 | 29 | %small |
| 14 | - (#{@members.count}) | |
| 30 | + (#{@members.total_count}) | |
| 15 | 31 | %ul.well-list |
| 16 | 32 | - @members.each do |member| |
| 17 | 33 | = render 'users_groups/users_group', member: member, show_controls: true |
| 18 | -- if current_user.can? :manage_group, @group | |
| 19 | - = render "new_group_member" | |
| 34 | += paginate @members, theme: 'gitlab' | |
| 35 | + | |
| 36 | +:coffeescript | |
| 37 | + $('form.member-search-form').on 'submit', (event) -> | |
| 38 | + event.preventDefault() | |
| 39 | + Turbolinks.visit @.action + '?' + $(@).serialize() | ... | ... |