comparison .svn/pristine/60/6078dc0e2b2b4a50e4f4a1933cc7de20b96803b2.svn-base @ 1296:038ba2d95de8 redmine-2.2

Fix redmine-2.2 branch update (add missing svn files)
author Chris Cannam
date Fri, 14 Jun 2013 09:05:06 +0100
parents
children
comparison
equal deleted inserted replaced
1294:3e4c3460b6ca 1296:038ba2d95de8
1 require 'digest/md5'
2 require 'cgi'
3
4 module GravatarHelper
5
6 # These are the options that control the default behavior of the public
7 # methods. They can be overridden during the actual call to the helper,
8 # or you can set them in your environment.rb as such:
9 #
10 # # Allow racier gravatars
11 # GravatarHelper::DEFAULT_OPTIONS[:rating] = 'R'
12 #
13 DEFAULT_OPTIONS = {
14 # The URL of a default image to display if the given email address does
15 # not have a gravatar.
16 :default => nil,
17
18 # The default size in pixels for the gravatar image (they're square).
19 :size => 50,
20
21 # The maximum allowed MPAA rating for gravatars. This allows you to
22 # exclude gravatars that may be out of character for your site.
23 :rating => 'PG',
24
25 # The alt text to use in the img tag for the gravatar. Since it's a
26 # decorational picture, the alt text should be empty according to the
27 # XHTML specs.
28 :alt => '',
29
30 # The title text to use for the img tag for the gravatar.
31 :title => '',
32
33 # The class to assign to the img tag for the gravatar.
34 :class => 'gravatar',
35
36 # Whether or not to display the gravatars using HTTPS instead of HTTP
37 :ssl => false,
38 }
39
40 # The methods that will be made available to your views.
41 module PublicMethods
42
43 # Return the HTML img tag for the given user's gravatar. Presumes that
44 # the given user object will respond_to "email", and return the user's
45 # email address.
46 def gravatar_for(user, options={})
47 gravatar(user.email, options)
48 end
49
50 # Return the HTML img tag for the given email address's gravatar.
51 def gravatar(email, options={})
52 src = h(gravatar_url(email, options))
53 options = DEFAULT_OPTIONS.merge(options)
54 [:class, :alt, :title].each { |opt| options[opt] = h(options[opt]) }
55 image_tag src, options
56 end
57
58 # Returns the base Gravatar URL for the given email hash. If ssl evaluates to true,
59 # a secure URL will be used instead. This is required when the gravatar is to be
60 # displayed on a HTTPS site.
61 def gravatar_api_url(hash, ssl=false)
62 if ssl
63 "https://secure.gravatar.com/avatar/#{hash}"
64 else
65 "http://www.gravatar.com/avatar/#{hash}"
66 end
67 end
68
69 # Return the gravatar URL for the given email address.
70 def gravatar_url(email, options={})
71 email_hash = Digest::MD5.hexdigest(email)
72 options = DEFAULT_OPTIONS.merge(options)
73 options[:default] = CGI::escape(options[:default]) unless options[:default].nil?
74 gravatar_api_url(email_hash, options.delete(:ssl)).tap do |url|
75 opts = []
76 [:rating, :size, :default].each do |opt|
77 unless options[opt].nil?
78 value = h(options[opt])
79 opts << [opt, value].join('=')
80 end
81 end
82 url << "?#{opts.join('&')}" unless opts.empty?
83 end
84 end
85
86 end
87
88 end