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
+ @* TODO Make radio to choose issues option
+ *@
+ @* TODO Make radio to choose wiki option + *@