Commit e14718fb2e7202e1929d03ceea43a1c487d74f3d
1 parent
56b42f58
Exists in
master
and in
4 other branches
Add permission filter to teams -> members page
Showing
5 changed files
with
61 additions
and
48 deletions
Show diff stats
app/models/user_team.rb
| @@ -113,5 +113,4 @@ class UserTeam < ActiveRecord::Base | @@ -113,5 +113,4 @@ class UserTeam < ActiveRecord::Base | ||
| 113 | def admin?(member) | 113 | def admin?(member) |
| 114 | user_team_user_relationships.with_user(member).first.group_admin? | 114 | user_team_user_relationships.with_user(member).first.group_admin? |
| 115 | end | 115 | end |
| 116 | - | ||
| 117 | end | 116 | end |
| @@ -0,0 +1,31 @@ | @@ -0,0 +1,31 @@ | ||
| 1 | +- user = member.user | ||
| 2 | +- allow_admin = can? current_user, :manage_user_team, @team | ||
| 3 | +%li{id: dom_id(member), class: "team_member_row user_#{user.id}"} | ||
| 4 | + .row | ||
| 5 | + .span3 | ||
| 6 | + = link_to user_path(user.username), title: user.name, class: "dark" do | ||
| 7 | + = image_tag gravatar_icon(user.email, 40), class: "avatar s32" | ||
| 8 | + = link_to user_path(user.username), title: user.name, class: "dark" do | ||
| 9 | + %strong= truncate(user.name, lenght: 40) | ||
| 10 | + %br | ||
| 11 | + %small.cgray= user.username | ||
| 12 | + | ||
| 13 | + .span5.pull-right | ||
| 14 | + - if allow_admin | ||
| 15 | + .pull-left | ||
| 16 | + = form_for(member, as: :team_member, url: team_member_path(@team, user)) do |f| | ||
| 17 | + = label_tag :group_admin do | ||
| 18 | + = f.check_box :group_admin, class: 'trigger-submit' | ||
| 19 | + %span Admin access | ||
| 20 | + | ||
| 21 | + = f.select :permission, options_for_select(UsersProject.access_roles, @team.default_projects_access(user)), {}, class: "span2 trigger-submit" | ||
| 22 | + .pull-right | ||
| 23 | + - if current_user == user | ||
| 24 | + %span.label.label-success This is you! | ||
| 25 | + - if @team.owner == user | ||
| 26 | + %span.label.label-info Owner | ||
| 27 | + - elsif user.blocked? | ||
| 28 | + %span.label.label-error Blocked | ||
| 29 | + - elsif allow_admin | ||
| 30 | + = link_to team_member_path(@team, user), confirm: remove_from_user_team_message(@team, user), method: :delete, class: "btn-tiny btn btn-remove", title: "Remove from team" do | ||
| 31 | + %i.icon-minus.icon-white |
app/views/teams/members/_show.html.haml
| @@ -1,31 +0,0 @@ | @@ -1,31 +0,0 @@ | ||
| 1 | -- user = member.user | ||
| 2 | -- allow_admin = can? current_user, :manage_user_team, @team | ||
| 3 | -%li{id: dom_id(member), class: "team_member_row user_#{user.id}"} | ||
| 4 | - .row | ||
| 5 | - .span4 | ||
| 6 | - = link_to user_path(user.username), title: user.name, class: "dark" do | ||
| 7 | - = image_tag gravatar_icon(user.email, 40), class: "avatar s32" | ||
| 8 | - = link_to user_path(user.username), title: user.name, class: "dark" do | ||
| 9 | - %strong= truncate(user.name, lenght: 40) | ||
| 10 | - %br | ||
| 11 | - %small.cgray= user.username | ||
| 12 | - | ||
| 13 | - .span7.pull-right | ||
| 14 | - - if allow_admin | ||
| 15 | - .pull-left | ||
| 16 | - = form_for(member, as: :team_member, url: team_member_path(@team, user)) do |f| | ||
| 17 | - = label_tag do | ||
| 18 | - = f.check_box :group_admin, class: 'trigger-submit' | ||
| 19 | - %span Admin access | ||
| 20 | - | ||
| 21 | - = f.select :permission, options_for_select(UsersProject.access_roles, @team.default_projects_access(user)), {}, class: "medium trigger-submit" | ||
| 22 | - .pull-right | ||
| 23 | - - if current_user == user | ||
| 24 | - %span.btn.disabled This is you! | ||
| 25 | - - if @team.owner == user | ||
| 26 | - %span.btn.disabled Owner | ||
| 27 | - - elsif user.blocked? | ||
| 28 | - %span.btn.disabled.blocked Blocked | ||
| 29 | - - elsif allow_admin | ||
| 30 | - = link_to team_member_path(@team, user), confirm: remove_from_user_team_message(@team, user), method: :delete, class: "btn-tiny btn btn-remove", title: "Remove from team" do | ||
| 31 | - %i.icon-minus.icon-white |
app/views/teams/members/_team.html.haml
| 1 | -- grouped_user_team_members(@team).each do |access, members| | 1 | +- grouped_user_team_members(team).each do |access, members| |
| 2 | + - access_key = Project.access_options.key(access) | ||
| 3 | + - next if params[:type].present? && params[:type] != access_key.tableize | ||
| 2 | .ui-box | 4 | .ui-box |
| 3 | %h5.title | 5 | %h5.title |
| 4 | - = Project.access_options.key(access).pluralize | 6 | + = access_key.pluralize |
| 5 | %small= members.size | 7 | %small= members.size |
| 6 | - %ul.well-list | ||
| 7 | - - members.sort_by(&:user_name).each do |up| | ||
| 8 | - = render(partial: 'teams/members/show', locals: {member: up}) | ||
| 9 | - | ||
| 10 | - | ||
| 11 | -:javascript | ||
| 12 | - $(function(){ | ||
| 13 | - $('.repo-access-select, .project-access-select').live("change", function() { | ||
| 14 | - $(this.form).submit(); | ||
| 15 | - }); | ||
| 16 | - }) | 8 | + %ul.well-list.team-members |
| 9 | + - members.sort_by(&:user_name).each do |member| | ||
| 10 | + = render 'teams/members/member', member: member |
app/views/teams/members/index.html.haml
| @@ -12,6 +12,26 @@ | @@ -12,6 +12,26 @@ | ||
| 12 | %hr | 12 | %hr |
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | -.clearfix | ||
| 16 | -%div.team-table | ||
| 17 | - = render partial: "teams/members/team", locals: {project: @team} | 15 | +.row |
| 16 | + .span3 | ||
| 17 | + %ul.nav.nav-pills.nav-stacked | ||
| 18 | + %li{class: ("active" if !params[:type])} | ||
| 19 | + = link_to team_members_path(@team, type: nil) do | ||
| 20 | + All | ||
| 21 | + %li{class: ("active" if params[:type] == 'masters')} | ||
| 22 | + = link_to team_members_path(@team, type: 'masters') do | ||
| 23 | + Masters | ||
| 24 | + %li{class: ("active" if params[:type] == 'developers')} | ||
| 25 | + = link_to team_members_path(@team, type: 'developers') do | ||
| 26 | + Developers | ||
| 27 | + %li{class: ("active" if params[:type] == 'reporters')} | ||
| 28 | + = link_to team_members_path(@team, type: 'reporters') do | ||
| 29 | + Reporters | ||
| 30 | + %li{class: ("active" if params[:type] == 'guests')} | ||
| 31 | + = link_to team_members_path(@team, type: 'guests') do | ||
| 32 | + Guests | ||
| 33 | + | ||
| 34 | + .span9 | ||
| 35 | + .clearfix | ||
| 36 | + %div.team-table | ||
| 37 | + = render "teams/members/team", team: @team |