summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/issues_calendar.rb
blob: 76e1d1ff4e84e94e5ab5e4b0b9a653e3abfb65b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module IssuesCalendar
  extend ActiveSupport::Concern

  # rubocop:disable Gitlab/ModuleWithInstanceVariables
  # rubocop: disable CodeReuse/ActiveRecord
  def render_issues_calendar(issuables)
    @issues = issuables
                  .non_archived
                  .with_due_date
                  .limit(100)

    respond_to do |format|
      format.ics do
        # NOTE: with text/calendar as Content-Type, the browser always downloads
        #       the content as a file (even ignoring the Content-Disposition
        #       header). We want to display the content inline when accessed
        #       from GitLab, similarly to the RSS feed.
        if request.referer&.start_with?(::Settings.gitlab.base_url)
          response.headers['Content-Type'] = 'text/plain'
        end
      end
    end
  end
  # rubocop: enable CodeReuse/ActiveRecord
  # rubocop:enable Gitlab/ModuleWithInstanceVariables
end