(refs #10) Add notification. Notification of when merging is not

implemented yet.
This commit is contained in:
shimamoto
2013-09-02 07:40:41 +09:00
parent f5520e7991
commit 3fc792fcf8
3 changed files with 39 additions and 26 deletions

View File

@@ -112,14 +112,12 @@ trait IssuesControllerBase extends ControllerBase {
// record activity // record activity
recordCreateIssueActivity(owner, name, userName, issueId, form.title) recordCreateIssueActivity(owner, name, userName, issueId, form.title)
val uri = s"/${owner}/${name}/issues/${issueId}"
// notifications // notifications
Notifier().toNotify(repository, issueId, form.content.getOrElse("")){ Notifier().toNotify(repository, issueId, form.content.getOrElse("")){
Notifier.msgIssue(baseUrl + uri) Notifier.msgIssue(s"${baseUrl}/${owner}/${name}/issues/${issueId}")
} }
redirect(uri) redirect(s"/${owner}/${name}/issues/${issueId}")
}) })
ajaxPost("/:owner/:repository/issues/edit/:id", issueEditForm)(readableUsersOnly { (form, repository) => ajaxPost("/:owner/:repository/issues/edit/:id", issueEditForm)(readableUsersOnly { (form, repository) =>
@@ -136,21 +134,15 @@ trait IssuesControllerBase extends ControllerBase {
post("/:owner/:repository/issue_comments/new", commentForm)(readableUsersOnly { (form, repository) => post("/:owner/:repository/issue_comments/new", commentForm)(readableUsersOnly { (form, repository) =>
handleComment(form.issueId, Some(form.content), repository)() map { case (issue, id) => handleComment(form.issueId, Some(form.content), repository)() map { case (issue, id) =>
if(issue.isPullRequest){ redirect(s"/${repository.owner}/${repository.name}/${
redirect(s"/${repository.owner}/${repository.name}/pull/${form.issueId}#comment-${id}") if(issue.isPullRequest) "pull" else "issues"}/${form.issueId}#comment-${id}")
} else {
redirect(s"/${repository.owner}/${repository.name}/issues/${form.issueId}#comment-${id}")
}
} getOrElse NotFound } getOrElse NotFound
}) })
post("/:owner/:repository/issue_comments/state", issueStateForm)(readableUsersOnly { (form, repository) => post("/:owner/:repository/issue_comments/state", issueStateForm)(readableUsersOnly { (form, repository) =>
handleComment(form.issueId, form.content, repository)() map { case (issue, id) => handleComment(form.issueId, form.content, repository)() map { case (issue, id) =>
if(issue.isPullRequest){ redirect(s"/${repository.owner}/${repository.name}/${
redirect(s"/${repository.owner}/${repository.name}/pull/${form.issueId}#comment-${id}") if(issue.isPullRequest) "pull" else "issues"}/${form.issueId}#comment-${id}")
} else {
redirect(s"/${repository.owner}/${repository.name}/issues/${form.issueId}#comment-${id}")
}
} getOrElse NotFound } getOrElse NotFound
}) })
@@ -289,9 +281,10 @@ trait IssuesControllerBase extends ControllerBase {
val (action, recordActivity) = val (action, recordActivity) =
getAction(issue) getAction(issue)
.collect { .collect {
case "close" if(issue.isPullRequest) => true -> (Some("close") -> Some(recordClosePullRequestActivity _)) case "close" => true -> (Some("close") ->
case "close" if(!issue.isPullRequest) => true -> (Some("close") -> Some(recordCloseIssueActivity _)) Some(if(issue.isPullRequest) recordClosePullRequestActivity _ else recordCloseIssueActivity _))
case "reopen" => false -> (Some("reopen") -> Some(recordReopenIssueActivity _)) case "reopen" => false -> (Some("reopen") ->
Some(recordReopenIssueActivity _))
} }
.map { case (closed, t) => .map { case (closed, t) =>
updateClosed(owner, name, issueId, closed) updateClosed(owner, name, issueId, closed)
@@ -307,15 +300,29 @@ trait IssuesControllerBase extends ControllerBase {
} }
// record activity // record activity
content foreach { content => content foreach {
if(issue.isPullRequest) (if(issue.isPullRequest) recordCommentPullRequestActivity _ else recordCommentIssueActivity _)
recordCommentPullRequestActivity(owner, name, userName, issueId, content) (owner, name, userName, issueId, _)
else
recordCommentIssueActivity(owner, name, userName, issueId, content)
} }
recordActivity foreach ( _ (owner, name, userName, issueId, issue.title) ) recordActivity foreach ( _ (owner, name, userName, issueId, issue.title) )
(issue, commentId) // notifications
Notifier() match {
case f =>
content foreach {
f.toNotify(repository, issueId, _){
Notifier.msgComment(s"${baseUrl}/${owner}/${name}/${
if(issue.isPullRequest) "pull" else "issues"}/${issueId}#comment-${commentId}")
}
}
action foreach {
f.toNotify(repository, issueId, _){
Notifier.msgStatus(s"${baseUrl}/${owner}/${name}/issues/${issueId}")
}
}
}
issue -> commentId
} }
} }

View File

@@ -1,6 +1,6 @@
package app package app
import util.{LockUtil, CollaboratorsAuthenticator, JGitUtil, ReferrerAuthenticator} import util.{LockUtil, CollaboratorsAuthenticator, JGitUtil, ReferrerAuthenticator, Notifier}
import util.Directory._ import util.Directory._
import util.Implicits._ import util.Implicits._
import service._ import service._
@@ -303,8 +303,14 @@ trait PullRequestsControllerBase extends ControllerBase {
.call .call
} }
// record activity
recordPullRequestActivity(repository.owner, repository.name, loginUserName, issueId, form.title) recordPullRequestActivity(repository.owner, repository.name, loginUserName, issueId, form.title)
// notifications
Notifier().toNotify(repository, issueId, form.content.getOrElse("")){
Notifier.msgPullRequest(s"${baseUrl}/${repository.owner}/${repository.name}/pull/${issueId}")
}
redirect(s"/${repository.owner}/${repository.name}/pull/${issueId}") redirect(s"/${repository.owner}/${repository.name}/pull/${issueId}")
}) })

View File

@@ -55,8 +55,8 @@ object Notifier {
|<a href="${url}">View it on GitBucket</a> |<a href="${url}">View it on GitBucket</a>
""".stripMargin """.stripMargin
def msgStatus(id: Int, url: String) = (content: String) => s""" def msgStatus(url: String) = (content: String) => s"""
|${content} <a href="${url}">#${id}</a> |${content} <a href="${url}">#${url split('/') last}</a>
""".stripMargin """.stripMargin
} }