summaryrefslogtreecommitdiff
path: root/app/models/dashboard_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/dashboard_controller.rb')
-rw-r--r--app/models/dashboard_controller.rb61
1 files changed, 61 insertions, 0 deletions
diff --git a/app/models/dashboard_controller.rb b/app/models/dashboard_controller.rb
new file mode 100644
index 00000000000..ff133001b84
--- /dev/null
+++ b/app/models/dashboard_controller.rb
@@ -0,0 +1,61 @@
+class DashboardController < Dashboard::ApplicationController
+ include IssuesAction
+ include MergeRequestsAction
+
+ FILTER_PARAMS = [
+ :author_id,
+ :assignee_id,
+ :milestone_title,
+ :label_name
+ ].freeze
+
+ before_action :event_filter, only: :activity
+ before_action :projects, only: [:issues, :merge_requests]
+ before_action :set_show_full_reference, only: [:issues, :merge_requests]
+ before_action :check_filters_presence!, only: [:issues, :merge_requests]
+
+ respond_to :html
+
+ def activity
+ respond_to do |format|
+ format.html
+
+ format.json do
+ load_events
+ pager_json("events/_events", @events.count)
+ end
+ end
+ end
+
+ protected
+
+ def load_events
+ projects =
+ if params[:filter] == "starred"
+ ProjectsFinder.new(current_user: current_user, params: { starred: true }).execute
+ else
+ current_user.authorized_projects
+ end
+
+ @events = EventCollection
+ .new(projects, offset: params[:offset].to_i, filter: @event_filter)
+ .to_a
+
+ Events::RenderService.new(current_user).execute(@events)
+ end
+
+ def set_show_full_reference
+ @show_full_reference = true
+ end
+
+ def check_filters_presence!
+ @no_filters_set = FILTER_PARAMS.none? { |k| params.key?(k) }
+
+ return unless @no_filters_set
+
+ respond_to do |format|
+ format.html { render }
+ format.atom { head :bad_request }
+ end
+ end
+end