@@ -53,6 +53,7 @@ r20: { | |||
- 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". |
@@ -53,7 +53,6 @@ import com.gitblit.wicket.pages.FederationRegistrationPage; | |||
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 @@ public class GitBlitWebApp extends WebApplication { | |||
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); |
@@ -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> |
@@ -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)); | |||
} | |||
} |
@@ -576,8 +576,7 @@ public abstract class RootPage extends BasePage { | |||
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())); | |||
} |
@@ -203,8 +203,7 @@ public class DigestsPanel extends BasePanel { | |||
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) { |
@@ -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> |
@@ -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 class GravatarImage extends BasePanel { | |||
} | |||
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, String cssClass, int width, boolean identicon) { | |||
this(id, person.getName(), person.getEmailAddress(), cssClass, width, identicon); | |||
} | |||
public GravatarImage(String id, PersonIdent person, int width, boolean linked) { | |||
this(id, person.getName(), person.getEmailAddress(), "gravatar", width, linked, true); | |||
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 linked, boolean 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 @@ public class GravatarImage extends BasePanel { | |||
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)); | |||
} | |||
} |
@@ -259,8 +259,7 @@ public class ReflogPanel extends BasePanel { | |||
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) { |
@@ -145,7 +145,7 @@ public class RegistrantPermissionsPanel extends BasePanel { | |||
} | |||
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 { |