loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request '[REFACTOR] add Icon to webhook.Interface' (#2908) from oliverpool/forgejo:webhook_6_icon_method into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/2908
Reviewed-by: Gusted <gusted@noreply.codeberg.org>

+124 -107
-1
.deadcode-out
··· 341 341 342 342 package "code.gitea.io/gitea/services/webhook" 343 343 func NewNotifier 344 - func List 345 344
+3 -3
options/locale/locale_bg.ini
··· 935 935 settings.web_hook_name_telegram = Telegram 936 936 settings.web_hook_name_matrix = Matrix 937 937 settings.web_hook_name_gogs = Gogs 938 - settings.web_hook_name_feishu_or_larksuite = Feishu / Lark Suite 939 - settings.web_hook_name_feishu = Feishu 940 - settings.web_hook_name_larksuite = Lark Suite 938 + settings.web_hook_name_feishu = Feishu / Lark Suite 939 + settings.web_hook_name_feishu_only = Feishu 940 + settings.web_hook_name_larksuite_only = Lark Suite 941 941 settings.web_hook_name_wechatwork = WeCom (Wechat Work) 942 942 settings.web_hook_name_packagist = Packagist 943 943 diff.file_byte_size = Размер
+3 -3
options/locale/locale_cs-CZ.ini
··· 2308 2308 settings.web_hook_name_telegram=Telegram 2309 2309 settings.web_hook_name_matrix=Matrix 2310 2310 settings.web_hook_name_msteams=Microsoft Teams 2311 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2312 - settings.web_hook_name_feishu=Feishu 2313 - settings.web_hook_name_larksuite=Lark Suite 2311 + settings.web_hook_name_feishu=Feishu / Lark Suite 2312 + settings.web_hook_name_feishu_only =Feishu 2313 + settings.web_hook_name_larksuite_only =Lark Suite 2314 2314 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2315 2315 settings.web_hook_name_packagist=Packagist 2316 2316 settings.packagist_username=Uživatelské jméno pro Packagist
+3 -3
options/locale/locale_de-DE.ini
··· 2304 2304 settings.web_hook_name_telegram=Telegram 2305 2305 settings.web_hook_name_matrix=Matrix 2306 2306 settings.web_hook_name_msteams=Microsoft Teams 2307 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2308 - settings.web_hook_name_feishu=Feishu 2309 - settings.web_hook_name_larksuite=Lark Suite 2307 + settings.web_hook_name_feishu=Feishu / Lark Suite 2308 + settings.web_hook_name_feishu_only =Feishu 2309 + settings.web_hook_name_larksuite_only =Lark Suite 2310 2310 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2311 2311 settings.web_hook_name_packagist=Packagist 2312 2312 settings.packagist_username=Benutzername für Packagist
+3 -3
options/locale/locale_el-GR.ini
··· 2293 2293 settings.web_hook_name_telegram=Telegram 2294 2294 settings.web_hook_name_matrix=Matrix 2295 2295 settings.web_hook_name_msteams=Microsoft Teams 2296 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2297 - settings.web_hook_name_feishu=Feishu 2298 - settings.web_hook_name_larksuite=Lark Suite 2296 + settings.web_hook_name_feishu=Feishu / Lark Suite 2297 + settings.web_hook_name_feishu_only =Feishu 2298 + settings.web_hook_name_larksuite_only =Lark Suite 2299 2299 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2300 2300 settings.web_hook_name_packagist=Packagist 2301 2301 settings.packagist_username=Όνομα χρήστη Packagist
+3 -3
options/locale/locale_en-US.ini
··· 2372 2372 settings.web_hook_name_telegram = Telegram 2373 2373 settings.web_hook_name_matrix = Matrix 2374 2374 settings.web_hook_name_msteams = Microsoft Teams 2375 - settings.web_hook_name_feishu_or_larksuite = Feishu / Lark Suite 2376 - settings.web_hook_name_feishu = Feishu 2377 - settings.web_hook_name_larksuite = Lark Suite 2375 + settings.web_hook_name_feishu = Feishu / Lark Suite 2376 + settings.web_hook_name_feishu_only = Feishu 2377 + settings.web_hook_name_larksuite_only = Lark Suite 2378 2378 settings.web_hook_name_wechatwork = WeCom (Wechat Work) 2379 2379 settings.web_hook_name_packagist = Packagist 2380 2380 settings.packagist_username = Packagist username
+3 -3
options/locale/locale_es-ES.ini
··· 2267 2267 settings.web_hook_name_telegram=Telegram 2268 2268 settings.web_hook_name_matrix=Matrix 2269 2269 settings.web_hook_name_msteams=Microsoft Teams 2270 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2271 - settings.web_hook_name_feishu=Feishu 2272 - settings.web_hook_name_larksuite=Lark Suite 2270 + settings.web_hook_name_feishu=Feishu / Lark Suite 2271 + settings.web_hook_name_feishu_only =Feishu 2272 + settings.web_hook_name_larksuite_only =Lark Suite 2273 2273 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2274 2274 settings.web_hook_name_packagist=Packagist 2275 2275 settings.packagist_username=Nombre de usuario Packagist
+2 -2
options/locale/locale_fi-FI.ini
··· 1184 1184 settings.web_hook_name_dingtalk=DingTalk 1185 1185 settings.web_hook_name_telegram=Telegram 1186 1186 settings.web_hook_name_matrix=Matrix 1187 - settings.web_hook_name_feishu=Feishu 1188 - settings.web_hook_name_larksuite=Lark Suite 1187 + settings.web_hook_name_feishu_only =Feishu 1188 + settings.web_hook_name_larksuite_only =Lark Suite 1189 1189 settings.web_hook_name_packagist=Packagist 1190 1190 settings.deploy_keys=Julkaisuavaimet 1191 1191 settings.add_deploy_key=Lisää julkaisuavain
+3 -3
options/locale/locale_fr-FR.ini
··· 2317 2317 settings.web_hook_name_telegram=Telegram 2318 2318 settings.web_hook_name_matrix=Matrix 2319 2319 settings.web_hook_name_msteams=Microsoft Teams 2320 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2321 - settings.web_hook_name_feishu=Feishu 2322 - settings.web_hook_name_larksuite=Lark Suite 2320 + settings.web_hook_name_feishu=Feishu / Lark Suite 2321 + settings.web_hook_name_feishu_only =Feishu 2322 + settings.web_hook_name_larksuite_only =Lark Suite 2323 2323 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2324 2324 settings.web_hook_name_packagist=Packagist 2325 2325 settings.packagist_username=Nom d'utilisateur Packagist
+1 -1
options/locale/locale_is-IS.ini
··· 1065 1065 settings.web_hook_name_dingtalk=DingTalk 1066 1066 settings.web_hook_name_telegram=Telegram 1067 1067 settings.web_hook_name_msteams=Microsoft Teams 1068 - settings.web_hook_name_feishu=Feishu 1068 + settings.web_hook_name_feishu_only =Feishu 1069 1069 settings.title=Heiti 1070 1070 settings.deploy_key_content=Innihald 1071 1071 settings.branches=Greinar
+3 -3
options/locale/locale_it-IT.ini
··· 2085 2085 settings.web_hook_name_telegram=Telegram 2086 2086 settings.web_hook_name_matrix=Matrix 2087 2087 settings.web_hook_name_msteams=Microsoft Teams 2088 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2089 - settings.web_hook_name_feishu=Feishu 2090 - settings.web_hook_name_larksuite=Lark Suite 2088 + settings.web_hook_name_feishu=Feishu / Lark Suite 2089 + settings.web_hook_name_feishu_only =Feishu 2090 + settings.web_hook_name_larksuite_only =Lark Suite 2091 2091 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2092 2092 settings.web_hook_name_packagist=Packagist 2093 2093 settings.packagist_username=Nome utente Packagist
+3 -3
options/locale/locale_ja-JP.ini
··· 2303 2303 settings.web_hook_name_telegram=Telegram 2304 2304 settings.web_hook_name_matrix=Matrix 2305 2305 settings.web_hook_name_msteams=Microsoft Teams 2306 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2307 - settings.web_hook_name_feishu=Feishu 2308 - settings.web_hook_name_larksuite=Lark Suite 2306 + settings.web_hook_name_feishu=Feishu / Lark Suite 2307 + settings.web_hook_name_feishu_only =Feishu 2308 + settings.web_hook_name_larksuite_only =Lark Suite 2309 2309 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2310 2310 settings.web_hook_name_packagist=Packagist 2311 2311 settings.packagist_username=Packagist ユーザー名
+3 -3
options/locale/locale_lv-LV.ini
··· 2253 2253 settings.web_hook_name_telegram=Telegram 2254 2254 settings.web_hook_name_matrix=Matrix 2255 2255 settings.web_hook_name_msteams=Microsoft Teams 2256 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2257 - settings.web_hook_name_feishu=Feishu 2258 - settings.web_hook_name_larksuite=Lark Suite 2256 + settings.web_hook_name_feishu=Feishu / Lark Suite 2257 + settings.web_hook_name_feishu_only =Feishu 2258 + settings.web_hook_name_larksuite_only =Lark Suite 2259 2259 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2260 2260 settings.web_hook_name_packagist=Packagist 2261 2261 settings.packagist_username=Packagist lietotājvārds
+3 -3
options/locale/locale_nl-NL.ini
··· 2032 2032 settings.web_hook_name_telegram=Telegram 2033 2033 settings.web_hook_name_matrix=Matrix 2034 2034 settings.web_hook_name_msteams=Microsoft Teams 2035 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2036 - settings.web_hook_name_feishu=Feishu 2037 - settings.web_hook_name_larksuite=Lark Suite 2035 + settings.web_hook_name_feishu=Feishu / Lark Suite 2036 + settings.web_hook_name_feishu_only =Feishu 2037 + settings.web_hook_name_larksuite_only =Lark Suite 2038 2038 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2039 2039 settings.web_hook_name_packagist=Packagist 2040 2040 settings.packagist_username=Packagist gebruikersnaam
+3 -3
options/locale/locale_pt-BR.ini
··· 2236 2236 settings.web_hook_name_telegram=Telegram 2237 2237 settings.web_hook_name_matrix=Matrix 2238 2238 settings.web_hook_name_msteams=Microsoft Teams 2239 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2240 - settings.web_hook_name_feishu=Feishu 2241 - settings.web_hook_name_larksuite=Lark Suite 2239 + settings.web_hook_name_feishu=Feishu / Lark Suite 2240 + settings.web_hook_name_feishu_only =Feishu 2241 + settings.web_hook_name_larksuite_only =Lark Suite 2242 2242 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2243 2243 settings.web_hook_name_packagist=Packagist 2244 2244 settings.packagist_username=Nome de usuário no Packagist
+3 -3
options/locale/locale_pt-PT.ini
··· 2269 2269 settings.web_hook_name_telegram=Telegram 2270 2270 settings.web_hook_name_matrix=Matrix 2271 2271 settings.web_hook_name_msteams=Microsoft Teams 2272 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2273 - settings.web_hook_name_feishu=Feishu 2274 - settings.web_hook_name_larksuite=Lark Suite 2272 + settings.web_hook_name_feishu=Feishu / Lark Suite 2273 + settings.web_hook_name_feishu_only =Feishu 2274 + settings.web_hook_name_larksuite_only =Lark Suite 2275 2275 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2276 2276 settings.web_hook_name_packagist=Packagist 2277 2277 settings.packagist_username=Nome de utilizador no Packagist
+3 -3
options/locale/locale_ru-RU.ini
··· 2278 2278 settings.web_hook_name_telegram=Telegram 2279 2279 settings.web_hook_name_matrix=Matrix 2280 2280 settings.web_hook_name_msteams=Microsoft Teams 2281 - settings.web_hook_name_feishu_or_larksuite=Feishu или Lark Suite 2282 - settings.web_hook_name_feishu=Feishu 2283 - settings.web_hook_name_larksuite=Lark Suite 2281 + settings.web_hook_name_feishu=Feishu или Lark Suite 2282 + settings.web_hook_name_feishu_only =Feishu 2283 + settings.web_hook_name_larksuite_only =Lark Suite 2284 2284 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2285 2285 settings.web_hook_name_packagist=Packagist 2286 2286 settings.packagist_username=Имя пользователя Packagist
+3 -3
options/locale/locale_tr-TR.ini
··· 2252 2252 settings.web_hook_name_telegram=Telegram 2253 2253 settings.web_hook_name_matrix=Matrix 2254 2254 settings.web_hook_name_msteams=Microsoft Teams 2255 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2256 - settings.web_hook_name_feishu=Feishu 2257 - settings.web_hook_name_larksuite=Lark Suite 2255 + settings.web_hook_name_feishu=Feishu / Lark Suite 2256 + settings.web_hook_name_feishu_only =Feishu 2257 + settings.web_hook_name_larksuite_only =Lark Suite 2258 2258 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2259 2259 settings.web_hook_name_packagist=Packagist 2260 2260 settings.packagist_username=Packagist kullanıcı adı
+3 -3
options/locale/locale_zh-CN.ini
··· 2318 2318 settings.web_hook_name_telegram=Telegram 2319 2319 settings.web_hook_name_matrix=Matrix 2320 2320 settings.web_hook_name_msteams=Microsoft Teams 2321 - settings.web_hook_name_feishu_or_larksuite=飞书 / Lark Suite 2322 - settings.web_hook_name_feishu=飞书 2323 - settings.web_hook_name_larksuite=Lark Suite 2321 + settings.web_hook_name_feishu=飞书 / Lark Suite 2322 + settings.web_hook_name_feishu_only =飞书 2323 + settings.web_hook_name_larksuite_only =Lark Suite 2324 2324 settings.web_hook_name_wechatwork=企业微信 2325 2325 settings.web_hook_name_packagist=Packagist 2326 2326 settings.packagist_username=Packagist 用户名
+3 -3
options/locale/locale_zh-TW.ini
··· 2071 2071 settings.web_hook_name_telegram=Telegram 2072 2072 settings.web_hook_name_matrix=Matrix 2073 2073 settings.web_hook_name_msteams=Microsoft Teams 2074 - settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite 2075 - settings.web_hook_name_feishu=Feishu 2076 - settings.web_hook_name_larksuite=Lark Suite 2074 + settings.web_hook_name_feishu=Feishu / Lark Suite 2075 + settings.web_hook_name_feishu_only =Feishu 2076 + settings.web_hook_name_larksuite_only =Lark Suite 2077 2077 settings.web_hook_name_wechatwork=WeCom (Wechat Work) 2078 2078 settings.web_hook_name_packagist=Packagist 2079 2079 settings.packagist_username=Packagist 帳號
+2
routers/web/org/setting.go
··· 26 26 org_service "code.gitea.io/gitea/services/org" 27 27 repo_service "code.gitea.io/gitea/services/repository" 28 28 user_service "code.gitea.io/gitea/services/user" 29 + webhook_service "code.gitea.io/gitea/services/webhook" 29 30 ) 30 31 31 32 const ( ··· 210 211 ctx.Data["PageIsSettingsHooks"] = true 211 212 ctx.Data["BaseLink"] = ctx.Org.OrgLink + "/settings/hooks" 212 213 ctx.Data["BaseLinkNew"] = ctx.Org.OrgLink + "/settings/hooks" 214 + ctx.Data["WebhookList"] = webhook_service.List() 213 215 ctx.Data["Description"] = ctx.Tr("org.settings.hooks_desc") 214 216 215 217 ws, err := db.Find[webhook.Webhook](ctx, webhook.ListWebhookOptions{OwnerID: ctx.Org.Organization.ID})
+9 -1
routers/web/repo/setting/webhook.go
··· 45 45 ctx.Data["PageIsSettingsHooks"] = true 46 46 ctx.Data["BaseLink"] = ctx.Repo.RepoLink + "/settings/hooks" 47 47 ctx.Data["BaseLinkNew"] = ctx.Repo.RepoLink + "/settings/hooks" 48 + ctx.Data["WebhookList"] = webhook_service.List() 48 49 ctx.Data["Description"] = ctx.Tr("repo.settings.hooks_desc", "https://forgejo.org/docs/latest/user/webhooks/") 49 50 50 51 ws, err := db.Find[webhook.Webhook](ctx, webhook.ListWebhookOptions{RepoID: ctx.Repo.Repository.ID}) ··· 132 133 } 133 134 134 135 hookType := ctx.Params(":type") 135 - if webhook_service.GetWebhookHandler(hookType) == nil { 136 + handler := webhook_service.GetWebhookHandler(hookType) 137 + if handler == nil { 136 138 ctx.NotFound("GetWebhookHandler", nil) 137 139 return 138 140 } 139 141 ctx.Data["HookType"] = hookType 142 + ctx.Data["WebhookHandler"] = handler 140 143 ctx.Data["BaseLink"] = orCtx.LinkNew 141 144 ctx.Data["BaseLinkNew"] = orCtx.LinkNew 145 + ctx.Data["WebhookList"] = webhook_service.List() 142 146 143 147 ctx.HTML(http.StatusOK, orCtx.NewTemplate) 144 148 } ··· 194 198 ctx.Data["PageIsSettingsHooksNew"] = true 195 199 ctx.Data["Webhook"] = webhook.Webhook{HookEvent: &webhook_module.HookEvent{}} 196 200 ctx.Data["HookType"] = hookType 201 + ctx.Data["WebhookHandler"] = handler 197 202 198 203 orCtx, err := getOwnerRepoCtx(ctx) 199 204 if err != nil { ··· 202 207 } 203 208 ctx.Data["BaseLink"] = orCtx.LinkNew 204 209 ctx.Data["BaseLinkNew"] = orCtx.LinkNew 210 + ctx.Data["WebhookList"] = webhook_service.List() 205 211 206 212 if ctx.HasError() { 207 213 // pre-fill the form with the submitted data ··· 336 342 } 337 343 ctx.Data["BaseLink"] = orCtx.Link 338 344 ctx.Data["BaseLinkNew"] = orCtx.LinkNew 345 + ctx.Data["WebhookList"] = webhook_service.List() 339 346 340 347 var w *webhook.Webhook 341 348 if orCtx.RepoID > 0 { ··· 358 365 359 366 if handler := webhook_service.GetWebhookHandler(w.Type); handler != nil { 360 367 ctx.Data["HookMetadata"] = handler.Metadata(w) 368 + ctx.Data["WebhookHandler"] = handler 361 369 } 362 370 363 371 ctx.Data["History"], err = w.History(ctx, 1)
+2
routers/web/user/setting/webhooks.go
··· 11 11 "code.gitea.io/gitea/modules/base" 12 12 "code.gitea.io/gitea/modules/setting" 13 13 "code.gitea.io/gitea/services/context" 14 + webhook_service "code.gitea.io/gitea/services/webhook" 14 15 ) 15 16 16 17 const ( ··· 23 24 ctx.Data["PageIsSettingsHooks"] = true 24 25 ctx.Data["BaseLink"] = setting.AppSubURL + "/user/settings/hooks" 25 26 ctx.Data["BaseLinkNew"] = setting.AppSubURL + "/user/settings/hooks" 27 + ctx.Data["WebhookList"] = webhook_service.List() 26 28 ctx.Data["Description"] = ctx.Tr("settings.hooks.desc") 27 29 28 30 ws, err := db.Find[webhook.Webhook](ctx, webhook.ListWebhookOptions{OwnerID: ctx.Doer.ID})
+10
services/webhook/default.go
··· 10 10 "crypto/sha256" 11 11 "encoding/hex" 12 12 "fmt" 13 + "html/template" 13 14 "io" 14 15 "net/http" 15 16 "net/url" ··· 17 18 18 19 webhook_model "code.gitea.io/gitea/models/webhook" 19 20 "code.gitea.io/gitea/modules/log" 21 + "code.gitea.io/gitea/modules/svg" 20 22 webhook_module "code.gitea.io/gitea/modules/webhook" 21 23 "code.gitea.io/gitea/services/forms" 22 24 ) ··· 32 34 return webhook_module.FORGEJO 33 35 } 34 36 return webhook_module.GITEA 37 + } 38 + 39 + func (dh defaultHandler) Icon(size int) template.HTML { 40 + if dh.forgejo { 41 + // forgejo.svg is not in web_src/svg/, so svg.RenderHTML does not work 42 + return imgIcon("forgejo.svg", size) 43 + } 44 + return svg.RenderHTML("gitea-gitea", size, "img") 35 45 } 36 46 37 47 func (defaultHandler) Metadata(*webhook_model.Webhook) any { return nil }
+3
services/webhook/dingtalk.go
··· 6 6 import ( 7 7 "context" 8 8 "fmt" 9 + "html/template" 9 10 "net/http" 10 11 "net/url" 11 12 "strings" ··· 22 23 23 24 func (dingtalkHandler) Type() webhook_module.HookType { return webhook_module.DINGTALK } 24 25 func (dingtalkHandler) Metadata(*webhook_model.Webhook) any { return nil } 26 + func (dingtalkHandler) Icon(size int) template.HTML { return imgIcon("dingtalk.ico", size) } 27 + 25 28 func (dingtalkHandler) FormFields(bind func(any)) FormFields { 26 29 var form struct { 27 30 forms.WebhookForm
+2
services/webhook/discord.go
··· 7 7 "context" 8 8 "errors" 9 9 "fmt" 10 + "html/template" 10 11 "net/http" 11 12 "net/url" 12 13 "strconv" ··· 26 27 type discordHandler struct{} 27 28 28 29 func (discordHandler) Type() webhook_module.HookType { return webhook_module.DISCORD } 30 + func (discordHandler) Icon(size int) template.HTML { return imgIcon("discord.png", size) } 29 31 30 32 func (discordHandler) FormFields(bind func(any)) FormFields { 31 33 var form struct {
+2
services/webhook/feishu.go
··· 6 6 import ( 7 7 "context" 8 8 "fmt" 9 + "html/template" 9 10 "net/http" 10 11 "strings" 11 12 ··· 19 20 type feishuHandler struct{} 20 21 21 22 func (feishuHandler) Type() webhook_module.HookType { return webhook_module.FEISHU } 23 + func (feishuHandler) Icon(size int) template.HTML { return imgIcon("feishu.png", size) } 22 24 23 25 func (feishuHandler) FormFields(bind func(any)) FormFields { 24 26 var form struct {
+8
services/webhook/general.go
··· 6 6 import ( 7 7 "fmt" 8 8 "html" 9 + "html/template" 9 10 "net/url" 11 + "strconv" 10 12 "strings" 11 13 12 14 webhook_model "code.gitea.io/gitea/models/webhook" ··· 352 354 Created: w.CreatedUnix.AsTime(), 353 355 }, nil 354 356 } 357 + 358 + func imgIcon(name string, size int) template.HTML { 359 + s := strconv.Itoa(size) 360 + src := html.EscapeString(setting.StaticURLPrefix + "/assets/img/" + name) 361 + return template.HTML(`<img width="` + s + `" height="` + s + `" src="` + src + `">`) 362 + }
+2
services/webhook/gogs.go
··· 4 4 package webhook 5 5 6 6 import ( 7 + "html/template" 7 8 "net/http" 8 9 9 10 webhook_model "code.gitea.io/gitea/models/webhook" ··· 14 15 type gogsHandler struct{ defaultHandler } 15 16 16 17 func (gogsHandler) Type() webhook_module.HookType { return webhook_module.GOGS } 18 + func (gogsHandler) Icon(size int) template.HTML { return imgIcon("gogs.ico", size) } 17 19 18 20 func (gogsHandler) FormFields(bind func(any)) FormFields { 19 21 var form struct {
+6
services/webhook/matrix.go
··· 9 9 "crypto/sha1" 10 10 "encoding/hex" 11 11 "fmt" 12 + "html/template" 12 13 "net/http" 13 14 "net/url" 14 15 "regexp" ··· 20 21 "code.gitea.io/gitea/modules/log" 21 22 "code.gitea.io/gitea/modules/setting" 22 23 api "code.gitea.io/gitea/modules/structs" 24 + "code.gitea.io/gitea/modules/svg" 23 25 "code.gitea.io/gitea/modules/util" 24 26 webhook_module "code.gitea.io/gitea/modules/webhook" 25 27 "code.gitea.io/gitea/services/forms" ··· 28 30 type matrixHandler struct{} 29 31 30 32 func (matrixHandler) Type() webhook_module.HookType { return webhook_module.MATRIX } 33 + 34 + func (matrixHandler) Icon(size int) template.HTML { 35 + return svg.RenderHTML("gitea-matrix", size, "img") 36 + } 31 37 32 38 func (matrixHandler) FormFields(bind func(any)) FormFields { 33 39 var form struct {
+2
services/webhook/msteams.go
··· 6 6 import ( 7 7 "context" 8 8 "fmt" 9 + "html/template" 9 10 "net/http" 10 11 "net/url" 11 12 "strings" ··· 22 23 23 24 func (msteamsHandler) Type() webhook_module.HookType { return webhook_module.MSTEAMS } 24 25 func (msteamsHandler) Metadata(*webhook_model.Webhook) any { return nil } 26 + func (msteamsHandler) Icon(size int) template.HTML { return imgIcon("msteams.png", size) } 25 27 26 28 func (msteamsHandler) FormFields(bind func(any)) FormFields { 27 29 var form struct {
+2
services/webhook/packagist.go
··· 6 6 import ( 7 7 "context" 8 8 "fmt" 9 + "html/template" 9 10 "net/http" 10 11 "net/url" 11 12 ··· 19 20 type packagistHandler struct{} 20 21 21 22 func (packagistHandler) Type() webhook_module.HookType { return webhook_module.PACKAGIST } 23 + func (packagistHandler) Icon(size int) template.HTML { return imgIcon("packagist.png", size) } 22 24 23 25 func (packagistHandler) FormFields(bind func(any)) FormFields { 24 26 var form struct {
+2
services/webhook/slack.go
··· 6 6 import ( 7 7 "context" 8 8 "fmt" 9 + "html/template" 9 10 "net/http" 10 11 "regexp" 11 12 "strings" ··· 26 27 type slackHandler struct{} 27 28 28 29 func (slackHandler) Type() webhook_module.HookType { return webhook_module.SLACK } 30 + func (slackHandler) Icon(size int) template.HTML { return imgIcon("slack.png", size) } 29 31 30 32 type slackForm struct { 31 33 forms.WebhookForm
+2
services/webhook/telegram.go
··· 6 6 import ( 7 7 "context" 8 8 "fmt" 9 + "html/template" 9 10 "net/http" 10 11 "net/url" 11 12 "strings" ··· 22 23 type telegramHandler struct{} 23 24 24 25 func (telegramHandler) Type() webhook_module.HookType { return webhook_module.TELEGRAM } 26 + func (telegramHandler) Icon(size int) template.HTML { return imgIcon("telegram.png", size) } 25 27 26 28 func (telegramHandler) FormFields(bind func(any)) FormFields { 27 29 var form struct {
+2
services/webhook/webhook.go
··· 7 7 "context" 8 8 "errors" 9 9 "fmt" 10 + "html/template" 10 11 "net/http" 11 12 "strings" 12 13 ··· 35 36 // If form implements the [binding.Validator] interface, the Validate method will be called 36 37 FormFields(bind func(form any)) FormFields 37 38 NewRequest(context.Context, *webhook_model.Webhook, *webhook_model.HookTask) (req *http.Request, body []byte, err error) 39 + Icon(size int) template.HTML 38 40 } 39 41 40 42 type FormFields struct {
+5
services/webhook/wechatwork.go
··· 6 6 import ( 7 7 "context" 8 8 "fmt" 9 + "html/template" 9 10 "net/http" 10 11 "strings" 11 12 ··· 20 21 21 22 func (wechatworkHandler) Type() webhook_module.HookType { return webhook_module.WECHATWORK } 22 23 func (wechatworkHandler) Metadata(*webhook_model.Webhook) any { return nil } 24 + 25 + func (wechatworkHandler) Icon(size int) template.HTML { 26 + return imgIcon("wechatwork.png", size) 27 + } 23 28 24 29 func (wechatworkHandler) FormFields(bind func(any)) FormFields { 25 30 var form struct {
+1 -1
templates/webhook/new.tmpl
··· 2 2 {{.CustomHeaderTitle}} 3 3 <div class="ui right type dropdown"> 4 4 <div class="text tw-flex tw-items-center"> 5 - {{template "shared/webhook/icon" (dict "Size" 20 "HookType" .ctxData.HookType)}} 5 + {{.ctxData.WebhookHandler.Icon 20}} 6 6 {{ctx.Locale.Tr (print "repo.settings.web_hook_name_" .ctxData.HookType)}} 7 7 </div> 8 8 {{svg "octicon-triangle-down" 14 "dropdown icon"}}
+2 -2
templates/webhook/new/feishu.tmpl
··· 1 - <p>{{ctx.Locale.Tr "repo.settings.add_web_hook_desc" "https://feishu.cn" (ctx.Locale.Tr "repo.settings.web_hook_name_feishu")}}</p> 2 - <p>{{ctx.Locale.Tr "repo.settings.add_web_hook_desc" "https://larksuite.com" (ctx.Locale.Tr "repo.settings.web_hook_name_larksuite")}}</p> 1 + <p>{{ctx.Locale.Tr "repo.settings.add_web_hook_desc" "https://feishu.cn" (ctx.Locale.Tr "repo.settings.web_hook_name_feishu_only")}}</p> 2 + <p>{{ctx.Locale.Tr "repo.settings.add_web_hook_desc" "https://larksuite.com" (ctx.Locale.Tr "repo.settings.web_hook_name_larksuite_only")}}</p> 3 3 <form class="ui form" action="{{.BaseLink}}/{{or .Webhook.ID "feishu/new"}}" method="post"> 4 4 {{.CsrfTokenHtml}} 5 5 <div class="required field {{if .Err_PayloadURL}}error{{end}}">