From cb285cbfddfc0b633d6b8cdb4dc0d2bd2b8b51ef Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 05 Jan 2012 17:34:05 -0500
Subject: [PATCH] Fixed bug in receive hook for repositories in subfolders

---
 src/com/gitblit/client/RepositoriesPanel.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 48 insertions(+), 12 deletions(-)

diff --git a/src/com/gitblit/client/RepositoriesPanel.java b/src/com/gitblit/client/RepositoriesPanel.java
index 3e156e9..104010d 100644
--- a/src/com/gitblit/client/RepositoriesPanel.java
+++ b/src/com/gitblit/client/RepositoriesPanel.java
@@ -134,12 +134,21 @@
 			}
 		});
 
+		final JButton logRepository = new JButton(Translation.get("gb.log") + "...");
+		logRepository.setEnabled(false);
+		logRepository.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				RepositoryModel model = getSelectedRepositories().get(0);
+				showSearchDialog(false, model);
+			}
+		});
+
 		final JButton searchRepository = new JButton(Translation.get("gb.search") + "...");
 		searchRepository.setEnabled(false);
 		searchRepository.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
 				RepositoryModel model = getSelectedRepositories().get(0);
-				searchRepository(model);
+				showSearchDialog(true, model);
 			}
 		});
 
@@ -173,18 +182,20 @@
 					return;
 				}
 				boolean singleSelection = table.getSelectedRowCount() == 1;
-				boolean selected = table.getSelectedRow() > -1;				
+				boolean selected = table.getSelectedRow() > -1;
 				if (singleSelection) {
 					RepositoryModel repository = getSelectedRepositories().get(0);
 					browseRepository.setEnabled(repository.hasCommits);
+					logRepository.setEnabled(repository.hasCommits);
 					searchRepository.setEnabled(repository.hasCommits);
 					subscribeRepository.setEnabled(repository.hasCommits);
 				} else {
 					browseRepository.setEnabled(false);
+					logRepository.setEnabled(false);
 					searchRepository.setEnabled(false);
 					subscribeRepository.setEnabled(false);
 				}
-				delRepository.setEnabled(selected);				
+				delRepository.setEnabled(selected);
 				if (selected) {
 					int viewRow = table.getSelectedRow();
 					int modelRow = table.convertRowIndexToModel(viewRow);
@@ -233,6 +244,7 @@
 		repositoryControls.add(editRepository);
 		repositoryControls.add(delRepository);
 		repositoryControls.add(subscribeRepository);
+		repositoryControls.add(logRepository);
 		repositoryControls.add(searchRepository);
 
 		setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
@@ -265,6 +277,8 @@
 	protected abstract void subscribeFeeds(List<FeedModel> feeds);
 
 	protected abstract void updateUsersTable();
+
+	protected abstract void updateTeamsTable();
 
 	protected void disableManagement() {
 		createRepository.setVisible(false);
@@ -337,14 +351,20 @@
 	 * 
 	 */
 	protected void createRepository() {
-		EditRepositoryDialog dialog = new EditRepositoryDialog();
+		EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion());
 		dialog.setLocationRelativeTo(RepositoriesPanel.this);
 		dialog.setUsers(null, gitblit.getUsernames(), null);
+		dialog.setTeams(gitblit.getTeamnames(), null);
 		dialog.setRepositories(gitblit.getRepositories());
 		dialog.setFederationSets(gitblit.getFederationSets(), 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;
 		}
@@ -353,11 +373,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;
@@ -367,6 +391,7 @@
 			protected void onSuccess() {
 				updateTable(false);
 				updateUsersTable();
+				updateTeamsTable();
 			}
 
 			@Override
@@ -385,16 +410,23 @@
 	 * @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);
+		dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(repository),
+				gitblit.getPreReceiveScriptsInherited(repository), repository.preReceiveScripts);
+		dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(repository),
+				gitblit.getPostReceiveScriptsInherited(repository), repository.postReceiveScripts);
 		dialog.setVisible(true);
 		final RepositoryModel revisedRepository = dialog.getRepository();
 		final List<String> permittedUsers = dialog.getPermittedUsers();
+		final List<String> permittedTeams = dialog.getPermittedTeams();
 		if (revisedRepository == null) {
 			return;
 		}
@@ -404,10 +436,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;
 			}
@@ -416,6 +449,7 @@
 			protected void onSuccess() {
 				updateTable(false);
 				updateUsersTable();
+				updateTeamsTable();
 			}
 
 			@Override
@@ -448,6 +482,7 @@
 					if (success) {
 						gitblit.refreshRepositories();
 						gitblit.refreshUsers();
+						gitblit.refreshTeams();
 					}
 					return success;
 				}
@@ -456,6 +491,7 @@
 				protected void onSuccess() {
 					updateTable(false);
 					updateUsersTable();
+					updateTeamsTable();
 				}
 
 				@Override
@@ -467,12 +503,12 @@
 		}
 	}
 
-	protected void searchRepository(final RepositoryModel repository) {
-		SearchDialog searchDialog = new SearchDialog(gitblit);
+	private void showSearchDialog(boolean isSearch, final RepositoryModel repository) {
+		final SearchDialog dialog = new SearchDialog(gitblit, isSearch);
 		if (repository != null) {
-			searchDialog.selectRepository(repository);
+			dialog.selectRepository(repository);
 		}
-		searchDialog.setLocationRelativeTo(this);
-		searchDialog.setVisible(true);
+		dialog.setLocationRelativeTo(this);
+		dialog.setVisible(true);
 	}
 }

--
Gitblit v1.9.1