mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-07 05:55:51 +01:00
(refs #11) Change the value to be set in the action.
This commit is contained in:
@@ -128,11 +128,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)
|
handleComment(form.issueId, Some(form.content), repository)() map { id =>
|
||||||
|
redirect("/%s/%s/issues/%d#comment-%d".format(repository.owner, repository.name, form.issueId, id))
|
||||||
|
} 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)
|
handleComment(form.issueId, form.content, repository)() map { id =>
|
||||||
|
redirect("/%s/%s/issues/%d#comment-%d".format(repository.owner, repository.name, form.issueId, id))
|
||||||
|
} getOrElse NotFound
|
||||||
})
|
})
|
||||||
|
|
||||||
ajaxPost("/:owner/:repository/issue_comments/edit/:id", commentForm)(readableUsersOnly { (form, repository) =>
|
ajaxPost("/:owner/:repository/issue_comments/edit/:id", commentForm)(readableUsersOnly { (form, repository) =>
|
||||||
@@ -209,20 +213,11 @@ trait IssuesControllerBase extends ControllerBase {
|
|||||||
})
|
})
|
||||||
|
|
||||||
post("/:owner/:repository/issues/batchedit/state")(collaboratorsOnly { repository =>
|
post("/:owner/:repository/issues/batchedit/state")(collaboratorsOnly { repository =>
|
||||||
val owner = repository.owner
|
val action = params.get("value")
|
||||||
val name = repository.name
|
params("checked").split(',') foreach { issueId =>
|
||||||
val userName = context.loginAccount.get.userName
|
handleComment(issueId.toInt, None, repository)( _ => action)
|
||||||
|
}
|
||||||
params.get("value") collect {
|
redirect("/%s/%s/issues".format(repository.owner, repository.name))
|
||||||
case s if s == "close" => (s.capitalize, Some(s), true)
|
|
||||||
case s if s == "reopen" => (s.capitalize, Some(s), false)
|
|
||||||
} map { case (content, action, closed) =>
|
|
||||||
params("checked").split(',') foreach { issueId =>
|
|
||||||
createComment(owner, name, userName, issueId.toInt, content, action)
|
|
||||||
updateClosed(owner, name, issueId.toInt, closed)
|
|
||||||
}
|
|
||||||
redirect("/%s/%s/issues".format(owner, name))
|
|
||||||
} getOrElse NotFound
|
|
||||||
})
|
})
|
||||||
|
|
||||||
post("/:owner/:repository/issues/batchedit/label")(collaboratorsOnly { repository =>
|
post("/:owner/:repository/issues/batchedit/label")(collaboratorsOnly { repository =>
|
||||||
@@ -258,18 +253,22 @@ trait IssuesControllerBase extends ControllerBase {
|
|||||||
private def isEditable(owner: String, repository: String, author: String)(implicit context: app.Context): Boolean =
|
private def isEditable(owner: String, repository: String, author: String)(implicit context: app.Context): Boolean =
|
||||||
hasWritePermission(owner, repository, context.loginAccount) || author == context.loginAccount.get.userName
|
hasWritePermission(owner, repository, context.loginAccount) || author == context.loginAccount.get.userName
|
||||||
|
|
||||||
private def handleComment(issueId: Int, content: Option[String], repository: RepositoryService.RepositoryInfo) = {
|
/**
|
||||||
|
* @see
|
||||||
|
*/
|
||||||
|
private def handleComment(issueId: Int, content: Option[String], repository: RepositoryService.RepositoryInfo)
|
||||||
|
(getAction: model.Issue => Option[String] =
|
||||||
|
p1 => params.get("action").filter(_ => isEditable(p1.userName, p1.repositoryName, p1.openedUserName))) = {
|
||||||
val owner = repository.owner
|
val owner = repository.owner
|
||||||
val name = repository.name
|
val name = repository.name
|
||||||
val userName = context.loginAccount.get.userName
|
val userName = context.loginAccount.get.userName
|
||||||
|
|
||||||
getIssue(owner, name, issueId.toString) map { issue =>
|
getIssue(owner, name, issueId.toString) map { issue =>
|
||||||
val (action, recordActivity) =
|
val (action, recordActivity) =
|
||||||
params.get("action")
|
getAction(issue)
|
||||||
.filter(_ => isEditable(owner, name, issue.openedUserName))
|
|
||||||
.collect {
|
.collect {
|
||||||
case s if s == "close" => true -> (Some(s) -> Some(recordCloseIssueActivity _))
|
case "close" => true -> (Some("close") -> Some(recordCloseIssueActivity _))
|
||||||
case s if s == "reopen" => false -> (Some(s) -> 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)
|
||||||
@@ -277,14 +276,19 @@ trait IssuesControllerBase extends ControllerBase {
|
|||||||
}
|
}
|
||||||
.getOrElse(None -> None)
|
.getOrElse(None -> None)
|
||||||
|
|
||||||
val commentId = createComment(owner, name, userName, issueId, content.getOrElse(action.get.capitalize), action)
|
val commentId = content
|
||||||
|
.map ( _ -> action.map( _ + "_comment" ).getOrElse("comment") )
|
||||||
|
.getOrElse ( action.get.capitalize -> action.get )
|
||||||
|
match {
|
||||||
|
case (content, action) => createComment(owner, name, userName, issueId, content, action)
|
||||||
|
}
|
||||||
|
|
||||||
// record activity
|
// record activity
|
||||||
content foreach ( recordCommentIssueActivity(owner, name, userName, issueId, _) )
|
content foreach ( recordCommentIssueActivity(owner, name, userName, issueId, _) )
|
||||||
recordActivity foreach ( _ (owner, name, userName, issueId, issue.title) )
|
recordActivity foreach ( _ (owner, name, userName, issueId, issue.title) )
|
||||||
|
|
||||||
redirect("/%s/%s/issues/%d#comment-%d".format(owner, name, issueId, commentId))
|
commentId
|
||||||
} getOrElse NotFound
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private def searchIssues(filter: String, repository: RepositoryService.RepositoryInfo) = {
|
private def searchIssues(filter: String, repository: RepositoryService.RepositoryInfo) = {
|
||||||
|
|||||||
Reference in New Issue
Block a user