From 18422ea861b3e6e4ff3a2ffe3364343deb538b5d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 20 Jul 2011 16:00:21 -0400
Subject: [PATCH] Default to port 8443 for GO to be more nix friendly (issue 12)

---
 src/com/gitblit/wicket/panels/RepositoriesPanel.java |   39 +++++++++++++++++++++++++++++++--------
 1 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/src/com/gitblit/wicket/panels/RepositoriesPanel.java b/src/com/gitblit/wicket/panels/RepositoriesPanel.java
index a0c9e13..fa6c661 100644
--- a/src/com/gitblit/wicket/panels/RepositoriesPanel.java
+++ b/src/com/gitblit/wicket/panels/RepositoriesPanel.java
@@ -31,6 +31,7 @@
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.link.ExternalLink;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.markup.repeater.Item;
@@ -43,8 +44,10 @@
 import com.gitblit.Constants.AccessRestrictionType;
 import com.gitblit.GitBlit;
 import com.gitblit.Keys;
+import com.gitblit.SyndicationServlet;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.UserModel;
+import com.gitblit.utils.ByteFormat;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.utils.TimeUtils;
 import com.gitblit.wicket.GitBlitWebSession;
@@ -69,19 +72,30 @@
 		add(adminLinks.setVisible(showAdmin));
 
 		if (GitBlit.getString(Keys.web.repositoryListType, "flat").equalsIgnoreCase("grouped")) {
+			List<RepositoryModel> rootRepositories = new ArrayList<RepositoryModel>();
 			Map<String, List<RepositoryModel>> groups = new HashMap<String, List<RepositoryModel>>();
 			for (RepositoryModel model : models) {
 				String rootPath = StringUtils.getRootPath(model.name);
-				if (StringUtils.isEmpty(rootPath)) {
-					rootPath = GitBlit.getString(Keys.web.repositoryRootGroupName, " ");
+				if (StringUtils.isEmpty(rootPath)) { 
+					// root repository
+					rootRepositories.add(model);					
+				} else {
+					// non-root, grouped repository
+					if (!groups.containsKey(rootPath)) {
+						groups.put(rootPath, new ArrayList<RepositoryModel>());
+					}
+					groups.get(rootPath).add(model);
 				}
-				if (!groups.containsKey(rootPath)) {
-					groups.put(rootPath, new ArrayList<RepositoryModel>());
-				}
-				groups.get(rootPath).add(model);
 			}
 			List<String> roots = new ArrayList<String>(groups.keySet());
 			Collections.sort(roots);
+			
+			if (rootRepositories.size() > 0) {
+				// inject the root repositories at the top of the page
+				String rootPath = GitBlit.getString(Keys.web.repositoryRootGroupName, " ");
+				roots.add(0, rootPath);
+				groups.put(rootPath, rootRepositories);
+			}
 			List<RepositoryModel> groupedModels = new ArrayList<RepositoryModel>();
 			for (String root : roots) {
 				List<RepositoryModel> subModels = groups.get(root);
@@ -93,6 +107,8 @@
 			dp = new SortableRepositoriesProvider(models);
 		}
 
+		final boolean showSize = GitBlit.getBoolean(Keys.web.showRepositorySizes, true);
+		final ByteFormat byteFormat = new ByteFormat();
 		DataView<RepositoryModel> dataView = new DataView<RepositoryModel>("row", dp) {
 			private static final long serialVersionUID = 1L;
 			int counter;
@@ -121,11 +137,16 @@
 							pp));
 					row.add(new LinkPanel("repositoryDescription", "list", entry.description,
 							SummaryPage.class, pp));
+					if (showSize) {
+						row.add(new Label("repositorySize", byteFormat.format(GitBlit.self().calculateSize(entry))));
+					} else {
+						row.add(new Label("repositorySize").setVisible(false));
+					}
 				} else {
 					// New repository
-					row.add(new Label("repositoryName", entry.name
-							+ "<span class='empty'>(empty)</span>").setEscapeModelStrings(false));
+					row.add(new Label("repositoryName", entry.name));
 					row.add(new Label("repositoryDescription", entry.description));
+					row.add(new Label("repositorySize", "<span class='empty'>(empty)</span>").setEscapeModelStrings(false));
 				}
 
 				if (entry.useTickets) {
@@ -215,6 +236,8 @@
 				} else {
 					row.add(new Label("repositoryLinks"));
 				}
+				row.add(new ExternalLink("syndication", SyndicationServlet.asLink(getRequest()
+						.getRelativePathPrefixToContextRoot(), entry.name, null, 0)));
 				WicketUtils.setAlternatingBackground(item, counter);
 				counter++;
 			}

--
Gitblit v1.9.1