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/FederationTokensPanel.java |   51 ++++++++++++++++++++++++++-------------------------
 1 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/src/com/gitblit/wicket/panels/FederationTokensPanel.java b/src/com/gitblit/wicket/panels/FederationTokensPanel.java
index 166f1bd..3454492 100644
--- a/src/com/gitblit/wicket/panels/FederationTokensPanel.java
+++ b/src/com/gitblit/wicket/panels/FederationTokensPanel.java
@@ -16,20 +16,23 @@
 package com.gitblit.wicket.panels;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 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.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
 
 import com.gitblit.Constants.FederationRequest;
 import com.gitblit.Constants.FederationToken;
-import com.gitblit.FederationServlet;
 import com.gitblit.GitBlit;
+import com.gitblit.Keys;
+import com.gitblit.utils.FederationUtils;
 import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.pages.SendProposalPage;
 
 public class FederationTokensPanel extends BasePanel {
 
@@ -38,21 +41,23 @@
 	public FederationTokensPanel(String wicketId, final boolean showFederation) {
 		super(wicketId);
 
-		String baseUrl = getRequest().getRelativePathPrefixToContextRoot();
-		add(new ExternalLink("federatedRepositories", FederationServlet.asPullLink(baseUrl, GitBlit
-				.self().getFederationToken(FederationToken.REPOSITORIES),
-				FederationRequest.PULL_REPOSITORIES)));
-
-		add(new ExternalLink("federatedUsers", FederationServlet.asPullLink(baseUrl, GitBlit.self()
+		final String baseUrl = WicketUtils.getGitblitURL(getRequest());
+		add(new ExternalLink("federatedUsers", FederationUtils.asLink(baseUrl, GitBlit.self()
 				.getFederationToken(FederationToken.USERS_AND_REPOSITORIES),
 				FederationRequest.PULL_USERS)));
 
-		add(new ExternalLink("federatedSettings", FederationServlet.asPullLink(baseUrl, GitBlit
+		add(new ExternalLink("federatedSettings", FederationUtils.asLink(baseUrl, GitBlit
 				.self().getFederationToken(FederationToken.ALL), FederationRequest.PULL_SETTINGS)));
 
 		final List<String[]> data = new ArrayList<String[]>();
 		for (FederationToken token : FederationToken.values()) {
-			data.add(new String[] { token.name(), GitBlit.self().getFederationToken(token) });
+			data.add(new String[] { token.name(), GitBlit.self().getFederationToken(token), null });
+		}
+		List<String> sets = GitBlit.getStrings(Keys.federation.sets);
+		Collections.sort(sets);
+		for (String set : sets) {
+			data.add(new String[] { FederationToken.REPOSITORIES.name(),
+					GitBlit.self().getFederationToken(set), set });
 		}
 
 		DataView<String[]> dataView = new DataView<String[]>("row", new ListDataProvider<String[]>(
@@ -69,25 +74,21 @@
 			public void populateItem(final Item<String[]> item) {
 				final String[] entry = item.getModelObject();
 				final FederationToken token = FederationToken.fromName(entry[0]);
-
-				item.add(new Label("field", entry[0]));
+				if (entry[2] == null) {
+					// standard federation token
+					item.add(new Label("description", describeToken(token)));
+				} else {
+					// federation set token
+					item.add(new Label("description", entry[2]));
+				}
 				item.add(new Label("value", entry[1]));
 
-				// TODO make this work
-				Link<Void> sendProposal = new Link<Void>("send") {
+				item.add(new ExternalLink("repositoryDefinitions", FederationUtils.asLink(
+						baseUrl, entry[1], FederationRequest.PULL_REPOSITORIES)));
 
-					private static final long serialVersionUID = 1L;
+				item.add(new BookmarkablePageLink<Void>("send",
+						SendProposalPage.class, WicketUtils.newTokenParameter(entry[1])));
 
-					@Override
-					public void onClick() {
-						error("Sorry, this does not work yet.  :(");
-					}
-				};
-				sendProposal.add(new JavascriptTextPrompt("onclick",
-						"Please enter URL for remote Gitblit instance:"));
-				item.add(sendProposal);
-
-				item.add(new Label("description", describeToken(token)));
 				WicketUtils.setAlternatingBackground(item, counter);
 				counter++;
 			}

--
Gitblit v1.9.1