Mercurial > hg > soundsoftware-site
diff .svn/pristine/7a/7a017fdd06e31fbf6cfa542010617fca4f01cf26.svn-base @ 909:cbb26bc654de redmine-1.3
Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author | Chris Cannam |
---|---|
date | Fri, 24 Feb 2012 19:09:32 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.svn/pristine/7a/7a017fdd06e31fbf6cfa542010617fca4f01cf26.svn-base Fri Feb 24 19:09:32 2012 +0000 @@ -0,0 +1,88 @@ +require 'digest/md5' +require 'cgi' + +module GravatarHelper + + # These are the options that control the default behavior of the public + # methods. They can be overridden during the actual call to the helper, + # or you can set them in your environment.rb as such: + # + # # Allow racier gravatars + # GravatarHelper::DEFAULT_OPTIONS[:rating] = 'R' + # + DEFAULT_OPTIONS = { + # The URL of a default image to display if the given email address does + # not have a gravatar. + :default => nil, + + # The default size in pixels for the gravatar image (they're square). + :size => 50, + + # The maximum allowed MPAA rating for gravatars. This allows you to + # exclude gravatars that may be out of character for your site. + :rating => 'PG', + + # The alt text to use in the img tag for the gravatar. Since it's a + # decorational picture, the alt text should be empty according to the + # XHTML specs. + :alt => '', + + # The title text to use for the img tag for the gravatar. + :title => '', + + # The class to assign to the img tag for the gravatar. + :class => 'gravatar', + + # Whether or not to display the gravatars using HTTPS instead of HTTP + :ssl => false, + } + + # The methods that will be made available to your views. + module PublicMethods + + # 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. + def gravatar_for(user, options={}) + gravatar(user.email, options) + end + + # Return the HTML img tag for the given email address's gravatar. + def gravatar(email, options={}) + src = h(gravatar_url(email, options)) + options = DEFAULT_OPTIONS.merge(options) + [:class, :alt, :size, :title].each { |opt| options[opt] = h(options[opt]) } + "<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" title=\"#{options[:title]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />" + end + + # Returns the base Gravatar URL for the given email hash. If ssl evaluates to true, + # a secure URL will be used instead. This is required when the gravatar is to be + # displayed on a HTTPS site. + def gravatar_api_url(hash, ssl=false) + if ssl + "https://secure.gravatar.com/avatar/#{hash}" + else + "http://www.gravatar.com/avatar/#{hash}" + end + end + + # Return the gravatar URL for the given email address. + def gravatar_url(email, options={}) + email_hash = Digest::MD5.hexdigest(email) + options = DEFAULT_OPTIONS.merge(options) + options[:default] = CGI::escape(options[:default]) unless options[:default].nil? + gravatar_api_url(email_hash, options.delete(:ssl)).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 + + end + +end