summaryrefslogtreecommitdiff
path: root/app/helpers/gitlab/emails_helper.rb
blob: 84f106dd536a4af6f50306f3ca13ed3b3b3b2b80 (plain)
1
2
3
4
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
module Gitlab
  module EmailsHelper

    # Google Actions
    # https://developers.google.com/gmail/markup/reference/go-to-action
    def email_action(url)
      name = action_title(url)
      if name
        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
    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
      end
    end

    def color_email_diff(diffcontent)
      formatter = Rouge::Formatters::HTML.new(css_class: 'highlight', inline_theme: 'github')
      lexer = Rouge::Lexers::Diff
      raw formatter.format(lexer.lex(diffcontent))
    end

    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(user_email: @user.email))
      msg = "This link is valid for #{password_reset_token_valid_time}.  "
      msg << "After it expires, you can #{link_tag}."
    end
  end
end