From 99b43dffe86b635e97f625157083cee37ee921bf Mon Sep 17 00:00:00 2001
From: peto268 <peto268@gmail.com>
Date: Thu, 08 May 2014 13:40:41 -0400
Subject: [PATCH] Added option to disable deleting of non empty repositories through the user interface

---
 src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java |   28 ++++++++++++++++++++++------
 1 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java b/src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java
index be5d960..40cd77e 100644
--- a/src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java
+++ b/src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java
@@ -334,20 +334,36 @@
 
 						@Override
 						public void onClick() {
-							if (app().repositories().deleteRepositoryModel(entry)) {
+							// refresh the model
+							RepositoryModel model = app().repositories().getRepositoryModel(entry.name);
+							if (isDeleteAllowed(model) &&
+									app().repositories().deleteRepositoryModel(model)) {
 								if (dp instanceof SortableRepositoriesProvider) {
-									info(MessageFormat.format(getString("gb.repositoryDeleted"), entry));
-									((SortableRepositoriesProvider) dp).remove(entry);
+									info(MessageFormat.format(getString("gb.repositoryDeleted"), model));
+									((SortableRepositoriesProvider) dp).remove(model);
 								} else {
 									setResponsePage(getPage().getClass(), getPage().getPageParameters());
 								}
 							} else {
-								error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), entry));
+								error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), model));
 							}
 						}
+
+						@Override
+						public boolean isEnabled() {
+							return isDeleteAllowed(entry);
+						}
+
+						private boolean isDeleteAllowed(
+								final RepositoryModel model) {
+							return app().settings().getBoolean(Keys.web.allowDeletingNonEmptyRepositories, true)
+									|| !model.hasCommits;
+						}
 					};
-					deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
-							getString("gb.deleteRepository"), entry)));
+					if (deleteLink.isEnabled()) {
+						deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
+								getString("gb.deleteRepository"), entry)));
+					}
 					repositoryLinks.add(deleteLink);
 					row.add(repositoryLinks);
 				} else if (showOwner) {

--
Gitblit v1.9.1