Implement Default Webhooks (#4299)
Partially implement #770. Add "Default Webhooks" page in site admin UI. Persist to the existing webhooks table, but store with RepoID=0 and OrgID=0. Upon repo creation, copy the set of default webhooks into the new repo.tokarchuk/v1.17
parent
cac9e6e760
commit
b34996a629
@ -0,0 +1,47 @@ |
|||||||
|
// Copyright 2018 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package admin |
||||||
|
|
||||||
|
import ( |
||||||
|
"code.gitea.io/gitea/models" |
||||||
|
"code.gitea.io/gitea/modules/base" |
||||||
|
"code.gitea.io/gitea/modules/context" |
||||||
|
"code.gitea.io/gitea/modules/setting" |
||||||
|
) |
||||||
|
|
||||||
|
const ( |
||||||
|
// tplAdminHooks template path for render hook settings
|
||||||
|
tplAdminHooks base.TplName = "admin/hooks" |
||||||
|
) |
||||||
|
|
||||||
|
// DefaultWebhooks render admin-default webhook list page
|
||||||
|
func DefaultWebhooks(ctx *context.Context) { |
||||||
|
ctx.Data["Title"] = ctx.Tr("admin.hooks") |
||||||
|
ctx.Data["PageIsAdminHooks"] = true |
||||||
|
ctx.Data["BaseLink"] = setting.AppSubURL + "/admin/hooks" |
||||||
|
ctx.Data["Description"] = ctx.Tr("admin.hooks.desc") |
||||||
|
|
||||||
|
ws, err := models.GetDefaultWebhooks() |
||||||
|
if err != nil { |
||||||
|
ctx.ServerError("GetWebhooksDefaults", err) |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
ctx.Data["Webhooks"] = ws |
||||||
|
ctx.HTML(200, tplAdminHooks) |
||||||
|
} |
||||||
|
|
||||||
|
// DeleteDefaultWebhook response for delete admin-default webhook
|
||||||
|
func DeleteDefaultWebhook(ctx *context.Context) { |
||||||
|
if err := models.DeleteDefaultWebhook(ctx.QueryInt64("id")); err != nil { |
||||||
|
ctx.Flash.Error("DeleteDefaultWebhook: " + err.Error()) |
||||||
|
} else { |
||||||
|
ctx.Flash.Success(ctx.Tr("repo.settings.webhook_deletion_success")) |
||||||
|
} |
||||||
|
|
||||||
|
ctx.JSON(200, map[string]interface{}{ |
||||||
|
"redirect": setting.AppSubURL + "/admin/hooks", |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
{{template "base/head" .}} |
||||||
|
<div class="admin new webhook"> |
||||||
|
{{template "admin/navbar" .}} |
||||||
|
<div class="ui container"> |
||||||
|
{{template "base/alert" .}} |
||||||
|
<h4 class="ui top attached header"> |
||||||
|
{{if .PageIsAdminHooksNew}} |
||||||
|
{{.i18n.Tr "admin.hooks.add_webhook"}} |
||||||
|
{{else}} |
||||||
|
{{.i18n.Tr "admin.hooks.update_webhook"}} |
||||||
|
{{end}} |
||||||
|
<div class="ui right"> |
||||||
|
{{if eq .HookType "gitea"}} |
||||||
|
<img class="img-13" src="{{AppSubUrl}}/img/gitea-sm.png"> |
||||||
|
{{else if eq .HookType "gogs"}} |
||||||
|
<img class="img-13" src="{{AppSubUrl}}/img/gogs.ico"> |
||||||
|
{{else if eq .HookType "slack"}} |
||||||
|
<img class="img-13" src="{{AppSubUrl}}/img/slack.png"> |
||||||
|
{{else if eq .HookType "discord"}} |
||||||
|
<img class="img-13" src="{{AppSubUrl}}/img/discord.png"> |
||||||
|
{{else if eq .HookType "dingtalk"}} |
||||||
|
<img class="img-13" src="{{AppSubUrl}}/img/dingtalk.ico"> |
||||||
|
{{end}} |
||||||
|
</div> |
||||||
|
</h4> |
||||||
|
<div class="ui attached segment"> |
||||||
|
{{template "repo/settings/webhook/gitea" .}} |
||||||
|
{{template "repo/settings/webhook/gogs" .}} |
||||||
|
{{template "repo/settings/webhook/slack" .}} |
||||||
|
{{template "repo/settings/webhook/discord" .}} |
||||||
|
{{template "repo/settings/webhook/dingtalk" .}} |
||||||
|
</div> |
||||||
|
|
||||||
|
{{template "repo/settings/webhook/history" .}} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{{template "base/footer" .}} |
@ -0,0 +1,8 @@ |
|||||||
|
{{template "base/head" .}} |
||||||
|
<div class="admin hooks"> |
||||||
|
{{template "admin/navbar" .}} |
||||||
|
<div class="ui container"> |
||||||
|
{{template "repo/settings/webhook/list" .}} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{{template "base/footer" .}} |
Loading…
Reference in new issue