summaryrefslogtreecommitdiff
path: root/app/helpers/routing/snippets_helper.rb
blob: 19450c1d03346af0b4480ab9e1d73e71c8f74aa6 (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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