From 0a4b78160f3dc1b6e27fc141e526d80b240dda6d Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sat, 24 Jun 2017 14:58:58 +0900 Subject: [PATCH] Refactor account level web hook entirely --- .../core/controller/AccountController.scala | 17 +- .../RepositorySettingsController.scala | 4 +- .../core/account/edithook.scala.html | 16 ++ .../core/account/edithooks.scala.html | 195 ----------------- .../{webhook.scala.html => hooks.scala.html} | 5 +- .../core/settings/edithook.scala.html | 18 ++ .../core/settings/edithookform.scala.html | 191 +++++++++++++++++ .../core/settings/edithooks.scala.html | 197 ------------------ 8 files changed, 237 insertions(+), 406 deletions(-) create mode 100644 src/main/twirl/gitbucket/core/account/edithook.scala.html delete mode 100644 src/main/twirl/gitbucket/core/account/edithooks.scala.html rename src/main/twirl/gitbucket/core/account/{webhook.scala.html => hooks.scala.html} (90%) create mode 100644 src/main/twirl/gitbucket/core/settings/edithook.scala.html create mode 100644 src/main/twirl/gitbucket/core/settings/edithookform.scala.html delete mode 100644 src/main/twirl/gitbucket/core/settings/edithooks.scala.html diff --git a/src/main/scala/gitbucket/core/controller/AccountController.scala b/src/main/scala/gitbucket/core/controller/AccountController.scala index 9d45edbe7..1ac1a0d0f 100644 --- a/src/main/scala/gitbucket/core/controller/AccountController.scala +++ b/src/main/scala/gitbucket/core/controller/AccountController.scala @@ -317,10 +317,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { get("/:userName/_hooks")(oneselfOnly { val userName = params("userName") getAccountByUserName(userName).map { account => - gitbucket.core.account.html.webhook(account, - if(account.isGroupAccount) Nil else getGroupsByUserName(userName), - getAccountWebHooks(account.userName) - ) + gitbucket.core.account.html.hooks(account, getAccountWebHooks(account.userName), flash.get("info")) } getOrElse NotFound() }) @@ -331,7 +328,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { val userName = params("userName") getAccountByUserName(userName).map { account => val webhook = AccountWebHook(userName, "", WebHookContentType.FORM, None) - html.edithooks(webhook, Set(WebHook.Push), account, if (account.isGroupAccount) Nil else getGroupsByUserName(userName), flash.get("info"), true) + html.edithook(webhook, Set(WebHook.Push), account, true) } getOrElse NotFound() }) @@ -360,11 +357,11 @@ trait AccountControllerBase extends AccountManagementControllerBase { */ get("/:userName/_hooks/edit")(oneselfOnly { val userName = params("userName") - getAccountByUserName(userName).map { account => + getAccountByUserName(userName).flatMap { account => getAccountWebHook(userName, params("url")).map { case (webhook, events) => - html.edithooks(webhook, events, account, if (account.isGroupAccount) Nil else getGroupsByUserName(userName), flash.get("info"), false) - } getOrElse NotFound() - } + html.edithook(webhook, events, account, false) + } + } getOrElse NotFound() }) /** @@ -381,7 +378,7 @@ trait AccountControllerBase extends AccountManagementControllerBase { * Send the test request to registered account web hook URLs. */ ajaxPost("/:userName/_hooks/test")(oneselfOnly { - // TODO copied & pasted?? + // TODO Is it possible to merge with [[RepositorySettingsController.ajaxPost]]? import scala.concurrent.duration._ import scala.concurrent._ import scala.util.control.NonFatal diff --git a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala index 93fee33a2..7b154ce0f 100644 --- a/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositorySettingsController.scala @@ -222,7 +222,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { */ get("/:owner/:repository/settings/hooks/new")(ownerOnly { repository => val webhook = RepositoryWebHook(repository.owner, repository.name, "", WebHookContentType.FORM, None) - html.edithooks(webhook, Set(WebHook.Push), repository, flash.get("info"), true) + html.edithook(webhook, Set(WebHook.Push), repository, true) }) /** @@ -311,7 +311,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { */ get("/:owner/:repository/settings/hooks/edit")(ownerOnly { repository => getWebHook(repository.owner, repository.name, params("url")).map{ case (webhook, events) => - html.edithooks(webhook, events, repository, flash.get("info"), false) + html.edithook(webhook, events, repository, false) } getOrElse NotFound() }) diff --git a/src/main/twirl/gitbucket/core/account/edithook.scala.html b/src/main/twirl/gitbucket/core/account/edithook.scala.html new file mode 100644 index 000000000..2b44ef167 --- /dev/null +++ b/src/main/twirl/gitbucket/core/account/edithook.scala.html @@ -0,0 +1,16 @@ +@(webHook: gitbucket.core.model.AccountWebHook, + events: Set[gitbucket.core.model.WebHook.Event], + account: gitbucket.core.model.Account, + create: Boolean)(implicit context: gitbucket.core.controller.Context) +@import gitbucket.core.view.helpers +@gitbucket.core.html.main("Service Hooks"){ + @gitbucket.core.account.html.menu("hooks", context.settings.ssh){ + @gitbucket.core.settings.html.edithookform( + webHook, events, create, + helpers.url(account.userName) + "/_hooks/new", + helpers.url(account.userName) + "/_hooks/edit", + helpers.url(account.userName) + "/_hooks/delete", + helpers.url(account.userName) + "/_hooks/test" + ) + } +} diff --git a/src/main/twirl/gitbucket/core/account/edithooks.scala.html b/src/main/twirl/gitbucket/core/account/edithooks.scala.html deleted file mode 100644 index f2a49cb3f..000000000 --- a/src/main/twirl/gitbucket/core/account/edithooks.scala.html +++ /dev/null @@ -1,195 +0,0 @@ -@(webHook: gitbucket.core.model.AccountWebHook, - events: Set[gitbucket.core.model.WebHook.Event], - account: gitbucket.core.model.Account, - groupNames: List[String], - info: Option[Any], - create: Boolean)(implicit context: gitbucket.core.controller.Context) -@import gitbucket.core.view.helpers -@import gitbucket.core.model.WebHook._ -@import gitbucket.core.model.WebHookContentType -@check(name: String, event: Event) = { - name="@(name).@event.name" value="on" @if(events(event)){checked} -} -@gitbucket.core.html.main("Service Hooks"){ - @gitbucket.core.account.html.menu("hooks", context.settings.ssh){ -
-
Webhook / Manage webhook
-
-
-
- -
- -
- @if(create){ - - } else { - - - } - -
-
- -
- -
-
- -
- -
-
- -
- -
- - - - - - - - -
- @if(!create){ - - - Delete webhook - - } else { - - } -
-
-
-
- - - } -} diff --git a/src/main/twirl/gitbucket/core/account/webhook.scala.html b/src/main/twirl/gitbucket/core/account/hooks.scala.html similarity index 90% rename from src/main/twirl/gitbucket/core/account/webhook.scala.html rename to src/main/twirl/gitbucket/core/account/hooks.scala.html index a6b05db3b..34bfdc4ac 100644 --- a/src/main/twirl/gitbucket/core/account/webhook.scala.html +++ b/src/main/twirl/gitbucket/core/account/hooks.scala.html @@ -1,9 +1,10 @@ @(account: gitbucket.core.model.Account, -groupNames: List[String], -webHooks: List[(gitbucket.core.model.AccountWebHook, Set[gitbucket.core.model.WebHook.Event])])(implicit context: gitbucket.core.controller.Context) + webHooks: List[(gitbucket.core.model.AccountWebHook, Set[gitbucket.core.model.WebHook.Event])], + info: Option[Any])(implicit context: gitbucket.core.controller.Context) @import gitbucket.core.view.helpers @gitbucket.core.html.main("Service Hooks"){ @gitbucket.core.account.html.menu("hooks", context.settings.ssh){ + @gitbucket.core.helper.html.information(info)
Webhooks diff --git a/src/main/twirl/gitbucket/core/settings/edithook.scala.html b/src/main/twirl/gitbucket/core/settings/edithook.scala.html new file mode 100644 index 000000000..44aafa0db --- /dev/null +++ b/src/main/twirl/gitbucket/core/settings/edithook.scala.html @@ -0,0 +1,18 @@ +@(webHook: gitbucket.core.model.WebHook, + events: Set[gitbucket.core.model.WebHook.Event], + repository: gitbucket.core.service.RepositoryService.RepositoryInfo, + create: Boolean)(implicit context: gitbucket.core.controller.Context) +@import gitbucket.core.view.helpers +@gitbucket.core.html.main("Settings", Some(repository)){ + @gitbucket.core.html.menu("settings", repository){ + @gitbucket.core.settings.html.menu("hooks", repository){ + @gitbucket.core.settings.html.edithookform( + webHook, events, create, + helpers.url(repository) + "/settings/hooks/new", + helpers.url(repository) + "/settings/hooks/edit", + helpers.url(repository) + "/settings/hooks/delete", + helpers.url(repository) + "/settings/hooks/test" + ) + } + } +} diff --git a/src/main/twirl/gitbucket/core/settings/edithookform.scala.html b/src/main/twirl/gitbucket/core/settings/edithookform.scala.html new file mode 100644 index 000000000..3eca7f0f8 --- /dev/null +++ b/src/main/twirl/gitbucket/core/settings/edithookform.scala.html @@ -0,0 +1,191 @@ +@(webHook: gitbucket.core.model.WebHook, + events: Set[gitbucket.core.model.WebHook.Event], + create: Boolean, + newButtonUrl: String, + editButtonUrl: String, + deleteButtonUrl: String, + testButtonUrl: String)(implicit context: gitbucket.core.controller.Context) +@import gitbucket.core.view.helpers +@import gitbucket.core.model.WebHook._ +@import gitbucket.core.model.WebHookContentType +@check(name: String, event: Event) = { + name="@(name).@event.name" value="on" @if(events(event)){checked} +} +
Webhook / Manage webhook
+
+
+
+ +
+ +
+ @if(create){ + + } else { + + + } + +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + +
+ @if(!create){ + + + Delete webhook + + } else { + + } +
+
+
+
+ + diff --git a/src/main/twirl/gitbucket/core/settings/edithooks.scala.html b/src/main/twirl/gitbucket/core/settings/edithooks.scala.html deleted file mode 100644 index 74089266b..000000000 --- a/src/main/twirl/gitbucket/core/settings/edithooks.scala.html +++ /dev/null @@ -1,197 +0,0 @@ -@(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 gitbucket.core.view.helpers -@import gitbucket.core.model.WebHook._ -@import gitbucket.core.model.WebHookContentType -@check(name: String, event: Event) = { - name="@(name).@event.name" value="on" @if(events(event)){checked} -} -@gitbucket.core.html.main("Settings", Some(repository)){ - @gitbucket.core.html.menu("settings", repository){ - @gitbucket.core.settings.html.menu("hooks", repository){ - @gitbucket.core.helper.html.information(info) -
-
Webhook / Manage webhook
-
-
-
- -
- -
- @if(create){ - - } else { - - - } - -
-
- -
- -
-
- -
- -
-
- -
- -
- - - - - - - - -
- @if(!create){ - - - Delete webhook - - } else { - - } -
-
-
-
- - - } - } -}