From d5ee557ef1370b5b9953dca1c8d3b14d0bd68a98 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 02 May 2013 22:31:58 -0400
Subject: [PATCH] Do not use problematic WicketUtils fluid api

---
 src/main/java/com/gitblit/wicket/pages/SummaryPage.java |   46 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java
index bd40a1b..f092a38 100644
--- a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java
@@ -42,6 +42,7 @@
 import org.wicketstuff.googlecharts.MarkerType;
 import org.wicketstuff.googlecharts.ShapeMarker;
 
+import com.gitblit.Constants.AccessPermission;
 import com.gitblit.Constants.AccessRestrictionType;
 import com.gitblit.GitBlit;
 import com.gitblit.Keys;
@@ -53,11 +54,13 @@
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.MarkdownUtils;
 import com.gitblit.utils.StringUtils;
+import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.panels.BranchesPanel;
+import com.gitblit.wicket.panels.DetailedRepositoryUrlPanel;
 import com.gitblit.wicket.panels.LinkPanel;
 import com.gitblit.wicket.panels.LogPanel;
-import com.gitblit.wicket.panels.RepositoryUrlPanel;
+import com.gitblit.wicket.panels.SparkleShareInvitePanel;
 import com.gitblit.wicket.panels.TagsPanel;
 
 public class SummaryPage extends RepositoryPage {
@@ -72,7 +75,11 @@
 		int numberRefs = GitBlit.getInteger(Keys.web.summaryRefsCount, 5);
 
 		Repository r = getRepository();
-		RepositoryModel model = getRepositoryModel();
+		final RepositoryModel model = getRepositoryModel();
+		UserModel user = GitBlitWebSession.get().getUser();
+		if (user == null) {
+			user = UserModel.ANONYMOUS;
+		}
 
 		List<Metric> metrics = null;
 		Metric metricsTotal = null;
@@ -122,7 +129,9 @@
 
 		List<String> repositoryUrls = new ArrayList<String>();
 
-		if (GitBlit.getBoolean(Keys.git.enableGitServlet, true)) {
+		AccessPermission accessPermission = null;
+		if (GitBlit.getBoolean(Keys.git.enableGitServlet, true)) {			
+			accessPermission = user.getRepositoryPermission(model).permission;
 			AccessRestrictionType accessRestriction = getRepositoryModel().accessRestriction;
 			switch (accessRestriction) {
 			case NONE:
@@ -148,13 +157,36 @@
 		} else {
 			add(WicketUtils.newClearPixel("accessRestrictionIcon").setVisible(false));
 		}
-		repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(repositoryName));
+		repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(repositoryName, UserModel.ANONYMOUS.equals(user) ? "" : user.username));
 		
 		String primaryUrl = ArrayUtils.isEmpty(repositoryUrls) ? "" : repositoryUrls.remove(0);
-		add(new RepositoryUrlPanel("repositoryCloneUrl", primaryUrl));
+		add(new DetailedRepositoryUrlPanel("repositoryPrimaryUrl", getLocalizer(), this, model.name, primaryUrl, accessPermission));
 
-		add(new Label("otherUrls", StringUtils.flattenStrings(repositoryUrls, "<br/>"))
-		.setEscapeModelStrings(false));
+		Component gitDaemonUrlPanel = createGitDaemonUrlPanel("repositoryGitDaemonUrl", user, model);
+		if (!StringUtils.isEmpty(primaryUrl) && gitDaemonUrlPanel instanceof DetailedRepositoryUrlPanel) {
+			WicketUtils.setCssStyle(gitDaemonUrlPanel, "padding-top: 10px");
+		}
+		add(gitDaemonUrlPanel);
+		
+		String sparkleshareUrl = getSparkleShareInviteUrl(model);
+		if (StringUtils.isEmpty(sparkleshareUrl)) {
+			add(new Label("repositorySparkleShareInviteUrl").setVisible(false));
+		} else {
+			Component sparklesharePanel = new SparkleShareInvitePanel("repositorySparkleShareInviteUrl", getLocalizer(), this, sparkleshareUrl, accessPermission);
+			WicketUtils.setCssStyle(sparklesharePanel, "padding-top: 10px;");
+			add(sparklesharePanel);
+		}
+
+		ListDataProvider<String> urls = new ListDataProvider<String>(repositoryUrls);
+		DataView<String> otherUrlsView = new DataView<String>("otherUrls", urls) {
+			private static final long serialVersionUID = 1L;
+
+			public void populateItem(final Item<String> item) {
+				final String url = item.getModelObject();
+				item.add(new DetailedRepositoryUrlPanel("otherUrl", getLocalizer(), this, model.name, url));
+			}
+		};
+		add(otherUrlsView);
 
 		add(new LogPanel("commitsPanel", repositoryName, getRepositoryModel().HEAD, r, numberCommits, 0, getRepositoryModel().showRemoteBranches));
 		add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs).hideIfEmpty());

--
Gitblit v1.9.1