From b4ed66fda03d83fd281ca9cbeae0a1c7785489e4 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 09 May 2014 09:55:19 -0400
Subject: [PATCH] Move delete repository function into the edit page

---
 src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java
index cd0da5f..412c0ec 100644
--- a/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java
@@ -42,6 +42,7 @@
 import org.apache.wicket.markup.html.form.IChoiceRenderer;
 import org.apache.wicket.markup.html.form.RadioChoice;
 import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.CompoundPropertyModel;
@@ -68,6 +69,7 @@
 import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.StringChoiceRenderer;
 import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.panels.BasePanel.JavascriptEventConfirmation;
 import com.gitblit.wicket.panels.BulletListPanel;
 import com.gitblit.wicket.panels.RegistrantPermissionsPanel;
 
@@ -614,6 +616,38 @@
 		cancel.setDefaultFormProcessing(false);
 		form.add(cancel);
 
+		// the user can delete if deletions are allowed AND the user is an admin or the personal owner
+		// assigned ownership is not sufficient to allow deletion
+		boolean canDelete = !isCreate && app().repositories().canDelete(repositoryModel)
+				&& (user.canAdmin() || user.isMyPersonalRepository(repositoryModel.name));
+
+		Link<Void> delete = new Link<Void>("delete") {
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onClick() {
+				RepositoryModel latestModel = app().repositories().getRepositoryModel(repositoryModel.name);
+				boolean canDelete = app().repositories().canDelete(latestModel);
+				if (canDelete) {
+					if (app().repositories().deleteRepositoryModel(latestModel)) {
+						info(MessageFormat.format(getString("gb.repositoryDeleted"), latestModel));
+						setResponsePage(RepositoriesPage.class);
+					} else {
+						error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), latestModel));
+					}
+				} else {
+					error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), latestModel));
+				}
+			}
+		};
+
+		if (canDelete) {
+			delete.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
+				getString("gb.deleteRepository"), repositoryModel)));
+		}
+		form.add(delete.setVisible(canDelete));
+
 		add(form);
 	}
 

--
Gitblit v1.9.1