Commit 74e329064abc1306132dd73dcb2e25221379f568
1 parent
1c88fbb3
Exists in
master
and in
4 other branches
teams refactoring and cleanup pt.1
Showing
19 changed files
with
39 additions
and
126 deletions
Show diff stats
app/controllers/teams_controller.rb
... | ... | @@ -64,16 +64,6 @@ class TeamsController < ApplicationController |
64 | 64 | @issues = @issues.includes(:author, :project) |
65 | 65 | end |
66 | 66 | |
67 | - def search | |
68 | - result = SearchContext.new(user_team.project_ids, params).execute | |
69 | - | |
70 | - @projects = result[:projects] | |
71 | - @merge_requests = result[:merge_requests] | |
72 | - @issues = result[:issues] | |
73 | - @wiki_pages = result[:wiki_pages] | |
74 | - @teams = result[:teams] | |
75 | - end | |
76 | - | |
77 | 67 | protected |
78 | 68 | |
79 | 69 | def projects | ... | ... |
app/models/project.rb
... | ... | @@ -80,7 +80,7 @@ class Project < ActiveRecord::Base |
80 | 80 | # Scopes |
81 | 81 | scope :without_user, ->(user) { where("id NOT IN (:ids)", ids: user.authorized_projects.map(&:id) ) } |
82 | 82 | scope :not_in_group, ->(group) { where("id NOT IN (:ids)", ids: group.project_ids ) } |
83 | - scope :without_team, ->(team) { where("id NOT IN (:ids)", ids: team.projects.map(&:id)) } | |
83 | + scope :without_team, ->(team) { team.projects.present? ? where("id NOT IN (:ids)", ids: team.projects.map(&:id)) : scoped } | |
84 | 84 | scope :in_team, ->(team) { where("id IN (:ids)", ids: team.projects.map(&:id)) } |
85 | 85 | scope :in_namespace, ->(namespace) { where(namespace_id: namespace.id) } |
86 | 86 | scope :sorted_by_activity, ->() { order("(SELECT max(events.created_at) FROM events WHERE events.project_id = projects.id) DESC") } | ... | ... |
app/views/layouts/user_team.html.haml
... | ... | @@ -19,18 +19,16 @@ |
19 | 19 | Merge Requests |
20 | 20 | %span.count= MergeRequest.opened.of_user_team(@team).count |
21 | 21 | |
22 | - = nav_link(path: 'teams#search') do | |
23 | - = link_to "Search", search_team_path(@team) | |
24 | - | |
25 | 22 | = nav_link(controller: [:members]) do |
26 | 23 | = link_to team_members_path(@team), class: "team-tab tab" do |
27 | 24 | Members |
25 | + %span.count= @team.members.count | |
28 | 26 | |
29 | 27 | - if can? current_user, :admin_user_team, @team |
30 | 28 | = nav_link(controller: [:projects]) do |
31 | 29 | = link_to team_projects_path(@team), class: "team-tab tab" do |
32 | - %i.icon-briefcase | |
33 | 30 | Projects |
31 | + %span.count= @team.projects.count | |
34 | 32 | |
35 | 33 | = nav_link(path: 'teams#edit') do |
36 | 34 | = link_to edit_team_path(@team), class: "stat-tab tab " do | ... | ... |
app/views/profiles/show.html.haml
... | ... | @@ -31,6 +31,20 @@ |
31 | 31 | .controls |
32 | 32 | = f.text_field :email, class: "input-xlarge", required: true |
33 | 33 | %span.help-block We also use email for avatar detection. |
34 | + .control-group | |
35 | + = f.label :skype, class: "control-label" | |
36 | + .controls= f.text_field :skype, class: "input-xlarge" | |
37 | + .control-group | |
38 | + = f.label :linkedin, class: "control-label" | |
39 | + .controls= f.text_field :linkedin, class: "input-xlarge" | |
40 | + .control-group | |
41 | + = f.label :twitter, class: "control-label" | |
42 | + .controls= f.text_field :twitter, class: "input-xlarge" | |
43 | + .control-group | |
44 | + = f.label :bio, class: "control-label" | |
45 | + .controls | |
46 | + = f.text_area :bio, rows: 6, class: "input-xlarge", maxlength: 250 | |
47 | + %span.help-block Tell us about yourself in fewer than 250 characters. | |
34 | 48 | |
35 | 49 | .span5.right |
36 | 50 | %fieldset.tips |
... | ... | @@ -59,24 +73,6 @@ |
59 | 73 | Want to share a team between projects? |
60 | 74 | = link_to new_team_path, class: "btn very_small" do |
61 | 75 | Create a team |
62 | - | |
63 | - .row | |
64 | - .span7 | |
65 | - .control-group | |
66 | - = f.label :skype, class: "control-label" | |
67 | - .controls= f.text_field :skype, class: "input-xlarge" | |
68 | - .control-group | |
69 | - = f.label :linkedin, class: "control-label" | |
70 | - .controls= f.text_field :linkedin, class: "input-xlarge" | |
71 | - .control-group | |
72 | - = f.label :twitter, class: "control-label" | |
73 | - .controls= f.text_field :twitter, class: "input-xlarge" | |
74 | - .control-group | |
75 | - = f.label :bio, class: "control-label" | |
76 | - .controls | |
77 | - = f.text_area :bio, rows: 6, class: "input-xlarge", maxlength: 250 | |
78 | - %span.help-block Tell us about yourself in fewer than 250 characters. | |
79 | - .span5.right | |
80 | 76 | %fieldset |
81 | 77 | %legend |
82 | 78 | Personal projects: | ... | ... |
app/views/teams/_team_head.html.haml
app/views/teams/edit.html.haml
app/views/teams/index.html.haml
... | ... | @@ -1,38 +0,0 @@ |
1 | -%h3.page_title | |
2 | - Teams | |
3 | - %small | |
4 | - list of all teams | |
5 | - | |
6 | - = link_to 'New Team', new_team_path, class: "btn success small right" | |
7 | - %br | |
8 | - | |
9 | -= form_tag search_teams_path, method: :get, class: 'form-inline' do | |
10 | - = text_field_tag :name, params[:name], class: "xlarge" | |
11 | - = submit_tag "Search", class: "btn submit primary" | |
12 | - | |
13 | -%table.teams_list | |
14 | - %thead | |
15 | - %tr | |
16 | - %th | |
17 | - Name | |
18 | - %i.icon-sort-down | |
19 | - %th Path | |
20 | - %th Projects | |
21 | - %th Members | |
22 | - %th Owner | |
23 | - %th.cred Danger Zone! | |
24 | - | |
25 | - - @teams.each do |team| | |
26 | - %tr | |
27 | - %td | |
28 | - %strong= link_to team.name, team_path(team) | |
29 | - %td= team.path | |
30 | - %td= link_to team.projects.count, team_projects_path(team) | |
31 | - %td= link_to team.members.count, team_members_path(team) | |
32 | - %td= link_to team.owner.name, team_member_path(team, team.owner) | |
33 | - %td.bgred | |
34 | - - if current_user.can?(:manage_user_team, team) | |
35 | - = link_to "Edit", edit_team_path(team), class: "btn small" | |
36 | - - if current_user.can?(:admin_user_team, team) | |
37 | - = link_to "Destroy", team_path(team), method: :delete, confirm: "You are shure?", class: "danger btn small" | |
38 | - |
app/views/teams/issues.html.haml
app/views/teams/members/edit.html.haml
app/views/teams/members/index.html.haml
app/views/teams/members/new.html.haml
app/views/teams/members/show.html.haml
app/views/teams/merge_requests.html.haml
app/views/teams/projects/edit.html.haml
app/views/teams/projects/index.html.haml
1 | -= render "teams/team_head" | |
2 | - | |
3 | 1 | %h3.page_title |
4 | 2 | Assigned projects (#{@team.projects.count}) |
5 | 3 | %small |
... | ... | @@ -13,22 +11,26 @@ |
13 | 11 | |
14 | 12 | %hr |
15 | 13 | |
16 | -%table.projects-table | |
17 | - %thead | |
18 | - %tr | |
19 | - %th Project name | |
20 | - %th Max access | |
21 | - - if current_user.can?(:admin_user_team, @team) | |
22 | - %th.span3 | |
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) | |
23 | 29 | |
24 | - - @team.projects.each do |project| | |
25 | - %tr.project | |
26 | - %td | |
27 | - = link_to project.name_with_namespace, project_path(project) | |
28 | - %td | |
29 | - %span= @team.human_max_project_access(project) | |
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 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 danger small" | |
30 | 34 | |
31 | - - if current_user.can?(:admin_user_team, @team) | |
32 | - %td.bgred | |
33 | - = link_to 'Edit max access', edit_team_project_path(@team, project), class: "btn small" | |
34 | - = 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 danger small" | |
35 | +- else | |
36 | + %p.nothing_here_message This team has no projects yet | ... | ... |
app/views/teams/projects/new.html.haml
app/views/teams/search.html.haml
... | ... | @@ -1,11 +0,0 @@ |
1 | -= render "team_head" | |
2 | - | |
3 | -= form_tag search_team_path(@team), method: :get, class: 'form-inline' do |f| | |
4 | - .padded | |
5 | - = label_tag :search do | |
6 | - %strong Looking for | |
7 | - .input | |
8 | - = search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search" | |
9 | - = submit_tag 'Search', class: "btn primary wide" | |
10 | -- if params[:search].present? | |
11 | - = render 'search/result' |
app/views/teams/show.html.haml
config/routes.rb
... | ... | @@ -142,15 +142,11 @@ Gitlab::Application.routes.draw do |
142 | 142 | member do |
143 | 143 | get :issues |
144 | 144 | get :merge_requests |
145 | - get :search | |
146 | 145 | end |
147 | 146 | scope module: :teams do |
148 | 147 | resources :members, only: [:index, :new, :create, :edit, :update, :destroy] |
149 | 148 | resources :projects, only: [:index, :new, :create, :edit, :update, :destroy], constraints: { id: /[a-zA-Z.0-9_\-\/]+/ } |
150 | 149 | end |
151 | - collection do | |
152 | - get :search | |
153 | - end | |
154 | 150 | end |
155 | 151 | |
156 | 152 | resources :projects, constraints: { id: /[^\/]+/ }, only: [:new, :create] | ... | ... |