emails_helper.rb 1.9 KB
Newer Older
1
module EmailsHelper
2 3
  include AppearancesHelper

4 5
  # Google Actions
  # https://developers.google.com/gmail/markup/reference/go-to-action
6 7 8 9 10 11 12 13 14
  def email_action(url)
    name = action_title(url)
    if name
      data = {
        "@context" => "http://schema.org",
        "@type" => "EmailMessage",
        "action" => {
          "@type" => "ViewAction",
          "name" => name,
15
          "url" => url
16
          }
17 18
        }

19 20 21 22 23 24 25 26
      content_tag :script, type: 'application/ld+json' do
        data.to_json.html_safe
      end
    end
  end

  def action_title(url)
    return unless url
27

Douwe Maan's avatar
Douwe Maan committed
28
    %w(merge_requests issues commit).each do |action|
29 30 31
      if url.split("/").include?(action)
        return "View #{action.humanize.singularize}"
      end
32
    end
33 34

    nil
35
  end
36

37 38 39 40 41 42 43 44 45 46 47 48 49 50
  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

  def reset_token_expire_message
51
    link_tag = link_to('request a new one', new_user_password_url(user_email: @user.email))
52 53 54
    msg = "This link is valid for #{password_reset_token_valid_time}.  "
    msg << "After it expires, you can #{link_tag}."
  end
55 56 57

  def header_logo
    if brand_item && brand_item.header_logo?
58 59 60 61
      image_tag(
        brand_item.header_logo,
        style: 'height: 50px'
      )
62 63 64
    else
      image_tag(
        image_url('mailers/gitlab_header_logo.gif'),
65 66
        size: '55x50',
        alt: 'GitLab'
67 68 69
      )
    end
  end
70 71 72 73 74 75 76 77 78 79 80 81 82

  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
83
end