diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-11-21 08:24:05 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-11-21 08:24:05 +0300 |
commit | 23734a715e622f3f028bd565df3be130d3aba737 (patch) | |
tree | 2e3ad753e3ddafbde6da4e8bcf393ad8d5bf9c0e /app/controllers/dashboard_controller.rb | |
parent | 899afd0067065be6b15d7b737100b82757421828 (diff) | |
download | gitlab-ce-23734a715e622f3f028bd565df3be130d3aba737.tar.gz |
Dashboard filters for events
Diffstat (limited to 'app/controllers/dashboard_controller.rb')
-rw-r--r-- | app/controllers/dashboard_controller.rb | 39 |
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 |