From 94e12c168f5eec300fd23d0de25c7dc93a96c429 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 03 Mar 2014 17:51:21 -0500
Subject: [PATCH] Eliminate Gravatar profile linking and improve api

---
 src/main/java/com/gitblit/wicket/panels/DigestsPanel.java               |    3 -
 /dev/null                                                               |   64 --------------------------------
 src/main/java/com/gitblit/wicket/panels/GravatarImage.html              |    2 
 src/main/java/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java |    2 
 releases.moxie                                                          |    1 
 src/main/java/com/gitblit/wicket/GitBlitWebApp.java                     |    2 -
 src/main/java/com/gitblit/wicket/panels/ReflogPanel.java                |    3 -
 src/main/java/com/gitblit/wicket/panels/GravatarImage.java              |   36 ++++++------------
 src/main/java/com/gitblit/wicket/pages/RootPage.java                    |    3 -
 9 files changed, 18 insertions(+), 98 deletions(-)

diff --git a/releases.moxie b/releases.moxie
index cd4e43e..f7af6cb 100644
--- a/releases.moxie
+++ b/releases.moxie
@@ -53,6 +53,7 @@
 	- Revised committer verification to require a matching displayname or account name AND the email address
 	- Serve repositories on both /r and /git, displaying /r because it is shorter
 	- Eliminate HEAD from the blob, blame, and tree pages. That assumed a resource was available in HEAD and it may not be.
+	- Eliminate Gravatar profile linking.
     additions:
 	- Added color modes for the blame page (issue-2)
 	- Added an optional MirrorService which will periodically fetch ref updates from source repositories for mirrors (issue-5).  Repositories must be manually cloned using native git and "--mirror".
diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
index 35a0823..ab5ae2a 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -53,7 +53,6 @@
 import com.gitblit.wicket.pages.ForkPage;
 import com.gitblit.wicket.pages.ForksPage;
 import com.gitblit.wicket.pages.GitSearchPage;
-import com.gitblit.wicket.pages.GravatarProfilePage;
 import com.gitblit.wicket.pages.HistoryPage;
 import com.gitblit.wicket.pages.LogPage;
 import com.gitblit.wicket.pages.LogoutPage;
@@ -178,7 +177,6 @@
 		mount("/registration", FederationRegistrationPage.class, "u", "n");
 
 		mount("/activity", ActivityPage.class, "r", "h");
-		mount("/gravatar", GravatarProfilePage.class, "h");
 		mount("/lucene", LuceneSearchPage.class);
 		mount("/project", ProjectPage.class, "p");
 		mount("/projects", ProjectsPage.class);
