forgejo/templates/webhook/shared-settings.tmpl
Gusted 72bac98365 feat: require data-modal-id for delete buttons (#8711)
All instances should have a `data-modal-id` now. Throw a user-friendly error if this is not the case (custom templates, or missed cases).

Checked via `rg -P -e '^(?=.*delete-button)' | grep -v "data-modal-id"`

Removed two instances of delete modals and one case of simplified logic.

## Rationale
I am currently surveying the existing modals in Forgejo in the context of eventually replacing the modals implementation with our own modal implementation. This refactor fixes one of the many inconsistencies that the current usage of modals has. It should explicitly specify which modal should be used to avoids any problems if new modals are introduced on the page (for example via https://codeberg.org/forgejo/forgejo/pulls/8662).

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8711
Reviewed-by: oliverpool <oliverpool@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-08-08 01:53:23 +02:00

215 lines
10 KiB
Go HTML Template

{{$isNew:=or .PageIsSettingsHooksNew .PageIsAdminDefaultHooksNew .PageIsAdminSystemHooksNew}}
<div class="field">
<fieldset class="event type">
<legend>{{ctx.Locale.Tr "repo.settings.event_desc"}}</legend>
<label>
<input name="events" type="radio" value="push_only" {{if or $isNew .Webhook.PushOnly}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_push_only"}}
</label>
<label>
<input name="events" type="radio" value="send_everything" {{if .Webhook.SendEverything}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_send_everything"}}
</label>
<label>
<input name="events" type="radio" value="choose_events" {{if .Webhook.ChooseEvents}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_choose"}}
</label>
<fieldset class="hide-unless-checked">
<!-- Repository Events -->
<fieldset class="simple-grid grid-2">
<legend>{{ctx.Locale.Tr "repo.settings.event_header_repository"}}</legend>
<!-- Create -->
<label>
<input name="create" type="checkbox" {{if .Webhook.Create}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_create"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_create_desc"}}</span>
</label>
<!-- Delete -->
<label>
<input name="delete" type="checkbox" {{if .Webhook.Delete}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_delete"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_delete_desc"}}</span>
</label>
<!-- Fork -->
<label>
<input name="fork" type="checkbox" {{if .Webhook.Fork}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_fork"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_fork_desc"}}</span>
</label>
<!-- Push -->
<label>
<input name="push" type="checkbox" {{if .Webhook.Push}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_push"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_push_desc"}}</span>
</label>
<!-- Repository -->
<label>
<input name="repository" type="checkbox" {{if .Webhook.Repository}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_repository"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_repository_desc"}}</span>
</label>
<!-- Release -->
<label>
<input name="release" type="checkbox" {{if .Webhook.Release}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_release"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_release_desc"}}</span>
</label>
<!-- Package -->
<label>
<input name="package" type="checkbox" {{if .Webhook.Package}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_package"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_package_desc"}}</span>
</label>
<!-- Wiki -->
<label>
<input name="wiki" type="checkbox" {{if .Webhook.Wiki}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_wiki"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_wiki_desc"}}</span>
</label>
</fieldset>
<!-- Issue Events -->
<fieldset class="simple-grid grid-2">
<legend>{{ctx.Locale.Tr "repo.settings.event_header_issue"}}</legend>
<!-- Issues -->
<label>
<input name="issues" type="checkbox" {{if .Webhook.Issues}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_issues"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_issues_desc"}}</span>
</label>
<!-- Issue Assign -->
<label>
<input name="issue_assign" type="checkbox" {{if .Webhook.IssueAssign}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_issue_assign"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_issue_assign_desc"}}</span>
</label>
<!-- Issue Label -->
<label>
<input name="issue_label" type="checkbox" {{if .Webhook.IssueLabel}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_issue_label"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_issue_label_desc"}}</span>
</label>
<!-- Issue Milestone -->
<label>
<input name="issue_milestone" type="checkbox" {{if .Webhook.IssueMilestone}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_issue_milestone"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_issue_milestone_desc"}}</span>
</label>
<!-- Issue Comment -->
<label>
<input name="issue_comment" type="checkbox" {{if .Webhook.IssueComment}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_issue_comment"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_issue_comment_desc"}}</span>
</label>
</fieldset>
<!-- Pull Request Events -->
<fieldset class="simple-grid grid-2">
<legend>{{ctx.Locale.Tr "repo.settings.event_header_pull_request"}}</legend>
<!-- Pull Request -->
<label>
<input name="pull_request" type="checkbox" {{if .Webhook.PullRequest}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_pull_request"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_pull_request_desc"}}</span>
</label>
<!-- Pull Request Assign -->
<label>
<input name="pull_request_assign" type="checkbox" {{if .Webhook.PullRequestAssign}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_pull_request_assign"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_pull_request_assign_desc"}}</span>
</label>
<!-- Pull Request Label -->
<label>
<input name="pull_request_label" type="checkbox" {{if .Webhook.PullRequestLabel}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_pull_request_label"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_pull_request_label_desc"}}</span>
</label>
<!-- Pull Request Milestone -->
<label>
<input name="pull_request_milestone" type="checkbox" {{if .Webhook.PullRequestMilestone}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_pull_request_milestone"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_pull_request_milestone_desc"}}</span>
</label>
<!-- Pull Request Comment -->
<label>
<input name="pull_request_comment" type="checkbox" {{if .Webhook.PullRequestComment}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_pull_request_comment"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_pull_request_comment_desc"}}</span>
</label>
<!-- Pull Request Review -->
<label>
<input name="pull_request_review" type="checkbox" {{if .Webhook.PullRequestReview}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_pull_request_review"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_pull_request_review_desc"}}</span>
</label>
<!-- Pull Request Sync -->
<label>
<input name="pull_request_sync" type="checkbox" {{if .Webhook.PullRequestSync}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_pull_request_sync"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_pull_request_sync_desc"}}</span>
</label>
<!-- Pull Request Review Request -->
<label>
<input name="pull_request_review_request" type="checkbox" {{if .Webhook.PullRequestReviewRequest}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_pull_request_review_request"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_pull_request_review_request_desc"}}</span>
</label>
</fieldset>
<!-- Action Run Events -->
<fieldset class="simple-grid grid-2">
<legend>{{ctx.Locale.Tr "repo.settings.event_header_action"}}</legend>
<!-- Action Run Failure -->
<label>
<input name="action_failure" type="checkbox" {{if .Webhook.ActionRunFailure}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_action_failure"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_action_failure_desc"}}</span>
</label>
<!-- Action Run Recover -->
<label>
<input name="action_recover" type="checkbox" {{if .Webhook.ActionRunRecover}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_action_recover"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_action_recover_desc"}}</span>
</label>
<!-- Action Run Success -->
<label>
<input name="action_success" type="checkbox" {{if .Webhook.ActionRunSuccess}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.event_action_success"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.event_action_success_desc"}}</span>
</label>
</fieldset>
</fieldset>
</fieldset>
</div>
<!-- Branch filter -->
<div class="field">
<label for="branch_filter">{{ctx.Locale.Tr "repo.settings.branch_filter"}}</label>
<input id="branch_filter" name="branch_filter" type="text" value="{{or .Webhook.BranchFilter "*"}}">
<span class="help">{{ctx.Locale.Tr "repo.settings.branch_filter_desc" "https://pkg.go.dev/github.com/gobwas/glob#Compile" "github.com/gobwas/glob"}}</span>
</div>
{{$skipAuthorizationHeader := or (eq .HookType "sourcehut_builds") (eq .HookType "matrix")}}
{{if not $skipAuthorizationHeader}}
<!-- Authorization Header -->
<div class="field {{if .Err_AuthorizationHeader}}error{{end}}">
<label for="authorization_header">{{ctx.Locale.Tr "repo.settings.authorization_header"}}</label>
<input id="authorization_header" name="authorization_header" type="text" value="{{.Webhook.HeaderAuthorization}}">
<span class="help">{{ctx.Locale.Tr "repo.settings.authorization_header_desc" ("<code>Bearer token123456</code>, <code>Basic YWxhZGRpbjpvcGVuc2VzYW1l</code>" | SafeHTML)}}</span>
</div>
{{end}}
<div class="divider"></div>
<fieldset>
<label>
<input name="active" type="checkbox" {{if or $isNew .Webhook.IsActive}}checked{{end}}>
{{ctx.Locale.Tr "repo.settings.active"}}
<span class="help">{{ctx.Locale.Tr "repo.settings.active_helper"}}</span>
</label>
{{if $isNew}}
<button class="ui primary button">{{ctx.Locale.Tr "repo.settings.add_webhook"}}</button>
{{else}}
<button class="ui primary button">{{ctx.Locale.Tr "repo.settings.update_webhook"}}</button>
<a class="ui red delete-button button" data-url="{{.BaseLink}}/delete" data-id="{{.Webhook.ID}}" data-modal-id="delete-webhook">{{ctx.Locale.Tr "repo.settings.delete_webhook"}}</a>
{{end}}
</fieldset>
{{template "repo/settings/webhook/delete_modal" .}}