From 9dcd534f3e1edb72944fcfb98076cccb36a71df4 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 14 Nov 2011 17:24:16 -0500
Subject: [PATCH] Added optional Gravatar support

---
 src/com/gitblit/wicket/GravatarImage.java    |   61 ++++++++++++++++++++++++++++++
 src/com/gitblit/wicket/pages/CommitPage.java |    5 ++
 docs/04_releases.mkd                         |    9 +++-
 distrib/gitblit.properties                   |    5 ++
 src/com/gitblit/wicket/pages/CommitPage.html |    5 ++
 5 files changed, 82 insertions(+), 3 deletions(-)

diff --git a/distrib/gitblit.properties b/distrib/gitblit.properties
index 0048e55..083a658 100644
--- a/distrib/gitblit.properties
+++ b/distrib/gitblit.properties
@@ -110,6 +110,11 @@
 # SINCE 0.7.0 
 web.enableRpcAdministration = false
 
+# Allow Gravatar images to be displayed in Gitblit pages.
+#
+# SINCE 0.8.0
+web.allowGravatar = true
+
 # Allow dynamic zip downloads.
 #
 # SINCE 0.5.0   
diff --git a/docs/04_releases.mkd b/docs/04_releases.mkd
index 90f4f50..5719b19 100644
--- a/docs/04_releases.mkd
+++ b/docs/04_releases.mkd
@@ -3,6 +3,13 @@
 ### Current Release
 **%VERSION%** ([go](http://code.google.com/p/gitblit/downloads/detail?name=%GO%) | [war](http://code.google.com/p/gitblit/downloads/detail?name=%WAR%) | [fedclient](http://code.google.com/p/gitblit/downloads/detail?name=%FEDCLIENT%) | [manager](http://code.google.com/p/gitblit/downloads/detail?name=%MANAGER%) | [api](http://code.google.com/p/gitblit/downloads/detail?name=%API%)) based on [%JGIT%][jgit] &nbsp; *released %BUILDDATE%*
 
+- added: optional Gravatar integration  
+    **New:** *web.allowGravatar = true*   
+
+### Older Releases
+
+**0.7.0** ([go](http://code.google.com/p/gitblit/downloads/detail?name=gitblit-0.7.0.zip) | [war](http://code.google.com/p/gitblit/downloads/detail?name=gitblit-0.7.0.war) | [fedclient](http://code.google.com/p/gitblit/downloads/detail?name=fedclient-0.7.0.zip) | [manager](http://code.google.com/p/gitblit/downloads/detail?name=manager-0.7.0.zip) | [api](http://code.google.com/p/gitblit/downloads/detail?name=gbapi-0.7.0.zip)) based on [JGit 1.1.0 (201109151100-r)][jgit] &nbsp; *released 2011-11-11*
+
 - **security**: fixed security hole when cloning clone-restricted repository with TortoiseGit (issue 28)
 - improved: updated ui with Twitter's Bootstrap CSS toolkit  
     **New:** *web.loginMessage = gitblit*
@@ -34,8 +41,6 @@
 - fixed: Gitblit GO allows SSL renegotiation if running on Java 1.6.0_22 or later
 - updated: MarkdownPapers 1.2.5
 - updated: Wicket 1.4.19
-
-### Older Releases
 
 **0.6.0** ([go](http://code.google.com/p/gitblit/downloads/detail?name=gitblit-0.6.0.zip) | [war](http://code.google.com/p/gitblit/downloads/detail?name=gitblit-0.6.0.war) | [fedclient](http://code.google.com/p/gitblit/downloads/detail?name=fedclient-0.6.0.zip)) based on [JGit 1.1.0 (201109151100-r)][jgit] &nbsp; *released 2011-09-27*
 
diff --git a/src/com/gitblit/wicket/GravatarImage.java b/src/com/gitblit/wicket/GravatarImage.java
new file mode 100644
index 0000000..ff26fc0
--- /dev/null
+++ b/src/com/gitblit/wicket/GravatarImage.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.wicket;
+
+import java.text.MessageFormat;
+
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.WebComponent;
+import org.apache.wicket.model.Model;
+import org.eclipse.jgit.lib.PersonIdent;
+
+import com.gitblit.GitBlit;
+import com.gitblit.Keys;
+import com.gitblit.utils.StringUtils;
+
+/**
+ * Represents a Gravatar image.
+ * 
+ * @author James Moger
+ * 
+ */
+public class GravatarImage extends WebComponent {
+
+	private static final long serialVersionUID = 1L;
+
+	public GravatarImage(String id, PersonIdent person) {
+		this(id, person, 0);
+	}
+	
+	public GravatarImage(String id, PersonIdent person, int width) {
+		super(id);
+		if (width <= 0) {
+			width = 60;
+		}
+		String authorhash = StringUtils.getMD5(person.getEmailAddress().toLowerCase());
+		String url = MessageFormat.format("http://www.gravatar.com/avatar/{0}?s={1,number,0}&d=identicon", authorhash, width);
+		add(new AttributeModifier("src", true, new Model<String>(url)));
+		setVisible(GitBlit.getBoolean(Keys.web.allowGravatar, true));
+	}
+
+	@Override
+	protected void onComponentTag(ComponentTag tag) {
+		super.onComponentTag(tag);
+		checkComponentTag(tag, "img");
+	}
+
+}
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/pages/CommitPage.html b/src/com/gitblit/wicket/pages/CommitPage.html
index f2d328e..2af05e1 100644
--- a/src/com/gitblit/wicket/pages/CommitPage.html
+++ b/src/com/gitblit/wicket/pages/CommitPage.html
@@ -15,6 +15,9 @@
 	<!-- commit header -->
 	<div wicket:id="commitHeader">[commit header]</div>
 	
+	<!--  Author Gravatar -->
+	<img style="float:right;vertical-align: top;" wicket:id="authorAvatar" />
+	
 	<!-- commit info -->
 	<table class="plain">
 		<tr><th><wicket:message key="gb.refs">refs</wicket:message></th><td><div wicket:id="refsPanel">[references]</div></td></tr>
@@ -53,6 +56,8 @@
 					<tr><td><span class="sha1" wicket:id="authorName"></span></td></tr>
 					<tr><td><span class="sha1" wicket:id="authorDate"></span></td></tr>
 				</table>
+				<!--  Note Author Gravatar -->
+				<img style="vertical-align: top;" wicket:id="noteAuthorAvatar" />				
 			</td>
 			<td class="message"><span class="sha1" wicket:id="noteContent"></span></td>
 		</tr>
diff --git a/src/com/gitblit/wicket/pages/CommitPage.java b/src/com/gitblit/wicket/pages/CommitPage.java
index dd3decb..bfe03f1 100644
--- a/src/com/gitblit/wicket/pages/CommitPage.java
+++ b/src/com/gitblit/wicket/pages/CommitPage.java
@@ -38,6 +38,7 @@
 import com.gitblit.models.GitNote;
 import com.gitblit.models.PathModel.PathChangeModel;
 import com.gitblit.utils.JGitUtils;
+import com.gitblit.wicket.GravatarImage;
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.panels.CommitHeaderPanel;
 import com.gitblit.wicket.panels.CommitLegendPanel;
@@ -81,7 +82,8 @@
 		add(createPersonPanel("commitAuthor", c.getAuthorIdent(), Constants.SearchType.AUTHOR));
 		add(WicketUtils.createTimestampLabel("commitAuthorDate", c.getAuthorIdent().getWhen(),
 				getTimeZone()));
-
+		add(new GravatarImage("authorAvatar", c.getAuthorIdent()));
+		
 		// committer
 		add(createPersonPanel("commitCommitter", c.getCommitterIdent(), Constants.SearchType.COMMITTER));
 		add(WicketUtils.createTimestampLabel("commitCommitterDate",
@@ -126,6 +128,7 @@
 				item.add(new RefsPanel("refName", repositoryName, Arrays.asList(entry.notesRef)));
 				item.add(createPersonPanel("authorName", entry.notesRef.getAuthorIdent(),
 						Constants.SearchType.AUTHOR));
+				item.add(new GravatarImage("noteAuthorAvatar", entry.notesRef.getAuthorIdent()));
 				item.add(WicketUtils.createTimestampLabel("authorDate", entry.notesRef
 						.getAuthorIdent().getWhen(), getTimeZone()));
 				item.add(new Label("noteContent", GitBlit.self().processCommitMessage(

--
Gitblit v1.9.1