Commit e940fbc7c1b322c15f5d5ae878fbd3117e9b98f9
1 parent
fa877b63
Exists in
master
and in
4 other branches
Add UsersGroup relation to be respected by abilities and Project#team
Showing
10 changed files
with
55 additions
and
27 deletions
Show diff stats
app/controllers/groups_controller.rb
| ... | ... | @@ -64,11 +64,11 @@ class GroupsController < ApplicationController |
| 64 | 64 | def people |
| 65 | 65 | @project = group.projects.find(params[:project_id]) if params[:project_id] |
| 66 | 66 | |
| 67 | - @users_groups = group.users_groups | |
| 68 | - | |
| 69 | 67 | if @project |
| 68 | + @members = @project.users_projects | |
| 70 | 69 | @team_member = @project.users_projects.new |
| 71 | 70 | else |
| 71 | + @members = group.users_groups | |
| 72 | 72 | @team_member = UsersGroup.new |
| 73 | 73 | end |
| 74 | 74 | end | ... | ... |
app/models/ability.rb
app/models/project_team.rb
| ... | ... | @@ -47,23 +47,23 @@ class ProjectTeam |
| 47 | 47 | end |
| 48 | 48 | |
| 49 | 49 | def members |
| 50 | - project.users_projects | |
| 50 | + fetch_members | |
| 51 | 51 | end |
| 52 | 52 | |
| 53 | 53 | def guests |
| 54 | - members.guests.map(&:user) | |
| 54 | + @guests ||= fetch_members(:guests) | |
| 55 | 55 | end |
| 56 | 56 | |
| 57 | 57 | def reporters |
| 58 | - members.reporters.map(&:user) | |
| 58 | + @reporters ||= fetch_members(:reporters) | |
| 59 | 59 | end |
| 60 | 60 | |
| 61 | 61 | def developers |
| 62 | - members.developers.map(&:user) | |
| 62 | + @developers ||= fetch_members(:developers) | |
| 63 | 63 | end |
| 64 | 64 | |
| 65 | 65 | def masters |
| 66 | - members.masters.map(&:user) | |
| 66 | + @masters ||= fetch_members(:masters) | |
| 67 | 67 | end |
| 68 | 68 | |
| 69 | 69 | def import(source_project) |
| ... | ... | @@ -96,4 +96,18 @@ class ProjectTeam |
| 96 | 96 | rescue |
| 97 | 97 | false |
| 98 | 98 | end |
| 99 | + | |
| 100 | + private | |
| 101 | + | |
| 102 | + def fetch_members(level = nil) | |
| 103 | + project_members = project.users_projects | |
| 104 | + group_members = project.group.users_groups | |
| 105 | + | |
| 106 | + if level | |
| 107 | + project_members = project_members.send(level) | |
| 108 | + group_members = group_members.send(level) | |
| 109 | + end | |
| 110 | + | |
| 111 | + (project_members + group_members).map(&:user).uniq | |
| 112 | + end | |
| 99 | 113 | end | ... | ... |
app/models/users_group.rb
app/models/users_project.rb
| ... | ... | @@ -129,9 +129,7 @@ class UsersProject < ActiveRecord::Base |
| 129 | 129 | Project.access_options.key(self.project_access) |
| 130 | 130 | end |
| 131 | 131 | |
| 132 | - def repo_access_human | |
| 133 | - self.class.access_roles.invert[self.project_access] | |
| 134 | - end | |
| 132 | + alias_method :human_access, :project_access_human | |
| 135 | 133 | |
| 136 | 134 | def skip_git? |
| 137 | 135 | !!@skip_git | ... | ... |
app/services/system_hooks_service.rb
app/views/groups/_new_group_member.html.haml
| 1 | 1 | = form_for @team_member, as: :team_member, url: team_members_group_path(@group) do |f| |
| 2 | 2 | %fieldset |
| 3 | - %legend= "New Team member(s) for projects in #{@group.name}" | |
| 3 | + %legend= "New Group member(s) for #{@group.name}" | |
| 4 | 4 | |
| 5 | - %h6 1. Choose people you want in the team | |
| 5 | + %h6 1. Choose people you want in the group | |
| 6 | 6 | .clearfix |
| 7 | 7 | = f.label :user_ids, "People" |
| 8 | 8 | .input= users_select_tag(:user_ids, multiple: true) | ... | ... |
app/views/groups/_new_member.html.haml
| 1 | 1 | = form_for @team_member, as: :team_member, url: project_team_members_path(@project, @team_member) do |f| |
| 2 | 2 | %fieldset |
| 3 | - %legend= "New Team member(s) for #{@project.name}" | |
| 3 | + %legend= "New Project member(s) for #{@project.name}" | |
| 4 | 4 | |
| 5 | - %h6 1. Choose people you want in the team | |
| 5 | + %h6 1. Choose people you want in the project | |
| 6 | 6 | .clearfix |
| 7 | 7 | = f.label :user_ids, "People" |
| 8 | 8 | .input= users_select_tag(:user_ids, multiple: true) |
| ... | ... | @@ -14,5 +14,5 @@ |
| 14 | 14 | |
| 15 | 15 | .form-actions |
| 16 | 16 | = hidden_field_tag :redirect_to, people_group_path(@group, project_id: @project.id) |
| 17 | - = f.submit 'Add', class: "btn btn-save" | |
| 17 | + = f.submit 'Add users into project', class: "btn btn-create" | |
| 18 | 18 | ... | ... |
app/views/groups/_people_filter.html.haml
| 1 | +%fieldset | |
| 2 | + %legend Group members: | |
| 3 | + %ul.nav.nav-pills.nav-stacked | |
| 4 | + %li{class: ("active" if params[:project_id].blank?)} | |
| 5 | + = link_to people_group_path(@group) do | |
| 6 | + #{@group.name} Group | |
| 7 | + %small.pull-right= @group.users.count | |
| 8 | + | |
| 9 | + | |
| 1 | 10 | = form_tag people_group_path(@group), method: 'get' do |
| 2 | 11 | %fieldset |
| 3 | - %legend Projects: | |
| 12 | + %legend Project members: | |
| 4 | 13 | %ul.nav.nav-pills.nav-stacked |
| 5 | 14 | - @projects.each do |project| |
| 6 | 15 | %li{class: ("active" if params[:project_id] == project.id.to_s)} |
| ... | ... | @@ -10,7 +19,4 @@ |
| 10 | 19 | - if @projects.blank? |
| 11 | 20 | %p.nothing_here_message This group has no projects yet |
| 12 | 21 | |
| 13 | - %fieldset | |
| 14 | - %hr | |
| 15 | - = link_to "Reset", people_group_path(@group), class: 'btn pull-right' | |
| 16 | 22 | ... | ... |
app/views/groups/people.html.haml
| ... | ... | @@ -6,12 +6,18 @@ |
| 6 | 6 | = render (@project ? "new_member" : "new_group_member") |
| 7 | 7 | .ui-box |
| 8 | 8 | %h5.title |
| 9 | - #{@group.name} Team | |
| 10 | - %small | |
| 11 | - (#{@users_groups.count}) | |
| 9 | + - if @project | |
| 10 | + #{@project.name} Project Members | |
| 11 | + %small | |
| 12 | + (#{@members.count}) | |
| 13 | + - else | |
| 14 | + #{@group.name} Group Members | |
| 15 | + %small | |
| 16 | + (#{@members.count}) | |
| 12 | 17 | %ul.well-list |
| 13 | - - @users_groups.each do |users_group| | |
| 14 | - - user = users_group.user | |
| 18 | + - @members.each do |member| | |
| 19 | + - user = member.user | |
| 20 | + - next unless user | |
| 15 | 21 | %li |
| 16 | 22 | = image_tag gravatar_icon(user.email, 16), class: "avatar s16" |
| 17 | 23 | %strong= user.name |
| ... | ... | @@ -21,5 +27,5 @@ |
| 21 | 27 | - if @group.owners.include?(user) |
| 22 | 28 | %span.label.label-info Group Owner |
| 23 | 29 | - else |
| 24 | - = users_group.human_group_access | |
| 30 | + = member.human_access | |
| 25 | 31 | ... | ... |