From 7ae1fac1236d61c6b60d295bdc06caa654fa8098 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 05 Mar 2014 11:42:34 -0500
Subject: [PATCH] Allow changing status from edit ticket page

---
 src/main/java/com/gitblit/wicket/pages/EditTicketPage.java |   22 ++++++++++++++++++++++
 src/main/java/com/gitblit/wicket/pages/EditTicketPage.html |    1 +
 src/main/java/com/gitblit/wicket/pages/TicketPage.java     |    5 ++++-
 3 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/EditTicketPage.html b/src/main/java/com/gitblit/wicket/pages/EditTicketPage.html
index 424eece..b3c102d 100644
--- a/src/main/java/com/gitblit/wicket/pages/EditTicketPage.html
+++ b/src/main/java/com/gitblit/wicket/pages/EditTicketPage.html
@@ -39,6 +39,7 @@
 				</div>
 			</td></tr>
 			<tr><th><wicket:message key="gb.type"></wicket:message><span style="color:red;">*</span></th><td class="edit"><select class="input-large" wicket:id="type"></select></td></tr>
+			<tr><th><wicket:message key="gb.status"></wicket:message><span style="color:red;">*</span></th><td class="edit"><select class="input-large" wicket:id="status"></select></td></tr>
 			<tr wicket:id="responsible"></tr>
 			<tr wicket:id="milestone"></tr>
 			<tr wicket:id="mergeto"></tr>
diff --git a/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java b/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java
index aad1d6f..32b202f 100644
--- a/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java
@@ -72,6 +72,8 @@
 
 	private IModel<String> mergeToModel;
 
+	private IModel<Status> statusModel;
+
 	private IModel<TicketResponsible> responsibleModel;
 
 	private IModel<TicketMilestone> milestoneModel;
@@ -110,6 +112,7 @@
 		responsibleModel = Model.of();
 		milestoneModel = Model.of();
 		mergeToModel = Model.of(ticket.mergeTo == null ? "" : ticket.mergeTo);
+		statusModel = Model.of(ticket.status);
 
 		setStatelessHint(false);
 		setOutputMarkupId(true);
@@ -143,6 +146,12 @@
 				if (!ticket.body.equals(description)) {
 					// description change
 					change.setField(Field.body, description);
+				}
+
+				Status status = statusModel.getObject();
+				if (!ticket.status.equals(status)) {
+					// status change
+					change.setField(Field.status, status);
 				}
 
 				Type type = typeModel.getObject();
@@ -213,6 +222,19 @@
 			typeChoices = Arrays.asList(TicketModel.Type.choices());
 		}
 		form.add(new DropDownChoice<TicketModel.Type>("type", typeModel, typeChoices));
+
+		List<Status> statusChoices;
+		if (ticket.isClosed()) {
+			statusChoices = Arrays.asList(ticket.status, Status.Open);
+		} else if (ticket.isProposal()) {
+			statusChoices = Arrays.asList(TicketModel.Status.proposalWorkflow);
+		} else if (ticket.isBug()) {
+			statusChoices = Arrays.asList(TicketModel.Status.bugWorkflow);
+		} else {
+			statusChoices = Arrays.asList(TicketModel.Status.requestWorkflow);
+		}
+		form.add(new DropDownChoice<TicketModel.Status>("status", statusModel, statusChoices));
+
 		form.add(new TextField<String>("title", titleModel));
 		form.add(new TextField<String>("topic", topicModel));
 
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.java b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
index 3c1dbdf..07382ad 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
@@ -335,7 +335,10 @@
 			 * STATUS
 			 */
 			List<Status> choices = new ArrayList<Status>();
-			if (ticket.isProposal()) {
+			if (ticket.isClosed()) {
+				// re-open
+				choices.addAll(Arrays.asList(TicketModel.Status.Open));
+			} else if (ticket.isProposal()) {
 				choices.addAll(Arrays.asList(TicketModel.Status.proposalWorkflow));
 			} else if (ticket.isBug()) {
 				choices.addAll(Arrays.asList(TicketModel.Status.bugWorkflow));

--
Gitblit v1.9.1