OSDN Git Service

Upgraded the gravatar plugin from http://github.com/woods/gravatar-plugin
authorEric Davis <edavis@littlestreamsoftware.com>
Sun, 2 Aug 2009 04:19:44 +0000 (04:19 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Sun, 2 Aug 2009 04:19:44 +0000 (04:19 +0000)
This will update the gravatar.com url (#2921) and provide support for SSL
gravatars (#2718).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2832 e93f8b46-1217-0410-a6f0-8f06a7374b81

vendor/plugins/gravatar/.gitignore [new file with mode: 0644]
vendor/plugins/gravatar/README.rdoc [moved from vendor/plugins/gravatar/README with 81% similarity]
vendor/plugins/gravatar/Rakefile
vendor/plugins/gravatar/about.yml
vendor/plugins/gravatar/lib/gravatar.rb

diff --git a/vendor/plugins/gravatar/.gitignore b/vendor/plugins/gravatar/.gitignore
new file mode 100644 (file)
index 0000000..4ebc8ae
--- /dev/null
@@ -0,0 +1 @@
+coverage
similarity index 81%
rename from vendor/plugins/gravatar/README
rename to vendor/plugins/gravatar/README.rdoc
index dc516d3..0b95e85 100644 (file)
@@ -12,12 +12,12 @@ set up an avatar for each site that they post on.
 == Installation
 
   cd ~/myapp
-  ruby script/plugin install svn://rubyforge.org//var/svn/gravatarplugin/plugins/gravatar
+  ruby script/plugin install git://github.com/woods/gravatar-plugin.git
 
 or, if you're using piston[http://piston.rubyforge.org] (worth it!):
 
   cd ~/myapp/vendor/plugins
-  piston import svn://rubyforge.org//var/svn/gravatarplugin/plugins/gravatar
+  piston import git://github.com/woods/gravatar-plugin.git
 
 == Example
 
@@ -34,6 +34,9 @@ Other helpers are documented under GravatarHelper::PublicMethods.
 
 == Acknowledgments
 
+Thanks to Magnus Bergmark (http://github.com/Mange), who contributed the SSL
+support in this plugin, as well as a few minor fixes.
+
 The following people have also written gravatar-related Ruby libraries:
 * Seth Rasmussen created the gravatar gem[http://gravatar.rubyforge.org]
 * Matt McCray has also created a gravatar 
@@ -48,5 +51,5 @@ The following people have also written gravatar-related Ruby libraries:
 
 == TODO
 
-* Get full spec coverage
+* Add specs for ssl support
 * Finish rdoc documentation
\ No newline at end of file
index 5a8d92a..9e48549 100644 (file)
@@ -6,7 +6,6 @@ task :default => :spec
 
 desc 'Run all application-specific specs'
 Spec::Rake::SpecTask.new(:spec) do |t|
-  t.warning = true
   t.rcov = true
 end
 
index a801d25..aa5b8b1 100644 (file)
@@ -1,7 +1,7 @@
 author: Scott Woods, West Arete Computing
 summary: View helpers for displaying gravatars.
-homepage: http://gravatarplugin.rubyforge.org/
-plugin: svn://rubyforge.org//var/svn/gravatarplugin/plugins/gravatar
+homepage: http://github.com/woods/gravatar-plugin/
+plugin: git://github.com/woods/gravatar-plugin.git
 license: MIT
 version: 0.1
 rails_version: 1.0+
index 58cb4ca..6246645 100644 (file)
@@ -22,11 +22,16 @@ module GravatarHelper
     # 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.
-    :alt => 'avatar',
+    # 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 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.
@@ -46,19 +51,32 @@ module GravatarHelper
       [:class, :alt, :size].each { |opt| options[opt] = h(options[opt]) }
       "<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" 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?
-      returning "http://www.gravatar.com/avatar.php?gravatar_id=#{email_hash}" do |url| 
+      returning gravatar_api_url(email_hash, options.delete(:ssl)) do |url|
+        opts = []
         [:rating, :size, :default].each do |opt|
           unless options[opt].nil?
             value = h(options[opt])
-            url << "&#{opt}=#{value}" 
+            opts << [opt, value].join('=')
           end
         end
+        url << "?#{opts.join('&')}" unless opts.empty?
       end
     end