Patch #2576

Partially decouple application_helper.rb from Gravatar

Added by Brad Beattie over 12 years ago. Updated over 12 years ago.

Status:NewStart date:2009-01-24
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-
Target version:-

Description

The application_helper.rb directly accesses the Gravatar function by email. I would argue that it would be better to instead use vendor/plugins/gravatar/lib/gravatar.rb's gravatar_for function with the user object.

The situation I have here is that my local instance has modified the Gravatar plugin to use locally stored avatars linked by email address (as dictated by application_helper.rb). Occasionally, users change their email addresses, which requires renaming their avatar files. If the change I proposed was implemented, this local avatar plugin would be doable. Without it, the avatar system is intrinsically tied to email addresses.

I'm not sure what patch formats you prefer, so here's the proposed change:

def avatar(user, options = { })
    if Setting.gravatar_enabled?
      return gravatar_for(user) unless user.mail.blank? rescue nil
    end
  end

Apologies if my syntax is wrong. I'm so very, very new to Ruby.

patch.txt Magnifier (30.7 KB) Brad Beattie, 2009-03-24 22:34

History

#1 Updated by Eric Davis over 12 years ago

  • Category deleted (Plugin API)
  • Estimated time deleted (0.50)

avatar was used because Gravatar#for looks for the email attribute whereas Redmine uses the mail attribute. With a bit of Ruby you can override ApplicationHelper#avatar to use a local store (or anything else) from within a plugin. Let me know if you need some sample code for this, I have some on GitHub but the site's been slow for me today.

#2 Updated by Brad Beattie over 12 years ago

Eric Davis wrote:

avatar was used because Gravatar#for looks for the email attribute whereas Redmine uses the mail attribute. With a bit of Ruby you can override ApplicationHelper#avatar to use a local store (or anything else) from within a plugin. Let me know if you need some sample code for this, I have some on GitHub but the site's been slow for me today.

I should be okay throwing it together. What I'd like to see is plugins not directly referenced in base code, and I think I can make the necessary changes to make that happen. I was playing around with it last night and made a bit of progress on this. Will post a patch once it's complete.

#3 Updated by Brad Beattie over 12 years ago

  • Assignee set to Eric Davis

#4 Updated by Eric Davis over 12 years ago

  • Assignee deleted (Eric Davis)

Any progress on the patch Brad?

#5 Updated by Brad Beattie over 12 years ago

Eric Davis wrote:

I was playing around with it last night and made a bit of progress on this. Will post a patch once it's complete.

Eric Davis wrote:

Any progress on the patch Brad?

Ah, I thought you were looking at it. If not, I'll look into it when I get a chance in the next few days.

#6 Updated by Brad Beattie over 12 years ago

Hrm. Modifying the rest of Redmine was easy enough, but I got stuck at calling the GravatarHelper from the hook I created.

Also available in: Atom PDF