diff --git a/src/main/scala/gitbucket/core/controller/IssuesController.scala b/src/main/scala/gitbucket/core/controller/IssuesController.scala index 2474ddd..9bebbfc 100644 --- a/src/main/scala/gitbucket/core/controller/IssuesController.scala +++ b/src/main/scala/gitbucket/core/controller/IssuesController.scala @@ -114,6 +114,7 @@ getAssignableUserNames(owner, name), getMilestones(owner, name), getPriorities(owner, name), + getDefaultPriority(owner, name), getLabels(owner, name), isIssueManageable(repository), getContentTemplate(repository, "ISSUE_TEMPLATE"), diff --git a/src/main/scala/gitbucket/core/controller/PrioritiesController.scala b/src/main/scala/gitbucket/core/controller/PrioritiesController.scala index efda0d4..a1e200a 100644 --- a/src/main/scala/gitbucket/core/controller/PrioritiesController.scala +++ b/src/main/scala/gitbucket/core/controller/PrioritiesController.scala @@ -71,6 +71,11 @@ Ok() }) + ajaxPost("/:owner/:repository/issues/priorities/default")(writableUsersOnly { (repository) => + setDefaultPriority(repository.owner, repository.name, params("priorityId").toInt) + Ok() + }) + ajaxPost("/:owner/:repository/issues/priorities/:priorityId/delete")(writableUsersOnly { repository => deletePriority(repository.owner, repository.name, params("priorityId").toInt) Ok() diff --git a/src/main/scala/gitbucket/core/model/Priorities.scala b/src/main/scala/gitbucket/core/model/Priorities.scala index 8735f86..f625efd 100644 --- a/src/main/scala/gitbucket/core/model/Priorities.scala +++ b/src/main/scala/gitbucket/core/model/Priorities.scala @@ -10,8 +10,9 @@ override val priorityName = column[String]("PRIORITY_NAME") val description = column[String]("DESCRIPTION") val ordering = column[Int]("ORDERING") + val isDefault = column[Boolean]("IS_DEFAULT") val color = column[String]("COLOR") - def * = (userName, repositoryName, priorityId, priorityName, description, ordering, color) <> (Priority.tupled, Priority.unapply) + def * = (userName, repositoryName, priorityId, priorityName, description, isDefault, ordering, color) <> (Priority.tupled, Priority.unapply) def byPrimaryKey(owner: String, repository: String, priorityId: Int) = byPriority(owner, repository, priorityId) def byPrimaryKey(userName: Rep[String], repositoryName: Rep[String], priorityId: Rep[Int]) = byPriority(userName, repositoryName, priorityId) @@ -24,6 +25,7 @@ priorityId: Int = 0, priorityName: String, description: String, + isDefault: Boolean, ordering: Int = 0, color: String){ diff --git a/src/main/scala/gitbucket/core/service/PrioritiesService.scala b/src/main/scala/gitbucket/core/service/PrioritiesService.scala index f0a7738..7ab752d 100644 --- a/src/main/scala/gitbucket/core/service/PrioritiesService.scala +++ b/src/main/scala/gitbucket/core/service/PrioritiesService.scala @@ -23,11 +23,14 @@ .map(m => m + 1) .getOrElse(0) + val isDefault = getDefaultPriority(owner, repository).isEmpty + Priorities returning Priorities.map(_.priorityId) insert Priority( userName = owner, repositoryName = repository, priorityName = priorityName, description = description, + isDefault = isDefault, ordering = ordering, color = color ) @@ -58,4 +61,25 @@ Priorities.filter(_.byPrimaryKey(owner, repository, priorityId)).delete } + + def getDefaultPriority(owner: String, repository: String)(implicit s: Session): Option[Priority] = { + Priorities + .filter(_.byRepository(owner, repository)) + .filter(_.isDefault) + .list + .headOption + } + + def setDefaultPriority(owner: String, repository: String, priorityId: Int)(implicit s: Session): Unit = { + Priorities + .filter(_.byRepository(owner, repository)) + .filter(_.isDefault) + .map(_.isDefault) + .update(false) + + Priorities + .filter(_.byPrimaryKey(owner, repository, priorityId)) + .map(_.isDefault) + .update(true) + } } diff --git a/src/main/scala/gitbucket/core/service/RepositoryCreationService.scala b/src/main/scala/gitbucket/core/service/RepositoryCreationService.scala index 048babd..1fc487f 100644 --- a/src/main/scala/gitbucket/core/service/RepositoryCreationService.scala +++ b/src/main/scala/gitbucket/core/service/RepositoryCreationService.scala @@ -83,5 +83,7 @@ createPriority(userName, repositoryName, "high", "Issues should be addressed before a final product is delivered. If the issue cannot be resolved before delivery, it should be prioritized for the next release.", "fc9629") createPriority(userName, repositoryName, "important", "Issues can be shipped with a final product, but should be reviewed before the next release.", "fccd29") createPriority(userName, repositoryName, "default", "Default.", "acacac") + + setDefaultPriority(userName, repositoryName, getPriority(userName, repositoryName, "default").get.priorityId) } } diff --git a/src/main/twirl/gitbucket/core/issues/create.scala.html b/src/main/twirl/gitbucket/core/issues/create.scala.html index f1a8134..1522d79 100644 --- a/src/main/twirl/gitbucket/core/issues/create.scala.html +++ b/src/main/twirl/gitbucket/core/issues/create.scala.html @@ -1,6 +1,7 @@ @(collaborators: List[String], milestones: List[gitbucket.core.model.Milestone], priorities: List[gitbucket.core.model.Priority], + defaultPriority: Option[gitbucket.core.model.Priority], labels: List[gitbucket.core.model.Label], isManageable: Boolean, content: String, @@ -30,7 +31,7 @@