diff --git a/src/main/scala/gitbucket/core/service/RepositoryService.scala b/src/main/scala/gitbucket/core/service/RepositoryService.scala index 18ad5b9..8cd61ea 100644 --- a/src/main/scala/gitbucket/core/service/RepositoryService.scala +++ b/src/main/scala/gitbucket/core/service/RepositoryService.scala @@ -342,6 +342,10 @@ repository.originUserName.getOrElse(repository.userName), repository.originRepositoryName.getOrElse(repository.repositoryName) ), + getOpenMilestones( + repository.originUserName.getOrElse(repository.userName), + repository.originRepositoryName.getOrElse(repository.repositoryName) + ), getRepositoryManagers(repository.userName, repository.repositoryName) ) } @@ -697,6 +701,14 @@ (t.originUserName === userName.bind) && (t.originRepositoryName === repositoryName.bind) }.length).first + private def getOpenMilestones(userName: String, repositoryName: String)(implicit s: Session): Int = + Query( + Milestones + .filter(_.byRepository(userName, repositoryName)) + .filter(_.closedDate.isEmpty) + .length + ).first + def getForkedRepositories(userName: String, repositoryName: String)(implicit s: Session): List[Repository] = Repositories .filter { t => @@ -749,6 +761,7 @@ issueCount: Int, pullCount: Int, forkedCount: Int, + milestoneCount: Int, branchList: Seq[String], tags: Seq[JGitUtil.TagInfo], managers: Seq[String] @@ -763,15 +776,27 @@ issueCount: Int, pullCount: Int, forkedCount: Int, + milestoneCount: Int, managers: Seq[String] ) = - this(repo.owner, repo.name, model, issueCount, pullCount, forkedCount, repo.branchList, repo.tags, managers) + this( + repo.owner, + repo.name, + model, + issueCount, + pullCount, + forkedCount, + milestoneCount, + repo.branchList, + repo.tags, + managers + ) /** - * Creates instance without issue and pull request count. + * Creates instance without issue, pull request, and milestone count. */ def this(repo: JGitUtil.RepositoryInfo, model: Repository, forkedCount: Int, managers: Seq[String]) = - this(repo.owner, repo.name, model, 0, 0, forkedCount, repo.branchList, repo.tags, managers) + this(repo.owner, repo.name, model, 0, 0, forkedCount, 0, repo.branchList, repo.tags, managers) def httpUrl(implicit context: Context): String = RepositoryService.httpUrl(owner, name) def sshUrl(implicit context: Context): Option[String] = RepositoryService.sshUrl(owner, name) diff --git a/src/main/twirl/gitbucket/core/menu.scala.html b/src/main/twirl/gitbucket/core/menu.scala.html index f89f86a..7cc57c2 100644 --- a/src/main/twirl/gitbucket/core/menu.scala.html +++ b/src/main/twirl/gitbucket/core/menu.scala.html @@ -40,7 +40,7 @@ @menuitem("/pulls", "pulls", "Pull requests", "git-pull-request", repository.pullCount) @menuitem("/issues/labels", "labels", "Labels", "tag") @menuitem("/issues/priorities", "priorities", "Priorities", "flame") - @menuitem("/issues/milestones", "milestones", "Milestones", "milestone") + @menuitem("/issues/milestones", "milestones", "Milestones", "milestone", repository.milestoneCount) } else { @repository.repository.options.externalIssuesUrl.map { externalIssuesUrl => @menuitem(externalIssuesUrl, "issues", "Issues", "issue-opened") diff --git a/src/test/scala/gitbucket/core/api/ApiSpecModels.scala b/src/test/scala/gitbucket/core/api/ApiSpecModels.scala index 0a69c4d..808042d 100644 --- a/src/test/scala/gitbucket/core/api/ApiSpecModels.scala +++ b/src/test/scala/gitbucket/core/api/ApiSpecModels.scala @@ -79,6 +79,7 @@ issueCount = 1, pullCount = 1, forkedCount = 1, + milestoneCount = 1, branchList = Seq("master", "develop"), tags = Seq( TagInfo(name = "v1.0", time = date("2015-05-05T23:40:27Z"), id = "id1", message = "1.0 released"),