1# frozen_string_literal: true 2 3module Routing 4 module SnippetsHelper 5 def gitlab_snippet_path(snippet, *args) 6 if snippet.is_a?(ProjectSnippet) 7 project_snippet_path(snippet.project, snippet, *args) 8 else 9 new_args = snippet_query_params(snippet, *args) 10 snippet_path(snippet, *new_args) 11 end 12 end 13 14 def gitlab_snippet_url(snippet, *args) 15 if snippet.is_a?(ProjectSnippet) 16 project_snippet_url(snippet.project, snippet, *args) 17 else 18 new_args = snippet_query_params(snippet, *args) 19 snippet_url(snippet, *new_args) 20 end 21 end 22 23 def gitlab_dashboard_snippets_path(snippet, *args) 24 if snippet.is_a?(ProjectSnippet) 25 project_snippets_path(snippet.project, *args) 26 else 27 dashboard_snippets_path 28 end 29 end 30 31 def gitlab_raw_snippet_path(snippet, *args) 32 if snippet.is_a?(ProjectSnippet) 33 raw_project_snippet_path(snippet.project, snippet, *args) 34 else 35 new_args = snippet_query_params(snippet, *args) 36 raw_snippet_path(snippet, *new_args) 37 end 38 end 39 40 def gitlab_raw_snippet_url(snippet, *args) 41 if snippet.is_a?(ProjectSnippet) 42 raw_project_snippet_url(snippet.project, snippet, *args) 43 else 44 new_args = snippet_query_params(snippet, *args) 45 raw_snippet_url(snippet, *new_args) 46 end 47 end 48 49 def gitlab_raw_snippet_blob_url(snippet, path, ref = nil, **options) 50 params = { 51 snippet_id: snippet, 52 ref: ref || snippet.default_branch, 53 path: path 54 } 55 56 if snippet.is_a?(ProjectSnippet) 57 project_snippet_blob_raw_url(snippet.project, **params, **options) 58 else 59 snippet_blob_raw_url(**params, **options) 60 end 61 end 62 63 def gitlab_raw_snippet_blob_path(snippet, path, ref = nil, **options) 64 gitlab_raw_snippet_blob_url(snippet, path, ref, only_path: true, **options) 65 end 66 67 def gitlab_snippet_notes_path(snippet, *args) 68 new_args = snippet_query_params(snippet, *args) 69 snippet_notes_path(snippet, *new_args) 70 end 71 72 def gitlab_snippet_notes_url(snippet, *args) 73 new_args = snippet_query_params(snippet, *args) 74 snippet_notes_url(snippet, *new_args) 75 end 76 77 def gitlab_snippet_note_path(snippet, note, *args) 78 new_args = snippet_query_params(snippet, *args) 79 snippet_note_path(snippet, note, *new_args) 80 end 81 82 def gitlab_snippet_note_url(snippet, note, *args) 83 new_args = snippet_query_params(snippet, *args) 84 snippet_note_url(snippet, note, *new_args) 85 end 86 87 def gitlab_toggle_award_emoji_snippet_note_path(snippet, note, *args) 88 new_args = snippet_query_params(snippet, *args) 89 toggle_award_emoji_snippet_note_path(snippet, note, *new_args) 90 end 91 92 def gitlab_toggle_award_emoji_snippet_note_url(snippet, note, *args) 93 new_args = snippet_query_params(snippet, *args) 94 toggle_award_emoji_snippet_note_url(snippet, note, *new_args) 95 end 96 97 def gitlab_toggle_award_emoji_snippet_path(snippet, *args) 98 new_args = snippet_query_params(snippet, *args) 99 toggle_award_emoji_snippet_path(snippet, *new_args) 100 end 101 102 def gitlab_toggle_award_emoji_snippet_url(snippet, *args) 103 new_args = snippet_query_params(snippet, *args) 104 toggle_award_emoji_snippet_url(snippet, *new_args) 105 end 106 107 def preview_markdown_path(parent, *args) 108 return group_preview_markdown_path(parent, *args) if parent.is_a?(Group) 109 110 if @snippet.is_a?(PersonalSnippet) 111 preview_markdown_snippets_path 112 else 113 preview_markdown_project_path(parent, *args) 114 end 115 end 116 117 def toggle_award_emoji_personal_snippet_path(*args) 118 toggle_award_emoji_snippet_path(*args) 119 end 120 121 def toggle_award_emoji_project_project_snippet_path(*args) 122 toggle_award_emoji_project_snippet_path(*args) 123 end 124 125 def toggle_award_emoji_project_project_snippet_url(*args) 126 toggle_award_emoji_project_snippet_url(*args) 127 end 128 129 private 130 131 def snippet_query_params(snippet, *args) 132 opts = case args.last 133 when Hash 134 args.pop 135 when ActionController::Parameters 136 args.pop.to_h 137 else 138 {} 139 end 140 141 args << opts 142 end 143 end 144end 145