mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 21:45:50 +01:00
57 lines
1.9 KiB
Scala
57 lines
1.9 KiB
Scala
package app
|
|
|
|
import service._
|
|
import util.UsersAuthenticator
|
|
|
|
class DashboardController extends DashboardControllerBase
|
|
with IssuesService with RepositoryService with AccountService
|
|
with UsersAuthenticator
|
|
|
|
trait DashboardControllerBase extends ControllerBase {
|
|
self: IssuesService with RepositoryService with UsersAuthenticator =>
|
|
|
|
get("/dashboard/issues/repos")(usersOnly {
|
|
searchIssues("all")
|
|
})
|
|
|
|
get("/dashboard/issues/assigned")(usersOnly {
|
|
searchIssues("assigned")
|
|
})
|
|
|
|
get("/dashboard/issues/created_by")(usersOnly {
|
|
searchIssues("created_by")
|
|
})
|
|
|
|
private def searchIssues(filter: String) = {
|
|
import IssuesService._
|
|
|
|
// condition
|
|
val sessionKey = "dashboard/issues"
|
|
val condition = if(request.getQueryString == null)
|
|
session.get(sessionKey).getOrElse(IssueSearchCondition()).asInstanceOf[IssueSearchCondition]
|
|
else IssueSearchCondition(request)
|
|
|
|
session.put(sessionKey, condition)
|
|
|
|
val userName = context.loginAccount.get.userName
|
|
val repositories = getUserRepositories(userName, baseUrl).map(repo => repo.owner -> repo.name)
|
|
val filterUser = Map(filter -> userName)
|
|
val page = IssueSearchCondition.page(request)
|
|
//
|
|
dashboard.html.issues(
|
|
issues.html.listparts(
|
|
searchIssue(condition, filterUser, (page - 1) * IssueLimit, IssueLimit, repositories: _*),
|
|
page,
|
|
countIssue(condition.copy(state = "open"), filterUser, repositories: _*),
|
|
countIssue(condition.copy(state = "closed"), filterUser, repositories: _*),
|
|
condition),
|
|
countIssue(condition, Map.empty, repositories: _*),
|
|
countIssue(condition, Map("assigned" -> userName), repositories: _*),
|
|
countIssue(condition, Map("created_by" -> userName), repositories: _*),
|
|
repositories,
|
|
condition,
|
|
filter)
|
|
|
|
}
|
|
|
|
} |