Use a template to set the contents of the CommentEmails.
Add an admin editable Comment.vm template used to format the
contents of the comment emails.
Change-Id: Ic8e9cf6c3b60ae0c4a0e8a05537cf308a40ee694
diff --git a/Documentation/config-mail.txt b/Documentation/config-mail.txt
index 5d38ed7..3a133d3 100644
--- a/Documentation/config-mail.txt
+++ b/Documentation/config-mail.txt
@@ -37,6 +37,12 @@
The `ChangeSubject.vm` template will determine the contents of the email
subject line for ALL emails related to changes.
+Comment.vm
+~~~~~~~~~~
+
+The `Comment.vm` template will determine the contents of the email related to
+a user submitting comments on changes. It is a `ChangeEmail`: see
+
Merged.vm
~~~~~~~~~
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
index 44fd88a..87377e0 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/SitePathInitializer.java
@@ -87,6 +87,7 @@
extractMailExample("ChangeFooter.vm");
extractMailExample("ChangeSubject.vm");
+ extractMailExample("Comment.vm");
extractMailExample("Merged.vm");
if (!ui.isBatch()) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java
index 3c78e17..acfb55b 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java
@@ -174,7 +174,7 @@
}
/** Get a link to the change; null if the server doesn't know its own address. */
- protected String getChangeUrl() {
+ public String getChangeUrl() {
if (change != null && getGerritUrl() != null) {
final StringBuilder r = new StringBuilder();
r.append(getGerritUrl());
@@ -208,7 +208,7 @@
}
/** Get the text of the "cover letter", from {@link ChangeMessage}. */
- protected String getCoverLetter() {
+ public String getCoverLetter() {
if (changeMessage != null) {
final String txt = changeMessage.getMessage();
if (txt != null) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/CommentSender.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/CommentSender.java
index 8783d7c..d3c3b7a 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/CommentSender.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/CommentSender.java
@@ -66,19 +66,12 @@
@Override
protected void formatChange() throws EmailException {
- if (!"".equals(getCoverLetter()) || !inlineComments.isEmpty()) {
- appendText("Comments on Patch Set " + patchSet.getPatchSetId() + ":\n");
- appendText("\n");
- formatCoverLetter();
- formatInlineComments();
- if (getChangeUrl() != null) {
- appendText("To respond, visit " + getChangeUrl() + "\n");
- appendText("\n");
- }
- }
+ appendText(velocifyFile("Comment.vm"));
}
- private void formatInlineComments() {
+ public String getInlineComments() {
+ StringBuilder cmts = new StringBuilder();
+
final Repository repo = getRepository();
try {
final PatchList patchList = repo != null ? getPatchList() : null;
@@ -91,10 +84,10 @@
final short side = c.getSide();
if (!pk.equals(currentFileKey)) {
- appendText("....................................................\n");
- appendText("File ");
- appendText(pk.get());
- appendText("\n");
+ cmts.append("....................................................\n");
+ cmts.append("File ");
+ cmts.append(pk.get());
+ cmts.append("\n");
currentFileKey = pk;
if (patchList != null) {
@@ -109,26 +102,27 @@
}
}
- appendText("Line " + lineNbr);
+ cmts.append("Line " + lineNbr);
if (currentFileData != null) {
try {
final String lineStr = currentFileData.getLine(side, lineNbr);
- appendText(": ");
- appendText(lineStr);
+ cmts.append(": ");
+ cmts.append(lineStr);
} catch (Throwable cce) {
// Don't quote the line if we can't safely convert it.
}
}
- appendText("\n");
+ cmts.append("\n");
- appendText(c.getMessage().trim());
- appendText("\n\n");
+ cmts.append(c.getMessage().trim());
+ cmts.append("\n\n");
}
} finally {
if (repo != null) {
repo.close();
}
}
+ return cmts.toString();
}
private Repository getRepository() {
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Comment.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Comment.vm
new file mode 100644
index 0000000..b7ba89e
--- /dev/null
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Comment.vm
@@ -0,0 +1,47 @@
+## Copyright (C) 2010 The Android Open Source Project
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+##
+## Template Type:
+## -------------
+## This is a velocity mail template, see: http://velocity.apache.org and the
+## gerrit-docs:config-mail.txt for more info on modifying gerrit mail templates.
+##
+## Template File Names and extensions:
+## ----------------------------------
+## Gerrit will use templates ending in ".vm" but will ignore templates ending
+## in ".vm.example". If a .vm template does not exist, the default internal
+## gerrit template which is the same as the .vm.example will be used. If you
+## want to override the default template, copy the .vm.exmaple file to a .vm
+## file and edit it appropriately.
+##
+## This Template:
+## --------------
+## The Comment.vm template will determine the contents of the email related to
+## a user submitting comments on changes. It is a ChangeEmail: see
+## ChangeSubject.vm and ChangeFooter.vm.
+##
+#if ($email.coverLetter || $email.inlineComments)
+Comments on Patch Set $patchSet.patchSetId:
+
+#if ($email.coverLetter)
+$email.coverLetter
+
+#end
+#if($email.inlineComments)$email.inlineComments#end
+#if ($email.changeUrl)
+To respond, visit $email.changeUrl
+
+#end
+#end