@** * 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())
  • }