From 6662e38a4e252b6ed455ca8f11729d0f1440a3b0 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 05 Oct 2012 17:44:53 -0400
Subject: [PATCH] Implemented New Repository for personal repositories

---
 src/com/gitblit/wicket/panels/RepositoriesPanel.java |   38 +++++++++++++++++++++++++-------------
 1 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/src/com/gitblit/wicket/panels/RepositoriesPanel.java b/src/com/gitblit/wicket/panels/RepositoriesPanel.java
index 02ebf4f..137fae6 100644
--- a/src/com/gitblit/wicket/panels/RepositoriesPanel.java
+++ b/src/com/gitblit/wicket/panels/RepositoriesPanel.java
@@ -64,7 +64,7 @@
 
 	private static final long serialVersionUID = 1L;
 
-	public RepositoriesPanel(String wicketId, final boolean showAdmin,
+	public RepositoriesPanel(String wicketId, final boolean showAdmin, final boolean showManagement,
 			List<RepositoryModel> models, boolean enableLinks,
 			final Map<AccessRestrictionType, String> accessRestrictionTranslations) {
 		super(wicketId);
@@ -76,19 +76,31 @@
 
 		final IDataProvider<RepositoryModel> dp;
 
-		Fragment adminLinks = new Fragment("adminPanel", "adminLinks", this);
-		adminLinks.add(new Link<Void>("clearCache") {
+		Fragment managementLinks;
+		if (showAdmin) {
+			// user is admin
+			managementLinks = new Fragment("managementPanel", "adminLinks", this);
+			managementLinks.add(new Link<Void>("clearCache") {
 
-			private static final long serialVersionUID = 1L;
+				private static final long serialVersionUID = 1L;
 
-			@Override
-			public void onClick() {
-				GitBlit.self().resetRepositoryListCache();
-				setResponsePage(RepositoriesPage.class);
-			}
-		}.setVisible(GitBlit.getBoolean(Keys.git.cacheRepositoryList, true)));
-		adminLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
-		add(adminLinks.setVisible(showAdmin));
+				@Override
+				public void onClick() {
+					GitBlit.self().resetRepositoryListCache();
+					setResponsePage(RepositoriesPage.class);
+				}
+			}.setVisible(GitBlit.getBoolean(Keys.git.cacheRepositoryList, true)));
+			managementLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
+			add(managementLinks);
+		} else if (showManagement && user != null && user.canCreate) {
+			// user can create personal repositories
+			managementLinks = new Fragment("managementPanel", "personalLinks", this);
+			managementLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
+			add(managementLinks);
+		} else {
+			// user has no management permissions
+			add (new Label("managementPanel").setVisible(false));
+		}
 
 		if (GitBlit.getString(Keys.web.repositoryListType, "flat").equalsIgnoreCase("grouped")) {
 			List<RepositoryModel> rootRepositories = new ArrayList<RepositoryModel>();
@@ -297,7 +309,7 @@
 				row.add(lastChangeLabel);
 				WicketUtils.setCssClass(lastChangeLabel, getTimeUtils().timeAgoCss(entry.lastChange));
 
-				boolean showOwner = user != null && user.username.equalsIgnoreCase(entry.owner);
+				boolean showOwner = user != null && entry.isOwner(user.username);
 				boolean myPersonalRepository = showOwner && entry.isUsersPersonalRepository(user.username);
 				if (showAdmin || myPersonalRepository) {
 					Fragment repositoryLinks = new Fragment("repositoryLinks",

--
Gitblit v1.9.1