From 13417cf9c6eec555b51da49742e47939d2f5715b Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 19 Oct 2012 22:47:33 -0400
Subject: [PATCH] Exclude submodules from zip downloads (issue 151)

---
 src/com/gitblit/client/RepositoriesPanel.java |   80 +++++++++++++++++++++++++++++++++++++--
 1 files changed, 75 insertions(+), 5 deletions(-)

diff --git a/src/com/gitblit/client/RepositoriesPanel.java b/src/com/gitblit/client/RepositoriesPanel.java
index 70ff6cf..54158e8 100644
--- a/src/com/gitblit/client/RepositoriesPanel.java
+++ b/src/com/gitblit/client/RepositoriesPanel.java
@@ -27,7 +27,9 @@
 import java.awt.event.MouseEvent;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 import javax.swing.JButton;
 import javax.swing.JLabel;
@@ -44,7 +46,9 @@
 import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableRowSorter;
 
+import com.gitblit.Constants;
 import com.gitblit.Constants.RpcRequest;
+import com.gitblit.Keys;
 import com.gitblit.models.FeedModel;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.utils.StringUtils;
@@ -78,6 +82,8 @@
 
 	private JTextField filterTextfield;
 
+	private JButton clearCache;
+
 	public RepositoriesPanel(GitblitClient gitblit) {
 		super();
 		this.gitblit = gitblit;
@@ -99,6 +105,13 @@
 		refreshRepositories.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
 				refreshRepositories();
+			}
+		});
+		
+		clearCache = new JButton(Translation.get("gb.clearCache"));
+		clearCache.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				clearCache();
 			}
 		});
 
@@ -238,6 +251,7 @@
 		repositoryTablePanel.add(new JScrollPane(table), BorderLayout.CENTER);
 
 		JPanel repositoryControls = new JPanel(new FlowLayout(FlowLayout.CENTER, Utils.MARGIN, 0));
+		repositoryControls.add(clearCache);
 		repositoryControls.add(refreshRepositories);
 		repositoryControls.add(browseRepository);
 		repositoryControls.add(createRepository);
@@ -248,7 +262,7 @@
 		repositoryControls.add(searchRepository);
 
 		setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
-		header = new HeaderPanel(Translation.get("gb.repositories"), "gitweb-favicon.png");
+		header = new HeaderPanel(Translation.get("gb.repositories"), "git-orange-16x16.png");
 		add(header, BorderLayout.NORTH);
 		add(repositoryTablePanel, BorderLayout.CENTER);
 		add(repositoryControls, BorderLayout.SOUTH);
@@ -278,7 +292,10 @@
 
 	protected abstract void updateUsersTable();
 
+	protected abstract void updateTeamsTable();
+
 	protected void disableManagement() {
+		clearCache.setVisible(false);
 		createRepository.setVisible(false);
 		editRepository.setVisible(false);
 		delRepository.setVisible(false);
@@ -342,6 +359,26 @@
 		};
 		worker.execute();
 	}
+	
+	protected void clearCache() {
+		GitblitWorker worker = new GitblitWorker(RepositoriesPanel.this,
+				RpcRequest.CLEAR_REPOSITORY_CACHE) {
+			@Override
+			protected Boolean doRequest() throws IOException {
+				if (gitblit.clearRepositoryCache()) {
+					gitblit.refreshRepositories();
+					return true;
+				}
+				return false;
+			}
+
+			@Override
+			protected void onSuccess() {
+				updateTable(false);
+			}
+		};
+		worker.execute();
+	}
 
 	/**
 	 * Displays the create repository dialog and fires a SwingWorker to update
@@ -349,14 +386,23 @@
 	 * 
 	 */
 	protected void createRepository() {
-		EditRepositoryDialog dialog = new EditRepositoryDialog();
+		EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion());
 		dialog.setLocationRelativeTo(RepositoriesPanel.this);
+		dialog.setAccessRestriction(gitblit.getDefaultAccessRestriction());
+		dialog.setAuthorizationControl(gitblit.getDefaultAuthorizationControl());
 		dialog.setUsers(null, gitblit.getUsernames(), null);
+		dialog.setTeams(gitblit.getTeamnames(), null);
 		dialog.setRepositories(gitblit.getRepositories());
 		dialog.setFederationSets(gitblit.getFederationSets(), null);
