Commit a29db26cc99cb7406d1f9d7fe91650e6e2dd8294
1 parent
e9d8d074
Exists in
master
and in
4 other branches
Refactor and restyle team page for project
Showing
12 changed files
with
82 additions
and
80 deletions
Show diff stats
app/assets/stylesheets/sections/projects.scss
app/controllers/team_members_controller.rb
... | ... | @@ -4,7 +4,9 @@ class TeamMembersController < ProjectResourceController |
4 | 4 | before_filter :authorize_admin_project!, except: [:index, :show] |
5 | 5 | |
6 | 6 | def index |
7 | - @teams = UserTeam.scoped | |
7 | + @team = @project.users_projects.scoped | |
8 | + @team = @team.send(params[:type]) if %w(masters developers reporters guests).include?(params[:type]) | |
9 | + @team = @team.sort_by(&:project_access).reverse.group_by(&:project_access) | |
8 | 10 | end |
9 | 11 | |
10 | 12 | def show | ... | ... |
app/helpers/projects_helper.rb
1 | 1 | module ProjectsHelper |
2 | - def grouper_project_members(project) | |
3 | - @project.users_projects.sort_by(&:project_access).reverse.group_by(&:project_access) | |
4 | - end | |
5 | - | |
6 | - def grouper_project_teams(project) | |
7 | - @project.user_team_project_relationships.sort_by(&:greatest_access).reverse.group_by(&:greatest_access) | |
8 | - end | |
9 | - | |
10 | 2 | def remove_from_project_team_message(project, user) |
11 | 3 | "You are going to remove #{user.name} from #{project.name} project team. Are you sure?" |
12 | 4 | end | ... | ... |
app/models/user_team_project_relationship.rb
... | ... | @@ -0,0 +1,10 @@ |
1 | +%li{id: dom_id(team), class: "user_team_row team_#{team.id}"} | |
2 | + .pull-right | |
3 | + - if can?(current_user, :admin_team_member, @project) | |
4 | + = link_to resign_project_team_path(@project, team), method: :delete, confirm: "Are you shure?", class: "btn btn-remove btn-tiny" do | |
5 | + %i.icon-minus.icon-white | |
6 | + | |
7 | + %strong= link_to team.name, team_path(team), title: team.name, class: "dark" | |
8 | + %br | |
9 | + %small.cgray Members: #{team.members.count} | |
10 | + %small.cgray Max access: #{team_relation.human_max_access} | ... | ... |
app/views/team_members/_show.html.haml
... | ... | @@ -1,28 +0,0 @@ |
1 | -- user = member.user | |
2 | -- allow_admin = can? current_user, :admin_project, @project | |
3 | -%li{id: dom_id(user), class: "team_member_row user_#{user.id}"} | |
4 | - .row | |
5 | - .span6 | |
6 | - = link_to project_team_member_path(@project, user), title: user.name, class: "dark" do | |
7 | - = image_tag gravatar_icon(user.email, 40), class: "avatar s32" | |
8 | - = link_to project_team_member_path(@project, user), title: user.name, class: "dark" do | |
9 | - %strong= truncate(user.name, lenght: 40) | |
10 | - %br | |
11 | - %small.cgray= user.email | |
12 | - | |
13 | - .span5.pull-right | |
14 | - - if allow_admin | |
15 | - .left | |
16 | - = form_for(member, as: :team_member, url: project_team_member_path(@project, member.user)) do |f| | |
17 | - = f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, class: "medium project-access-select span2" | |
18 | - .pull-right | |
19 | - - if current_user == user | |
20 | - %span.btn.disabled This is you! | |
21 | - - if @project.namespace_owner == user | |
22 | - %span.btn.disabled Owner | |
23 | - - elsif user.blocked | |
24 | - %span.btn.disabled.blocked Blocked | |
25 | - - elsif allow_admin | |
26 | - = link_to project_team_member_path(@project, user), confirm: remove_from_project_team_message(@project, user), method: :delete, class: "btn-tiny btn btn-remove" do | |
27 | - %i.icon-minus.icon-white | |
28 | - |
app/views/team_members/_show_team.html.haml
... | ... | @@ -1,15 +0,0 @@ |
1 | -- team = team_rel.user_team | |
2 | -- allow_admin = can? current_user, :admin_team_member, @project | |
3 | -%li{id: dom_id(team), class: "user_team_row team_#{team.id}"} | |
4 | - .row | |
5 | - .span6 | |
6 | - %strong= link_to team.name, team_path(team), title: team.name, class: "dark" | |
7 | - %br | |
8 | - %small.cgray Members: #{team.members.count} | |
9 | - | |
10 | - .span5.pull-right | |
11 | - .pull-right | |
12 | - - if allow_admin | |
13 | - .left | |
14 | - = link_to resign_project_team_path(@project, team), method: :delete, confirm: "Are you shure?", class: "btn btn-remove small" do | |
15 | - %i.icon-minus.icon-white |
app/views/team_members/_team.html.haml
1 | -- grouper_project_members(@project).each do |access, members| | |
1 | +- @team.each do |access, members| | |
2 | 2 | .ui-box |
3 | 3 | %h5.title |
4 | 4 | = Project.access_options.key(access).pluralize |
5 | 5 | %small= members.size |
6 | 6 | %ul.well-list |
7 | - - members.sort_by(&:user_name).each do |up| | |
8 | - = render(partial: 'team_members/show', locals: {member: up}) | |
7 | + - members.sort_by(&:user_name).each do |team_member| | |
8 | + = render 'team_members/team_member', member: team_member | |
9 | 9 | |
10 | 10 | |
11 | 11 | :javascript | ... | ... |
... | ... | @@ -0,0 +1,28 @@ |
1 | +- user = member.user | |
2 | +- allow_admin = can? current_user, :admin_project, @project | |
3 | +%li{id: dom_id(user), class: "team_member_row user_#{user.id}"} | |
4 | + .row | |
5 | + .span4 | |
6 | + = link_to project_team_member_path(@project, user), title: user.name, class: "dark" do | |
7 | + = image_tag gravatar_icon(user.email, 40), class: "avatar s32" | |
8 | + = link_to project_team_member_path(@project, user), title: user.name, class: "dark" do | |
9 | + %strong= truncate(user.name, lenght: 40) | |
10 | + %br | |
11 | + %small.cgray= user.email | |
12 | + | |
13 | + .span4.pull-right | |
14 | + - if allow_admin | |
15 | + .left | |
16 | + = form_for(member, as: :team_member, url: project_team_member_path(@project, member.user)) do |f| | |
17 | + = f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, class: "medium project-access-select span2" | |
18 | + .pull-right | |
19 | + - if current_user == user | |
20 | + %span.label This is you! | |
21 | + - if @project.namespace_owner == user | |
22 | + %span.label Owner | |
23 | + - elsif user.blocked | |
24 | + %span.label Blocked | |
25 | + - elsif allow_admin | |
26 | + = link_to project_team_member_path(@project, user), confirm: remove_from_project_team_message(@project, user), method: :delete, class: "btn-tiny btn btn-remove" do | |
27 | + %i.icon-minus.icon-white | |
28 | + | ... | ... |
app/views/team_members/_teams.html.haml
... | ... | @@ -1,16 +0,0 @@ |
1 | -- grouper_project_teams(@project).each do |access, teams| | |
2 | - .ui-box | |
3 | - %h5.title | |
4 | - = UserTeam.access_roles.key(access).pluralize | |
5 | - %small= teams.size | |
6 | - %ul.well-list | |
7 | - - teams.sort_by(&:team_name).each do |tofr| | |
8 | - = render(partial: 'team_members/show_team', locals: {team_rel: tofr}) | |
9 | - | |
10 | - | |
11 | -:javascript | |
12 | - $(function(){ | |
13 | - $('.repo-access-select, .project-access-select').live("change", function() { | |
14 | - $(this.form).submit(); | |
15 | - }); | |
16 | - }) |
app/views/team_members/index.html.haml
... | ... | @@ -18,16 +18,33 @@ |
18 | 18 | %hr |
19 | 19 | |
20 | 20 | .clearfix |
21 | -%div.team-table | |
22 | - = render partial: "team_members/team", locals: {project: @project} | |
21 | +.row | |
22 | + .span3 | |
23 | + %ul.nav.nav-pills.nav-stacked | |
24 | + %li{class: ("active" if !params[:type])} | |
25 | + = link_to project_team_members_path(type: nil) do | |
26 | + All | |
27 | + %li{class: ("active" if params[:type] == 'masters')} | |
28 | + = link_to project_team_members_path(type: 'masters') do | |
29 | + Masters | |
30 | + %li{class: ("active" if params[:type] == 'developers')} | |
31 | + = link_to project_team_members_path(type: 'developers') do | |
32 | + Developers | |
33 | + %li{class: ("active" if params[:type] == 'reporters')} | |
34 | + = link_to project_team_members_path(type: 'reporters') do | |
35 | + Reporters | |
36 | + %li{class: ("active" if params[:type] == 'guests')} | |
37 | + = link_to project_team_members_path(type: 'guests') do | |
38 | + Guests | |
39 | + %h5 | |
40 | + Assigned teams | |
41 | + (#{@project.user_teams.count}) | |
42 | + %div | |
43 | + = render "team_members/assigned_teams", project: @project | |
23 | 44 | |
45 | + .span9 | |
46 | + %div.team-table | |
47 | + = render "team_members/team", project: @project | |
24 | 48 | |
25 | -%h3.page_title | |
26 | - Assigned teams | |
27 | - (#{@project.user_teams.count}) | |
28 | 49 | |
29 | -%hr | |
30 | 50 | |
31 | -.clearfix | |
32 | -%div.team-table | |
33 | - = render partial: "team_members/teams", locals: {project: @project} | ... | ... |