From 27ae9095639bb228a1b7ff86a3ebe4264abf05be Mon Sep 17 00:00:00 2001
From: mschaefers <mschaefers@scoop-gmbh.de>
Date: Thu, 29 Nov 2012 12:33:09 -0500
Subject: [PATCH] feature: when using LdapUserService one can configure Gitblit to fetch all users from ldap that can possibly login. This allows to see newly generated LDAP users instantly in Gitblit. By now an LDAP user had to log in once to appear in GitBlit.

---
 src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java |   38 +++++++++++++++++++++++++++-----------
 1 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java b/src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
index f7deaf1..50f0d52 100644
--- a/src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
+++ b/src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
@@ -51,7 +51,7 @@
 
 	private static final long serialVersionUID = 1L;
 
-	public ProjectRepositoryPanel(String wicketId, Localizer localizer, Component owner,
+	public ProjectRepositoryPanel(String wicketId, Localizer localizer, Component parent,
 			final boolean isAdmin, final RepositoryModel entry,
 			final Map<AccessRestrictionType, String> accessRestrictions) {
 		super(wicketId);
@@ -66,7 +66,7 @@
 			swatch = new Label("repositorySwatch", "&nbsp;").setEscapeModelStrings(false);
 		} else {
 			swatch = new Label("repositorySwatch", "!");
-			WicketUtils.setHtmlTooltip(swatch, localizer.getString("gb.workingCopyWarning", owner));
+			WicketUtils.setHtmlTooltip(swatch, localizer.getString("gb.workingCopyWarning", parent));
 		}
 		WicketUtils.setCssBackground(swatch, entry.toString());
 		add(swatch);
@@ -91,13 +91,13 @@
 		add(new BookmarkablePageLink<Void>("docs", DocsPage.class, pp).setVisible(entry.useDocs));
 
 		if (entry.isFrozen) {
-			add(WicketUtils.newImage("frozenIcon", "cold_16x16.png", localizer.getString("gb.isFrozen", owner)));
+			add(WicketUtils.newImage("frozenIcon", "cold_16x16.png", localizer.getString("gb.isFrozen", parent)));
 		} else {
 			add(WicketUtils.newClearPixel("frozenIcon").setVisible(false));
 		}
 
 		if (entry.isFederated) {
-			add(WicketUtils.newImage("federatedIcon", "federated_16x16.png", localizer.getString("gb.isFederated", owner)));
+			add(WicketUtils.newImage("federatedIcon", "federated_16x16.png", localizer.getString("gb.isFederated", parent)));
 		} else {
 			add(WicketUtils.newClearPixel("federatedIcon").setVisible(false));
 		}
@@ -121,12 +121,24 @@
 			add(WicketUtils.newBlankImage("accessRestrictionIcon"));
 		}
 
-		add(new Label("repositoryOwner", StringUtils.isEmpty(entry.owner) ? "" : (entry.owner + " ("
-				+ localizer.getString("gb.owner", owner) + ")")));
+		if (StringUtils.isEmpty(entry.owner)) {
+			add(new Label("repositoryOwner").setVisible(false));
+		} else {
+			UserModel ownerModel = GitBlit.self().getUserModel(entry.owner);
+			String owner = entry.owner;
+			if (ownerModel != null) {
+				owner = ownerModel.getDisplayName();
+			}
+			add(new Label("repositoryOwner", owner + " (" +
+					localizer.getString("gb.owner", parent) + ")"));
+		}
 
 		UserModel user = GitBlitWebSession.get().getUser();
+		if (user == null) {
+			user = UserModel.ANONYMOUS;
+		}
 		Fragment repositoryLinks;
-		boolean showOwner = user != null && user.username.equalsIgnoreCase(entry.owner);
+		boolean showOwner = entry.isOwner(user.username);
 		// owner of personal repository gets admin powers
 		boolean showAdmin = isAdmin || entry.isUsersPersonalRepository(user.username);
 
@@ -143,15 +155,19 @@
 					@Override
 					public void onClick() {
 						if (GitBlit.self().deleteRepositoryModel(entry)) {
-							info(MessageFormat.format(getString("gb.repositoryDeleted"), entry));
-							// TODO dp.remove(entry);
+							// redirect to the owning page
+							if (entry.isPersonalRepository()) {
+								setResponsePage(getPage().getClass(), WicketUtils.newUsernameParameter(entry.projectPath.substring(1)));
+							} else {
+								setResponsePage(getPage().getClass(), WicketUtils.newProjectParameter(entry.projectPath));
+							}
 						} else {
 							error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), entry));
 						}
 					}
 				};
 				deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
-						localizer.getString("gb.deleteRepository", owner), entry)));
+						localizer.getString("gb.deleteRepository", parent), entry)));
 				repositoryLinks.add(deleteLink);
 			}
 		} else {
@@ -181,7 +197,7 @@
 			add(new Label("repositorySize", entry.size).setVisible(showSize));
 		} else {
 			// New repository
-			add(new Label("repositorySize", localizer.getString("gb.empty", owner)).setEscapeModelStrings(false));
+			add(new Label("repositorySize", localizer.getString("gb.empty", parent)).setEscapeModelStrings(false));
 		}
 
 		add(new ExternalLink("syndication", SyndicationServlet.asLink("", entry.name, null, 0)));

--
Gitblit v1.9.1