Custom Notifications Language Reference
Local Variables
Local variables can be used, but not changed by the user. Local variables are predefined and read-only.
Local Variable | Type | Description |
---|---|---|
header | string | Notification's header, short text identify the notification type (available values: created/updated/commented/voted/tagged, etc.). Variable is used in default email subject template. |
from | User | Notification sender's info |
to | User | Notification recipient's info |
application.name | string | Evaluates to "YouTrack" |
application.version | string | Evaluates to the current version |
application.build | string | Evaluates to build number |
reason | string | Evaluates to description of the reason a user receives notification. Description form differs in jabber and email notifications. |
issue | Issue | Evaluates to an issue, about which notification is sent. |
change | IssueChange | Contains info about changes (issue project, summary, description, custom fields, visibility group, links, attachments) that initiated notification. |
comment | Comment | Evaluates to an edited or posted comment, about which notification is sent. |
comment_updated | boolean | true - comment has been edited, false - new comment has been posted |
tag | Tag | Evaluates to an tag, which has been added to or removed from an issue. |
untag | boolean | indicator that issue has been tagged/untagged |
unvote | boolean | indicates that issue has been voted/unvoted |
project | Project | Imported project or project failed to import (id, full name, issues, leader...). Variable is used in the "Import status" notification. |
exception | Throwable | Java Throwable object |
message | string | text of the message in the "Import status" notification. |
Directives
You use FTL tags to call directives. Besides build-in directives like the #list
directive (Built-in directives), you can define your own directives in Freemarker. For more information, see (User-Defined directives manual).
- wiki process embeded text using Wiki syntax and keywords. Directive apply html escaping.
parameter no parameters
body text to process
Example:
@wikisolidhtml
<#escape x as x?html>
...
<@wiki><#noescape>${comment.text}</#noescape></@wiki>
...
</#escape x as x?html>
- diff render html element presenting text change. Mark deleted and added sections of text with given styles.
- parameters:
oldText old version of text
newText new version of text
insStyle html style of inserted parts of text
delStyle html style of deleted parts of text
body no body
- parameters:
Example:
@diffsolidhtml
<@diff oldText=change.before.summary
newText=change.after.summary
insStyle="background-color: #E6FFE6;"
delStyle="background-color: #FFE6E6;"/>
- stacktrace render the html component representing stacktrace of Throwable
- parameters:
throwable instance of Throwable Java class
body no body
- parameters:
Example:
@stacktracesolidhtml
<div><pre><@stacktrace throwable=exception/></pre></div>
Utils
Everywhere the type of returned value is
list<?>
, you can iterate over method result using#list
directive.
Method Summary | |
---|---|
static string | getAttachmentUrl(Attachment attachment) |
static string | getAvatarUrl(User user) |
static string | getCommentReplyUrl(Comment comment) |
static string | getCommentUrl(Comment comment) |
static list<ProjectCustomField> | getCustomFields(Issue issue) |
static Issue | getDuplicate(Issue source) |
static string | getEditProjectUrl(Project project) |
static list<Tag> | getExplicitTags(Issue issue) |
static int | getInvisibleAttachmentsCount(Issue issue) |
static string | getIssuesUrl(Project project) |
static string | getJiraIntegrationUrl() |
static list<Issue> | getLinkedIssues(Issue source, string linkRole) |
static list<string> | getLinkRoles(Issue source) |
static string | getPossessiveName(User you, User from) |
static string | getResolveStatus(Issue issue) |
static string | getSettingUrl(User user) |
static string | getStarSrc(Issue issue) return URL of 'Star' tag image resource |
static string | getTaggedIssuesUrl(Tag tag) |
static string | getTrimmedTagName(Tag tag) |
static string | getUrl(Issue issue) |
static list<Attachment> | getVisibleAttachments(Issue issue) |
static boolean | hasLinks(Issue issue) |
static string | inUserTimeZone(instant time) |
static boolean | isFixed(Issue issue) |