From d551f9dfdb305f1f4c72d79d1577a1feac41eda7 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 19 May 2013 20:48:36 -0400
Subject: [PATCH] Use mm gravatar icon for user menu

---
 src/main/java/com/gitblit/utils/ActivityUtils.java         |   21 ++++++++++++++++++++-
 src/main/java/com/gitblit/wicket/panels/GravatarImage.java |   11 ++++++++---
 src/main/java/com/gitblit/wicket/pages/RootPage.java       |    3 ++-
 3 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/gitblit/utils/ActivityUtils.java b/src/main/java/com/gitblit/utils/ActivityUtils.java
index 732fdeb..1792bf2 100644
--- a/src/main/java/com/gitblit/utils/ActivityUtils.java
+++ b/src/main/java/com/gitblit/utils/ActivityUtils.java
@@ -165,7 +165,7 @@
 	 *            size of thumbnail. if width <= 0, the default of 50 is used.
 	 * @return
 	 */
-	public static String getGravatarThumbnailUrl(String email, int width) {
+	public static String getGravatarIdenticonUrl(String email, int width) {
 		if (width <= 0) {
 			width = 50;
 		}
@@ -174,6 +174,25 @@
 				"https://www.gravatar.com/avatar/{0}?s={1,number,0}&d=identicon", emailHash, width);
 		return url;
 	}
+	
+	/**
+	 * Creates a Gravatar thumbnail url from the specified email address.
+	 * 
+	 * @param email
+	 *            address to query Gravatar
+	 * @param width
+	 *            size of thumbnail. if width <= 0, the default of 50 is used.
+	 * @return
+	 */
+	public static String getGravatarThumbnailUrl(String email, int width) {
+		if (width <= 0) {
+			width = 50;
+		}
+		String emailHash = StringUtils.getMD5(email);
+		String url = MessageFormat.format(
+				"https://www.gravatar.com/avatar/{0}?s={1,number,0}&d=mm", emailHash, width);
+		return url;
+	}
 
 	/**
 	 * Returns the Gravatar profile, if available, for the specified hashcode.
diff --git a/src/main/java/com/gitblit/wicket/pages/RootPage.java b/src/main/java/com/gitblit/wicket/pages/RootPage.java
index 47fcc72..3025151 100644
--- a/src/main/java/com/gitblit/wicket/pages/RootPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RootPage.java
@@ -500,7 +500,8 @@
 			boolean standardLogin = session.authenticationType.isStandard();
 
 			if (GitBlit.getBoolean(Keys.web.allowGravatar, true)) {
-				add(new GravatarImage("username", user.getDisplayName(), user.emailAddress, "navbarGravatar", 20, false));
+				add(new GravatarImage("username", user.getDisplayName(),
+						user.emailAddress, "navbarGravatar", 20, false, false));
 			} else {
 				add(new Label("username", user.getDisplayName()));
 			}
diff --git a/src/main/java/com/gitblit/wicket/panels/GravatarImage.java b/src/main/java/com/gitblit/wicket/panels/GravatarImage.java
index 80dbddb..da20e9b 100644
--- a/src/main/java/com/gitblit/wicket/panels/GravatarImage.java
+++ b/src/main/java/com/gitblit/wicket/panels/GravatarImage.java
@@ -50,10 +50,10 @@
 	}
 
 	public GravatarImage(String id, PersonIdent person, int width, boolean linked) {
-		this(id, person.getName(), person.getEmailAddress(), "gravatar", width, linked);
+		this(id, person.getName(), person.getEmailAddress(), "gravatar", width, linked, true);
 	}
 	
-	public GravatarImage(String id, String username, String emailaddress, String cssClass, int width, boolean linked) {
+	public GravatarImage(String id, String username, String emailaddress, String cssClass, int width, boolean linked, boolean identicon) {
 		super(id);
 
 		String email = emailaddress == null ? username.toLowerCase() : emailaddress.toLowerCase();
@@ -61,7 +61,12 @@
 		Link<Void> link = new BookmarkablePageLink<Void>("link", GravatarProfilePage.class,
 				WicketUtils.newObjectParameter(hash));
 		link.add(new SimpleAttributeModifier("target", "_blank"));
-		String url = ActivityUtils.getGravatarThumbnailUrl(email, width);
+		String url;
+		if (identicon) {
+			url = ActivityUtils.getGravatarIdenticonUrl(email, width);
+		} else {
+			url = ActivityUtils.getGravatarThumbnailUrl(email, width);
+		}
 		ExternalImage image = new ExternalImage("image", url);
 		if (cssClass != null) {
 			WicketUtils.setCssClass(image, cssClass);

--
Gitblit v1.9.1