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/ProjectRepositoryPanel.java |   30 +++++++++++++++++++++++-------
 1 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
index a0f8ac4..2c84ac0 100644
--- a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
+++ b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
@@ -145,20 +145,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)) {
 							// redirect to the owning page
-							if (entry.isPersonalRepository()) {
-								setResponsePage(getPage().getClass(), WicketUtils.newUsernameParameter(entry.projectPath.substring(1)));
+							if (model.isPersonalRepository()) {
+								setResponsePage(getPage().getClass(), WicketUtils.newUsernameParameter(model.projectPath.substring(1)));
 							} else {
-								setResponsePage(getPage().getClass(), WicketUtils.newProjectParameter(entry.projectPath));
+								setResponsePage(getPage().getClass(), WicketUtils.newProjectParameter(model.projectPath));
 							}
 						} 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(
-						localizer.getString("gb.deleteRepository", parent), entry)));
+				if (deleteLink.isEnabled()) {
+					deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
+							localizer.getString("gb.deleteRepository", parent), entry)));
+				}
 				repositoryLinks.add(deleteLink);
 			}
 		} else {

--
Gitblit v1.9.1