emails_helper.rb 1.46 KB
Newer Older
1 2 3 4
module EmailsHelper

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

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

  def action_title(url)
    return unless url
    ["merge_requests", "issues", "commit"].each do |action|
      if url.split("/").include?(action)
        return "View #{action.humanize.singularize}"
      end
30 31
    end
  end
32 33

  def color_email_diff(diffcontent)
34
    formatter = Rugments::Formatters::HTML.new(cssclass: "highlight", inline_theme: :github)
35 36 37
    lexer = Rugments::Lexers::Diff.new
    raw formatter.format(lexer.lex(diffcontent))
  end
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

  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
    link_tag = link_to('request a new one', new_user_password_url)
    msg = "This link is valid for #{password_reset_token_valid_time}.  "
    msg << "After it expires, you can #{link_tag}."
  end
57
end