Merge default and system webhooks under one menu (#14244)
This commit is contained in:
		
							parent
							
								
									84b147c7f0
								
							
						
					
					
						commit
						6eee9f0f4e
					
				
					 12 changed files with 148 additions and 141 deletions
				
			
		|  | @ -400,20 +400,6 @@ func GetWebhooksByOrgID(orgID int64, listOptions ListOptions) ([]*Webhook, error | |||
| 	return ws, sess.Find(&ws, &Webhook{OrgID: orgID}) | ||||
| } | ||||
| 
 | ||||
| // GetDefaultWebhook returns admin-default webhook by given ID.
 | ||||
| func GetDefaultWebhook(id int64) (*Webhook, error) { | ||||
| 	webhook := &Webhook{ID: id} | ||||
| 	has, err := x. | ||||
| 		Where("repo_id=? AND org_id=? AND is_system_webhook=?", 0, 0, false). | ||||
| 		Get(webhook) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} else if !has { | ||||
| 		return nil, ErrWebhookNotExist{id} | ||||
| 	} | ||||
| 	return webhook, nil | ||||
| } | ||||
| 
 | ||||
| // GetDefaultWebhooks returns all admin-default webhooks.
 | ||||
| func GetDefaultWebhooks() ([]*Webhook, error) { | ||||
| 	return getDefaultWebhooks(x) | ||||
|  | @ -426,11 +412,11 @@ func getDefaultWebhooks(e Engine) ([]*Webhook, error) { | |||
| 		Find(&webhooks) | ||||
| } | ||||
| 
 | ||||
| // GetSystemWebhook returns admin system webhook by given ID.
 | ||||
| func GetSystemWebhook(id int64) (*Webhook, error) { | ||||
| // GetSystemOrDefaultWebhook returns admin system or default webhook by given ID.
 | ||||
| func GetSystemOrDefaultWebhook(id int64) (*Webhook, error) { | ||||
| 	webhook := &Webhook{ID: id} | ||||
| 	has, err := x. | ||||
| 		Where("repo_id=? AND org_id=? AND is_system_webhook=?", 0, 0, true). | ||||
| 		Where("repo_id=? AND org_id=?", 0, 0). | ||||
| 		Get(webhook) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
|  |  | |||
|  | @ -2001,8 +2001,7 @@ dashboard = Dashboard | |||
| users = User Accounts | ||||
| organizations = Organizations | ||||
| repositories = Repositories | ||||
| hooks = Default Webhooks | ||||
| systemhooks = System Webhooks | ||||
| hooks = Webhooks | ||||
| authentication = Authentication Sources | ||||
| emails = User Emails | ||||
| config = Configuration | ||||
|  | @ -2152,11 +2151,13 @@ repos.forks = Forks | |||
| repos.issues = Issues | ||||
| repos.size = Size | ||||
| 
 | ||||
| hooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here are defaults and will be copied into all new repositories. Read more in the <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/webhooks/">webhooks guide</a>. | ||||
| hooks.add_webhook = Add Default Webhook | ||||
| hooks.update_webhook = Update Default Webhook | ||||
| defaulthooks = Default Webhooks | ||||
| defaulthooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here are defaults and will be copied into all new repositories. Read more in the <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/webhooks/">webhooks guide</a>. | ||||
| defaulthooks.add_webhook = Add Default Webhook | ||||
| defaulthooks.update_webhook = Update Default Webhook | ||||
| 
 | ||||
| systemhooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined will act on all repositories on the system, so please consider any performance implications this may have. Read more in the <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/webhooks/">webhooks guide</a>. | ||||
| systemhooks = System Webhooks | ||||
| systemhooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here will act on all repositories on the system, so please consider any performance implications this may have. Read more in the <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/webhooks/">webhooks guide</a>. | ||||
| systemhooks.add_webhook = Add System Webhook | ||||
| systemhooks.update_webhook = Update System Webhook | ||||
| 
 | ||||
|  |  | |||
|  | @ -18,30 +18,41 @@ const ( | |||
| 
 | ||||
| // DefaultOrSystemWebhooks renders both admin default and system webhook list pages
 | ||||
| func DefaultOrSystemWebhooks(ctx *context.Context) { | ||||
| 	var ws []*models.Webhook | ||||
| 	var err error | ||||
| 
 | ||||
| 	// Are we looking at default webhooks?
 | ||||
| 	if ctx.Params(":configType") == "hooks" { | ||||
| 		ctx.Data["Title"] = ctx.Tr("admin.hooks") | ||||
| 		ctx.Data["Description"] = ctx.Tr("admin.hooks.desc") | ||||
| 		ctx.Data["PageIsAdminHooks"] = true | ||||
| 		ctx.Data["BaseLink"] = setting.AppSubURL + "/admin/hooks" | ||||
| 		ws, err = models.GetDefaultWebhooks() | ||||
| 	} else { | ||||
| 		ctx.Data["Title"] = ctx.Tr("admin.systemhooks") | ||||
| 		ctx.Data["Description"] = ctx.Tr("admin.systemhooks.desc") | ||||
| 		ctx.Data["PageIsAdminSystemHooks"] = true | ||||
| 		ctx.Data["BaseLink"] = setting.AppSubURL + "/admin/system-hooks" | ||||
| 		ws, err = models.GetSystemWebhooks() | ||||
| 	ctx.Data["PageIsAdminSystemHooks"] = true | ||||
| 	ctx.Data["PageIsAdminDefaultHooks"] = true | ||||
| 
 | ||||
| 	def := make(map[string]interface{}, len(ctx.Data)) | ||||
| 	sys := make(map[string]interface{}, len(ctx.Data)) | ||||
| 	for k, v := range ctx.Data { | ||||
| 		def[k] = v | ||||
| 		sys[k] = v | ||||
| 	} | ||||
| 
 | ||||
| 	sys["Title"] = ctx.Tr("admin.systemhooks") | ||||
| 	sys["Description"] = ctx.Tr("admin.systemhooks.desc") | ||||
| 	sys["Webhooks"], err = models.GetSystemWebhooks() | ||||
| 	sys["BaseLink"] = setting.AppSubURL + "/admin/hooks" | ||||
| 	sys["BaseLinkNew"] = setting.AppSubURL + "/admin/system-hooks" | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("GetWebhooksAdmin", err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	ctx.Data["Webhooks"] = ws | ||||
| 	def["Title"] = ctx.Tr("admin.defaulthooks") | ||||
| 	def["Description"] = ctx.Tr("admin.defaulthooks.desc") | ||||
| 	def["Webhooks"], err = models.GetDefaultWebhooks() | ||||
| 	def["BaseLink"] = setting.AppSubURL + "/admin/hooks" | ||||
| 	def["BaseLinkNew"] = setting.AppSubURL + "/admin/default-hooks" | ||||
| 	if err != nil { | ||||
| 		ctx.ServerError("GetWebhooksAdmin", err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	ctx.Data["DefaultWebhooks"] = def | ||||
| 	ctx.Data["SystemWebhooks"] = sys | ||||
| 
 | ||||
| 	ctx.HTML(200, tplAdminHooks) | ||||
| } | ||||
| 
 | ||||
|  | @ -53,14 +64,7 @@ func DeleteDefaultOrSystemWebhook(ctx *context.Context) { | |||
| 		ctx.Flash.Success(ctx.Tr("repo.settings.webhook_deletion_success")) | ||||
| 	} | ||||
| 
 | ||||
| 	// Are we looking at default webhooks?
 | ||||
| 	if ctx.Params(":configType") == "hooks" { | ||||
| 		ctx.JSON(200, map[string]interface{}{ | ||||
| 			"redirect": setting.AppSubURL + "/admin/hooks", | ||||
| 		}) | ||||
| 	} else { | ||||
| 		ctx.JSON(200, map[string]interface{}{ | ||||
| 			"redirect": setting.AppSubURL + "/admin/system-hooks", | ||||
| 		}) | ||||
| 	} | ||||
| 	ctx.JSON(200, map[string]interface{}{ | ||||
| 		"redirect": setting.AppSubURL + "/admin/hooks", | ||||
| 	}) | ||||
| } | ||||
|  |  | |||
|  | @ -173,6 +173,7 @@ func Webhooks(ctx *context.Context) { | |||
| 	ctx.Data["Title"] = ctx.Tr("org.settings") | ||||
| 	ctx.Data["PageIsSettingsHooks"] = true | ||||
| 	ctx.Data["BaseLink"] = ctx.Org.OrgLink + "/settings/hooks" | ||||
| 	ctx.Data["BaseLinkNew"] = ctx.Org.OrgLink + "/settings/hooks" | ||||
| 	ctx.Data["Description"] = ctx.Tr("org.settings.hooks_desc") | ||||
| 
 | ||||
| 	ws, err := models.GetWebhooksByOrgID(ctx.Org.Organization.ID, models.ListOptions{}) | ||||
|  |  | |||
|  | @ -36,6 +36,7 @@ func Webhooks(ctx *context.Context) { | |||
| 	ctx.Data["Title"] = ctx.Tr("repo.settings.hooks") | ||||
| 	ctx.Data["PageIsSettingsHooks"] = true | ||||
| 	ctx.Data["BaseLink"] = ctx.Repo.RepoLink + "/settings/hooks" | ||||
| 	ctx.Data["BaseLinkNew"] = ctx.Repo.RepoLink + "/settings/hooks" | ||||
| 	ctx.Data["Description"] = ctx.Tr("repo.settings.hooks_desc", "https://docs.gitea.io/en-us/webhooks/") | ||||
| 
 | ||||
| 	ws, err := models.GetWebhooksByRepoID(ctx.Repo.Repository.ID, models.ListOptions{}) | ||||
|  | @ -54,6 +55,7 @@ type orgRepoCtx struct { | |||
| 	IsAdmin         bool | ||||
| 	IsSystemWebhook bool | ||||
| 	Link            string | ||||
| 	LinkNew         string | ||||
| 	NewTemplate     base.TplName | ||||
| } | ||||
| 
 | ||||
|  | @ -63,6 +65,7 @@ func getOrgRepoCtx(ctx *context.Context) (*orgRepoCtx, error) { | |||
| 		return &orgRepoCtx{ | ||||
| 			RepoID:      ctx.Repo.Repository.ID, | ||||
| 			Link:        path.Join(ctx.Repo.RepoLink, "settings/hooks"), | ||||
| 			LinkNew:     path.Join(ctx.Repo.RepoLink, "settings/hooks"), | ||||
| 			NewTemplate: tplHookNew, | ||||
| 		}, nil | ||||
| 	} | ||||
|  | @ -71,16 +74,18 @@ func getOrgRepoCtx(ctx *context.Context) (*orgRepoCtx, error) { | |||
| 		return &orgRepoCtx{ | ||||
| 			OrgID:       ctx.Org.Organization.ID, | ||||
| 			Link:        path.Join(ctx.Org.OrgLink, "settings/hooks"), | ||||
| 			LinkNew:     path.Join(ctx.Org.OrgLink, "settings/hooks"), | ||||
| 			NewTemplate: tplOrgHookNew, | ||||
| 		}, nil | ||||
| 	} | ||||
| 
 | ||||
| 	if ctx.User.IsAdmin { | ||||
| 		// Are we looking at default webhooks?
 | ||||
| 		if ctx.Params(":configType") == "hooks" { | ||||
| 		if ctx.Params(":configType") == "default-hooks" { | ||||
| 			return &orgRepoCtx{ | ||||
| 				IsAdmin:     true, | ||||
| 				Link:        path.Join(setting.AppSubURL, "/admin/hooks"), | ||||
| 				LinkNew:     path.Join(setting.AppSubURL, "/admin/default-hooks"), | ||||
| 				NewTemplate: tplAdminHookNew, | ||||
| 			}, nil | ||||
| 		} | ||||
|  | @ -89,7 +94,8 @@ func getOrgRepoCtx(ctx *context.Context) (*orgRepoCtx, error) { | |||
| 		return &orgRepoCtx{ | ||||
| 			IsAdmin:         true, | ||||
| 			IsSystemWebhook: true, | ||||
| 			Link:            path.Join(setting.AppSubURL, "/admin/system-hooks"), | ||||
| 			Link:            path.Join(setting.AppSubURL, "/admin/hooks"), | ||||
| 			LinkNew:         path.Join(setting.AppSubURL, "/admin/system-hooks"), | ||||
| 			NewTemplate:     tplAdminHookNew, | ||||
| 		}, nil | ||||
| 	} | ||||
|  | @ -121,8 +127,8 @@ func WebhooksNew(ctx *context.Context) { | |||
| 		ctx.Data["PageIsAdminSystemHooks"] = true | ||||
| 		ctx.Data["PageIsAdminSystemHooksNew"] = true | ||||
| 	} else if orCtx.IsAdmin { | ||||
| 		ctx.Data["PageIsAdminHooks"] = true | ||||
| 		ctx.Data["PageIsAdminHooksNew"] = true | ||||
| 		ctx.Data["PageIsAdminDefaultHooks"] = true | ||||
| 		ctx.Data["PageIsAdminDefaultHooksNew"] = true | ||||
| 	} else { | ||||
| 		ctx.Data["PageIsSettingsHooks"] = true | ||||
| 		ctx.Data["PageIsSettingsHooksNew"] = true | ||||
|  | @ -139,7 +145,7 @@ func WebhooksNew(ctx *context.Context) { | |||
| 			"IconURL":  setting.AppURL + "img/favicon.png", | ||||
| 		} | ||||
| 	} | ||||
| 	ctx.Data["BaseLink"] = orCtx.Link | ||||
| 	ctx.Data["BaseLink"] = orCtx.LinkNew | ||||
| 
 | ||||
| 	ctx.HTML(200, orCtx.NewTemplate) | ||||
| } | ||||
|  | @ -187,7 +193,7 @@ func GiteaHooksNewPost(ctx *context.Context, form auth.NewWebhookForm) { | |||
| 		ctx.ServerError("getOrgRepoCtx", err) | ||||
| 		return | ||||
| 	} | ||||
| 	ctx.Data["BaseLink"] = orCtx.Link | ||||
| 	ctx.Data["BaseLink"] = orCtx.LinkNew | ||||
| 
 | ||||
| 	if ctx.HasError() { | ||||
| 		ctx.HTML(200, orCtx.NewTemplate) | ||||
|  | @ -241,7 +247,7 @@ func newGogsWebhookPost(ctx *context.Context, form auth.NewGogshookForm, kind mo | |||
| 		ctx.ServerError("getOrgRepoCtx", err) | ||||
| 		return | ||||
| 	} | ||||
| 	ctx.Data["BaseLink"] = orCtx.Link | ||||
| 	ctx.Data["BaseLink"] = orCtx.LinkNew | ||||
| 
 | ||||
| 	if ctx.HasError() { | ||||
| 		ctx.HTML(200, orCtx.NewTemplate) | ||||
|  | @ -537,7 +543,7 @@ func SlackHooksNewPost(ctx *context.Context, form auth.NewSlackHookForm) { | |||
| 
 | ||||
| 	if form.HasInvalidChannel() { | ||||
| 		ctx.Flash.Error(ctx.Tr("repo.settings.add_webhook.invalid_channel_name")) | ||||
| 		ctx.Redirect(orCtx.Link + "/slack/new") | ||||
| 		ctx.Redirect(orCtx.LinkNew + "/slack/new") | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
|  | @ -632,12 +638,10 @@ func checkWebhook(ctx *context.Context) (*orgRepoCtx, *models.Webhook) { | |||
| 		w, err = models.GetWebhookByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id")) | ||||
| 	} else if orCtx.OrgID > 0 { | ||||
| 		w, err = models.GetWebhookByOrgID(ctx.Org.Organization.ID, ctx.ParamsInt64(":id")) | ||||
| 	} else if orCtx.IsSystemWebhook { | ||||
| 		w, err = models.GetSystemWebhook(ctx.ParamsInt64(":id")) | ||||
| 	} else { | ||||
| 		w, err = models.GetDefaultWebhook(ctx.ParamsInt64(":id")) | ||||
| 	} else if orCtx.IsAdmin { | ||||
| 		w, err = models.GetSystemOrDefaultWebhook(ctx.ParamsInt64(":id")) | ||||
| 	} | ||||
| 	if err != nil { | ||||
| 	if err != nil || w == nil { | ||||
| 		if models.IsErrWebhookNotExist(err) { | ||||
| 			ctx.NotFound("GetWebhookByID", nil) | ||||
| 		} else { | ||||
|  |  | |||
|  | @ -370,19 +370,9 @@ func RegisterMacaronRoutes(m *macaron.Macaron) { | |||
| 			m.Post("/delete", admin.DeleteRepo) | ||||
| 		}) | ||||
| 
 | ||||
| 		m.Group("/^:configType(hooks|system-hooks)$", func() { | ||||
| 		m.Group("/hooks", func() { | ||||
| 			m.Get("", admin.DefaultOrSystemWebhooks) | ||||
| 			m.Post("/delete", admin.DeleteDefaultOrSystemWebhook) | ||||
| 			m.Get("/:type/new", repo.WebhooksNew) | ||||
| 			m.Post("/gitea/new", bindIgnErr(auth.NewWebhookForm{}), repo.GiteaHooksNewPost) | ||||
| 			m.Post("/gogs/new", bindIgnErr(auth.NewGogshookForm{}), repo.GogsHooksNewPost) | ||||
| 			m.Post("/slack/new", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksNewPost) | ||||
| 			m.Post("/discord/new", bindIgnErr(auth.NewDiscordHookForm{}), repo.DiscordHooksNewPost) | ||||
| 			m.Post("/dingtalk/new", bindIgnErr(auth.NewDingtalkHookForm{}), repo.DingtalkHooksNewPost) | ||||
| 			m.Post("/telegram/new", bindIgnErr(auth.NewTelegramHookForm{}), repo.TelegramHooksNewPost) | ||||
| 			m.Post("/matrix/new", bindIgnErr(auth.NewMatrixHookForm{}), repo.MatrixHooksNewPost) | ||||
| 			m.Post("/msteams/new", bindIgnErr(auth.NewMSTeamsHookForm{}), repo.MSTeamsHooksNewPost) | ||||
| 			m.Post("/feishu/new", bindIgnErr(auth.NewFeishuHookForm{}), repo.FeishuHooksNewPost) | ||||
| 			m.Get("/:id", repo.WebHooksEdit) | ||||
| 			m.Post("/gitea/:id", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksEditPost) | ||||
| 			m.Post("/gogs/:id", bindIgnErr(auth.NewGogshookForm{}), repo.GogsHooksEditPost) | ||||
|  | @ -395,6 +385,19 @@ func RegisterMacaronRoutes(m *macaron.Macaron) { | |||
| 			m.Post("/feishu/:id", bindIgnErr(auth.NewFeishuHookForm{}), repo.FeishuHooksEditPost) | ||||
| 		}) | ||||
| 
 | ||||
| 		m.Group("/^:configType(default-hooks|system-hooks)$", func() { | ||||
| 			m.Get("/:type/new", repo.WebhooksNew) | ||||
| 			m.Post("/gitea/new", bindIgnErr(auth.NewWebhookForm{}), repo.GiteaHooksNewPost) | ||||
| 			m.Post("/gogs/new", bindIgnErr(auth.NewGogshookForm{}), repo.GogsHooksNewPost) | ||||
| 			m.Post("/slack/new", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksNewPost) | ||||
| 			m.Post("/discord/new", bindIgnErr(auth.NewDiscordHookForm{}), repo.DiscordHooksNewPost) | ||||
| 			m.Post("/dingtalk/new", bindIgnErr(auth.NewDingtalkHookForm{}), repo.DingtalkHooksNewPost) | ||||
| 			m.Post("/telegram/new", bindIgnErr(auth.NewTelegramHookForm{}), repo.TelegramHooksNewPost) | ||||
| 			m.Post("/matrix/new", bindIgnErr(auth.NewMatrixHookForm{}), repo.MatrixHooksNewPost) | ||||
| 			m.Post("/msteams/new", bindIgnErr(auth.NewMSTeamsHookForm{}), repo.MSTeamsHooksNewPost) | ||||
| 			m.Post("/feishu/new", bindIgnErr(auth.NewFeishuHookForm{}), repo.FeishuHooksNewPost) | ||||
| 		}) | ||||
| 
 | ||||
| 		m.Group("/auths", func() { | ||||
| 			m.Get("", admin.Authentications) | ||||
| 			m.Combo("/new").Get(admin.NewAuthSource).Post(bindIgnErr(auth.AuthenticationForm{}), admin.NewAuthSourcePost) | ||||
|  |  | |||
|  | @ -4,10 +4,14 @@ | |||
| 	<div class="ui container"> | ||||
| 		{{template "base/alert" .}} | ||||
| 		<h4 class="ui top attached header"> | ||||
| 			{{if .PageIsAdminHooksNew}} | ||||
| 				{{.i18n.Tr "admin.hooks.add_webhook"}} | ||||
| 			{{if .PageIsAdminDefaultHooksNew}} | ||||
| 				{{.i18n.Tr "admin.defaulthooks.add_webhook"}} | ||||
| 			{{else if .PageIsAdminSystemHooksNew}} | ||||
| 				{{.i18n.Tr "admin.systemhooks.add_webhook"}} | ||||
| 			{{else if .Webhook.IsSystemWebhook}} | ||||
| 				{{.i18n.Tr "admin.systemhooks.update_webhook"}} | ||||
| 			{{else}} | ||||
| 				{{.i18n.Tr "admin.hooks.update_webhook"}} | ||||
| 				{{.i18n.Tr "admin.defaulthooks.update_webhook"}} | ||||
| 			{{end}} | ||||
| 			<div class="ui right"> | ||||
| 				{{if eq .HookType "gitea"}} | ||||
|  |  | |||
|  | @ -2,7 +2,12 @@ | |||
| <div class="page-content admin hooks"> | ||||
| 	{{template "admin/navbar" .}} | ||||
| 	<div class="ui container"> | ||||
| 		{{template "repo/settings/webhook/list" .}} | ||||
| 		{{template "base/alert" .}} | ||||
| 
 | ||||
| 		{{template "repo/settings/webhook/base_list" .SystemWebhooks}} | ||||
| 		{{template "repo/settings/webhook/base_list" .DefaultWebhooks}} | ||||
| 
 | ||||
| 		{{template "repo/settings/webhook/delete_modal" .}} | ||||
| 	</div> | ||||
| </div> | ||||
| {{template "base/footer" .}} | ||||
|  |  | |||
|  | @ -12,12 +12,9 @@ | |||
| 		<a class="{{if .PageIsAdminRepositories}}active{{end}} item" href="{{AppSubUrl}}/admin/repos"> | ||||
| 			{{.i18n.Tr "admin.repositories"}} | ||||
| 		</a> | ||||
| 		<a class="{{if .PageIsAdminHooks}}active{{end}} item" href="{{AppSubUrl}}/admin/hooks"> | ||||
| 		<a class="{{if or .PageIsAdminDefaultHooks .PageIsAdminSystemHooks}}active{{end}} item" href="{{AppSubUrl}}/admin/hooks"> | ||||
| 			{{.i18n.Tr "admin.hooks"}} | ||||
| 		</a> | ||||
| 		<a class="{{if .PageIsAdminSystemHooks}}active{{end}} item" href="{{AppSubUrl}}/admin/system-hooks"> | ||||
| 			{{.i18n.Tr "admin.systemhooks"}} | ||||
| 		</a> | ||||
| 		<a class="{{if .PageIsAdminAuthentications}}active{{end}} item" href="{{AppSubUrl}}/admin/auths"> | ||||
| 			{{.i18n.Tr "admin.authentication"}} | ||||
| 		</a> | ||||
|  |  | |||
							
								
								
									
										60
									
								
								templates/repo/settings/webhook/base_list.tmpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								templates/repo/settings/webhook/base_list.tmpl
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,60 @@ | |||
| <h4 class="ui top attached header"> | ||||
| 	{{.Title}} | ||||
| 	<div class="ui right"> | ||||
| 		<div class="ui floating1 jump dropdown"> | ||||
| 			<div class="ui blue tiny button">{{.i18n.Tr "repo.settings.add_webhook"}}</div> | ||||
| 			<div class="menu"> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/gitea/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/gitea.svg">Gitea | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/gogs/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/gogs.ico">Gogs | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/slack/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/slack.png">Slack | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/discord/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/discord.png">Discord | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/dingtalk/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/dingtalk.ico">Dingtalk | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/telegram/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/telegram.png">Telegram | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/msteams/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/msteams.png">Microsoft Teams | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/feishu/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/feishu.png">Feishu | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLinkNew}}/matrix/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/matrix.svg">Matrix | ||||
| 				</a> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </h4> | ||||
| <div class="ui attached segment"> | ||||
| 	<div class="ui list"> | ||||
| 		<div class="item"> | ||||
| 			{{.Description | Str2html}} | ||||
| 		</div> | ||||
| 		{{range .Webhooks}} | ||||
| 			<div class="item"> | ||||
| 				{{if eq .LastStatus 1}} | ||||
| 					<span class="text green mr-3">{{svg "octicon-check"}}</span> | ||||
| 				{{else if eq .LastStatus 2}} | ||||
| 					<span class="text red mr-3">{{svg "octicon-alert"}}</span> | ||||
| 				{{else}} | ||||
| 					<span class="text grey mr-3">{{svg "octicon-dot-fill"}}</span> | ||||
| 				{{end}} | ||||
| 				<a class="dont-break-out" href="{{$.BaseLink}}/{{.ID}}">{{.URL}}</a> | ||||
| 				<div class="ui right"> | ||||
| 					<span class="text blue px-2"><a href="{{$.BaseLink}}/{{.ID}}">{{svg "octicon-pencil"}}</a></span> | ||||
| 					<span class="text red px-2"><a class="delete-button" data-url="{{$.Link}}/delete" data-id="{{.ID}}">{{svg "octicon-trashcan"}}</a></span> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		{{end}} | ||||
| 	</div> | ||||
| </div> | ||||
|  | @ -1,63 +1,5 @@ | |||
| {{template "base/alert" .}} | ||||
| <h4 class="ui top attached header"> | ||||
| 	{{.i18n.Tr "repo.settings.hooks"}} | ||||
| 	<div class="ui right"> | ||||
| 		<div class="ui floating1 jump dropdown"> | ||||
| 			<div class="ui blue tiny button">{{.i18n.Tr "repo.settings.add_webhook"}}</div> | ||||
| 			<div class="menu"> | ||||
| 				<a class="item" href="{{.BaseLink}}/gitea/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/gitea.svg">Gitea | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLink}}/gogs/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/gogs.ico">Gogs | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLink}}/slack/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/slack.png">Slack | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLink}}/discord/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/discord.png">Discord | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLink}}/dingtalk/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/dingtalk.ico">Dingtalk | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLink}}/telegram/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/telegram.png">Telegram | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLink}}/msteams/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/msteams.png">Microsoft Teams | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLink}}/feishu/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/feishu.png">Feishu | ||||
| 				</a> | ||||
| 				<a class="item" href="{{.BaseLink}}/matrix/new"> | ||||
| 					<img width="20" height="20" src="{{StaticUrlPrefix}}/img/matrix.svg">Matrix | ||||
| 				</a> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </h4> | ||||
| <div class="ui attached segment"> | ||||
| 	<div class="ui list"> | ||||
| 		<div class="item"> | ||||
| 			{{.Description | Str2html}} | ||||
| 		</div> | ||||
| 		{{range .Webhooks}} | ||||
| 			<div class="item"> | ||||
| 				{{if eq .LastStatus 1}} | ||||
| 					<span class="text green mr-3">{{svg "octicon-check"}}</span> | ||||
| 				{{else if eq .LastStatus 2}} | ||||
| 					<span class="text red mr-3">{{svg "octicon-alert"}}</span> | ||||
| 				{{else}} | ||||
| 					<span class="text grey mr-3">{{svg "octicon-dot-fill"}}</span> | ||||
| 				{{end}} | ||||
| 				<a class="dont-break-out" href="{{$.BaseLink}}/{{.ID}}">{{.URL}}</a> | ||||
| 				<div class="ui right"> | ||||
| 					<span class="text blue px-2"><a href="{{$.BaseLink}}/{{.ID}}">{{svg "octicon-pencil"}}</a></span> | ||||
| 					<span class="text red px-2"><a class="delete-button" data-url="{{$.Link}}/delete" data-id="{{.ID}}">{{svg "octicon-trashcan"}}</a></span> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		{{end}} | ||||
| 	</div> | ||||
| </div> | ||||
| 
 | ||||
| {{template "repo/settings/webhook/base_list" .}} | ||||
| 
 | ||||
| {{template "repo/settings/webhook/delete_modal" .}} | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| {{$isNew:=or .PageIsSettingsHooksNew .PageIsAdminHooksNew}} | ||||
| {{$isNew:=or .PageIsSettingsHooksNew .PageIsAdminDefaultHooksNew .PageIsAdminSystemHooksNew}} | ||||
| <div class="field"> | ||||
| 	<h4>{{.i18n.Tr "repo.settings.event_desc"}}</h4> | ||||
| 	<div class="grouped event type fields"> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue