debian-mirror-gitlab/app/controllers/concerns/issuable_collections_action.rb
2023-04-23 21:23:45 +05:30

75 lines
1.6 KiB
Ruby

# frozen_string_literal: true
module IssuableCollectionsAction
extend ActiveSupport::Concern
include IssuableCollections
include IssuesCalendar
included do
before_action :check_search_rate_limit!, only: [:issues, :merge_requests], if: -> {
params[:search].present?
}
end
# rubocop:disable Gitlab/ModuleWithInstanceVariables
def issues
@issues = issuables_collection
.non_archived
.page(params[:page])
@issuable_meta_data = Gitlab::IssuableMetadata.new(current_user, @issues).data
respond_to do |format|
format.html
format.atom { render layout: 'xml' }
end
end
def merge_requests
@merge_requests = issuables_collection.page(params[:page])
@issuable_meta_data = Gitlab::IssuableMetadata.new(current_user, @merge_requests).data
rescue ActiveRecord::QueryCanceled => exception # rubocop:disable Database/RescueQueryCanceled
log_exception(exception)
@search_timeout_occurred = true
end
# rubocop:enable Gitlab/ModuleWithInstanceVariables
def issues_calendar
render_issues_calendar(issuables_collection)
end
private
def sorting_field
case action_name
when 'issues'
Issue::SORTING_PREFERENCE_FIELD
when 'merge_requests'
MergeRequest::SORTING_PREFERENCE_FIELD
else
nil
end
end
def finder_type
case action_name
when 'issues', 'issues_calendar'
IssuesFinder
when 'merge_requests'
MergeRequestsFinder
else
nil
end
end
def finder_options
issue_types = Issue::TYPES_FOR_LIST
super.merge(
non_archived: true,
issue_types: issue_types
)
end
end