From 4affd0a3a4fe086b31a87d56616f74093d2ac715 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 07 Mar 2014 14:59:02 -0500
Subject: [PATCH] Display an explanation in ticket page if the user can't propose commits

---
 src/main/java/com/gitblit/wicket/pages/TicketPage.html    |   16 ++++++++++++++++
 src/main/java/com/gitblit/wicket/pages/TicketPage.java    |   18 ++++++++++++++++--
 src/main/java/com/gitblit/wicket/GitBlitWebApp.properties |    8 +++++++-
 3 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties b/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
index 1a907ba..e52623e 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
@@ -662,4 +662,10 @@
 gb.labels = labels
 gb.reviewers = reviewers
 gb.voters = voters
-gb.mentions = mentions
\ No newline at end of file
+gb.mentions = mentions
+gb.canNotProposePatchset = can not propose a patchset
+gb.repositoryIsMirror = This repository is a read-only mirror.
+gb.repositoryIsFrozen = This repository is frozen.
+gb.repositoryDoesNotAcceptPatchsets = This repository does not accept patchsets.
+gb.serverDoesNotAcceptPatchsets = This server does not accept patchsets.
+gb.ticketIsClosed = This ticket is closed.
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.html b/src/main/java/com/gitblit/wicket/pages/TicketPage.html
index 6fcf96c..a2f105d 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.html
+++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.html
@@ -298,6 +298,22 @@
 </wicket:fragment>
 
 
+<!-- CAN NOT PROPOSE FRAGMENT -->
+<wicket:fragment wicket:id="canNotProposeFragment">
+	<div class="featureWelcome">
+		<div class="row">
+			<div class="icon span2 hidden-phone"><i class="fa fa-ban"></i></div>
+			<div class="span9">		
+				<h1><wicket:message key="gb.canNotProposePatchset"></wicket:message></h1>
+				<div class="markdown">
+					<p><span wicket:id="reason"></span></p>
+				</div>
+			</div>
+		</div>
+	</div>
+</wicket:fragment>
+
+
 <!-- PATCHSET FRAGMENT -->
 <wicket:fragment wicket:id="patchsetFragment">
 	<div class="row" style="padding: 0px 0px 20px;">
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.java b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
index 4be9e69..7b492dc 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
@@ -744,8 +744,22 @@
 				changeIdFrag.add(new Label("gitWorkflowSteps", getProposeWorkflow("propose_git.md", repoUrl, ticket.number)).setEscapeModelStrings(false));
 				add(changeIdFrag);
 			} else {
-				// ticket is resolved OR repository is rejecting new patchsets
-				add(new Label("patchset").setVisible(false));
+				// explain why you can't propose a patchset
+				Fragment fragment = new Fragment("patchset", "canNotProposeFragment", this);
+				String reason = "";
+				if (ticket.isClosed()) {
+					reason = getString("gb.ticketIsClosed");
+				} else if (repository.isMirror) {
+					reason = getString("gb.repositoryIsMirror");
+				} else if (repository.isFrozen) {
+					reason = getString("gb.repositoryIsFrozen");
+				} else if (!repository.acceptNewPatchsets) {
+					reason = getString("gb.repositoryDoesNotAcceptPatchsets");
+				} else {
+					reason = getString("gb.serverDoesNotAcceptPatchsets");
+				}
+				fragment.add(new Label("reason", reason));
+				add(fragment);
 			}
 		} else {
 			// show current patchset

--
Gitblit v1.9.1