Module: GravatarHelper::PublicMethods

Included in:
AvatarsHelper
Defined in:
lib/plugins/gravatar/lib/gravatar.rb

Overview

The methods that will be made available to your views.

Instance Method Summary collapse

Instance Method Details

#gravatar(email, options = {}) ⇒ Object

Return the HTML img tag for the given email address’s gravatar.



49
50
51
52
53
54
55
56
57
58
# File 'lib/plugins/gravatar/lib/gravatar.rb', line 49

def gravatar(email, options={})
  src = h(gravatar_url(email, options))
  options = DEFAULT_OPTIONS.merge(options)
  [:class, :alt, :title].each { |opt| options[opt] = h(options[opt]) }

  # double the size for hires displays
  options[:srcset] = "#{gravatar_url(email, options.merge(size: options[:size].to_i * 2))} 2x"

  image_tag src, options.except(:rating, :size, :default, :ssl)
end

#gravatar_api_url(hash) ⇒ Object

Returns the base Gravatar URL for the given email hash



61
62
63
# File 'lib/plugins/gravatar/lib/gravatar.rb', line 61

def gravatar_api_url(hash)
  +"#{Redmine::Configuration['avatar_server_url']}/avatar/#{hash}"
end

#gravatar_for(user, options = {}) ⇒ Object

Return the HTML img tag for the given user’s gravatar. Presumes that the given user object will respond_to “email”, and return the user’s email address.



44
45
46
# File 'lib/plugins/gravatar/lib/gravatar.rb', line 44

def gravatar_for(user, options={})
  gravatar(user.email, options)
end

#gravatar_url(email, options = {}) ⇒ Object

Return the gravatar URL for the given email address.



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/plugins/gravatar/lib/gravatar.rb', line 66

def gravatar_url(email, options={})
  email_hash = Digest::SHA256.hexdigest(email)
  options = DEFAULT_OPTIONS.merge(options)
  options[:default] = CGI::escape(options[:default]) unless options[:default].nil?
  gravatar_api_url(email_hash).tap do |url|
    opts = []
    [:rating, :size, :default].each do |opt|
      unless options[opt].nil?
        value = h(options[opt])
        opts << [opt, value].join('=')
      end
    end
    url << "?#{opts.join('&')}" unless opts.empty?
  end
end