Module: IntegrationsHelper

Extended by:
IntegrationsHelper
Included in:
Admin::ApplicationSettingsController, IntegrationsHelper, OperationsHelper, Profiles::SlacksController
Defined in:
app/helpers/integrations_helper.rb

Instance Method Summary collapse

Instance Method Details



221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'app/helpers/integrations_helper.rb', line 221

def add_to_slack_link(parent, slack_app_id)
  query = {
    scope: SlackIntegration::SCOPES.join(','),
    client_id: slack_app_id,
    redirect_uri: add_to_slack_link_redirect_url(parent),
    state: form_authenticity_token
  }

  Gitlab::Utils.add_url_parameters(
    Integrations::SlackInstallation::BaseService::SLACK_AUTHORIZE_URL,
    query
  )
end

#gitlab_slack_application_data(projects) ⇒ Object



246
247
248
249
250
251
252
253
254
255
# File 'app/helpers/integrations_helper.rb', line 246

def gitlab_slack_application_data(projects)
  {
    projects: (projects || []).to_json(only: [:id, :name], methods: [:avatar_url, :name_with_namespace]),
    sign_in_path: new_session_path(:user, redirect_to_referer: 'yes'),
    is_signed_in: current_user.present?.to_s,
    slack_link_path: slack_link_profile_slack_path,
    gitlab_logo_path: image_path('illustrations/gitlab_logo.svg'),
    slack_logo_path: image_path('illustrations/slack_logo.svg')
  }
end

#instance_level_integrations?Boolean

Returns:

  • (Boolean)


164
165
166
# File 'app/helpers/integrations_helper.rb', line 164

def instance_level_integrations?
  !Gitlab.com?
end

#integration_event_description(integration, event) ⇒ Object

rubocop:enable Metrics/CyclomaticComplexity



37
38
39
40
41
42
43
44
45
46
# File 'app/helpers/integrations_helper.rb', line 37

def integration_event_description(integration, event)
  case integration
  when Integrations::Jira
    jira_integration_event_description(event)
  when Integrations::Teamcity
    teamcity_integration_event_description(event)
  else
    default_integration_event_description(event)
  end
end

#integration_event_field_name(event) ⇒ Object



48
49
50
51
# File 'app/helpers/integrations_helper.rb', line 48

def integration_event_field_name(event)
  event = event.pluralize if %w[merge_request issue confidential_issue].include?(event)
  "#{event}_events"
end

#integration_event_title(event) ⇒ Object

rubocop:disable Metrics/CyclomaticComplexity



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
# File 'app/helpers/integrations_helper.rb', line 5

def integration_event_title(event)
  case event
  when "push", "push_events"
    _("Push")
  when "tag_push", "tag_push_events"
    _("Tag push")
  when "note", "note_events"
    _("Note")
  when "confidential_note", "confidential_note_events"
    _("Confidential note")
  when "issue", "issue_events"
    _("Issue")
  when "confidential_issue", "confidential_issue_events"
    _("Confidential issue")
  when "merge_request", "merge_request_events"
    _("Merge request")
  when "pipeline", "pipeline_events"
    _("Pipeline")
  when "wiki_page", "wiki_page_events"
    _("Wiki page")
  when "commit", "commit_events"
    _("Commit")
  when "deployment"
    _("Deployment")
  when "alert"
    _("Alert")
  when "incident"
    _("Incident")
  end
end

#integration_form_data(integration, project: nil, group: nil) ⇒ Object



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
# File 'app/helpers/integrations_helper.rb', line 107

