debian-mirror-gitlab/app/controllers/concerns/preview_markdown.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

59 lines
1.6 KiB
Ruby
Raw Normal View History

2018-12-05 23:21:45 +05:30
# frozen_string_literal: true
2018-03-17 18:26:18 +05:30
module PreviewMarkdown
extend ActiveSupport::Concern
# rubocop:disable Gitlab/ModuleWithInstanceVariables
def preview_markdown
2019-12-26 22:10:19 +05:30
result = PreviewMarkdownService.new(@project, current_user, markdown_service_params).execute
2018-03-17 18:26:18 +05:30
render json: {
2019-12-26 22:10:19 +05:30
body: view_context.markdown(result[:text], markdown_context_params),
2018-03-17 18:26:18 +05:30
references: {
users: result[:users],
2019-07-07 11:18:12 +05:30
suggestions: SuggestionSerializer.new.represent_diff(result[:suggestions]),
2018-03-17 18:26:18 +05:30
commands: view_context.markdown(result[:commands])
}
}
end
2019-02-15 15:39:39 +05:30
2019-12-26 22:10:19 +05:30
private
2019-02-15 15:39:39 +05:30
def projects_filter_params
{
2022-01-26 12:08:38 +05:30
issuable_reference_expansion_enabled: true,
2019-02-15 15:39:39 +05:30
suggestions_filter_enabled: params[:preview_suggestions].present?
}
end
2019-12-26 22:10:19 +05:30
2022-11-25 23:54:43 +05:30
def timeline_events_filter_params
{
issuable_reference_expansion_enabled: true,
pipeline: :'incident_management/timeline_event'
}
end
2019-12-26 22:10:19 +05:30
def markdown_service_params
params
end
def markdown_context_params
case controller_name
2022-11-25 23:54:43 +05:30
when 'wikis' then { pipeline: :wiki, wiki: wiki, page_slug: params[:id] }
when 'snippets' then { skip_project_check: true }
2023-01-13 00:05:48 +05:30
when 'groups' then { group: group, issuable_reference_expansion_enabled: true }
2022-11-25 23:54:43 +05:30
when 'projects' then projects_filter_params
when 'timeline_events' then timeline_events_filter_params
2019-12-26 22:10:19 +05:30
else {}
2023-03-04 22:38:38 +05:30
end.merge(
requested_path: params[:path],
ref: params[:ref],
# Disable comments in markdown for IE browsers because comments in IE
# could allow script execution.
allow_comments: !browser.ie?
)
2019-12-26 22:10:19 +05:30
end
2018-03-17 18:26:18 +05:30
# rubocop:enable Gitlab/ModuleWithInstanceVariables
end