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 | 
