diff options
author | Eric Davis <edavis@littlestreamsoftware.com> | 2008-10-30 02:58:04 +0000 |
---|---|---|
committer | Eric Davis <edavis@littlestreamsoftware.com> | 2008-10-30 02:58:04 +0000 |
commit | ed314caf7d6e871c214ac1896eaadcb5f5d21ed6 (patch) | |
tree | f05063af03cb962edfdd6d086aad6cc3ed2e2d1b /vendor/plugins/gravatar | |
parent | 1399f3dd122f6145d66b912e72dc6186dff884bb (diff) | |
download | redmine-ed314caf7d6e871c214ac1896eaadcb5f5d21ed6.tar.gz redmine-ed314caf7d6e871c214ac1896eaadcb5f5d21ed6.zip |
Gravatar support for issue detai, user grid, and activity stream
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@1962 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'vendor/plugins/gravatar')
-rw-r--r-- | vendor/plugins/gravatar/MIT-LICENSE | 20 | ||||
-rw-r--r-- | vendor/plugins/gravatar/README | 52 | ||||
-rw-r--r-- | vendor/plugins/gravatar/Rakefile | 33 | ||||
-rw-r--r-- | vendor/plugins/gravatar/about.yml | 7 | ||||
-rw-r--r-- | vendor/plugins/gravatar/init.rb | 2 | ||||
-rw-r--r-- | vendor/plugins/gravatar/lib/gravatar.rb | 67 | ||||
-rw-r--r-- | vendor/plugins/gravatar/spec/gravatar_spec.rb | 37 |
7 files changed, 218 insertions, 0 deletions
diff --git a/vendor/plugins/gravatar/MIT-LICENSE b/vendor/plugins/gravatar/MIT-LICENSE new file mode 100644 index 000000000..6a222ac4d --- /dev/null +++ b/vendor/plugins/gravatar/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2007 West Arete Computing, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file diff --git a/vendor/plugins/gravatar/README b/vendor/plugins/gravatar/README new file mode 100644 index 000000000..dc516d367 --- /dev/null +++ b/vendor/plugins/gravatar/README @@ -0,0 +1,52 @@ +== Gravatar Plugin + +This plugin provides a handful of view helpers for displaying gravatars +(globally-recognized avatars). + +Gravatars allow users to configure an avatar to go with their email address at +a central location: http://gravatar.com. Gravatar-aware websites (such +as yours) can then look up and display each user's preferred avatar, without +having to handle avatar management. The user gets the benefit of not having to +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 + +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 + +== Example + +If you represent your users with a model that has an +email+ method (typical +for most rails authentication setups), then you can simply use this method +in your views: + + <%= gravatar_for @user %> + +This will be replaced with the full HTML +img+ tag necessary for displaying +that user's gravatar. + +Other helpers are documented under GravatarHelper::PublicMethods. + +== Acknowledgments + +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 + plugin[http://mattmccray.com/svn/rails/plugins/gravatar_helper] + +== Author + + Scott A. Woods + West Arete Computing, Inc. + http://westarete.com + scott at westarete dot com + +== TODO + +* Get full spec coverage +* Finish rdoc documentation
\ No newline at end of file diff --git a/vendor/plugins/gravatar/Rakefile b/vendor/plugins/gravatar/Rakefile new file mode 100644 index 000000000..5a8d92a8a --- /dev/null +++ b/vendor/plugins/gravatar/Rakefile @@ -0,0 +1,33 @@ +require 'spec/rake/spectask' +require 'rake/rdoctask' + +desc 'Default: run all specs' +task :default => :spec + +desc 'Run all application-specific specs' +Spec::Rake::SpecTask.new(:spec) do |t| + t.warning = true + t.rcov = true +end + +desc "Report code statistics (KLOCs, etc) from the application" +task :stats do + RAILS_ROOT = File.dirname(__FILE__) + STATS_DIRECTORIES = [ + %w(Libraries lib/), + %w(Specs spec/), + ].collect { |name, dir| [ name, "#{RAILS_ROOT}/#{dir}" ] }.select { |name, dir| File.directory?(dir) } + require 'code_statistics' + CodeStatistics.new(*STATS_DIRECTORIES).to_s +end + +namespace :doc do + desc 'Generate documentation for the assert_request plugin.' + Rake::RDocTask.new(:plugin) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'Gravatar Rails Plugin' + rdoc.options << '--line-numbers' << '--inline-source' << '--accessor' << 'cattr_accessor=rw' + rdoc.rdoc_files.include('README') + rdoc.rdoc_files.include('lib/**/*.rb') + end +end diff --git a/vendor/plugins/gravatar/about.yml b/vendor/plugins/gravatar/about.yml new file mode 100644 index 000000000..a801d2582 --- /dev/null +++ b/vendor/plugins/gravatar/about.yml @@ -0,0 +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 +license: MIT +version: 0.1 +rails_version: 1.0+ diff --git a/vendor/plugins/gravatar/init.rb b/vendor/plugins/gravatar/init.rb new file mode 100644 index 000000000..aab3f75f3 --- /dev/null +++ b/vendor/plugins/gravatar/init.rb @@ -0,0 +1,2 @@ +require 'gravatar' +ActionView::Base.send :include, GravatarHelper::PublicMethods diff --git a/vendor/plugins/gravatar/lib/gravatar.rb b/vendor/plugins/gravatar/lib/gravatar.rb new file mode 100644 index 000000000..58cb4cabe --- /dev/null +++ b/vendor/plugins/gravatar/lib/gravatar.rb @@ -0,0 +1,67 @@ +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. + :alt => 'avatar', + + # The class to assign to the img tag for the gravatar. + :class => 'gravatar', + } + + # 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].each { |opt| options[opt] = h(options[opt]) } + "<img class=\"#{options[:class]}\" alt=\"#{options[:alt]}\" width=\"#{options[:size]}\" height=\"#{options[:size]}\" src=\"#{src}\" />" + 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| + [:rating, :size, :default].each do |opt| + unless options[opt].nil? + value = h(options[opt]) + url << "&#{opt}=#{value}" + end + end + end + end + + end + +end
\ No newline at end of file diff --git a/vendor/plugins/gravatar/spec/gravatar_spec.rb b/vendor/plugins/gravatar/spec/gravatar_spec.rb new file mode 100644 index 000000000..a11d2683a --- /dev/null +++ b/vendor/plugins/gravatar/spec/gravatar_spec.rb @@ -0,0 +1,37 @@ +require 'rubygems' +require 'erb' # to get "h" +require 'active_support' # to get "returning" +require File.dirname(__FILE__) + '/../lib/gravatar' +include GravatarHelper, GravatarHelper::PublicMethods, ERB::Util + +context "gravatar_url with a custom default URL" do + setup do + @original_options = DEFAULT_OPTIONS.dup + DEFAULT_OPTIONS[:default] = "no_avatar.png" + @url = gravatar_url("somewhere") + end + + specify "should include the \"default\" argument in the result" do + @url.should match(/&default=no_avatar.png/) + end + + teardown do + DEFAULT_OPTIONS.merge!(@original_options) + end + +end + +context "gravatar_url with default settings" do + setup do + @url = gravatar_url("somewhere") + end + + specify "should have a nil default URL" do + DEFAULT_OPTIONS[:default].should be_nil + end + + specify "should not include the \"default\" argument in the result" do + @url.should_not match(/&default=/) + end + +end
\ No newline at end of file |