diff --git a/src/main/java/com/gitblit/wicket/pages/GravatarProfilePage.html b/src/main/java/com/gitblit/wicket/pages/GravatarProfilePage.html
deleted file mode 100644
index b4531a1..0000000
--- a/src/main/java/com/gitblit/wicket/pages/GravatarProfilePage.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"  
-      xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"  
-      xml:lang="en"  
-      lang="en"> 
-<body>
-<wicket:extend>
-<div class="container">
-	<div class="pageTitle">
-		<h2>Gravatar<small> / <span wicket:id="username">[username]</span></small></h2>
-	</div>
-	<img class="gravatar" wicket:id="profileImage"></img>
-	<h2 wicket:id="displayName"></h2>
-	<div style="color:#888;"wicket:id="location"></div>
-	<div style="padding-top:5px;" wicket:id="aboutMe"></div>
-	<p></p>
-	<a wicket:id="profileLink"><wicket:message key="gb.completeGravatarProfile">[Complete profile on Gravatar.com]</wicket:message></a>
-	<p></p>
-</div>
-</wicket:extend>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/wicket/pages/GravatarProfilePage.java b/src/main/java/com/gitblit/wicket/pages/GravatarProfilePage.java
deleted file mode 100644
index 984b297..0000000
--- a/src/main/java/com/gitblit/wicket/pages/GravatarProfilePage.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.pages;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.ExternalLink;
-
-import com.gitblit.models.GravatarProfile;
-import com.gitblit.utils.ActivityUtils;
-import com.gitblit.wicket.ExternalImage;
-import com.gitblit.wicket.WicketUtils;
-
-/**
- * Gravatar Profile Page shows the Gravatar information, if available.
- *
- * @author James Moger
- *
- */
-public class GravatarProfilePage extends RootPage {
-
-	public GravatarProfilePage(PageParameters params) {
-		super();
-		setupPage("", "");
-		String object = WicketUtils.getObject(params);
-		GravatarProfile profile = null;
-		try {
-			if (object.indexOf('@') > -1) {
-				profile = ActivityUtils.getGravatarProfileFromAddress(object);
-			} else {
-				profile = ActivityUtils.getGravatarProfile(object);
-			}
-		} catch (IOException e) {
-			error(MessageFormat.format(getString("gb.failedToFindGravatarProfile"), object), e, true);
-		}
-
-		if (profile == null) {
-			error(MessageFormat.format(getString("gb.failedToFindGravatarProfile"), object), true);
-		}
-		add(new Label("displayName", profile.displayName));
-		add(new Label("username", profile.preferredUsername));
-		add(new Label("location", profile.currentLocation));
-		add(new Label("aboutMe", profile.aboutMe));
-		ExternalImage image = new ExternalImage("profileImage", profile.thumbnailUrl + "?s=256&d=identicon");
-		add(image);
-		add(new ExternalLink("profileLink", profile.profileUrl));
-	}
-}
diff --git a/src/main/java/com/gitblit/wicket/pages/RootPage.java b/src/main/java/com/gitblit/wicket/pages/RootPage.java
index 9141b4e..5ccc3a4 100644
--- a/src/main/java/com/gitblit/wicket/pages/RootPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RootPage.java
@@ -576,8 +576,7 @@
 			boolean standardLogin = session.authenticationType.isStandard();
 
 			if (app().settings().getBoolean(Keys.web.allowGravatar, true)) {
-				add(new GravatarImage("username", user.getDisplayName(),
-						user.emailAddress, "navbarGravatar", 20, false, false));
+				add(new GravatarImage("username", user, "navbarGravatar", 20, false));
 			} else {
 				add(new Label("username", user.getDisplayName()));
 			}
diff --git a/src/main/java/com/gitblit/wicket/panels/DigestsPanel.java b/src/main/java/com/gitblit/wicket/panels/DigestsPanel.java
index ee97635..de09aa9 100644
--- a/src/main/java/com/gitblit/wicket/panels/DigestsPanel.java
+++ b/src/main/java/com/gitblit/wicket/panels/DigestsPanel.java
@@ -203,8 +203,7 @@
 						final RepositoryCommit commit = commitItem.getModelObject();
 
 						// author gravatar
