diff --git a/app/assets/stylesheets/errbit.css b/app/assets/stylesheets/errbit.css
index 4623841..46bea72 100644
--- a/app/assets/stylesheets/errbit.css
+++ b/app/assets/stylesheets/errbit.css
@@ -841,6 +841,9 @@ table.comment tbody th {
height: 20px;
line-height: 0.5em;
}
+table.comment tbody th img {
+ float: right;
+}
table.comment tbody td {
background-color: #F9F9F9;
}
diff --git a/app/helpers/errs_helper.rb b/app/helpers/errs_helper.rb
index 210fd64..7cbf79c 100644
--- a/app/helpers/errs_helper.rb
+++ b/app/helpers/errs_helper.rb
@@ -13,5 +13,17 @@ module ErrsHelper
truncate(msg, :length => 300).scan(/.{1,5}/).map { |s| h(s) }.join("").html_safe
end
end
+
+ def gravatar_tag(email, options = {})
+ default_options = {
+ :s => Errbit::Config.gravatar_size,
+ :d => Errbit::Config.gravatar_default,
+ :alt => email
+ }
+ options.reverse_merge! default_options
+ params = options.extract!(:s, :d).delete_if { |k, v| v.blank? }
+ email_hash = Digest::MD5.hexdigest(email)
+ image_tag "http://www.gravatar.com/avatar/#{email_hash}?#{params.to_query}", options
+ end
end
diff --git a/app/views/errs/show.html.haml b/app/views/errs/show.html.haml
index e079878..c127e67 100644
--- a/app/views/errs/show.html.haml
+++ b/app/views/errs/show.html.haml
@@ -31,6 +31,8 @@
%span= link_to '✘'.html_safe, app_err_comment_path(@app, @problem, comment), :method => :delete, :data => { :confirm => "Are sure you don't need this comment?" }, :class => "destroy-comment"
= time_ago_in_words(comment.created_at, true) << " ago by "
= link_to comment.user.email, user_path(comment.user)
+ - if Errbit::Config.use_gravatar
+ = gravatar_tag comment.user.email
%tr
%td= comment.body.gsub("\n", "
").html_safe
- if Errbit::Config.allow_comments_with_issue_tracker || !@app.issue_tracker_configured?
diff --git a/spec/helpers/errs_helper_spec.rb b/spec/helpers/errs_helper_spec.rb
index 2eaa921..3f71084 100644
--- a/spec/helpers/errs_helper_spec.rb
+++ b/spec/helpers/errs_helper_spec.rb
@@ -9,4 +9,43 @@ describe ErrsHelper do
truncated.should_not include('<', '>')
end
end
+
+ describe "#gravatar_tag" do
+ let(:email) { "gravatar@example.com" }
+ let(:email_hash) { Digest::MD5.hexdigest email }
+ let(:base_url) { "http://www.gravatar.com/avatar/#{email_hash}" }
+
+ context "default config" do
+ before do
+ Errbit::Config.stub(:use_gravatar).and_return(true)
+ Errbit::Config.stub(:gravatar_size).and_return(48)
+ Errbit::Config.stub(:gravatar_default).and_return('identicon')
+ end
+
+ it "should render image_tag with correct alt and src" do
+ expected = "
"
+ helper.gravatar_tag(email).should eq(expected)
+ end
+
+ it "should override :s" do
+ expected = "
"
+ helper.gravatar_tag(email, :s => 64).should eq(expected)
+ end
+
+ it "should override :d" do
+ expected = "
"
+ helper.gravatar_tag(email, :d => 'retro').should eq(expected)
+ end
+
+ it "should override alt" do
+ expected = "
"
+ helper.gravatar_tag(email, :alt => 'gravatar').should eq(expected)
+ end
+
+ it "should pass other options to image_tag" do
+ expected = "
"
+ helper.gravatar_tag(email, :align => :left).should eq(expected)
+ end
+ end
+ end
end
diff --git a/spec/views/errs/show.html.haml_spec.rb b/spec/views/errs/show.html.haml_spec.rb
index 69c4b73..4f00bcc 100644
--- a/spec/views/errs/show.html.haml_spec.rb
+++ b/spec/views/errs/show.html.haml_spec.rb
@@ -90,6 +90,7 @@ describe "errs/show.html.haml" do
describe "content_for :comments with comments disabled for configured issue tracker" do
before do
Errbit::Config.stub(:allow_comments_with_issue_tracker).and_return(false)
+ Errbit::Config.stub(:use_gravatar).and_return(true)
end
it 'should display comments and new comment form when no issue tracker' do
@@ -99,6 +100,7 @@ describe "errs/show.html.haml" do
render
view.content_for(:comments).should include('Test comment')
+ view.content_for(:comments).should have_selector('img[src^="http://www.gravatar.com/avatar"]')
view.content_for(:comments).should include('Add a comment')
end
@@ -117,6 +119,7 @@ describe "errs/show.html.haml" do
render
view.content_for(:comments).should include('Test comment')
+ view.content_for(:comments).should have_selector('img[src^="http://www.gravatar.com/avatar"]')
view.content_for(:comments).should_not include('Add a comment')
end
end
--
libgit2 0.21.2