Commit 441d25618809c295349f7dae4e45bfbbc0fb7144

Authored by Dmitriy Zaporozhets
1 parent f4f36f78

Rebuild team area

app/assets/stylesheets/gitlab_bootstrap/tables.scss
@@ -11,6 +11,12 @@ table { @@ -11,6 +11,12 @@ table {
11 } 11 }
12 } 12 }
13 13
  14 + &.headless {
  15 + tr:first-child td{
  16 + border-top: 1px solid #CCC;
  17 + }
  18 + }
  19 +
14 th { 20 th {
15 font-weight: bold; 21 font-weight: bold;
16 vertical-align: middle; 22 vertical-align: middle;
app/controllers/teams/projects_controller.rb
1 class Teams::ProjectsController < Teams::ApplicationController 1 class Teams::ProjectsController < Teams::ApplicationController
2 -  
3 - skip_before_filter :authorize_manage_user_team!, only: [:index]  
4 -  
5 - def index  
6 - @projects = user_team.projects  
7 - @avaliable_projects = current_user.admin? ? Project.without_team(user_team) : current_user.owned_projects.without_team(user_team)  
8 - end  
9 -  
10 - def new  
11 - user_team  
12 - @avaliable_projects = current_user.owned_projects.scoped  
13 - @avaliable_projects = @avaliable_projects.without_team(user_team) if user_team.projects.any?  
14 -  
15 - redirect_to team_projects_path(user_team), notice: "No avalible projects." unless @avaliable_projects.any?  
16 - end  
17 -  
18 def create 2 def create
19 redirect_to :back if params[:project_ids].blank? 3 redirect_to :back if params[:project_ids].blank?
20 4
@@ -28,7 +12,7 @@ class Teams::ProjectsController &lt; Teams::ApplicationController @@ -28,7 +12,7 @@ class Teams::ProjectsController &lt; Teams::ApplicationController
28 # Assign projects to team 12 # Assign projects to team
29 user_team.assign_to_projects(project_ids, access) 13 user_team.assign_to_projects(project_ids, access)
30 14
31 - redirect_to team_projects_path(user_team), notice: 'Team of users was successfully assigned to projects.' 15 + redirect_to edit_team_path(user_team), notice: 'Team of users was successfully assigned to projects.'
32 end 16 end
33 17
34 def edit 18 def edit
@@ -37,7 +21,7 @@ class Teams::ProjectsController &lt; Teams::ApplicationController @@ -37,7 +21,7 @@ class Teams::ProjectsController &lt; Teams::ApplicationController
37 21
38 def update 22 def update
39 if user_team.update_project_access(team_project, params[:greatest_project_access]) 23 if user_team.update_project_access(team_project, params[:greatest_project_access])
40 - redirect_to team_projects_path(user_team), notice: 'Access was successfully updated.' 24 + redirect_to edit_team_path(user_team), notice: 'Access was successfully updated.'
41 else 25 else
42 render :edit 26 render :edit
43 end 27 end
@@ -53,5 +37,4 @@ class Teams::ProjectsController &lt; Teams::ApplicationController @@ -53,5 +37,4 @@ class Teams::ProjectsController &lt; Teams::ApplicationController
53 def team_project 37 def team_project
54 @project ||= user_team.projects.find_with_namespace(params[:id]) 38 @project ||= user_team.projects.find_with_namespace(params[:id])
55 end 39 end
56 -  
57 end 40 end
app/controllers/teams_controller.rb
@@ -14,6 +14,8 @@ class TeamsController &lt; ApplicationController @@ -14,6 +14,8 @@ class TeamsController &lt; ApplicationController
14 end 14 end
15 15
16 def edit 16 def edit
  17 + projects
  18 + @avaliable_projects = current_user.admin? ? Project.without_team(user_team) : current_user.owned_projects.without_team(user_team)
17 end 19 end
18 20
19 def update 21 def update
app/views/layouts/user_team.html.haml
@@ -26,14 +26,8 @@ @@ -26,14 +26,8 @@
26 %span.count= @team.members.count 26 %span.count= @team.members.count
27 27
28 - if can? current_user, :admin_user_team, @team 28 - if can? current_user, :admin_user_team, @team
29 - = nav_link(controller: [:projects]) do  
30 - = link_to team_projects_path(@team), class: "team-tab tab" do  
31 - Projects  
32 - %span.count= @team.projects.count  
33 -  
34 = nav_link(path: 'teams#edit') do 29 = nav_link(path: 'teams#edit') do
35 = link_to edit_team_path(@team), class: "stat-tab tab " do 30 = link_to edit_team_path(@team), class: "stat-tab tab " do
36 - %i.icon-edit  
37 - Edit Team 31 + Settings
38 32
39 .content= yield 33 .content= yield
app/views/teams/_projects.html.haml
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 (#{projects.count}) 5 (#{projects.count})
6 - if can? current_user, :manage_user_team, @team 6 - if can? current_user, :manage_user_team, @team
7 %span.pull-right 7 %span.pull-right
8 - = link_to new_team_project_path(@team), class: "btn btn-tiny info" do 8 + = link_to edit_team_path(@team), class: "btn btn-tiny info" do
9 %i.icon-plus 9 %i.icon-plus
10 Assign Project 10 Assign Project
11 %ul.well-list 11 %ul.well-list
app/views/teams/edit.html.haml
1 -%h3.page_title= "Edit Team #{@team.name}"  
2 -%hr  
3 .row 1 .row
4 - .span7  
5 - = form_for @team, url: team_path(@team) do |f|  
6 - - if @team.errors.any?  
7 - .alert.alert-error  
8 - %span= @team.errors.full_messages.first  
9 - .clearfix  
10 - = f.label :name do  
11 - Team name is  
12 - .input  
13 - = f.text_field :name, placeholder: "Ex. OpenSource", class: "xlarge left"  
14 -  
15 - .clearfix.team-description-holder  
16 - = f.label :description, "Details"  
17 - .input  
18 - = f.text_area :description, maxlength: 250, class: "xlarge js-gfm-input", rows: 4  
19 -  
20 - .clearfix  
21 - = f.label :path do  
22 - Team path is  
23 - .input  
24 - = f.text_field :path, placeholder: "opensource", class: "xlarge left"  
25 -  
26 - .form-actions  
27 - = f.submit 'Save team changes', class: "btn btn-primary"  
28 - .span5  
29 - .ui-box  
30 - %h5.title Remove team  
31 - .padded.bgred  
32 - %p  
33 - Removed team can not be restored!  
34 - = link_to 'Remove team', team_path(@team), method: :delete, confirm: "You are sure?", class: "btn btn-remove btn-small" 2 + .span3
  3 + %ul.nav.nav-pills.nav-stacked
  4 + %li.active
  5 + = link_to 'Projects', '#tab-projects', 'data-toggle' => 'tab'
  6 + %li
  7 + = link_to 'Edit Team', '#tab-edit', 'data-toggle' => 'tab'
  8 + %li
  9 + = link_to 'Remove', '#tab-remove', 'data-toggle' => 'tab'
  10 +
  11 + .span9
  12 + .tab-content
  13 + .tab-pane.active#tab-projects
  14 + .ui-box
  15 + %h5.title Projects
  16 + %ul.well-list
  17 + - @projects.each do |project|
  18 + %li
  19 + - if project.public
  20 + %i.icon-share
  21 + - else
  22 + %i.icon-lock.cgreen
  23 + = link_to project.name_with_namespace, project
  24 + .pull-right
  25 + = link_to 'Edit max access', edit_team_project_path(@team, project), class: "btn btn-small"
  26 + = link_to 'Relegate', team_project_path(@team, project), confirm: 'Remove project from team and move to global namespace. Are you sure?', method: :delete, class: "btn btn-remove small"
  27 + .form-holder
  28 + = form_tag team_projects_path(@team), id: "assign_projects", class: "bulk_import", method: :post do
  29 + %table.headless
  30 + %tr
  31 + %td= select_tag :project_ids, options_from_collection_for_select(@avaliable_projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span4'
  32 + %td= select_tag :greatest_project_access, options_for_select(UserTeam.access_roles), {class: "project-access-select chosen" }
  33 + %td= submit_tag 'Add Project', class: "btn btn-create", id: :assign_projects_to_team
  34 +
  35 +
  36 + .tab-pane#tab-edit
  37 + .ui-box
  38 + %h5.title Edit Team
  39 + %div.form-holder
  40 + = form_for @team, url: team_path(@team) do |f|
  41 + - if @team.errors.any?
  42 + .alert.alert-error
  43 + %span= @team.errors.full_messages.first
  44 + .clearfix
  45 + = f.label :name do
  46 + Team name is
  47 + .input
  48 + = f.text_field :name, placeholder: "Ex. OpenSource", class: "xlarge left"
  49 +
  50 + .clearfix.team-description-holder
  51 + = f.label :description, "Details"
  52 + .input
  53 + = f.text_area :description, maxlength: 250, class: "xlarge js-gfm-input", rows: 4
  54 +
  55 + .clearfix
  56 + = f.label :path do
  57 + Team path is
  58 + .input
  59 + = f.text_field :path, placeholder: "opensource", class: "xlarge left"
  60 +
  61 + .form-actions
  62 + = f.submit 'Save team changes', class: "btn btn-primary"
  63 +
  64 + .tab-pane#tab-remove
  65 + .ui-box.ui-box-danger
  66 + %h5.title Remove team
  67 + .ui-box-body
  68 + %p
  69 + Remove of team will cause removing members access to projects.
  70 + %p
  71 + %strong Removed team can not be restored!
  72 +
  73 + = link_to 'Remove team', team_path(@team), method: :delete, confirm: "You are sure?", class: "btn btn-remove btn-small"
app/views/teams/projects/index.html.haml
@@ -1,36 +0,0 @@ @@ -1,36 +0,0 @@
1 -%h3.page_title  
2 - Assigned projects (#{@team.projects.count})  
3 - %small  
4 - Read more about project permissions  
5 - %strong= link_to "here", help_permissions_path, class: "vlink"  
6 -  
7 - - if current_user.can?(:manage_user_team, @team) && @avaliable_projects.any?  
8 - %span.pull-right  
9 - = link_to new_team_project_path(@team), class: "btn btn-primary small grouped", title: "New Team Member" do  
10 - Assign project to Team  
11 -  
12 -%hr  
13 -  
14 -- if @team.projects.present?  
15 - %table.projects-table  
16 - %thead  
17 - %tr  
18 - %th Project name  
19 - %th Max access  
20 - - if current_user.can?(:admin_user_team, @team)  
21 - %th.span3  
22 -  
23 - - @team.projects.each do |project|  
24 - %tr.project  
25 - %td  
26 - = link_to project.name_with_namespace, project_path(project)  
27 - %td  
28 - %span= @team.human_max_project_access(project)  
29 -  
30 - - if current_user.can?(:admin_user_team, @team)  
31 - %td.bgred  
32 - = link_to 'Edit max access', edit_team_project_path(@team, project), class: "btn btn-small"  
33 - = link_to 'Relegate', team_project_path(@team, project), confirm: 'Remove project from team and move to global namespace. Are you sure?', method: :delete, class: "btn btn-remove small"  
34 -  
35 -- else  
36 - %p.nothing_here_message This team has no projects yet  
app/views/teams/projects/new.html.haml
@@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
1 -%h3.page_title  
2 - Team: #{@team.name}  
3 -  
4 -%fieldset  
5 - %legend Projects (#{@team.projects.count})  
6 - = form_tag team_projects_path(@team), id: "assign_projects", class: "bulk_import", method: :post do  
7 - %table#projects_list  
8 - %thead  
9 - %tr  
10 - %th Project name  
11 - %th Max access  
12 - %th  
13 - - @team.projects.each do |project|  
14 - %tr.project  
15 - %td  
16 - = link_to project.name_with_namespace, team_project_path(@team, project)  
17 - %td  
18 - %span= @team.human_max_project_access(project)  
19 - %td  
20 - %tr  
21 - %td= select_tag :project_ids, options_from_collection_for_select(@avaliable_projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'  
22 - %td= select_tag :greatest_project_access, options_for_select(UserTeam.access_roles), {class: "project-access-select chosen span3" }  
23 - %td= submit_tag 'Add Project', class: "btn btn-create", id: :assign_projects_to_team