From f685ea581f94373a63bcdc94ec417fdf92a95d68 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 30 Sep 2014 12:43:59 -0400
Subject: [PATCH] Merge branch 'ticket/129' into develop
---
src/main/java/com/gitblit/tickets/TicketNotifier.java | 42 +++++++++++++++++++++++++++++++++++++-----
1 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/gitblit/tickets/TicketNotifier.java b/src/main/java/com/gitblit/tickets/TicketNotifier.java
index 998461e..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));
@@ -204,7 +205,9 @@
} catch (Exception e) {
Logger.getLogger(getClass()).error("failed to get changed paths", e);
} finally {
- repo.close();
+ if (repo != null) {
+ repo.close();
+ }
}
String compareUrl = ticketService.getCompareUrl(ticket, base, patchset.tip);
@@ -213,6 +216,9 @@
// new proposal
pattern = "**{0}** is proposing a change.";
sb.append(MessageFormat.format(pattern, user.getDisplayName()));
+ fieldExclusions.add(Field.status);
+ fieldExclusions.add(Field.title);
+ fieldExclusions.add(Field.body);
} else {
// describe the patchset
if (patchset.isFF()) {
@@ -486,6 +492,7 @@
instructions = instructions.replace("${ticketRef}", ticketBranch);
instructions = instructions.replace("${patchsetRef}", patchsetBranch);
instructions = instructions.replace("${reviewBranch}", reviewBranch);
+ instructions = instructions.replace("${ticketBranch}", ticketBranch);
return instructions;
}
@@ -516,11 +523,18 @@
//
// Direct TO recipients
+ // reporter & responsible
//
+ Set<String> tos = new TreeSet<String>();
+ tos.add(ticket.createdBy);
+ if (!StringUtils.isEmpty(ticket.responsible)) {
+ tos.add(ticket.responsible);
+ }
+
Set<String> toAddresses = new TreeSet<String>();
- for (String name : ticket.getParticipants()) {
+ for (String name : tos) {
UserModel user = userManager.getUserModel(name);
- if (user != null) {
+ if (user != null && !user.disabled) {
if (!StringUtils.isEmpty(user.emailAddress)) {
if (user.canView(repository)) {
toAddresses.add(user.emailAddress);
@@ -532,12 +546,16 @@
}
}
}
- mailing.setRecipients(toAddresses);
//
// CC recipients
//
Set<String> ccs = new TreeSet<String>();
+
+ // repository owners
+ if (!ArrayUtils.isEmpty(repository.owners)) {
+ ccs.addAll(repository.owners);
+ }
// cc users mentioned in last comment
Change lastChange = ticket.changes.get(ticket.changes.size() - 1);
@@ -558,7 +576,7 @@
Set<String> ccAddresses = new TreeSet<String>();
for (String name : ccs) {
UserModel user = userManager.getUserModel(name);
- if (user != null) {
+ if (user != null && !user.disabled) {
if (!StringUtils.isEmpty(user.emailAddress)) {
if (user.canView(repository)) {
ccAddresses.add(user.emailAddress);
@@ -577,6 +595,14 @@
}
ccAddresses.addAll(settings.getStrings(Keys.mail.mailingLists));
+ // respect the author's email preference
+ UserModel lastAuthor = userManager.getUserModel(lastChange.author);
+ if (lastAuthor != null && !lastAuthor.getPreferences().isEmailMeOnMyTicketChanges()) {
+ toAddresses.remove(lastAuthor.emailAddress);
+ ccAddresses.remove(lastAuthor.emailAddress);
+ }
+
+ mailing.setRecipients(toAddresses);
mailing.setCCs(ccAddresses);
}
@@ -588,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;
--
Gitblit v1.9.1