Module: EmailsHelper
Instance Method Summary
collapse
-
#action_title(url) ⇒ Object
-
#admin_changed_password_text(format: nil) ⇒ Object
-
#change_reviewer_notification_text(new_reviewers, previous_reviewers, html_tag = nil) ⇒ Object
-
#closure_reason_text(closed_via, format: nil) ⇒ Object
-
#contact_your_administrator_text ⇒ Object
-
#create_list_id_string(project, list_id_max_length = 255) ⇒ Object
-
#email_action(url) ⇒ Object
-
#email_default_heading(text) ⇒ Object
-
#gmail_goto_action(name, url) ⇒ Object
-
#group_membership_expiration_changed_link(member, group, format: nil) ⇒ Object
-
#group_membership_expiration_changed_text(member, group) ⇒ Object
-
#header_logo ⇒ Object
-
#html_footer_message ⇒ Object
-
#html_header_message ⇒ Object
-
#instance_access_request_link(user, format: nil) ⇒ Object
-
#instance_access_request_text(user, format: nil) ⇒ Object
-
#new_email_address_added_text(email) ⇒ Object
-
#notification_reason_text(reason) ⇒ Object
“You are receiving this email because #reason on #gitlab_host.”.
-
#password_reset_token_valid_time ⇒ Object
-
#re_enable_two_factor_authentication_text(format: nil) ⇒ Object
-
#remove_email_address_text(format: nil) ⇒ Object
-
#sanitize_name(name) ⇒ Object
-
#say_hello(user) ⇒ Object
-
#say_hi(user) ⇒ Object
-
#text_footer_message ⇒ Object
-
#text_header_message ⇒ Object
-
#two_factor_authentication_disabled_text ⇒ Object
#brand_header_logo, #brand_image, #brand_new_project_guidelines, #brand_profile_image_guidelines, #brand_text, #brand_title, #current_appearance, #default_brand_title, #footer_message, #header_message
#clear_memoization, #strong_memoize, #strong_memoized?
#asciidoc?, #cross_project_reference, #first_line_in_markdown, #gitlab_markdown?, #link_to_html, #link_to_markdown, #link_to_markdown_field, #markdown, #markdown_field, #markup, #markup?, #markup_unsafe, #plain?, #render_wiki_content
Instance Method Details
#action_title(url) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
|
# File 'app/helpers/emails_helper.rb', line 15
def action_title(url)
return unless url
%w(merge_requests issues commit).each do |action|
if url.split("/").include?(action)
return "View #{action.humanize.singularize}"
end
end
nil
end
|
#admin_changed_password_text(format: nil) ⇒ Object
226
227
228
229
230
231
232
233
234
235
236
|
# File 'app/helpers/emails_helper.rb', line 226
def admin_changed_password_text(format: nil)
url = Gitlab.config.gitlab.url
case format
when :html
link_to = generate_link(url, url).html_safe
_('An administrator changed the password for your GitLab account on %{link_to}.').html_safe % { link_to: link_to }
else
_('An administrator changed the password for your GitLab account on %{link_to}.') % { link_to: url }
end
end
|
#change_reviewer_notification_text(new_reviewers, previous_reviewers, html_tag = nil) ⇒ Object
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
|
# File 'app/helpers/emails_helper.rb', line 283
def change_reviewer_notification_text(new_reviewers, previous_reviewers, html_tag = nil)
new = new_reviewers.any? ? users_to_sentence(new_reviewers) : s_('ChangeReviewer|Unassigned')
old = previous_reviewers.any? ? users_to_sentence(previous_reviewers) : nil
if html_tag.present?
new = content_tag(html_tag, new)
old = content_tag(html_tag, old) if old.present?
end
if old.present?
s_('ChangeReviewer|Reviewer changed from %{old} to %{new}').html_safe % { old: old, new: new }
else
s_('ChangeReviewer|Reviewer changed to %{new}').html_safe % { new: new }
end
end
|
#closure_reason_text(closed_via, format: nil) ⇒ Object
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
|
# File 'app/helpers/emails_helper.rb', line 92
def closure_reason_text(closed_via, format: nil)
case closed_via
when MergeRequest
merge_request = MergeRequest.find(closed_via[:id]).present
return "" unless Ability.allowed?(@recipient, :read_merge_request, merge_request)
case format
when :html
merge_request_link = link_to(merge_request.to_reference, merge_request.web_url)
_("via merge request %{link}").html_safe % { link: merge_request_link }
else
_("via merge request %{link}") % { link: "#{merge_request.to_reference} (#{merge_request.web_url})" }
end
when String
return "" unless Ability.allowed?(@recipient, :download_code, @project)
_("via %{closed_via}") % { closed_via: closed_via }
else
""
end
end
|
#contact_your_administrator_text ⇒ Object
279
280
281
|
# File 'app/helpers/emails_helper.rb', line 279
def contact_your_administrator_text
_('Please contact your administrator with any questions.')
end
|
#create_list_id_string(project, list_id_max_length = 255) ⇒ Object
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
# File 'app/helpers/emails_helper.rb', line 135
def create_list_id_string(project, list_id_max_length = 255)
project_path_as_domain = project.full_path.downcase
.split('/').reverse.join('/')
.gsub(%r{[^a-z0-9\/]}, '-')
.gsub(%r{\/+}, '.')
.gsub(/(\A\.+|\.+\z)/, '')
max_domain_length = list_id_max_length - Gitlab.config.gitlab.host.length - project.id.to_s.length - 2
if max_domain_length < 3
return project.id.to_s + "..." + Gitlab.config.gitlab.host
end
if project_path_as_domain.length > max_domain_length
project_path_as_domain = project_path_as_domain.slice(0, max_domain_length)
last_dot_index = project_path_as_domain[0..-2].rindex(".")
last_dot_index ||= max_domain_length - 2
project_path_as_domain = project_path_as_domain.slice(0, last_dot_index).concat("..")
end
project.id.to_s + "." + project_path_as_domain + "." + Gitlab.config.gitlab.host
end
|
#email_action(url) ⇒ Object
8
9
10
11
12
13
|
# File 'app/helpers/emails_helper.rb', line 8
def email_action(url)
name = action_title(url)
return unless name
gmail_goto_action(name, url)
end
|
#email_default_heading(text) ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'app/helpers/emails_helper.rb', line 79
def email_default_heading(text)
content_tag :h1, text, style: [
"font-family:'Helvetica Neue',Helvetica,Arial,sans-serif",
'color:#333333',
'font-size:18px',
'font-weight:400',
'line-height:1.4',
'padding:0',
'margin:0',
'text-align:center'
].join(';')
end
|
#gmail_goto_action(name, url) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'app/helpers/emails_helper.rb', line 27
def gmail_goto_action(name, url)
data = {
"@context" => "http://schema.org",
"@type" => "EmailMessage",
"action" => {
"@type" => "ViewAction",
"name" => name,
"url" => url
}
}
content_tag :script, type: 'application/ld+json' do
data.to_json.html_safe
end
end
|
#group_membership_expiration_changed_link(member, group, format: nil) ⇒ Object
249
250
251
252
253
254
255
256
257
258
259
|
# File 'app/helpers/emails_helper.rb', line 249
def group_membership_expiration_changed_link(member, group, format: nil)
url = group_group_members_url(group, search: member.user.username)
case format
when :html
link_to = generate_link('group membership', url).html_safe
_('For additional information, review your %{link_to} or contact your group owner.').html_safe % { link_to: link_to }
else
_('For additional information, review your group membership: %{link_to} or contact your group owner.') % { link_to: url }
end
end
|
#group_membership_expiration_changed_text(member, group) ⇒ Object
238
239
240
241
242
243
244
245
246
247
|
# File 'app/helpers/emails_helper.rb', line 238
def group_membership_expiration_changed_text(member, group)
if member.expires?
days = (member.expires_at - Date.today).to_i
days_formatted = pluralize(days, 'day')
_('Your %{group} membership will now expire in %{days}.') % { group: group.human_name, days: days_formatted }
else
_('Your membership in %{group} no longer expires.') % { group: group.human_name }
end
end
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'app/helpers/emails_helper.rb', line 64
def
if current_appearance&.
image_tag(
current_appearance.,
style: 'height: 50px'
)
else
image_tag(
image_url('mailers/gitlab_logo.png'),
size: '55x55',
alt: 'GitLab'
)
end
end
|
166
167
168
169
170
|
# File 'app/helpers/emails_helper.rb', line 166
def
return unless
render_message(:footer_message, style: '')
end
|
160
161
162
163
164
|
# File 'app/helpers/emails_helper.rb', line 160
def
return unless
render_message(:header_message, style: '')
end
|
#instance_access_request_link(user, format: nil) ⇒ Object
267
268
269
270
271
272
273
274
275
276
277
|
# File 'app/helpers/emails_helper.rb', line 267
def instance_access_request_link(user, format: nil)
url = admin_user_url(user)
case format
when :html
user_page = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: url }
_("Click %{link_start}here%{link_end} to view the request.").html_safe % { link_start: user_page, link_end: '</a>'.html_safe }
else
_('Click %{link_to} to view the request.') % { link_to: url }
end
end
|
#instance_access_request_text(user, format: nil) ⇒ Object
261
262
263
264
265
|
# File 'app/helpers/emails_helper.rb', line 261
def instance_access_request_text(user, format: nil)
gitlab_host = Gitlab.config.gitlab.host
_('%{username} has asked for a GitLab account on your instance %{host}:') % { username: sanitize_name(user.name), host: gitlab_host }
end
|
#new_email_address_added_text(email) ⇒ Object
209
210
211
|
# File 'app/helpers/emails_helper.rb', line 209
def new_email_address_added_text(email)
_('A new email address has been added to your GitLab account: %{email}') % { email: email }
end
|
#notification_reason_text(reason) ⇒ Object
“You are receiving this email because #reason on #gitlab_host.”
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
# File 'app/helpers/emails_helper.rb', line 120
def notification_reason_text(reason)
gitlab_host = Gitlab.config.gitlab.host
case reason
when NotificationReason::OWN_ACTIVITY
_("You're receiving this email because of your activity on %{host}.") % { host: gitlab_host }
when NotificationReason::ASSIGNED
_("You're receiving this email because you have been assigned an item on %{host}.") % { host: gitlab_host }
when NotificationReason::MENTIONED
_("You're receiving this email because you have been mentioned on %{host}.") % { host: gitlab_host }
else
_("You're receiving this email because of your account on %{host}.") % { host: gitlab_host }
end
end
|
#password_reset_token_valid_time ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'app/helpers/emails_helper.rb', line 51
def password_reset_token_valid_time
valid_hours = Devise.reset_password_within / 60 / 60
if valid_hours >= 24
unit = 'day'
valid_length = (valid_hours / 24).floor
else
unit = 'hour'
valid_length = valid_hours.floor
end
pluralize(valid_length, unit)
end
|
#re_enable_two_factor_authentication_text(format: nil) ⇒ Object
196
197
198
199
200
201
202
203
204
205
206
207
|
# File 'app/helpers/emails_helper.rb', line 196
def re_enable_two_factor_authentication_text(format: nil)
url = profile_two_factor_auth_url
case format
when :html
settings_link_to = generate_link(_('two-factor authentication settings'), url).html_safe
_("If you want to re-enable two-factor authentication, visit the %{settings_link_to} page.").html_safe % { settings_link_to: settings_link_to }
else
_('If you want to re-enable two-factor authentication, visit %{two_factor_link}') %
{ two_factor_link: url }
end
end
|
#remove_email_address_text(format: nil) ⇒ Object
213
214
215
216
217
218
219
220
221
222
223
224
|
# File 'app/helpers/emails_helper.rb', line 213
def remove_email_address_text(format: nil)
url = profile_emails_url
case format
when :html
settings_link_to = generate_link(_('email address settings'), url).html_safe
_("If you want to remove this email address, visit the %{settings_link_to} page.").html_safe % { settings_link_to: settings_link_to }
else
_('If you want to remove this email address, visit %{profile_link}') %
{ profile_link: url }
end
end
|
#sanitize_name(name) ⇒ Object
43
44
45
46
47
48
49
|
# File 'app/helpers/emails_helper.rb', line 43
def sanitize_name(name)
if name =~ URI::DEFAULT_PARSER.regexp[:URI_REF]
name.tr('.', '_')
else
name
end
end
|
#say_hello(user) ⇒ Object
188
189
190
|
# File 'app/helpers/emails_helper.rb', line 188
def say_hello(user)
_('Hello, %{username}!') % { username: sanitize_name(user.name) }
end
|
#say_hi(user) ⇒ Object
184
185
186
|
# File 'app/helpers/emails_helper.rb', line 184
def say_hi(user)
_('Hi %{username}!') % { username: sanitize_name(user.name) }
end
|
178
179
180
181
182
|
# File 'app/helpers/emails_helper.rb', line 178
def
return unless
strip_tags(render_message(:footer_message, style: ''))
end
|
172
173
174
175
176
|
# File 'app/helpers/emails_helper.rb', line 172
def
return unless
strip_tags(render_message(:header_message, style: ''))
end
|
#two_factor_authentication_disabled_text ⇒ Object
192
193
194
|
# File 'app/helpers/emails_helper.rb', line 192
def two_factor_authentication_disabled_text
_('Two-factor authentication has been disabled for your GitLab account.')
end
|