def integration_form_data(integration, project: nil, group: nil)
  form_data = {
    id: integration.id,
    project_id: integration.project_id,
    group_id: integration.group_id,
    manual_activation: integration.manual_activation?.to_s,
    activated: (integration.active || (integration.new_record? && integration.activate_disabled_reason.nil?)).to_s,
    activate_disabled: integration.activate_disabled_reason.present?.to_s,
    type: integration.to_param,
    merge_request_events: integration.merge_requests_events.to_s,
    commit_events: integration.commit_events.to_s,
    enable_comments: integration.comment_on_event_enabled.to_s,
    comment_detail: integration.comment_detail,
    learn_more_path: integrations_help_page_path,
    about_pricing_url: promo_pricing_url,
    trigger_events: trigger_events_for_integration(integration),
    sections: integration.sections.to_json,
    fields: fields_for_integration(integration),
    inherit_from_id: integration.inherit_from_id,
    integration_level: integration_level(integration),
    editable: integration.editable?.to_s,
    cancel_path: scoped_integrations_path(project: project, group: group),
    can_test: integration.testable?.to_s,
    test_path: scoped_test_integration_path(integration, project: project, group: group),
    reset_path: scoped_reset_integration_path(integration, group: group),
    form_path: scoped_integration_path(integration, project: project, group: group),
    redirect_to: request.referer
  }

  form_data.merge!(jira_specific_form_data(integration)) if integration.is_a?(Integrations::Jira)
  form_data.merge!(slack_specific_form_data(integration)) if integration.is_a?(::Integrations::GitlabSlackApplication)

  form_data
end

#integration_issue_type(issue_type) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
179
# File 'app/helpers/integrations_helper.rb', line 168

def integration_issue_type(issue_type)
  issue_type_i18n_map = {
    'issue' => _('Issue'),
    'incident' => _('Incident'),
    'test_case' => _('Test case'),
    'requirement' => _('Requirement'),
    'task' => _('Task'),
    'ticket' => _('Service Desk Ticket')
  }

  issue_type_i18n_map[issue_type] || issue_type
end

#integration_list_data(integrations, group: nil, project: nil) ⇒ Object



149
150
151
152
153
154
# File 'app/helpers/integrations_helper.rb', line 149

def integration_list_data(integrations, group: nil, project: nil)
  {
    integrations: integrations.map { |i| serialize_integration(i, group: group, project: project) }.to_json,
    is_admin: current_user&.admin.to_s
  }
end

#integration_overrides_data(integration, project: nil, group: nil) ⇒ Object



142
143
144
145
146
147
# File 'app/helpers/integrations_helper.rb', line 142

def integration_overrides_data(integration, project: nil, group: nil)
  {
    edit_path: scoped_edit_integration_path(integration, project: project, group: group),
    overrides_path: scoped_overrides_integration_path(integration, format: :json)
  }
end

#integration_todo_target_type(target_type) ⇒ Object



181
182
183
184
185
186
187
188
189
190
191
192
# File 'app/helpers/integrations_helper.rb', line 181

def integration_todo_target_type(target_type)
  target_type_i18n_map = {
    'Commit' => _('Commit'),
    'Issue' => _('Issue'),
    'MergeRequest' => _('Merge Request'),
    'Epic' => _('Epic'),
    DesignManagement::Design.name => _('design'),
    AlertManagement::Alert.name => _('alert')
  }

  target_type_i18n_map[target_type] || target_type
end

#integration_webhook_event_human_name(event) ⇒ Object



194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'app/helpers/integrations_helper.rb', line 194

def integration_webhook_event_human_name(event)
  event_i18n_map = {
    confidential_issues_events: s_('Webhooks|Confidential issue events'),
    confidential_note_events: s_('Webhooks|Confidential comments'),
    deployment_events: s_('Webhooks|Deployment events'),
    feature_flag_events: s_('Webhooks|Feature flag events'),
    issues_events: s_('Webhooks|Issue events'),
    job_events: s_('Webhooks|Job events'),
    member_events: s_('Webhooks|Member events'),
    merge_requests_events: s_('Webhooks|Merge request events'),
    note_events: _('Comments'),
    pipeline_events: s_('Webhooks|Pipeline events'),
    project_events: s_('Webhooks|Project events'),
    push_events: _('Push events'),
    releases_events: s_('Webhooks|Releases events'),
    milestone_events: s_('Webhooks|Milestone events'),
    repository_update_events: _('Repository update events'),
    resource_access_token_events: s_('Webhooks|Project or group access token events'),
    subgroup_events: s_('Webhooks|Subgroup events'),
    tag_push_events: s_('Webhooks|Tag push events'),
    wiki_page_events: s_('Webhooks|Wiki page events'),
    vulnerability_events: s_('Webhooks|Vulnerability events')
  }

  event_i18n_map[event] || event.to_s.humanize
