1- placeholders = { strong_start: '<strong>'.html_safe, 2 strong_end: '</strong>'.html_safe, 3 project_or_group_name: member_source.human_name, 4 project_or_group: member_source.model_name.singular, 5 br_tag: '<br/>'.html_safe, 6 role: member.human_access.downcase } 7- join_text = s_('InviteEmail|Join now') 8- inviter_name = member.created_by.name if member.created_by 9- join_url = invite_url(@token, invite_type: Emails::Members::INITIAL_INVITE) 10 11= content_for :preview_text do 12 %div{ style: "display:none;font-size:1px;line-height:1px;max-height:0px;max-width:0px;opacity:0;overflow:hidden;" } 13 - if member.created_by 14 = s_('InviteEmail|Join your team on GitLab! %{inviter} invited you to %{project_or_group_name}') % { inviter: inviter_name, project_or_group_name: placeholders[:project_or_group_name] } 15 - else 16 = s_('InviteEmail|Join your team on GitLab! You are invited to %{project_or_group_name}') % { project_or_group_name: placeholders[:project_or_group_name] } 17 = gmail_goto_action(join_text, join_url) 18 19%tr 20 %td.text-content{ colspan: 2 } 21 %img.mail-avatar{ height: "60", src: avatar_icon_for_user(member.created_by, 60, only_path: false), width: "60", alt: "" } 22 %p 23 - if member.created_by 24 = html_escape(s_("InviteEmail|%{inviter} invited you to join the %{strong_start}%{project_or_group_name}%{strong_end}%{br_tag}%{project_or_group} as a %{role}")) % placeholders.merge({ inviter: (link_to inviter_name, user_url(member.created_by)).html_safe }) 25 - if member.tasks_to_be_done.present? 26 = s_("InviteEmail|and has assigned you the following tasks:") 27 %ul.list-style-position-inside 28 - member.tasks_to_be_done.each do |task| 29 %li= localized_tasks_to_be_done_choices[task] 30 - else 31 = html_escape(s_("InviteEmail|You are invited to join the %{strong_start}%{project_or_group_name}%{strong_end}%{br_tag}%{project_or_group} as a %{role}")) % placeholders 32 %p.invite-actions 33 = link_to join_text, join_url, class: 'invite-btn-join' 34%tr.border-top 35 %td.text-content.mailer-align-left.half-width 36 %h4 37 = s_('InviteEmail|%{project_or_group} details') % { project_or_group: member_source.model_name.singular.capitalize } 38 %ul 39 %li 40 %div 41 %img.mailer-icon{ alt: '', src: image_url("mailers/members/users.png") } 42 %span 43 - member_count = member_source.members.size 44 = n_('%{bold_start}%{count}%{bold_end} member', '%{bold_start}%{count}%{bold_end} members', 45 member_count).html_safe % { count: number_with_delimiter(member_count), 46 bold_start: '<b>'.html_safe, 47 bold_end: '</b>'.html_safe } 48 %li 49 %div 50 %img.mailer-icon{ alt: '', src: image_url("mailers/members/issues.png") } 51 %span 52 - issue_count = member_source.open_issues_count(member.created_by) 53 = n_('%{bold_start}%{count}%{bold_end} issue', '%{bold_start}%{count}%{bold_end} issues', 54 issue_count).html_safe % { count: number_with_delimiter(issue_count), 55 bold_start: '<b>'.html_safe, 56 bold_end: '</b>'.html_safe } 57 %li 58 %div 59 %img.mailer-icon{ alt: '', src: image_url("mailers/members/merge-request-open.png") } 60 %span 61 - mr_count = member_source.open_merge_requests_count(member.created_by) 62 = n_('%{bold_start}%{count}%{bold_end} opened merge request', '%{bold_start}%{count}%{bold_end} opened merge requests', 63 mr_count).html_safe % { count: number_with_delimiter(mr_count), 64 bold_start: '<b>'.html_safe, 65 bold_end: '</b>'.html_safe } 66 %td.text-content.mailer-align-left.half-width 67 %h4 68 = s_("InviteEmail|What's it about?") 69 %p 70 = invited_to_description(member_source) 71