diff --git a/src/main/scala/app/DashboardController.scala b/src/main/scala/app/DashboardController.scala
index 4e0ffb2..c8ea7d6 100644
--- a/src/main/scala/app/DashboardController.scala
+++ b/src/main/scala/app/DashboardController.scala
@@ -9,7 +9,8 @@
with UsersAuthenticator
trait DashboardControllerBase extends ControllerBase {
- self: IssuesService with PullRequestService with RepositoryService with UsersAuthenticator =>
+ self: IssuesService with PullRequestService with RepositoryService with AccountService
+ with UsersAuthenticator =>
get("/dashboard/issues/repos")(usersOnly {
searchIssues("created_by")
@@ -59,7 +60,8 @@
countIssue(condition.copy(state = "open" ), filterUser, false, userRepos: _*),
countIssue(condition.copy(state = "closed"), filterUser, false, userRepos: _*),
condition,
- filter)
+ filter,
+ getGroupNames(userName))
}
private def searchPullRequests(filter: String, repository: Option[String]) = {
@@ -83,7 +85,8 @@
countIssue(condition.copy(state = "open" ), filterUser, true, allRepos: _*),
countIssue(condition.copy(state = "closed"), filterUser, true, allRepos: _*),
condition,
- filter)
+ filter,
+ getGroupNames(userName))
}
diff --git a/src/main/scala/service/AccountService.scala b/src/main/scala/service/AccountService.scala
index b815c54..c502eb7 100644
--- a/src/main/scala/service/AccountService.scala
+++ b/src/main/scala/service/AccountService.scala
@@ -168,6 +168,11 @@
Repositories.filter(_.userName === userName.bind).delete
}
+ def getGroupNames(userName: String)(implicit s: Session): List[String] = {
+ List(userName) ++
+ Collaborators.filter(_.collaboratorName === userName.bind).sortBy(_.userName).map(_.userName).list
+ }
+
}
object AccountService extends AccountService
diff --git a/src/main/scala/service/IssuesService.scala b/src/main/scala/service/IssuesService.scala
index e563b9c..9f5e1e3 100644
--- a/src/main/scala/service/IssuesService.scala
+++ b/src/main/scala/service/IssuesService.scala
@@ -186,7 +186,8 @@
(Repositories filter { t3 =>
(t3.byRepository(t1.userName, t1.repositoryName)) &&
(t3.isPrivate === (condition.visibility == Some("private")).bind)
- } exists, condition.visibility.nonEmpty)
+ } exists, condition.visibility.nonEmpty) &&
+ (t1.userName inSetBind condition.groups, condition.groups.nonEmpty)
}
def createIssue(owner: String, repository: String, loginUser: String, title: String, content: Option[String],
@@ -349,7 +350,8 @@
state: String = "open",
sort: String = "created",
direction: String = "desc",
- visibility: Option[String] = None){
+ visibility: Option[String] = None,
+ groups: Set[String] = Set.empty){
def isEmpty: Boolean = {
labels.isEmpty && milestoneId.isEmpty && author.isEmpty && assigned.isEmpty &&
@@ -371,7 +373,8 @@
Some("state=" + urlEncode(state)),
Some("sort=" + urlEncode(sort)),
Some("direction=" + urlEncode(direction)),
- visibility.map(x => "visibility=" + urlEncode(x))
+ visibility.map(x => "visibility=" + urlEncode(x)),
+ if(groups.isEmpty) None else Some("groups=" + urlEncode(groups.mkString(",")))
).flatten.mkString("&")
}
@@ -396,7 +399,8 @@
param(request, "state", Seq("open", "closed")).getOrElse("open"),
param(request, "sort", Seq("created", "comments", "updated")).getOrElse("created"),
param(request, "direction", Seq("asc", "desc")).getOrElse("desc"),
- param(request, "visibility")
+ param(request, "visibility"),
+ param(request, "groups").map(_.split(",").toSet).getOrElse(Set.empty)
)
def page(request: HttpServletRequest) = try {
diff --git a/src/main/twirl/dashboard/header.scala.html b/src/main/twirl/dashboard/header.scala.html
new file mode 100644
index 0000000..01c5bfc
--- /dev/null
+++ b/src/main/twirl/dashboard/header.scala.html
@@ -0,0 +1,74 @@
+@(openCount: Int,
+ closedCount: Int,
+ condition: service.IssuesService.IssueSearchCondition,
+ groups: List[String])(implicit context: app.Context)
+@import context._
+@import view.helpers._
+
+
+
+ @openCount Open
+
+
+
+ @closedCount Closed
+
+
+
-
-
-
- @helper.html.dropdown("Visibility", flat = true){
-
+ @dashboard.html.header(openCount, closedCount, condition, groups)
|
---|