diff --git a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala index 916f6d4..1463a9a 100644 --- a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala @@ -47,7 +47,7 @@ case class WebHookForm(url: String, events: Set[WebHook.Event]) def webHookForm(update:Boolean) = mapping( - "url" -> trim(label("url", text(required, webHook(update)))), + "url" -> trim(label("url", text(required, webHook(update)))), "events" -> webhookEvents )(WebHookForm.apply) @@ -149,7 +149,7 @@ */ get("/:owner/:repository/settings/hooks/new")(ownerOnly { repository => val webhook = WebHook(repository.owner, repository.name, "") - html.editHooks(webhook, Set(WebHook.Push), repository, flash.get("info"), true) + html.edithooks(webhook, Set(WebHook.Push), repository, flash.get("info"), true) }) /** @@ -226,7 +226,7 @@ */ get("/:owner/:repository/settings/hooks/edit/:url")(ownerOnly { repository => getWebHook(repository.owner, repository.name, params("url")).map{ case (webhook, events) => - html.editHooks(webhook, events, repository, flash.get("info"), false) + html.edithooks(webhook, events, repository, flash.get("info"), false) } getOrElse NotFound }) @@ -290,7 +290,7 @@ if(getWebHook(params("owner"), params("repository"), value).isDefined != needExists){ Some(if(needExists){ "URL had not been registered yet." - }else{ + } else { "URL had been registered already." }) } else { @@ -299,12 +299,15 @@ } private def webhookEvents = new ValueType[Set[WebHook.Event]]{ - def convert(name: String, params: Map[String, String], messages: Messages): Set[WebHook.Event] = WebHook.Event.values.flatMap{ t => - params.get(name+"."+t.name).map(_ => t) - }.toSet + def convert(name: String, params: Map[String, String], messages: Messages): Set[WebHook.Event] = { + val map = params.toSeq.toMap // TODO This transformation will be unnecessary after upgrading to scalatra 2.4 and scalatra-forms 0.2 + WebHook.Event.values.flatMap { t => + map.get(name + "." + t.name).map(_ => t) + }.toSet + } def validate(name: String, params: Map[String, String], messages: Messages): Seq[(String, String)] = if(convert(name,params,messages).isEmpty){ Seq(name -> messages("error.required").format(name)) - }else{ + } else { Nil } } diff --git a/src/main/twirl/gitbucket/core/settings/edithooks.scala.html b/src/main/twirl/gitbucket/core/settings/edithooks.scala.html new file mode 100644 index 0000000..567d185 --- /dev/null +++ b/src/main/twirl/gitbucket/core/settings/edithooks.scala.html @@ -0,0 +1,164 @@ +@(webHook: gitbucket.core.model.WebHook, + events: Set[gitbucket.core.model.WebHook.Event], + repository: gitbucket.core.service.RepositoryService.RepositoryInfo, + info: Option[Any], + create: Boolean)(implicit context: gitbucket.core.controller.Context) +@import context._ +@import gitbucket.core.view.helpers._ +@import gitbucket.core.model.WebHook._ +@check(name: String, event: Event)={ + name="@(name).@event.name" value="on" @if(events(event)){checked} +} +@html.main("Settings", Some(repository)){ + @html.menu("settings", repository){ + @menu("hooks", repository){ + @helper.html.information(info) + +