diff options
Diffstat (limited to 'app/helpers/routing/snippets_helper.rb')
-rw-r--r-- | app/helpers/routing/snippets_helper.rb | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/app/helpers/routing/snippets_helper.rb b/app/helpers/routing/snippets_helper.rb new file mode 100644 index 00000000000..19450c1d033 --- /dev/null +++ b/app/helpers/routing/snippets_helper.rb @@ -0,0 +1,144 @@ +# frozen_string_literal: true + +module Routing + module SnippetsHelper + def gitlab_snippet_path(snippet, *args) + if snippet.is_a?(ProjectSnippet) + project_snippet_path(snippet.project, snippet, *args) + else + new_args = snippet_query_params(snippet, *args) + snippet_path(snippet, *new_args) + end + end + + def gitlab_snippet_url(snippet, *args) + if snippet.is_a?(ProjectSnippet) + project_snippet_url(snippet.project, snippet, *args) + else + new_args = snippet_query_params(snippet, *args) + snippet_url(snippet, *new_args) + end + end + + def gitlab_dashboard_snippets_path(snippet, *args) + if snippet.is_a?(ProjectSnippet) + project_snippets_path(snippet.project, *args) + else + dashboard_snippets_path + end + end + + def gitlab_raw_snippet_path(snippet, *args) + if snippet.is_a?(ProjectSnippet) + raw_project_snippet_path(snippet.project, snippet, *args) + else + new_args = snippet_query_params(snippet, *args) + raw_snippet_path(snippet, *new_args) + end + end + + def gitlab_raw_snippet_url(snippet, *args) + if snippet.is_a?(ProjectSnippet) + raw_project_snippet_url(snippet.project, snippet, *args) + else + new_args = snippet_query_params(snippet, *args) + raw_snippet_url(snippet, *new_args) + end + end + + def gitlab_raw_snippet_blob_url(snippet, path, ref = nil, **options) + params = { + snippet_id: snippet, + ref: ref || snippet.default_branch, + path: path + } + + if snippet.is_a?(ProjectSnippet) + project_snippet_blob_raw_url(snippet.project, **params, **options) + else + snippet_blob_raw_url(**params, **options) + end + end + + def gitlab_raw_snippet_blob_path(snippet, path, ref = nil, **options) + gitlab_raw_snippet_blob_url(snippet, path, ref, only_path: true, **options) + end + + def gitlab_snippet_notes_path(snippet, *args) + new_args = snippet_query_params(snippet, *args) + snippet_notes_path(snippet, *new_args) + end + + def gitlab_snippet_notes_url(snippet, *args) + new_args = snippet_query_params(snippet, *args) + snippet_notes_url(snippet, *new_args) + end + + def gitlab_snippet_note_path(snippet, note, *args) + new_args = snippet_query_params(snippet, *args) + snippet_note_path(snippet, note, *new_args) + end + + def gitlab_snippet_note_url(snippet, note, *args) + new_args = snippet_query_params(snippet, *args) + snippet_note_url(snippet, note, *new_args) + end + + def gitlab_toggle_award_emoji_snippet_note_path(snippet, note, *args) + new_args = snippet_query_params(snippet, *args) + toggle_award_emoji_snippet_note_path(snippet, note, *new_args) + end + + def gitlab_toggle_award_emoji_snippet_note_url(snippet, note, *args) + new_args = snippet_query_params(snippet, *args) + toggle_award_emoji_snippet_note_url(snippet, note, *new_args) + end + + def gitlab_toggle_award_emoji_snippet_path(snippet, *args) + new_args = snippet_query_params(snippet, *args) + toggle_award_emoji_snippet_path(snippet, *new_args) + end + + def gitlab_toggle_award_emoji_snippet_url(snippet, *args) + new_args = snippet_query_params(snippet, *args) + toggle_award_emoji_snippet_url(snippet, *new_args) + end + + def preview_markdown_path(parent, *args) + return group_preview_markdown_path(parent, *args) if parent.is_a?(Group) + + if @snippet.is_a?(PersonalSnippet) + preview_markdown_snippets_path + else + preview_markdown_project_path(parent, *args) + end + end + + def toggle_award_emoji_personal_snippet_path(*args) + toggle_award_emoji_snippet_path(*args) + end + + def toggle_award_emoji_project_project_snippet_path(*args) + toggle_award_emoji_project_snippet_path(*args) + end + + def toggle_award_emoji_project_project_snippet_url(*args) + toggle_award_emoji_project_snippet_url(*args) + end + + private + + def snippet_query_params(snippet, *args) + opts = case args.last + when Hash + args.pop + when ActionController::Parameters + args.pop.to_h + else + {} + end + + args << opts + end + end +end |