mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 22:45:51 +01:00
Add user filter to issue search condition.
This commit is contained in:
@@ -29,22 +29,24 @@ trait IssuesControllerBase extends ControllerBase {
|
||||
get("/:owner/:repository/issues"){
|
||||
val owner = params("owner")
|
||||
val repository = params("repository")
|
||||
val sessionKey = "%s/%s/issues".format(owner, repository)
|
||||
|
||||
// retreive search condition
|
||||
val condition = if(request.getQueryString == null){
|
||||
session.get(sessionKey).getOrElse(IssueSearchCondition()).asInstanceOf[IssueSearchCondition]
|
||||
} else IssueSearchCondition(request)
|
||||
searchIssues(owner, repository, "all", None)
|
||||
}
|
||||
|
||||
session.put(sessionKey, condition)
|
||||
get("/:owner/:repository/issues/assigned/:userName"){
|
||||
val owner = params("owner")
|
||||
val repository = params("repository")
|
||||
val userName = params("userName")
|
||||
|
||||
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
|
||||
issues.html.issues(searchIssue(owner, repository, condition.state == "closed"),
|
||||
getLabels(owner, repository),
|
||||
getMilestones(owner, repository).filter(_.closedDate.isEmpty),
|
||||
condition, repositoryInfo, isWritable(owner, repository, context.loginAccount))
|
||||
searchIssues(owner, repository, "assigned", Some(userName))
|
||||
}
|
||||
|
||||
} getOrElse NotFound
|
||||
get("/:owner/:repository/issues/created_by/:userName"){
|
||||
val owner = params("owner")
|
||||
val repository = params("repository")
|
||||
val userName = params("userName")
|
||||
|
||||
searchIssues(owner, repository, "created_by", Some(userName))
|
||||
}
|
||||
|
||||
get("/:owner/:repository/issues/:id"){
|
||||
@@ -83,4 +85,23 @@ trait IssuesControllerBase extends ControllerBase {
|
||||
saveComment(owner, repository, context.loginAccount.get.userName, form.issueId, form.content)))
|
||||
})
|
||||
|
||||
private def searchIssues(owner: String, repository: String, filter: String, userName: Option[String]) = {
|
||||
val sessionKey = "%s/%s/issues".format(owner, repository)
|
||||
|
||||
// retrieve search condition
|
||||
val condition = if(request.getQueryString == null){
|
||||
session.get(sessionKey).getOrElse(IssueSearchCondition()).asInstanceOf[IssueSearchCondition]
|
||||
} else IssueSearchCondition(request)
|
||||
|
||||
session.put(sessionKey, condition)
|
||||
|
||||
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
|
||||
issues.html.issues(searchIssue(owner, repository, condition.state == "closed"),
|
||||
getLabels(owner, repository),
|
||||
getMilestones(owner, repository).filter(_.closedDate.isEmpty),
|
||||
condition, filter, repositoryInfo, isWritable(owner, repository, context.loginAccount))
|
||||
|
||||
} getOrElse NotFound
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -84,16 +84,14 @@ object IssuesService {
|
||||
|
||||
import IssueSearchCondition._
|
||||
|
||||
def toURL(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context): String = {
|
||||
val params = List(
|
||||
def toURL: String =
|
||||
"?" + List(
|
||||
if(labels.isEmpty) None else Some("labels=" + urlEncode(labels.mkString(" "))),
|
||||
milestoneId.map("milestone=" + _),
|
||||
Some("state=" + urlEncode(state)),
|
||||
Some("sort=" + urlEncode(sort)),
|
||||
Some("direction=" + urlEncode(direction))
|
||||
)
|
||||
"%s/%s/%s/issues?%s".format(context.path, repository.owner, repository.name, params.flatten.mkString("&"))
|
||||
}
|
||||
Some("direction=" + urlEncode(direction))).flatten.mkString("&")
|
||||
|
||||
}
|
||||
|
||||
object IssueSearchCondition {
|
||||
|
||||
Reference in New Issue
Block a user