From bfc22d47158b685ff8c6a686faf0f213a65fa0e1 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gmail.com>
Date: Thu, 25 Sep 2014 08:22:32 -0400
Subject: [PATCH] Merged #186 "Support email subject-line links"

---
 src/main/java/com/gitblit/tickets/viewTicket.html     |   12 ++++++++++++
 src/main/java/com/gitblit/tickets/TicketNotifier.java |    9 ++++++++-
 2 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/gitblit/tickets/TicketNotifier.java b/src/main/java/com/gitblit/tickets/TicketNotifier.java
index 07371b1..5979cf2 100644
--- a/src/main/java/com/gitblit/tickets/TicketNotifier.java
+++ b/src/main/java/com/gitblit/tickets/TicketNotifier.java
@@ -135,6 +135,7 @@
 			StringBuilder html = new StringBuilder();
 			html.append("<head>");
 			html.append(readStyle());
+			html.append(readViewTicketAction(ticket));
 			html.append("</head>");
 			html.append("<body>");
 			html.append(MarkdownUtils.transformGFM(settings, markdown, ticket.repository));
@@ -596,7 +597,7 @@
 
 		// respect the author's email preference
 		UserModel lastAuthor = userManager.getUserModel(lastChange.author);
-		if (!lastAuthor.getPreferences().isEmailMeOnMyTicketChanges()) {
+		if (lastAuthor != null && !lastAuthor.getPreferences().isEmailMeOnMyTicketChanges()) {
 			toAddresses.remove(lastAuthor.emailAddress);
 			ccAddresses.remove(lastAuthor.emailAddress);
 		}
@@ -613,6 +614,12 @@
 		return sb.toString();
 	}
 
+	protected String readViewTicketAction(TicketModel ticket) {
+		String action = readResource("viewTicket.html");
+		action = action.replace("${url}", ticketService.getTicketUrl(ticket));
+		return action;
+	}
+
 	protected String readResource(String resource) {
 		StringBuilder sb = new StringBuilder();
 		InputStream is = null;
diff --git a/src/main/java/com/gitblit/tickets/viewTicket.html b/src/main/java/com/gitblit/tickets/viewTicket.html
new file mode 100644
index 0000000..54e091c
--- /dev/null
+++ b/src/main/java/com/gitblit/tickets/viewTicket.html
@@ -0,0 +1,12 @@
+<script type="application/ld+json">
+{
+  "@context": "http://schema.org",
+  "@type": "EmailMessage",
+  "description": "View this Ticket in Gitblit",
+  "action": {
+    "@type": "ViewAction",
+    "url": "${url}",
+    "name": "View Ticket"
+  }
+}
+</script>

--
Gitblit v1.9.1