]> source.dussan.org Git - redmine.git/commitdiff
Changes ApplicationHelper#gravatar_for_mail to #avatar that takes a User or a String...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 9 Nov 2008 14:52:16 +0000 (14:52 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 9 Nov 2008 14:52:16 +0000 (14:52 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2000 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/application_helper.rb
app/views/account/show.rhtml
app/views/issues/_history.rhtml
app/views/issues/show.rhtml
app/views/projects/activity.rhtml
app/views/users/list.rhtml
test/unit/helpers/application_helper_test.rb

index 78fb4a32888ab82bc52161e089df17caf7b01f23..81d81a966349356f98fa0c080ebc6cb7f7644ba7 100644 (file)
@@ -21,6 +21,7 @@ require 'forwardable'
 
 module ApplicationHelper
   include Redmine::WikiFormatting::Macros::Definitions
+  include GravatarHelper::PublicMethods
 
   extend Forwardable
   def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
@@ -561,9 +562,17 @@ module ApplicationHelper
     (@has_content && @has_content[name]) || false
   end
 
-  def gravatar_for_mail(mail, options = { })
+  # 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>')
+  def avatar(user, options = { })
     if Setting.gravatar_enabled?
-      return gravatar(mail.to_s.downcase, options) rescue nil
+      email = nil
+      if user.respond_to?(:mail)
+        email = user.mail
+      elsif user.to_s =~ %r{<(.+?)>}
+        email = $1
+      end
+      return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil
     end
   end
 
index 305629a9c1d6f655a80104200f2e9f248969260f..175a11c752ed57a9c8d922eef5e14cb9991a5e5c 100644 (file)
@@ -2,7 +2,7 @@
 <%= link_to(l(:button_edit), {:controller => 'users', :action => 'edit', :id => @user}, :class => 'icon icon-edit') if User.current.admin? %>
 </div>
 
-<h2><%= gravatar_for_mail @user.mail unless @user.mail.empty? %> <%=h @user.name %></h2>
+<h2><%= avatar @user %> <%=h @user.name %></h2>
 
 <p>
 <%= mail_to(h(@user.mail)) unless @user.pref.hide_mail %>
index e65c4d4d6b379b78c818a4b5e4eea3a25cfb7299..2b30dadc5a3fa2953650699c7fe896f47b84273b 100644 (file)
@@ -4,7 +4,7 @@
     <h4><div style="float:right;"><%= link_to "##{journal.indice}", :anchor => "note-#{journal.indice}" %></div>
     <%= content_tag('a', '', :name => "note-#{journal.indice}")%>
     <%= format_time(journal.created_on) %> - <%= journal.user.name %></h4>
-    <%= gravatar_for_mail(journal.user.mail.blank? ? "" : journal.user.mail, :size => "32") %>
+    <%= avatar(journal.user, :size => "32") %>
     <ul>
     <% for detail in journal.details %>
        <li><%= show_detail(detail) %></li>
index 15b7b050e60eadf39c755f048d9ee1c84ed7b7c8..6d6c41a33c0d31f3770cfde3ab927886cd210d11 100644 (file)
@@ -10,7 +10,7 @@
 <h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
 
 <div class="issue <%= "status-#{@issue.status.position} priority-#{@issue.priority.position}" %>">
-        <%= gravatar_for_mail(@issue.author.mail, :size => "64") %>
+        <%= avatar(@issue.author, :size => "64") %>
         <h3><%=h @issue.subject %></h3>
         <p class="author">
         <%= authoring @issue.created_on, @issue.author %>.
@@ -27,7 +27,7 @@
     <td class="due-date"><b><%=l(:field_due_date)%>:</b></td><td class="due-date"><%= format_date(@issue.due_date) %></td>
 </tr>
 <tr>
