diff --git a/src/main/scala/gitbucket/core/controller/IndexController.scala b/src/main/scala/gitbucket/core/controller/IndexController.scala index 51d26f6..0d69ebe 100644 --- a/src/main/scala/gitbucket/core/controller/IndexController.scala +++ b/src/main/scala/gitbucket/core/controller/IndexController.scala @@ -108,12 +108,18 @@ */ get("/_user/proposals")(usersOnly { contentType = formats("json") + val user = params("user").toBoolean + val group = params("group").toBoolean org.json4s.jackson.Serialization.write( - Map("options" -> (if(params.get("userOnly").isDefined) { - getAllUsers(false).filter(!_.isGroupAccount).map { t => (t.userName, t.isGroupAccount) }.toArray - } else { - getAllUsers(false).map { t => (t.userName, t.isGroupAccount) }.toArray - }).map { case (userName, groupAccount) => userName + ":" + groupAccount }) + Map("options" -> ( + getAllUsers(false) + .withFilter { t => (user, group) match { + case (true, true) => true + case (true, false) => !t.isGroupAccount + case (false, true) => t.isGroupAccount + case (false, false) => false + }}.map { t => t.userName } + )) ) }) diff --git a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala index 14d24f9..5a2ca91 100644 --- a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala @@ -42,9 +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())), - "issuesOption" -> trim(label("Issues Option" , text(required))), // TODO enum check + "issuesOption" -> trim(label("Issues Option" , text(required, featureOption))), "externalIssuesUrl" -> trim(label("External Issues URL", optional(text(maxlength(200))))), - "wikiOption" -> trim(label("Wiki Option" , text(required))), // TODO enum check + "wikiOption" -> trim(label("Wiki Option" , text(required, featureOption))), "externalWikiUrl" -> trim(label("External Wiki URL" , optional(text(maxlength(200))))), "allowFork" -> trim(label("Allow Forking" , boolean())) )(OptionsForm.apply) @@ -56,12 +56,12 @@ "defaultBranch" -> trim(label("Default Branch" , text(required, maxlength(100)))) )(DefaultBranchForm.apply) - // for collaborator addition - case class CollaboratorForm(userName: String) - - val collaboratorForm = mapping( - "userName" -> trim(label("Username", text(required, collaborator))) - )(CollaboratorForm.apply) +// // for collaborator addition +// case class CollaboratorForm(userName: String) +// +// val collaboratorForm = mapping( +// "userName" -> trim(label("Username", text(required, collaborator))) +// )(CollaboratorForm.apply) // for web hook url addition case class WebHookForm(url: String, events: Set[WebHook.Event], ctype: WebHookContentType, token: Option[String]) @@ -178,7 +178,7 @@ post("/:owner/:repository/settings/collaborators")(ownerOnly { repository => val collaborators = params("collaborators") removeCollaborators(repository.owner, repository.name) - collaborators.split(",").map { collaborator => + collaborators.split(",").withFilter(_.nonEmpty).map { collaborator => val userName :: permission :: Nil = collaborator.split(":").toList addCollaborator(repository.owner, repository.name, userName, permission) } @@ -384,20 +384,20 @@ } } - /** - * Provides Constraint to validate the collaborator name. - */ - private def collaborator: Constraint = new Constraint(){ - override def validate(name: String, value: String, messages: Messages): Option[String] = - getAccountByUserName(value) match { - case None => Some("User does not exist.") -// case Some(x) if(x.isGroupAccount) -// => Some("User does not exist.") - case Some(x) if(x.userName == params("owner") || getCollaborators(params("owner"), params("repository")).contains(x.userName)) - => Some(value + " is repository owner.") // TODO also group members? - case _ => None - } - } +// /** +// * Provides Constraint to validate the collaborator name. +// */ +// private def collaborator: Constraint = new Constraint(){ +// override def validate(name: String, value: String, messages: Messages): Option[String] = +// getAccountByUserName(value) match { +// case None => Some("User does not exist.") +//// case Some(x) if(x.isGroupAccount) +//// => Some("User does not exist.") +// case Some(x) if(x.userName == params("owner") || getCollaborators(params("owner"), params("repository")).contains(x.userName)) +// => Some(value + " is repository owner.") // TODO also group members? +// case _ => None +// } +// } /** * Duplicate check for the rename repository name. @@ -412,6 +412,15 @@ } /** + * + */ + private def featureOption: Constraint = new Constraint(){ + override def validate(name: String, value: String, params: Map[String, String], messages: Messages): Option[String] = + if(Seq("DISABLE", "PRIVATE", "PUBLIC").contains(value)) None else Some("Option is invalid.") + } + + + /** * Provides Constraint to validate the repository transfer user. */ private def transferUser: Constraint = new Constraint(){ diff --git a/src/main/twirl/gitbucket/core/account/group.scala.html b/src/main/twirl/gitbucket/core/account/group.scala.html index cb219da..797c669 100644 --- a/src/main/twirl/gitbucket/core/account/group.scala.html +++ b/src/main/twirl/gitbucket/core/account/group.scala.html @@ -31,7 +31,7 @@ - @gitbucket.core.helper.html.account("memberName", 200) + @gitbucket.core.helper.html.account("memberName", 200, true, false)
diff --git a/src/main/twirl/gitbucket/core/admin/usergroup.scala.html b/src/main/twirl/gitbucket/core/admin/usergroup.scala.html index 1677005..b72ae1d 100644 --- a/src/main/twirl/gitbucket/core/admin/usergroup.scala.html +++ b/src/main/twirl/gitbucket/core/admin/usergroup.scala.html @@ -34,7 +34,7 @@ - @gitbucket.core.helper.html.account("memberName", 200) + @gitbucket.core.helper.html.account("memberName", 200, true, false)
diff --git a/src/main/twirl/gitbucket/core/helper/account.scala.html b/src/main/twirl/gitbucket/core/helper/account.scala.html index 06964dc..0e14ced 100644 --- a/src/main/twirl/gitbucket/core/helper/account.scala.html +++ b/src/main/twirl/gitbucket/core/helper/account.scala.html @@ -1,19 +1,19 @@ -@(id: String, width: Int, userOnly: Boolean = true)(implicit context: gitbucket.core.controller.Context) +@(id: String, width: Int, user: Boolean, group: Boolean)(implicit context: gitbucket.core.controller.Context) \ No newline at end of file diff --git a/src/main/twirl/gitbucket/core/settings/danger.scala.html b/src/main/twirl/gitbucket/core/settings/danger.scala.html index 60b4007..7df1170 100644 --- a/src/main/twirl/gitbucket/core/settings/danger.scala.html +++ b/src/main/twirl/gitbucket/core/settings/danger.scala.html @@ -13,7 +13,7 @@
Transfer this repo to another user or to group.
- @gitbucket.core.helper.html.account("newOwner", 200) + @gitbucket.core.helper.html.account("newOwner", 200, true, true)