Switch from vendored gravatar lib to gravatarify gem #1033
This commit is contained in:
parent
32e1cc2dee
commit
1f91054244
1
Gemfile
1
Gemfile
|
@ -9,6 +9,7 @@ gem "rubytree", "~> 0.5.2", :require => 'tree'
|
||||||
gem "rdoc", ">= 2.4.2"
|
gem "rdoc", ">= 2.4.2"
|
||||||
gem "liquid", "~> 2.3.0"
|
gem "liquid", "~> 2.3.0"
|
||||||
gem "acts-as-taggable-on", "= 2.1.0"
|
gem "acts-as-taggable-on", "= 2.1.0"
|
||||||
|
gem 'gravatarify', '~> 3.0.0'
|
||||||
# Needed only on RUBY_VERSION = 1.8, ruby 1.9+ compatible interpreters should bring their csv
|
# Needed only on RUBY_VERSION = 1.8, ruby 1.9+ compatible interpreters should bring their csv
|
||||||
gem "fastercsv", "~> 1.5.0", :platforms => [:ruby_18, :jruby, :mingw_18]
|
gem "fastercsv", "~> 1.5.0", :platforms => [:ruby_18, :jruby, :mingw_18]
|
||||||
gem "tzinfo", "~> 0.3.31" # Fixes #903. Not required for Rails >= 3.2
|
gem "tzinfo", "~> 0.3.31" # Fixes #903. Not required for Rails >= 3.2
|
||||||
|
|
|
@ -17,7 +17,7 @@ require 'cgi'
|
||||||
|
|
||||||
module ApplicationHelper
|
module ApplicationHelper
|
||||||
include Redmine::I18n
|
include Redmine::I18n
|
||||||
include GravatarHelper::PublicMethods
|
include Gravatarify::Helper
|
||||||
|
|
||||||
extend Forwardable
|
extend Forwardable
|
||||||
def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
|
def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
|
||||||
|
@ -954,6 +954,16 @@ module ApplicationHelper
|
||||||
(@has_content && @has_content[name]) || false
|
(@has_content && @has_content[name]) || false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns the gravatar image tag for the given email
|
||||||
|
# +email+ is a string with an email address
|
||||||
|
def gravatar(email, options={})
|
||||||
|
gravatarify_options = {}
|
||||||
|
gravatarify_options[:secure] = options.delete :ssl
|
||||||
|
[:default, :size, :rating, :filetype].each {|key| gravatarify_options[:key] = options.delete :key}
|
||||||
|
gravatarify_options[:html] = options
|
||||||
|
gravatar_tag email, gravatarify_options
|
||||||
|
end
|
||||||
|
|
||||||
# Returns the avatar image tag for the given +user+ if avatars are enabled
|
# Returns the avatar image tag for the given +user+ if avatars are enabled
|
||||||
# +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
|
# +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
|
||||||
def avatar(user, options = { })
|
def avatar(user, options = { })
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
coverage
|
|
|
@ -1,20 +0,0 @@
|
||||||
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.
|
|
|
@ -1,55 +0,0 @@
|
||||||
== 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 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 git://github.com/woods/gravatar-plugin.git
|
|
||||||
|
|
||||||
== 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
|
|
||||||
|
|
||||||
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
|
|
||||||
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
|
|
||||||
|
|
||||||
* Add specs for ssl support
|
|
||||||
* Finish rdoc documentation
|
|
|
@ -1,32 +0,0 @@
|
||||||
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.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
|
|
|
@ -1,7 +0,0 @@
|
||||||
author: Scott Woods, West Arete Computing
|
|
||||||
summary: View helpers for displaying gravatars.
|
|
||||||
homepage: http://github.com/woods/gravatar-plugin/
|
|
||||||
plugin: git://github.com/woods/gravatar-plugin.git
|
|
||||||
license: MIT
|
|
||||||
version: 0.1
|
|
||||||
rails_version: 1.0+
|
|
|
@ -1,3 +0,0 @@
|
||||||
#-- encoding: UTF-8
|
|
||||||
require 'gravatar'
|
|
||||||
ActionView::Base.send :include, GravatarHelper::PublicMethods
|
|
|
@ -1,89 +0,0 @@
|
||||||
#-- encoding: UTF-8
|
|
||||||
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
|
|
|
@ -1,44 +0,0 @@
|
||||||
#-- encoding: UTF-8
|
|
||||||
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
|
|
||||||
|
|
||||||
describe "gravatar_url with a custom default URL" do
|
|
||||||
before(:each) do
|
|
||||||
@original_options = DEFAULT_OPTIONS.dup
|
|
||||||
DEFAULT_OPTIONS[:default] = "no_avatar.png"
|
|
||||||
@url = gravatar_url("somewhere")
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should include the \"default\" argument in the result" do
|
|
||||||
@url.should match(/&default=no_avatar.png/)
|
|
||||||
end
|
|
||||||
|
|
||||||
after(:each) do
|
|
||||||
DEFAULT_OPTIONS.merge!(@original_options)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "gravatar_url with default settings" do
|
|
||||||
before(:each) do
|
|
||||||
@url = gravatar_url("somewhere")
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should have a nil default URL" do
|
|
||||||
DEFAULT_OPTIONS[:default].should be_nil
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should not include the \"default\" argument in the result" do
|
|
||||||
@url.should_not match(/&default=/)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "gravatar with a custom title option" do
|
|
||||||
it "should include the title in the result" do
|
|
||||||
gravatar('example@example.com', :title => "This is a title attribute").should match(/This is a title attribute/)
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in New Issue