-						commitItem.add(new GravatarImage("commitAuthor", commit.getAuthorIdent().getName(),
-								commit.getAuthorIdent().getEmailAddress(), null, 16, false, false));
+						commitItem.add(new GravatarImage("commitAuthor", commit.getAuthorIdent(), null, 16, false));
 
 						// merge icon
 						if (commit.getParentCount() > 1) {
diff --git a/src/main/java/com/gitblit/wicket/panels/GravatarImage.html b/src/main/java/com/gitblit/wicket/panels/GravatarImage.html
index 9dda795..846a8f1 100644
--- a/src/main/java/com/gitblit/wicket/panels/GravatarImage.html
+++ b/src/main/java/com/gitblit/wicket/panels/GravatarImage.html
@@ -4,6 +4,6 @@
       xml:lang="en"  
       lang="en">
 <wicket:panel>
-<a href="#" wicket:id="link"><img wicket:id="image"></img></a>
+<img wicket:id="image"></img>
 </wicket:panel>
 </html>
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/wicket/panels/GravatarImage.java b/src/main/java/com/gitblit/wicket/panels/GravatarImage.java
index 34af2bf..9507a25 100644
--- a/src/main/java/com/gitblit/wicket/panels/GravatarImage.java
+++ b/src/main/java/com/gitblit/wicket/panels/GravatarImage.java
@@ -15,22 +15,16 @@
  */
 package com.gitblit.wicket.panels;
 
-import java.text.MessageFormat;
-
-import org.apache.wicket.behavior.SimpleAttributeModifier;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.link.Link;
 import org.eclipse.jgit.lib.PersonIdent;
 
 import com.gitblit.Keys;
+import com.gitblit.models.UserModel;
 import com.gitblit.utils.ActivityUtils;
-import com.gitblit.utils.StringUtils;
 import com.gitblit.wicket.ExternalImage;
 import com.gitblit.wicket.WicketUtils;
-import com.gitblit.wicket.pages.GravatarProfilePage;
 
 /**
- * Represents a Gravatar image and links to the Gravatar profile page.
+ * Represents a Gravatar image.
  *
  * @author James Moger
  *
@@ -44,21 +38,21 @@
 	}
 
 	public GravatarImage(String id, PersonIdent person, int width) {
-		this(id, person, width, true);
+		this(id, person.getName(), person.getEmailAddress(), "gravatar", width, true);
 	}
 
-	public GravatarImage(String id, PersonIdent person, int width, boolean linked) {
-		this(id, person.getName(), person.getEmailAddress(), "gravatar", width, linked, true);
+	public GravatarImage(String id, PersonIdent person, String cssClass, int width, boolean identicon) {
+		this(id, person.getName(), person.getEmailAddress(), cssClass, width, identicon);
 	}
 
-	public GravatarImage(String id, String username, String emailaddress, String cssClass, int width, boolean linked, boolean identicon) {
+	public GravatarImage(String id, UserModel user, String cssClass, int width, boolean identicon) {
+		this(id, user.getDisplayName(), user.emailAddress, cssClass, width, identicon);
+	}
+
+	public GravatarImage(String id, String username, String emailaddress, String cssClass, int width, boolean identicon) {
 		super(id);
 
 		String email = emailaddress == null ? username.toLowerCase() : emailaddress.toLowerCase();
-		String hash = StringUtils.getMD5(email);
-		Link<Void> link = new BookmarkablePageLink<Void>("link", GravatarProfilePage.class,
-				WicketUtils.newObjectParameter(hash));
-		link.add(new SimpleAttributeModifier("target", "_blank"));
 		String url;
 		if (identicon) {
 			url = ActivityUtils.getGravatarIdenticonUrl(email, width);
@@ -69,14 +63,8 @@
 		if (cssClass != null) {
 			WicketUtils.setCssClass(image, cssClass);
 		}
-		link.add(image);
-		if (linked) {
-			WicketUtils.setHtmlTooltip(link,
-				MessageFormat.format("View Gravatar profile for {0}", username));
-		} else {
-			WicketUtils.setHtmlTooltip(link, username);
-		}
-		add(link.setEnabled(linked));
+		add(image);
+		WicketUtils.setHtmlTooltip(image, username);
 		setVisible(app().settings().getBoolean(Keys.web.allowGravatar, true));
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/wicket/panels/ReflogPanel.java b/src/main/java/com/gitblit/wicket/panels/ReflogPanel.java
index 70f5986..c1db726 100644
--- a/src/main/java/com/gitblit/wicket/panels/ReflogPanel.java
+++ b/src/main/java/com/gitblit/wicket/panels/ReflogPanel.java
@@ -259,8 +259,7 @@
 						final RepositoryCommit commit = commitItem.getModelObject();
 
 						// author gravatar
-						commitItem.add(new GravatarImage("commitAuthor", commit.getAuthorIdent().getName(),
-								commit.getAuthorIdent().getEmailAddress(), null, 16, false, false));
+						commitItem.add(new GravatarImage("commitAuthor", commit.getAuthorIdent(), null, 16, false));
 
 						// merge icon
 						if (commit.getParentCount() > 1) {
diff --git a/src/main/java/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java b/src/main/java/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java
index 756b7db..f37cc2a 100644
--- a/src/main/java/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java
+++ b/src/main/java/com/gitblit/wicket/panels/RegistrantPermissionsPanel.java
@@ -145,7 +145,7 @@
 					}
 
 					Fragment userFragment = new Fragment("registrant", "userRegistrant", RegistrantPermissionsPanel.this);
-					userFragment.add(new GravatarImage("userAvatar", ident, 20, false));
+					userFragment.add(new GravatarImage("userAvatar", ident, 20));
 					userFragment.add(new Label("userName", entry.registrant));
 					item.add(userFragment);
 				} else {

--
Gitblit v1.9.1