+		dialog.setIndexedBranches(new ArrayList<String>(Arrays.asList(Constants.DEFAULT_BRANCH)), null);
+		dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(null),
+				gitblit.getPreReceiveScriptsInherited(null), null);
+		dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(null),
+				gitblit.getPostReceiveScriptsInherited(null), null);
 		dialog.setVisible(true);
 		final RepositoryModel newRepository = dialog.getRepository();
 		final List<String> permittedUsers = dialog.getPermittedUsers();
+		final List<String> permittedTeams = dialog.getPermittedTeams();
 		if (newRepository == null) {
 			return;
 		}
@@ -365,11 +411,15 @@
 
 			@Override
 			protected Boolean doRequest() throws IOException {
-				boolean success = gitblit.createRepository(newRepository, permittedUsers);
+				boolean success = gitblit.createRepository(newRepository, permittedUsers,
+						permittedTeams);
 				if (success) {
 					gitblit.refreshRepositories();
 					if (permittedUsers.size() > 0) {
 						gitblit.refreshUsers();
+					}
+					if (permittedTeams.size() > 0) {
+						gitblit.refreshTeams();
 					}
 				}
 				return success;
@@ -379,6 +429,7 @@
 			protected void onSuccess() {
 				updateTable(false);
 				updateUsersTable();
+				updateTeamsTable();
 			}
 
 			@Override
@@ -397,16 +448,31 @@
 	 * @param repository
 	 */
 	protected void editRepository(final RepositoryModel repository) {
-		EditRepositoryDialog dialog = new EditRepositoryDialog(repository);
+		EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion(),
+				repository);
 		dialog.setLocationRelativeTo(RepositoriesPanel.this);
 		List<String> usernames = gitblit.getUsernames();
 		List<String> members = gitblit.getPermittedUsernames(repository);
 		dialog.setUsers(repository.owner, usernames, members);
+		dialog.setTeams(gitblit.getTeamnames(), gitblit.getPermittedTeamnames(repository));
 		dialog.setRepositories(gitblit.getRepositories());
 		dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets);
+		List<String> allLocalBranches = new ArrayList<String>();
+		allLocalBranches.add(Constants.DEFAULT_BRANCH);
+		allLocalBranches.addAll(repository.getLocalBranches());
+		dialog.setIndexedBranches(allLocalBranches, repository.indexedBranches);
+		dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(repository),
+				gitblit.getPreReceiveScriptsInherited(repository), repository.preReceiveScripts);
+		dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(repository),
+				gitblit.getPostReceiveScriptsInherited(repository), repository.postReceiveScripts);
+		if (gitblit.getSettings().hasKey(Keys.groovy.customFields)) {
+			Map<String, String> map = gitblit.getSettings().get(Keys.groovy.customFields).getMap();
+			dialog.setCustomFields(repository, map);
+		}
 		dialog.setVisible(true);
 		final RepositoryModel revisedRepository = dialog.getRepository();
 		final List<String> permittedUsers = dialog.getPermittedUsers();
+		final List<String> permittedTeams = dialog.getPermittedTeams();
 		if (revisedRepository == null) {
 			return;
 		}
@@ -416,10 +482,11 @@
 			@Override
 			protected Boolean doRequest() throws IOException {
 				boolean success = gitblit.updateRepository(repository.name, revisedRepository,
-						permittedUsers);
+						permittedUsers, permittedTeams);
 				if (success) {
 					gitblit.refreshRepositories();
 					gitblit.refreshUsers();
+					gitblit.refreshTeams();
 				}
 				return success;
 			}
@@ -428,6 +495,7 @@
 			protected void onSuccess() {
 				updateTable(false);
 				updateUsersTable();
+				updateTeamsTable();
 			}
 
 			@Override
@@ -460,6 +528,7 @@
 					if (success) {
 						gitblit.refreshRepositories();
 						gitblit.refreshUsers();
+						gitblit.refreshTeams();
 					}
 					return success;
 				}
@@ -468,6 +537,7 @@
 				protected void onSuccess() {
 					updateTable(false);
 					updateUsersTable();
+					updateTeamsTable();
 				}
 
 				@Override

--
Gitblit v1.9.1