@**
* Yona, 21st Century Project Hosting SW
*
* Copyright Yona & Yobi Authors & NAVER Corp. & NAVER LABS Corp.
* https://yona.io
**@
@(event: IssueEvent, project:Project, issue:Issue, previousEvent: IssueEvent = null)
@import org.apache.commons.lang3.StringUtils
@import utils.TemplateHelper._
@import models.enumeration.EventType._
@avatarByLoginId(loginId: String, loginName: String, sameTypeAsPrevious: Boolean = false) = {
}
@linkToUser(loginId: String, loginName: String, showAvatar: Boolean = true) = {
@loginId match {
case (loginId: String) => {
@if(showAvatar) {
@avatarByLoginId(loginId, loginName)
}
@loginName
}
case _ => { Anonymous }
}
}
@milestoneSpan(project: Project, milestone: Milestone) = {
@milestone.title
}
@noMilestoneSpan() = {
@Messages("common.none")
}
@linkOfMilestone(milestoneId: String, project: Project) = @{
val milestone = Milestone.findById(Long.valueOf(milestoneId))
if(milestone == null || milestone.isNullMilestone) {
noMilestoneSpan
} else {
milestoneSpan(project, milestone)
}
}
@issueLabelBox(categoryAndName: String, project: Project) = @{
val splitedCategoryAndName = categoryAndName.split(" - ")
if(splitedCategoryAndName.length != 2) {
categoryAndName
} else {
var categoryName = splitedCategoryAndName(0).trim
var labelName = splitedCategoryAndName(1).split(" #")(0).trim
val issueLabel = IssueLabel.findByName(labelName, categoryName, project)
if(issueLabel != null) {
val labelColor = issueLabel.color
s"
$labelName
"
} else {
labelName
}
}
}
@assginedMesssage(newValue: String, user: User) = @{
val LoginId = user.loginId
newValue match {
case LoginId => "issue.event.assignedToMe"
case _: String => "issue.event.assigned"
case _ => "issue.event.unassigned"
}
}
@linkToPullRequest(pull: PullRequest) = {
@Messages("pullRequest")
-@pull.number @pull.title
}
@linkToProject(owner: String, name: String) = {
@owner/@name
}
@linkToCommit(commitId: String) = {
@Messages("code.commits") @{
"@"
}@commitId
}
@isAddingEvent(event: IssueEvent) = @{
event != null && StringUtils.isBlank(event.oldValue) && StringUtils.isNotBlank(event.newValue)
}
@isDeletingEvent(event: IssueEvent) = @{
event != null && StringUtils.isBlank(event.newValue) && StringUtils.isNotBlank(event.oldValue)
}
@isSameEventTypeAsPrevious(event: IssueEvent, previousEvent: IssueEvent) = @{
previousEvent != null && event.eventType == previousEvent.eventType
}
@isSameEventTypeAndSameAction(event: IssueEvent, previousEvent: IssueEvent) = @{
isSameEventTypeAsPrevious(event, previousEvent) && (
isAddingEvent(event) && isAddingEvent(previousEvent)
|| isDeletingEvent(event) && isDeletingEvent(previousEvent)
)
}
@if(event.eventType != ISSUE_BODY_CHANGED) {
@defining(User.findByLoginId(event.senderLoginId)) { user =>
@event.eventType match {
case ISSUE_STATE_CHANGED => {
@Messages("issue.state." + event.newValue)
@Html(Messages("issue.event." + event.newValue, linkToUser(user.loginId, user.getDisplayName)))
}
case ISSUE_ASSIGNEE_CHANGED => {
@Messages("issue.state.assigned")
@Html(Messages(assginedMesssage(event.newValue, user), linkToUser(user.loginId, user.getDisplayName), linkToUser(event.newValue, User.findByLoginId(event.newValue).getDisplayName, true)))
}
case ISSUE_MILESTONE_CHANGED => {
@Messages("issue.update.milestone.id")
@Html(Messages("issue.event.milestone.changed", linkToUser(user.loginId, user.getDisplayName), linkOfMilestone(event.newValue, project)))
}
case ISSUE_REFERRED_FROM_COMMIT => {
@Messages("issue.event.referred.title")
@Html(Messages("issue.event.referred", linkToUser(user.loginId, user.getDisplayName), linkToCommit(event.newValue)))
}
case ISSUE_MOVED => {
@Messages("issue.event.moved.title")
@Html(Messages("issue.event.moved", linkToUser(user.loginId, user.getDisplayName), linkToProject(event.oldValue.split("/")(0), event.oldValue.split("/")(1))))
}
case ISSUE_REFERRED_FROM_PULL_REQUEST => {
@Messages("issue.event.referred.title")
@defining(PullRequest.findById(Long.valueOf(event.newValue))) { pull =>
@Html(Messages("issue.event.referred", linkToUser(user.loginId, user.getDisplayName), linkToPullRequest(pull)))
}
}
case ISSUE_SHARER_CHANGED => {
@if(isAddingEvent(event)) {
@if(isSameEventTypeAndSameAction(event, previousEvent)){
} else {
@Messages("issue.sharer")
}
@Html(Messages("issue.event.sharer.added", linkToUser(user.loginId, user.getPureNameOnly), linkToUser(event.newValue, User.findByLoginId(event.newValue).getPureNameOnly)))
} else {
@if(isSameEventTypeAndSameAction(event, previousEvent)){
} else {
@Messages("issue.event.sharer.deleted.title")
}
@Html(Messages("issue.event.sharer.deleted", linkToUser(user.loginId, user.getPureNameOnly), linkToUser(event.oldValue, User.findByLoginId(event.oldValue).getPureNameOnly)))
}
}
case ISSUE_LABEL_CHANGED => {
@if(isAddingEvent(event)) {
@if(isSameEventTypeAndSameAction(event, previousEvent)) {
} else {
@Messages("issue.event.label.added.title")
}
@Html(Messages("issue.event.label.added", linkToUser(user.loginId, user.getPureNameOnly), issueLabelBox(event.newValue, project)))
} else {
@if(isSameEventTypeAndSameAction(event, previousEvent)) {
} else {
@Messages("issue.event.label.deleted.title")
}
@Html(Messages("issue.event.label.deleted", linkToUser(user.loginId, user.getPureNameOnly), issueLabelBox(event.oldValue, project)))
}
}
case _ => {
@event.newValue by @linkToUser(user.loginId, user.getDisplayName)
}
}
}
@utils.TemplateHelper.agoOrDateString(event.getDate())
}