summaryrefslogtreecommitdiff
path: root/app/controllers/dashboard_controller.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-11-21 08:24:05 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-11-21 08:24:05 +0300
commit23734a715e622f3f028bd565df3be130d3aba737 (patch)
tree2e3ad753e3ddafbde6da4e8bcf393ad8d5bf9c0e /app/controllers/dashboard_controller.rb
parent899afd0067065be6b15d7b737100b82757421828 (diff)
downloadgitlab-ce-23734a715e622f3f028bd565df3be130d3aba737.tar.gz
Dashboard filters for events
Diffstat (limited to 'app/controllers/dashboard_controller.rb')
-rw-r--r--app/controllers/dashboard_controller.rb39
1 files changed, 32 insertions, 7 deletions
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index ad242d30f7f..4f874a9654a 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -1,13 +1,12 @@
class DashboardController < ApplicationController
respond_to :html
+ before_filter :projects
before_filter :event_filter, only: :index
def index
@groups = Group.where(id: current_user.projects.pluck(:namespace_id))
- @projects = current_user.projects_sorted_by_activity
@projects = @projects.page(params[:page]).per(30)
-
@events = Event.in_projects(current_user.project_ids)
@events = @event_filter.apply_filter(@events)
@events = @events.limit(20).offset(params[:offset] || 0)
@@ -23,15 +22,16 @@ class DashboardController < ApplicationController
# Get authored or assigned open merge requests
def merge_requests
- @projects = current_user.projects.all
- @merge_requests = current_user.cared_merge_requests.recent.page(params[:page]).per(20)
+ @merge_requests = current_user.cared_merge_requests
+ @merge_requests = dashboard_filter(@merge_requests)
+ @merge_requests = @merge_requests.recent.page(params[:page]).per(20)
end
# Get only assigned issues
def issues
- @projects = current_user.projects.all
- @user = current_user
- @issues = current_user.assigned_issues.opened.recent.page(params[:page]).per(20)
+ @issues = current_user.assigned_issues
+ @issues = dashboard_filter(@issues)
+ @issues = @issues.recent.page(params[:page]).per(20)
@issues = @issues.includes(:author, :project)
respond_to do |format|
@@ -40,7 +40,32 @@ class DashboardController < ApplicationController
end
end
+ protected
+
+ def projects
+ @projects = current_user.projects_sorted_by_activity
+ end
+
def event_filter
@event_filter ||= EventFilter.new(params[:event_filter])
end
+
+ def dashboard_filter items
+ if params[:project_id]
+ items = items.where(project_id: params[:project_id])
+ end
+
+ if params[:search].present?
+ items = items.search(params[:search])
+ end
+
+ case params[:status]
+ when 'closed'
+ items.closed
+ when 'all'
+ items
+ else
+ items.opened
+ end
+ end
end