From 01995873731e7efa517ca66246547b3084f8d529 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 01 May 2014 14:27:28 -0400
Subject: [PATCH] Allow milestone deletion within the edit milestone page

---
 src/main/java/com/gitblit/tickets/ITicketService.java |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/gitblit/tickets/ITicketService.java b/src/main/java/com/gitblit/tickets/ITicketService.java
index e1a377a..cce805e 100644
--- a/src/main/java/com/gitblit/tickets/ITicketService.java
+++ b/src/main/java/com/gitblit/tickets/ITicketService.java
@@ -643,7 +643,7 @@
 	public synchronized boolean renameMilestone(RepositoryModel repository, String oldName, String newName, String createdBy) {
 		return renameMilestone(repository, oldName, newName, createdBy, true);
 	}
-	
+
 	/**
 	 * Renames a milestone.
 	 *
@@ -714,6 +714,7 @@
 		}
 		Repository db = null;
 		try {
+			TicketMilestone tm = getMilestone(repository, milestone);
 			db = repositoryManager.getRepository(repository.name);
 			StoredConfig config = db.getConfig();
 			config.unsetSection(MILESTONE, milestone);
@@ -721,6 +722,14 @@
 
 			milestonesCache.remove(repository.name);
 
+			for (QueryResult qr : tm.tickets) {
+				if (qr.isOpen()) {
+					// reset the milestone only for open tickets
+					Change change = new Change(createdBy);
+					change.setField(Field.milestone, "");
+					TicketModel ticket = updateTicket(repository, qr.number, change);
+				}
+			}
 			return true;
 		} catch (IOException e) {
 			log.error("failed to delete milestone " + milestone + " in " + repository, e);

--
Gitblit v1.9.1