diff --git a/src/main/resources/update/gitbucket-core_4.7.xml b/src/main/resources/update/gitbucket-core_4.7.xml
index c46a28e..a128800 100644
--- a/src/main/resources/update/gitbucket-core_4.7.xml
+++ b/src/main/resources/update/gitbucket-core_4.7.xml
@@ -4,6 +4,30 @@
-
+
+
+
+
+ ENABLE_WIKI = FALSE
+
+
+
+ ENABLE_WIKI = TRUE AND ALLOW_WIKI_EDITING = FALSE
+
+
+
+ ENABLE_WIKI = TRUE AND ALLOW_WIKI_EDITING = TRUE
+
+
+
+ ENABLE_ISSUES = FALSE
+
+
+
+ ENABLE_ISSUES = TRUE
+
+
+
+
diff --git a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala
index ff16113..14d24f9 100644
--- a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala
+++ b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala
@@ -31,10 +31,9 @@
repositoryName: String,
description: Option[String],
isPrivate: Boolean,
- enableIssues: Boolean,
+ issuesOption: String,
externalIssuesUrl: Option[String],
- enableWiki: Boolean,
- allowWikiEditing: Boolean,
+ wikiOption: String,
externalWikiUrl: Option[String],
allowFork: Boolean
)
@@ -43,10 +42,9 @@
"repositoryName" -> trim(label("Repository Name" , text(required, maxlength(40), identifier, renameRepositoryName))),
"description" -> trim(label("Description" , optional(text()))),
"isPrivate" -> trim(label("Repository Type" , boolean())),
- "enableIssues" -> trim(label("Enable Issues" , boolean())),
+ "issuesOption" -> trim(label("Issues Option" , text(required))), // TODO enum check
"externalIssuesUrl" -> trim(label("External Issues URL", optional(text(maxlength(200))))),
- "enableWiki" -> trim(label("Enable Wiki" , boolean())),
- "allowWikiEditing" -> trim(label("Allow Wiki Editing" , boolean())),
+ "wikiOption" -> trim(label("Wiki Option" , text(required))), // TODO enum check
"externalWikiUrl" -> trim(label("External Wiki URL" , optional(text(maxlength(200))))),
"allowFork" -> trim(label("Allow Forking" , boolean()))
)(OptionsForm.apply)
@@ -109,10 +107,9 @@
repository.repository.parentUserName.map { _ =>
repository.repository.isPrivate
} getOrElse form.isPrivate,
- form.enableIssues,
+ form.issuesOption,
form.externalIssuesUrl,
- form.enableWiki,
- form.allowWikiEditing,
+ form.wikiOption,
form.externalWikiUrl,
form.allowFork
)
diff --git a/src/main/scala/gitbucket/core/controller/WikiController.scala b/src/main/scala/gitbucket/core/controller/WikiController.scala
index 29f0569..3587918 100644
--- a/src/main/scala/gitbucket/core/controller/WikiController.scala
+++ b/src/main/scala/gitbucket/core/controller/WikiController.scala
@@ -240,9 +240,13 @@
private def targetWikiPage = getWikiPage(params("owner"), params("repository"), params("pageName"))
- private def isEditable(repository: RepositoryInfo)(implicit context: Context): Boolean =
- repository.repository.options.allowWikiEditing || (
- hasWritePermission(repository.owner, repository.name, context.loginAccount)
- )
+ private def isEditable(repository: RepositoryInfo)(implicit context: Context): Boolean = {
+ repository.repository.options.wikiOption match {
+ case "ALL" => true // TODO read permission
+ case "PUBLIC" => true // TODO read permission
+ case "PRIVATE" => hasWritePermission(repository.owner, repository.name, context.loginAccount)
+ case "DISABLE" => false
+ }
+ }
}
diff --git a/src/main/scala/gitbucket/core/model/Repository.scala b/src/main/scala/gitbucket/core/model/Repository.scala
index feca31d..387b8ff 100644
--- a/src/main/scala/gitbucket/core/model/Repository.scala
+++ b/src/main/scala/gitbucket/core/model/Repository.scala
@@ -17,18 +17,16 @@
val originRepositoryName = column[String]("ORIGIN_REPOSITORY_NAME")
val parentUserName = column[String]("PARENT_USER_NAME")
val parentRepositoryName = column[String]("PARENT_REPOSITORY_NAME")
- val enableIssues = column[Boolean]("ENABLE_ISSUES")
+ val issuesOption = column[String]("ISSUES_OPTION")
val externalIssuesUrl = column[String]("EXTERNAL_ISSUES_URL")
- val enableWiki = column[Boolean]("ENABLE_WIKI")
- val allowWikiEditing = column[Boolean]("ALLOW_WIKI_EDITING")
+ val wikiOption = column[String]("WIKI_OPTION")
val externalWikiUrl = column[String]("EXTERNAL_WIKI_URL")
val allowFork = column[Boolean]("ALLOW_FORK")
- val allowCreateIssue = column[Boolean]("ALLOW_CREATE_ISSUE")
def * = (
(userName, repositoryName, isPrivate, description.?, defaultBranch,
registeredDate, updatedDate, lastActivityDate, originUserName.?, originRepositoryName.?, parentUserName.?, parentRepositoryName.?),
- (enableIssues, externalIssuesUrl.?, enableWiki, allowWikiEditing, externalWikiUrl.?, allowFork, allowCreateIssue)
+ (issuesOption, externalIssuesUrl.?, wikiOption, externalWikiUrl.?, allowFork)
).shaped <> (
{ case (repository, options) =>
Repository(
@@ -86,11 +84,9 @@
)
case class RepositoryOptions(
- enableIssues: Boolean,
+ issuesOption: String,
externalIssuesUrl: Option[String],
- enableWiki: Boolean,
- allowWikiEditing: Boolean,
+ wikiOption: String,
externalWikiUrl: Option[String],
- allowFork: Boolean,
- allowCreateIssue: Boolean
+ allowFork: Boolean
)
diff --git a/src/main/scala/gitbucket/core/service/RepositoryService.scala b/src/main/scala/gitbucket/core/service/RepositoryService.scala
index d340a82..24db2df 100644
--- a/src/main/scala/gitbucket/core/service/RepositoryService.scala
+++ b/src/main/scala/gitbucket/core/service/RepositoryService.scala
@@ -38,13 +38,11 @@
parentUserName = parentUserName,
parentRepositoryName = parentRepositoryName,
options = RepositoryOptions(
- enableIssues = true,
+ issuesOption = "PRIVATE",
externalIssuesUrl = None,
- enableWiki = true,
- allowWikiEditing = true,
+ wikiOption = "PUBLIC",
externalWikiUrl = None,
- allowFork = true,
- allowCreateIssue = false
+ allowFork = true
)
)
@@ -321,12 +319,12 @@
*/
def saveRepositoryOptions(userName: String, repositoryName: String,
description: Option[String], isPrivate: Boolean,
- enableIssues: Boolean, externalIssuesUrl: Option[String],
- enableWiki: Boolean, allowWikiEditing: Boolean, externalWikiUrl: Option[String],
+ issuesOption: String, externalIssuesUrl: Option[String],
+ wikiOption: String, externalWikiUrl: Option[String],
allowFork: Boolean)(implicit s: Session): Unit =
Repositories.filter(_.byRepository(userName, repositoryName))
- .map { r => (r.description.?, r.isPrivate, r.enableIssues, r.externalIssuesUrl.?, r.enableWiki, r.allowWikiEditing, r.externalWikiUrl.?, r.allowFork, r.updatedDate) }
- .update (description, isPrivate, enableIssues, externalIssuesUrl, enableWiki, allowWikiEditing, externalWikiUrl, allowFork, currentDate)
+ .map { r => (r.description.?, r.isPrivate, r.issuesOption, r.externalIssuesUrl.?, r.wikiOption, r.externalWikiUrl.?, r.allowFork, r.updatedDate) }
+ .update (description, isPrivate, issuesOption, externalIssuesUrl, wikiOption, externalWikiUrl, allowFork, currentDate)
def saveRepositoryDefaultBranch(userName: String, repositoryName: String,
defaultBranch: String)(implicit s: Session): Unit =
diff --git a/src/main/twirl/gitbucket/core/menu.scala.html b/src/main/twirl/gitbucket/core/menu.scala.html
index a46bff8..96ea4e2 100644
--- a/src/main/twirl/gitbucket/core/menu.scala.html
+++ b/src/main/twirl/gitbucket/core/menu.scala.html
@@ -27,7 +27,7 @@
@menuitem("/branches", "branches", "Branches", "git-branch", repository.branchList.length)
@menuitem("/tags", "tags", "Tags", "tag", repository.tags.length)
}
- @if(repository.repository.options.enableIssues) {
+ @if(repository.repository.options.issuesOption != "DISABLE") {
@menuitem("/issues", "issues", "Issues", "issue-opened", repository.issueCount)
@menuitem("/pulls", "pulls", "Pull Requests", "git-pull-request", repository.pullCount)
@menuitem("/issues/labels", "labels", "Labels", "tag")
@@ -37,7 +37,7 @@
@menuitem(externalIssuesUrl, "issues", "Issues", "issue-opened")
}
}
- @if(repository.repository.options.enableWiki) {
+ @if(repository.repository.options.wikiOption != "DISABLE") {
@menuitem("/wiki", "wiki", "Wiki", "book")
} else {
@repository.repository.options.externalWikiUrl.map { externalWikiUrl =>
diff --git a/src/main/twirl/gitbucket/core/settings/options.scala.html b/src/main/twirl/gitbucket/core/settings/options.scala.html
index 7b26310..6952a02 100644
--- a/src/main/twirl/gitbucket/core/settings/options.scala.html
+++ b/src/main/twirl/gitbucket/core/settings/options.scala.html
@@ -45,6 +45,7 @@
Features
+ *@