Commit c38b9a2f80111f8074f8e6ce36e63d68f519c581
1 parent
a03f3189
Exists in
master
and in
4 other branches
Filter projects on dashboard
Showing
5 changed files
with
46 additions
and
0 deletions
Show diff stats
app/assets/stylesheets/gitlab_bootstrap/common.scss
@@ -100,3 +100,17 @@ input[type='search'].search-text-input { | @@ -100,3 +100,17 @@ input[type='search'].search-text-input { | ||
100 | } | 100 | } |
101 | 101 | ||
102 | fieldset legend { font-size: 17px; } | 102 | fieldset legend { font-size: 17px; } |
103 | + | ||
104 | +ul.nav.nav-projects-tabs { | ||
105 | + @extend .nav-tabs; | ||
106 | + | ||
107 | + padding-left: 8px; | ||
108 | + | ||
109 | + li { | ||
110 | + a { | ||
111 | + padding: 4px 20px; | ||
112 | + margin-top: 2px; | ||
113 | + border-color: #DDD; | ||
114 | + } | ||
115 | + } | ||
116 | +} |
app/controllers/dashboard_controller.rb
@@ -7,6 +7,15 @@ class DashboardController < ApplicationController | @@ -7,6 +7,15 @@ class DashboardController < ApplicationController | ||
7 | def index | 7 | def index |
8 | @groups = current_user.authorized_groups | 8 | @groups = current_user.authorized_groups |
9 | 9 | ||
10 | + @projects = case params[:scope] | ||
11 | + when 'personal' then | ||
12 | + @projects.personal(current_user) | ||
13 | + when 'joined' then | ||
14 | + @projects.joined(current_user) | ||
15 | + else | ||
16 | + @projects | ||
17 | + end | ||
18 | + | ||
10 | @projects = @projects.page(params[:page]).per(30) | 19 | @projects = @projects.page(params[:page]).per(30) |
11 | 20 | ||
12 | @events = Event.in_projects(current_user.project_ids) | 21 | @events = Event.in_projects(current_user.project_ids) |
app/helpers/tab_helper.rb
@@ -84,4 +84,17 @@ module TabHelper | @@ -84,4 +84,17 @@ module TabHelper | ||
84 | 'active' | 84 | 'active' |
85 | end | 85 | end |
86 | end | 86 | end |
87 | + | ||
88 | + # Use nav_tab for save controller/action but different params | ||
89 | + def nav_tab key, value, &block | ||
90 | + o = {} | ||
91 | + o[:class] = "" | ||
92 | + o[:class] << " active" if params[key] == value | ||
93 | + | ||
94 | + if block_given? | ||
95 | + content_tag(:li, capture(&block), o) | ||
96 | + else | ||
97 | + content_tag(:li, nil, o) | ||
98 | + end | ||
99 | + end | ||
87 | end | 100 | end |
app/models/project.rb
@@ -74,6 +74,8 @@ class Project < ActiveRecord::Base | @@ -74,6 +74,8 @@ class Project < ActiveRecord::Base | ||
74 | scope :without_user, ->(user) { where("id NOT IN (:ids)", ids: user.projects.map(&:id) ) } | 74 | scope :without_user, ->(user) { where("id NOT IN (:ids)", ids: user.projects.map(&:id) ) } |
75 | scope :not_in_group, ->(group) { where("id NOT IN (:ids)", ids: group.project_ids ) } | 75 | scope :not_in_group, ->(group) { where("id NOT IN (:ids)", ids: group.project_ids ) } |
76 | scope :sorted_by_activity, ->() { order("(SELECT max(events.created_at) FROM events WHERE events.project_id = projects.id) DESC") } | 76 | scope :sorted_by_activity, ->() { order("(SELECT max(events.created_at) FROM events WHERE events.project_id = projects.id) DESC") } |
77 | + scope :personal, ->(user) { where(namespace_id: user.namespace_id) } | ||
78 | + scope :joined, ->(user) { where("namespace_id != ?", user.namespace_id) } | ||
77 | 79 | ||
78 | class << self | 80 | class << self |
79 | def authorized_for user | 81 | def authorized_for user |
app/views/dashboard/_projects.html.haml
@@ -8,6 +8,14 @@ | @@ -8,6 +8,14 @@ | ||
8 | = link_to new_project_path, class: "btn very_small info" do | 8 | = link_to new_project_path, class: "btn very_small info" do |
9 | %i.icon-plus | 9 | %i.icon-plus |
10 | New Project | 10 | New Project |
11 | + %ul.nav.nav-projects-tabs | ||
12 | + = nav_tab :scope, nil do | ||
13 | + = link_to "All", dashboard_path | ||
14 | + = nav_tab :scope, 'personal' do | ||
15 | + = link_to "Personal", dashboard_path(scope: 'personal') | ||
16 | + = nav_tab :scope, 'joined' do | ||
17 | + = link_to "Joined", dashboard_path(scope: 'joined') | ||
18 | + | ||
11 | %ul.unstyled | 19 | %ul.unstyled |
12 | - projects.each do |project| | 20 | - projects.each do |project| |
13 | %li.wll | 21 | %li.wll |