diff options
| author | Marc Florisson | 2014-12-16 11:26:24 +0100 |
|---|---|---|
| committer | Marc Florisson | 2014-12-16 11:26:24 +0100 |
| commit | 7680978296a44eccd89d9ae190c7cf88c75e0f8d (patch) | |
| tree | e584f765c8a966fb61e692589ca844ecfd63a0cb | |
| parent | a0433013264531e825268d0ae1a0da873d368313 (diff) | |
| download | chouette-core-7680978296a44eccd89d9ae190c7cf88c75e0f8d.tar.bz2 | |
fix user's image display (production environment, networkless context...)
| -rw-r--r-- | Gemfile | 3 | ||||
| -rw-r--r-- | Gemfile.lock | 4 | ||||
| -rw-r--r-- | app/helpers/users_helper.rb | 28 |
3 files changed, 26 insertions, 9 deletions
@@ -2,6 +2,7 @@ source 'http://rubygems.org' source 'https://rails-assets.org' gem 'rails', '3.2.18' +gem 'rest_client' platforms :jruby do gem 'activerecord-jdbcpostgresql-adapter', '~> 1.3.3' @@ -65,7 +66,7 @@ gem 'rails-assets-jquery-tokeninput', '~> 1.7.0' # Format Output gem 'json' -gem 'rubyzip', '~> 1.1.6' +gem 'rubyzip', '~> 1.1.6' gem 'roo' # Controller diff --git a/Gemfile.lock b/Gemfile.lock index 6560ec708..26d092689 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -222,6 +222,7 @@ GEM net-ssh (2.6.2) net-ssh-gateway (1.1.0) net-ssh (>= 1.99.1) + netrc (0.7.9) nokogiri (1.5.10) nokogiri (1.5.10-java) open4 (1.3.0) @@ -307,6 +308,8 @@ GEM rspec (>= 2.0.0.alpha11) responders (1.0.0) railties (>= 3.2, < 5) + rest_client (1.8.2) + netrc (~> 0.7.7) rgeo (0.3.20) roo (1.13.2) nokogiri @@ -451,6 +454,7 @@ DEPENDENCIES rb-inotify remarkable (~> 4.0.0.alpha4) remarkable_activerecord (~> 4.0.0.alpha4) + rest_client roo rspec-rails (~> 2.0) rubyzip (~> 1.1.6) diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 0ddea8356..0dfc1552f 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -1,16 +1,28 @@ module UsersHelper def user_gravatar_image_tag(user, size = 64) - gravatar_image_tag user.email, :alt => "", :class => "preview", :gravatar => { :default => user_default_avatar , :size => size } + image_tag user_image(user), :alt => "", :class => "preview", :width => size, :height => size end - def user_default_avatar - return "#{root_url}#{image_path('icons/user.png')}" if Rails.application.config.relative_url_root.blank? - - relative_url_root = Rails.application.config.relative_url_root.gsub( /\//, '') - "#{root_url}#{image_path('icons/user.png')}". - sub( Regexp.new("/#{relative_url_root}/#{relative_url_root}/"), "/#{relative_url_root}/"). - sub( Regexp.new("/#{relative_url_root}//#{relative_url_root}/"), "/#{relative_url_root}/") + def gravatar_hash(user) + Digest::MD5.hexdigest( user.email) + end + def gravatar_url( user) + "http://www.gravatar.com/avatar/#{gravatar_hash(user)}?d=404" + end + def user_image(user) + begin + gravatar_resource = RestClient.get( gravatar_url( user)){|response, request, result| response } + rescue + # Happens if network is not available + return 'icons/user.png' + end + if gravatar_resource.code == 404 + # Happens if user has not registered to gravatar + 'icons/user.png' + else + gravatar_url( user) + end end end |