end

#integrations_help_page_pathObject



156
157
158
# File 'app/helpers/integrations_helper.rb', line 156

def integrations_help_page_path
  help_page_path('administration/settings/project_integration_management.md')
end

#jira_specific_form_data(integration) ⇒ Object



257
258
259
260
261
262
263
264
# File 'app/helpers/integrations_helper.rb', line 257

def jira_specific_form_data(integration)
  return {} unless integration.is_a?(Integrations::Jira)

  {
    jira_issue_transition_automatic: integration.jira_issue_transition_automatic,
    jira_issue_transition_id: integration.jira_issue_transition_id
  }
end

#project_jira_issues_integration?Boolean

Returns:

  • (Boolean)


160
161
162
# File 'app/helpers/integrations_helper.rb', line 160

def project_jira_issues_integration?
  false
end

#scoped_edit_integration_path(integration, project: nil, group: nil) ⇒ Object



73
74
75
76
77
78
79
80
81
# File 'app/helpers/integrations_helper.rb', line 73

def scoped_edit_integration_path(integration, project: nil, group: nil)
  if project.present?
    edit_project_settings_integration_path(project, integration)
  elsif group.present?
    edit_group_settings_integration_path(group, integration)
  else
    edit_admin_application_settings_integration_path(integration)
  end
end

#scoped_integration_path(integration, project: nil, group: nil) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'app/helpers/integrations_helper.rb', line 63

def scoped_integration_path(integration, project: nil, group: nil)
  if project.present?
    project_settings_integration_path(project, integration)
  elsif group.present?
    group_settings_integration_path(group, integration)
  else
    admin_application_settings_integration_path(integration)
  end
end

#scoped_integrations_path(project: nil, group: nil) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'app/helpers/integrations_helper.rb', line 53

def scoped_integrations_path(project: nil, group: nil)
  if project.present?
    project_settings_integrations_path(project)
  elsif group.present?
    group_settings_integrations_path(group)
  else
    integrations_admin_application_settings_path
  end
end

#scoped_overrides_integration_path(integration, options = {}) ⇒ Object



83
84
85
# File 'app/helpers/integrations_helper.rb', line 83

def scoped_overrides_integration_path(integration, options = {})
  overrides_admin_application_settings_integration_path(integration, options)
end

#scoped_reset_integration_path(integration, group: nil) ⇒ Object



97
98
99
100
101
102
103
104
105
# File 'app/helpers/integrations_helper.rb', line 97

def scoped_reset_integration_path(integration, group: nil)
  return '' unless integration.persisted?

  if group.present?
    reset_group_settings_integration_path(group, integration)
  else
    reset_admin_application_settings_integration_path(integration)
  end
end

#scoped_test_integration_path(integration, project: nil, group: nil) ⇒ Object



87
88
89
90
91
92
93
94
95
# File 'app/helpers/integrations_helper.rb', line 87

def scoped_test_integration_path(integration, project: nil, group: nil)
  if project.present?
    test_project_settings_integration_path(project, integration)
  elsif group.present?
    test_group_settings_integration_path(group, integration)
  else
    test_admin_application_settings_integration_path(integration)
  end
end

#slack_integration_destroy_path(parent) ⇒ Object



235
236
237
238
239
240
241
242
243
244
# File 'app/helpers/integrations_helper.rb', line 235

def slack_integration_destroy_path(parent)
  case parent
  when Project
    project_settings_slack_path(parent)
  when Group
    group_settings_slack_path(parent)
  when nil
    admin_application_settings_slack_path
  end
end

#slack_specific_form_data(integration) ⇒ Object



266
267
268
269
270
271
272
273
# File 'app/helpers/integrations_helper.rb', line 266

def slack_specific_form_data(integration)
  return {} unless integration.is_a?(::Integrations::GitlabSlackApplication)

  {
    upgrade_slack_url: add_to_slack_link(integration.parent, slack_app_id),
    should_upgrade_slack: integration.upgrade_needed?.to_s
  }
end