Add user filter to issue search condition.

This commit is contained in:
takezoe
2013-06-25 16:36:43 +09:00
parent 0bbdb77d05
commit ac3415f641
3 changed files with 55 additions and 36 deletions

View File

@@ -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
}
}

View File

@@ -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 {