-    <td class="assigned-to"><b><%=l(:field_assigned_to)%>:</b></td><td><%= gravatar_for_mail(@issue.assigned_to.mail, :size => "14") unless @issue.assigned_to.blank?%><%= @issue.assigned_to ? link_to_user(@issue.assigned_to) : "-" %></td>
+    <td class="assigned-to"><b><%=l(:field_assigned_to)%>:</b></td><td><%= avatar(@issue.assigned_to, :size => "14") %><%= @issue.assigned_to ? link_to_user(@issue.assigned_to) : "-" %></td>
     <td class="progress"><b><%=l(:field_done_ratio)%>:</b></td><td class="progress"><%= progress_bar @issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%" %></td>
 </tr>
 <tr>
index 1c2591e09c93c4030aad5a473baaff9951cc4f1a..01f7a3e59ed5a28b79b364400946c1023375bde7 100644 (file)
@@ -7,9 +7,7 @@
 <dl>
 <% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
   <dt class="<%= e.event_type %>  <%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>">
-       <%= gravatar_for_mail(e.user.mail, :size => "24") if e.respond_to?(:user) %>
-       <%= gravatar_for_mail(e.author.mail, :size => "24") if e.respond_to?(:author) %>
-       <%= gravatar_for_mail(e.committer.match('\\<.+?\\>')[0].gsub(/[<>]/, ''), :size => "24") if e.respond_to?(:committer) rescue nil %>
+       <%= avatar(e.event_author, :size => "24") if e.respond_to?(:event_author) %>
   <span class="time"><%= format_time(e.event_datetime, false) %></span>
   <%= content_tag('span', h(e.project), :class => 'project') if @project.nil? || @project != e.project %>
   <%= link_to format_activity_title(e.event_title), e.event_url %></dt>
index 2b1cd144946b7555c508461151e26cc4ad0b6644..758f1767a4ce88358d23489e0821a0f0453b959f 100644 (file)
@@ -29,7 +29,7 @@
   <tbody>
 <% for user in @users -%>
   <tr class="user <%= cycle("odd", "even") %> <%= %w(anon active registered locked)[user.status] %>">
-       <td class="username"><%= gravatar_for_mail(user.mail.blank? ? "" : user.mail, :size => "24") %><%= link_to h(user.login), :action => 'edit', :id => user %></td>
+       <td class="username"><%= avatar(user, :size => "14") %><%= link_to h(user.login), :action => 'edit', :id => user %></td>
        <td class="firstname"><%= h(user.firstname) %></td>
        <td class="lastname"><%= h(user.lastname) %></td>
        <td class="email"><%= mail_to(h(user.mail)) %></td>
index b3ff974e9fd2e3caf5215cdfe5a219eb3db35654..00e9b0a63d0933493a0e2f9f4970400b13d575ed 100644 (file)
@@ -20,7 +20,7 @@ require File.dirname(__FILE__) + '/../../test_helper'
 class ApplicationHelperTest < HelperTestCase
   include ApplicationHelper
   include ActionView::Helpers::TextHelper
-  fixtures :projects, :roles, :enabled_modules,
+  fixtures :projects, :roles, :enabled_modules, :users,
                       :repositories, :changesets, 
                       :trackers, :issue_statuses, :issues, :versions, :documents,
                       :wikis, :wiki_pages, :wiki_contents,
@@ -437,4 +437,17 @@ EXPECTED
       assert_equal expected, due_date_distance_in_words(date)
     end
   end
+  
+  def test_avatar
+    # turn on avatars
+    Setting.gravatar_enabled = '1'
+    assert avatar(User.find_by_mail('jsmith@somenet.foo')).include?(Digest::MD5.hexdigest('jsmith@somenet.foo'))
+    assert avatar('jsmith <jsmith@somenet.foo>').include?(Digest::MD5.hexdigest('jsmith@somenet.foo'))
+    assert_nil avatar('jsmith')
+    assert_nil avatar(nil)
+    
+    # turn off avatars
+    Setting.gravatar_enabled = '0'
+    assert_nil avatar(User.find_by_mail('jsmith@somenet.foo'))
+  end
 end